diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index 89e204615bb..bfaba82beb4 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -35,456 +35,452 @@ "aI" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate2) "aJ" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/space/hardsuit/syndi,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) "aK" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"aL" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/projectile/automatic/deagle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"aM" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) -"aN" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate2) -"aO" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate2) -"aP" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) -"aQ" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/turf/space,/area/awaymission/spacebattle/syndicate1) -"aR" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (NORTH)"; icon_state = "propulsion"; dir = 1},/turf/space,/area/awaymission/spacebattle/syndicate1) -"aS" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)"; icon_state = "propulsion_l"; dir = 1},/turf/space,/area/awaymission/spacebattle/syndicate1) -"aT" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) -"aU" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/syndicate2) -"aV" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"aW" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate1) -"aX" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate1) -"aY" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate2) -"aZ" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate2) -"ba" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) -"bc" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) -"bd" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"be" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bf" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate2) -"bg" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"bh" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/space/hardsuit/syndi,/obj/item/clothing/head/helmet/space/hardsuit/syndi,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bi" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bj" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/combat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bk" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bl" = (/obj/structure/table/reinforced,/obj/item/clothing/head/helmet/swat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"bm" = (/obj/machinery/computer/pod{id = "spacebattlepod3"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) -"bn" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "spacebattlepod3"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/syndicate2) -"bo" = (/obj/structure/table/reinforced,/obj/item/weapon/c4,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"bp" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bq" = (/obj/structure/table/reinforced,/obj/item/weapon/c4,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"br" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bs" = (/obj/structure/table/reinforced,/obj/item/weapon/restraints/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bt" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) -"bu" = (/obj/structure/stool/bed/chair,/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"bv" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) -"bw" = (/obj/structure/table/reinforced,/obj/item/weapon/melee/energy/sword/saber/red,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bx" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) -"by" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) -"bz" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) -"bA" = (/obj/structure/table/reinforced,/obj/item/clothing/head/helmet/swat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bB" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate3) -"bC" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) -"bD" = (/obj/structure/stool/bed/chair,/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bE" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) -"bF" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) -"bG" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) -"bH" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) -"bI" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate1) -"bJ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"bK" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/turf/space,/area/awaymission/spacebattle/cruiser) -"bL" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser) -"bM" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)"; icon_state = "propulsion_l"; dir = 1},/turf/space,/area/awaymission/spacebattle/cruiser) -"bN" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"bO" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/cruiser) -"bP" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"bQ" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) -"bR" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"bS" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) -"bT" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) -"bU" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/awaymission/spacebattle/cruiser) -"bV" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/awaymission/spacebattle/cruiser) -"bW" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/spacebattle/cruiser) -"bX" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/spacebattle/cruiser) -"bY" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/awaymission/spacebattle/cruiser) -"bZ" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) -"ca" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-engine"; icon_state = "engine"},/area/awaymission/spacebattle/cruiser) -"cb" = (/obj/machinery/computer/telecomms/monitor,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cc" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/awaymission/spacebattle/cruiser) -"cd" = (/obj/machinery/computer/pod{id = "spacebattlepod"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) -"ce" = (/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cf" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cg" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/spacebattle/cruiser) -"ch" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) -"ci" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cj" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"ck" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "spacebattlepod"; name = "Front Hull Door"; opacity = 1; tag = "icon-pdoor0"},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser) -"cl" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"cm" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cn" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"co" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/awaymission/spacebattle/cruiser) -"cp" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/area/awaymission/spacebattle/cruiser) -"cq" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"cr" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/area/awaymission/spacebattle/cruiser) -"cs" = (/obj/effect/landmark/corpse/engineer{mobname = "Rosen Miller"; name = "Rosen Miller"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"ct" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cu" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/spacebattle/cruiser) -"cv" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"},/area/awaymission/spacebattle/cruiser) -"cw" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/spacebattle/cruiser) -"cx" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cy" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser) -"cz" = (/obj/item/stack/sheet/metal,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cA" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cB" = (/obj/structure/closet/cabinet,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cC" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cD" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cE" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/sausage,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cF" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cG" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchenknife,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cH" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cI" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cJ" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cK" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cL" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"cM" = (/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"cN" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cO" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cP" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser) -"cQ" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cR" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cS" = (/obj/item/stack/sheet/metal,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cT" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"},/area/awaymission/spacebattle/cruiser) -"cU" = (/obj/effect/landmark/corpse/engineer{mobname = "Bill Sanchez"; name = "Bill Sanchez"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"cV" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cW" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/fries,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cX" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cY" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) -"cZ" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"da" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"db" = (/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"dc" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dd" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"de" = (/obj/machinery/computer/pod{id = "spacebattlepod2"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) -"df" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dg" = (/obj/machinery/shieldgen{anchored = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"dh" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (EAST)"; icon_state = "propulsion_r"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) -"di" = (/obj/effect/landmark/corpse/engineer{mobname = "John Locke"; name = "John Locke"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dj" = (/obj/structure/rack,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dk" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dl" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dm" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dn" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"do" = (/obj/effect/landmark/corpse/doctor{mobname = "Daniel Kalla"; name = "Daniel Kalla"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dp" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dq" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/awaymission/spacebattle/cruiser) -"dr" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/awaymission/spacebattle/cruiser) -"ds" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"dt" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "spacebattlepod2"; name = "Front Hull Door"; opacity = 1; tag = "icon-pdoor0"},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser) -"du" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"dv" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/awaymission/spacebattle/cruiser) -"dw" = (/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/spacebattle/cruiser) -"dx" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/spacebattle/cruiser) -"dy" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/spacebattle/cruiser) -"dz" = (/obj/effect/landmark/corpse/chef{mobname = "Nathaniel Waters"; name = "Nathaniel Waters"},/obj/item/weapon/butch,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dA" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dB" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/awaymission/spacebattle/cruiser) -"dC" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/spacebattle/cruiser) -"dD" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/spacebattle/cruiser) -"dE" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/awaymission/spacebattle/cruiser) -"dF" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) -"dG" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"dH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"dI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"dJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"dK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"dL" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) -"dM" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"dN" = (/obj/mecha/medical/odysseus,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dO" = (/obj/mecha/working/ripley/firefighter,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dP" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dQ" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/tool/drill,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dR" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dS" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"dT" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dU" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dV" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dW" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"dX" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/spacebattle/cruiser) -"dY" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser) -"dZ" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) -"ea" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Andrew Thorn"; name = "Andrew Thorn"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"eb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"ec" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"ed" = (/obj/effect/landmark/corpse/engineer{mobname = "Clay Dawson"; name = "Clay Dawson"},/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/awaymission/spacebattle/cruiser) -"ee" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ef" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"eg" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"eh" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ei" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ej" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ek" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"el" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser) -"em" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) -"en" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"eo" = (/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"ep" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"eq" = (/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"er" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"es" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"et" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) -"eu" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate4) -"ev" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) -"ew" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ex" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ey" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ez" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"eA" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/spacebattle/cruiser) -"eB" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Davis Hume"; name = "Davis Hume"},/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"eC" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"eD" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser) -"eE" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/spacebattle/cruiser) -"eF" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"eG" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"eH" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"eI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"eJ" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"eK" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Peter West"; name = "Peter West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"eL" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/awaymission/spacebattle/cruiser) -"eM" = (/turf/simulated/shuttle/wall{tag = "icon-swallc4"; icon_state = "swallc4"},/area/awaymission/spacebattle/cruiser) -"eN" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) -"eO" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) -"eP" = (/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/awaymission/spacebattle/cruiser) -"eQ" = (/obj/item/weapon/shield/energy,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"eR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"eS" = (/obj/machinery/computer/med_data,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"eT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"eU" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) -"eV" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) -"eW" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"eX" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"eY" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) -"eZ" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/melee/energy/sword/saber/red,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"fa" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Kurt Kliest"; name = "Kurt Kliest"},/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"fb" = (/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"fc" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"fd" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Eric Abnett"; name = "Eric Abnett"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fe" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ff" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/spacebattle/cruiser) -"fg" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/spacebattle/cruiser) -"fh" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/awaymission/spacebattle/cruiser) -"fi" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/blue,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"fj" = (/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"fk" = (/obj/machinery/door/poddoor{id = "spacebattlestorage"; name = "Secure Storage"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"fl" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/awaymission/spacebattle/cruiser) -"fm" = (/obj/machinery/computer/security/telescreen,/turf/simulated/shuttle/wall,/area/awaymission/spacebattle/cruiser) -"fn" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/awaymission/spacebattle/cruiser) -"fo" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) -"fp" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/material,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"fq" = (/obj/structure/closet/crate,/obj/item/weapon/light/tube,/obj/item/weapon/light/tube,/obj/item/weapon/light/tube,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"fr" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fs" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"ft" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fu" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Walter Strider"; name = "Walter Strider"},/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fv" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/awaymission/spacebattle/cruiser) -"fw" = (/obj/item/ammo_casing/a357,/obj/item/ammo_casing/a357,/obj/item/weapon/gun/projectile/revolver/mateba,/obj/effect/landmark/corpse/commander{mobname = "Aaron Bowden"; name = "Aaron Bowden"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"fx" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"fy" = (/obj/machinery/computer/shuttle,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"fz" = (/obj/structure/artilleryplaceholder{tag = "icon-1"; icon_state = "1"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fA" = (/obj/structure/artilleryplaceholder{tag = "icon-2"; icon_state = "2"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fB" = (/obj/structure/artilleryplaceholder{tag = "icon-3"; icon_state = "3"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fC" = (/obj/structure/artilleryplaceholder{tag = "icon-4"; icon_state = "4"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fD" = (/obj/structure/artilleryplaceholder{tag = "icon-5"; icon_state = "5"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fE" = (/obj/structure/artilleryplaceholder{tag = "icon-6"; icon_state = "6"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fF" = (/obj/structure/artilleryplaceholder{tag = "icon-7"; icon_state = "7"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fG" = (/obj/structure/artilleryplaceholder{tag = "icon-8"; icon_state = "8"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fH" = (/obj/structure/artilleryplaceholder{tag = "icon-9"; icon_state = "9"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fI" = (/obj/structure/artilleryplaceholder{tag = "icon-10"; icon_state = "10"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fJ" = (/obj/structure/artilleryplaceholder{tag = "icon-11"; icon_state = "11"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fK" = (/obj/structure/artilleryplaceholder{tag = "icon-12"; icon_state = "12"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fL" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/storage/firstaid/o2,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"fM" = (/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fN" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fO" = (/obj/item/ammo_casing/shotgun,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fP" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fQ" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"fR" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/awaymission/spacebattle/cruiser) -"fS" = (/obj/machinery/computer/communications,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"fT" = (/obj/structure/artilleryplaceholder{tag = "icon-13"; icon_state = "13"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fU" = (/obj/structure/artilleryplaceholder{tag = "icon-14"; icon_state = "14"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fV" = (/obj/structure/artilleryplaceholder{tag = "icon-15"; icon_state = "15"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fW" = (/obj/structure/artilleryplaceholder{tag = "icon-16"; icon_state = "16"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fX" = (/obj/structure/artilleryplaceholder{tag = "icon-17"; icon_state = "17"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fY" = (/obj/structure/artilleryplaceholder{tag = "icon-18"; icon_state = "18"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"fZ" = (/obj/structure/artilleryplaceholder{tag = "icon-19"; icon_state = "19"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"ga" = (/obj/structure/artilleryplaceholder{tag = "icon-20"; icon_state = "20"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gb" = (/obj/structure/artilleryplaceholder{tag = "icon-21"; icon_state = "21"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gc" = (/obj/structure/artilleryplaceholder{tag = "icon-22"; icon_state = "22"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gd" = (/obj/structure/artilleryplaceholder{tag = "icon-23"; icon_state = "23"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"ge" = (/obj/structure/artilleryplaceholder{tag = "icon-24"; icon_state = "24"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gf" = (/obj/structure/closet/crate,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gg" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Robert Faver"; name = "Robert Faver"},/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"gh" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-25"; icon_state = "25"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gi" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-26"; icon_state = "26"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gj" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-27"; icon_state = "27"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gk" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-28"; icon_state = "28"},/obj/machinery/artillerycontrol,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gl" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-29"; icon_state = "29"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gm" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-30"; icon_state = "30"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gn" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-31"; icon_state = "31"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"go" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-32"; icon_state = "32"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gp" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-33"; icon_state = "33"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gq" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-34"; icon_state = "34"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gr" = (/obj/structure/artilleryplaceholder{tag = "icon-35"; icon_state = "35"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gs" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_casing/a357,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gt" = (/obj/structure/closet/crate,/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gu" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/rainbow,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gv" = (/obj/machinery/door_control{dir = 2; id = "spacebattlestorage"; name = "Secure Storage"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gw" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) -"gx" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/obj/item/weapon/circular_saw,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) -"gy" = (/obj/structure/table/reinforced,/obj/item/weapon/retractor,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) -"gz" = (/obj/structure/table/reinforced,/obj/item/weapon/hemostat,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) -"gA" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) -"gB" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"gC" = (/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"gD" = (/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"gE" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) -"gF" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) -"gG" = (/obj/structure/closet/crate/secure/weapon,/obj/item/weapon/gun/energy/laser,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gH" = (/obj/structure/closet/crate,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c10,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gI" = (/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/spacebattle/cruiser) -"gJ" = (/obj/effect/landmark/corpse/doctor{mobname = "Adam Smith"; name = "Adam Smith"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"gK" = (/obj/structure/optable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"gL" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"gM" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"gN" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"gO" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"gP" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"gQ" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"gR" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) -"gS" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; name = "Jeremy Tailor"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"gT" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7) -"gU" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) -"gV" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate4) -"gW" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gX" = (/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"gY" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"gZ" = (/obj/effect/landmark/corpse/doctor{mobname = "Allan Yoshimaru"; name = "Allan Yoshimaru"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"ha" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hb" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"hc" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/awaymission/spacebattle/cruiser) -"hd" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) -"he" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hf" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) -"hg" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate7) -"hh" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/spacebattle/syndicate4) -"hi" = (/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe/plasmacutter,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hj" = (/obj/item/weapon/circular_saw,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hk" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"hl" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Dan Hedricks"; name = "Dan Hedricks"},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) -"hm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7) -"hn" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) -"ho" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) -"hp" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7) -"hq" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (WEST)"; icon_state = "propulsion_r"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) -"hr" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hs" = (/obj/structure/closet/crate/secure/plasma,/obj/item/weapon/tank/plasma,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"ht" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hu" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit,/obj/item/clothing/head/helmet/space/hardsuit,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"hv" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) -"hw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7) -"hz" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) -"hA" = (/obj/structure/largecrate,/mob/living/simple_animal/corgi/puppy,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hB" = (/obj/structure/closet/crate,/obj/item/weapon/paint/anycolor,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hC" = (/obj/structure/closet/crate,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hD" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hE" = (/obj/structure/closet/crate/medical,/obj/item/weapon/tank/anesthetic,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) -"hF" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hG" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hI" = (/obj/structure/table/wood,/obj/item/device/violin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"hJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hK" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) -"hL" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/awaymission/spacebattle/cruiser) -"hM" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"hN" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"hO" = (/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) -"hP" = (/obj/effect/landmark/corpse/engineer{corpseidjob = "Gunner"; mobname = "William Gannon"; name = "William Gannon"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"hQ" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) -"hR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hT" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) -"hV" = (/obj/effect/landmark/corpse/engineer{mobname = "Javier Wismer"; name = "Javier Wismer"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"hW" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) -"hX" = (/obj/structure/stool/bed/chair{dir = 8},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) -"hY" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) -"hZ" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"ia" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"ib" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"ic" = (/obj/structure/toilet,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"id" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"ie" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"},/area/awaymission/spacebattle/cruiser) -"if" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"ig" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/spacebattle/cruiser) -"ih" = (/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"ii" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/o2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"ij" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"ik" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/item/weapon/soap,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"il" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"im" = (/obj/effect/landmark/corpse/doctor{mobname = "Herbert West"; name = "Herbert West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"in" = (/obj/effect/landmark/corpse/engineer{mobname = "Carth Robinson"; name = "Carth Robinson"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"io" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"ip" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"iq" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) -"ir" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) -"is" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) -"it" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser) -"iu" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser) -"iv" = (/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser) -"iw" = (/obj/effect/landmark/corpse/engineer{mobname = "Cyrion"; name = "Cyrion"},/obj/item/weapon/flamethrower/full,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"ix" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"iy" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser) -"iz" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (EAST)"; icon_state = "burst_r"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) -"iA" = (/obj/effect/landmark/corpse/engineer{mobname = "Mercutio"; name = "Mercutio"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) -"iB" = (/obj/structure/lattice,/turf/space,/area/space) -"iC" = (/obj/effect/landmark/corpse/syndicatesoldier,/turf/space,/area/space) -"iD" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/space) -"iE" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/space) -"iF" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) -"iG" = (/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) -"iH" = (/obj/effect/landmark/corpse/syndicatesoldier,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) -"iI" = (/turf/simulated/mineral/clown,/area/space) -"iJ" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) -"iK" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) -"iL" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) -"iM" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate5) -"iN" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) -"iO" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel/airless,/area/space) -"iP" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) -"iQ" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) -"iR" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/space) -"iS" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/space) -"iT" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) -"iU" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) -"iV" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/space) -"iW" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/space) -"iX" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) -"iY" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) -"iZ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) -"ja" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate5) -"jb" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/spacebattle/syndicate5) -"jc" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) -"jd" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate6) -"je" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) -"jf" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) -"jg" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) -"jh" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) -"ji" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) -"jj" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) -"jk" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) -"jl" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) -"jm" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate6) -"jn" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/spacebattle/syndicate6) -"jo" = (/turf/simulated/floor/plating/asteroid/airless,/area/space) -"jp" = (/turf/simulated/wall/mineral/plasma,/area/awaymission/spacebattle/secret) -"jq" = (/turf/simulated/floor/plasteel{tag = "icon-alienvault"; icon_state = "alienvault"},/area/awaymission/spacebattle/secret) -"jr" = (/obj/machinery/door/airlock/plasma,/turf/simulated/wall/mineral/plasma,/area/awaymission/spacebattle/secret) -"js" = (/obj/item/clothing/suit/space/hardsuit/wizard,/obj/item/clothing/head/helmet/space/hardsuit/wizard,/turf/simulated/floor/plasteel{tag = "icon-alienvault"; icon_state = "alienvault"},/area/awaymission/spacebattle/secret) +"aL" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) +"aM" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate2) +"aN" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate2) +"aO" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) +"aP" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/turf/space,/area/awaymission/spacebattle/syndicate1) +"aQ" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (NORTH)"; icon_state = "propulsion"; dir = 1},/turf/space,/area/awaymission/spacebattle/syndicate1) +"aR" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)"; icon_state = "propulsion_l"; dir = 1},/turf/space,/area/awaymission/spacebattle/syndicate1) +"aS" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) +"aT" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/syndicate2) +"aU" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) +"aV" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate1) +"aW" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate1) +"aX" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate2) +"aY" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate2) +"aZ" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"ba" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) +"bb" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) +"bc" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bd" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"be" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate2) +"bf" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) +"bg" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/space/hardsuit/syndi,/obj/item/clothing/head/helmet/space/hardsuit/syndi,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bh" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bi" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/combat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bj" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bk" = (/obj/structure/table/reinforced,/obj/item/clothing/head/helmet/swat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) +"bl" = (/obj/machinery/computer/pod{id = "spacebattlepod3"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate2) +"bm" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "spacebattlepod3"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/syndicate2) +"bn" = (/obj/structure/table/reinforced,/obj/item/weapon/c4,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) +"bo" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bp" = (/obj/structure/table/reinforced,/obj/item/weapon/c4,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bq" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"br" = (/obj/structure/table/reinforced,/obj/item/weapon/restraints/handcuffs,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bs" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) +"bt" = (/obj/structure/stool/bed/chair,/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) +"bu" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) +"bv" = (/obj/structure/table/reinforced,/obj/item/weapon/melee/energy/sword/saber/red,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bw" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate3) +"bx" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) +"by" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate3) +"bz" = (/obj/structure/table/reinforced,/obj/item/clothing/head/helmet/swat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bA" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate3) +"bB" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) +"bC" = (/obj/structure/stool/bed/chair,/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bD" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) +"bE" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate1) +"bF" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) +"bG" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate1) +"bH" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate1) +"bI" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"bJ" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (NORTH)"; icon_state = "propulsion_r"; dir = 1},/turf/space,/area/awaymission/spacebattle/cruiser) +"bK" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser) +"bL" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (NORTH)"; icon_state = "propulsion_l"; dir = 1},/turf/space,/area/awaymission/spacebattle/cruiser) +"bM" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"bN" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/cruiser) +"bO" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"bP" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) +"bQ" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{tag = "icon-heater (NORTH)"; icon_state = "heater"; dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"bR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) +"bS" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) +"bT" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/awaymission/spacebattle/cruiser) +"bU" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/awaymission/spacebattle/cruiser) +"bV" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"},/area/awaymission/spacebattle/cruiser) +"bW" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/spacebattle/cruiser) +"bX" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/awaymission/spacebattle/cruiser) +"bY" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) +"bZ" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-engine"; icon_state = "engine"},/area/awaymission/spacebattle/cruiser) +"ca" = (/obj/machinery/computer/telecomms/monitor,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cb" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/awaymission/spacebattle/cruiser) +"cc" = (/obj/machinery/computer/pod{id = "spacebattlepod"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) +"cd" = (/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"ce" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cf" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/spacebattle/cruiser) +"cg" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) +"ch" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"ci" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"cj" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "spacebattlepod"; name = "Front Hull Door"; opacity = 1; tag = "icon-pdoor0"},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser) +"ck" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"cl" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cm" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"cn" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/awaymission/spacebattle/cruiser) +"co" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/area/awaymission/spacebattle/cruiser) +"cp" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"cq" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/area/awaymission/spacebattle/cruiser) +"cr" = (/obj/effect/landmark/corpse/engineer{mobname = "Rosen Miller"; name = "Rosen Miller"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cs" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"ct" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"},/area/awaymission/spacebattle/cruiser) +"cu" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"},/area/awaymission/spacebattle/cruiser) +"cv" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/spacebattle/cruiser) +"cw" = (/obj/machinery/power/smes/magical{desc = "A high-capacity superconducting magnetic energy storage (SMES) unit."; name = "power storage unit"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cx" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser) +"cy" = (/obj/item/stack/sheet/metal,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cz" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cA" = (/obj/structure/closet/cabinet,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cB" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cC" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cD" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/sausage,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cE" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cF" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchenknife,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cG" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/rollingpin,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cH" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cI" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cJ" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cK" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"cL" = (/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"cM" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cN" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cO" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser) +"cP" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cQ" = (/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cR" = (/obj/item/stack/sheet/metal,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cS" = (/turf/simulated/shuttle/wall{tag = "icon-swallc3"; icon_state = "swallc3"},/area/awaymission/spacebattle/cruiser) +"cT" = (/obj/effect/landmark/corpse/engineer{mobname = "Bill Sanchez"; name = "Bill Sanchez"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cU" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cV" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/fries,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cW" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cX" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/spacebattle/cruiser) +"cY" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"cZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"da" = (/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"db" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dc" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dd" = (/obj/machinery/computer/pod{id = "spacebattlepod2"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/cruiser) +"de" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"df" = (/obj/machinery/shieldgen{anchored = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"dg" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (EAST)"; icon_state = "propulsion_r"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) +"dh" = (/obj/effect/landmark/corpse/engineer{mobname = "John Locke"; name = "John Locke"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"di" = (/obj/structure/rack,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dj" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dk" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dl" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dm" = (/obj/structure/closet/toolcloset,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dn" = (/obj/effect/landmark/corpse/doctor{mobname = "Daniel Kalla"; name = "Daniel Kalla"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"do" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dp" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/awaymission/spacebattle/cruiser) +"dq" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/awaymission/spacebattle/cruiser) +"dr" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"ds" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "spacebattlepod2"; name = "Front Hull Door"; opacity = 1; tag = "icon-pdoor0"},/turf/simulated/shuttle/plating,/area/awaymission/spacebattle/cruiser) +"dt" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"du" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/awaymission/spacebattle/cruiser) +"dv" = (/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"},/area/awaymission/spacebattle/cruiser) +"dw" = (/turf/simulated/shuttle/wall{tag = "icon-swall15"; icon_state = "swall15"},/area/awaymission/spacebattle/cruiser) +"dx" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"},/area/awaymission/spacebattle/cruiser) +"dy" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dz" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 9},/area/awaymission/spacebattle/cruiser) +"dA" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/spacebattle/cruiser) +"dB" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/awaymission/spacebattle/cruiser) +"dC" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/awaymission/spacebattle/cruiser) +"dD" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) +"dE" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"dF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"dG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"dH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"dI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"dJ" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/cruiser) +"dK" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"dL" = (/obj/mecha/medical/odysseus,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"dM" = (/obj/mecha/working/ripley/firefighter,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"dN" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"dO" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/tool/drill,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"dP" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"dQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"dR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dS" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dT" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dU" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"dV" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/spacebattle/cruiser) +"dW" = (/obj/structure/closet/secure_closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser) +"dX" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) +"dY" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Andrew Thorn"; name = "Andrew Thorn"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"dZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"ea" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"eb" = (/obj/effect/landmark/corpse/engineer{mobname = "Clay Dawson"; name = "Clay Dawson"},/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/awaymission/spacebattle/cruiser) +"ec" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ed" = (/obj/machinery/gateway{dir = 9},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ee" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ef" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eg" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eh" = (/obj/structure/closet/crate{name = "Gold Crate"},/obj/item/mecha_parts/mecha_equipment/repair_droid,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ei" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"ej" = (/obj/structure/closet/l3closet/security,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser) +"ek" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) +"el" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"em" = (/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"en" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eo" = (/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ep" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eq" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"er" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) +"es" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate4) +"et" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) +"eu" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ev" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ew" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ex" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"ey" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 8},/area/awaymission/spacebattle/cruiser) +"ez" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Davis Hume"; name = "Davis Hume"},/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"eA" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"eB" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 4},/area/awaymission/spacebattle/cruiser) +"eC" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/spacebattle/cruiser) +"eD" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"eE" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"eF" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"eG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eH" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"eI" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Peter West"; name = "Peter West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"eJ" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/awaymission/spacebattle/cruiser) +"eK" = (/turf/simulated/shuttle/wall{tag = "icon-swallc4"; icon_state = "swallc4"},/area/awaymission/spacebattle/cruiser) +"eL" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) +"eM" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) +"eN" = (/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/awaymission/spacebattle/cruiser) +"eO" = (/obj/item/weapon/shield/energy,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"eP" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"eQ" = (/obj/machinery/computer/med_data,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"eR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eS" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) +"eT" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) +"eU" = (/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"eV" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"eW" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/spacebattle/cruiser) +"eX" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/melee/energy/sword/saber/red,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"eY" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Kurt Kliest"; name = "Kurt Kliest"},/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"eZ" = (/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"fa" = (/obj/machinery/computer/crew,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"fb" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Eric Abnett"; name = "Eric Abnett"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fc" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"fd" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/awaymission/spacebattle/cruiser) +"fe" = (/turf/simulated/floor/plasteel{icon_state = "red"},/area/awaymission/spacebattle/cruiser) +"ff" = (/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/awaymission/spacebattle/cruiser) +"fg" = (/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"fh" = (/obj/machinery/door/poddoor{id = "spacebattlestorage"; name = "Secure Storage"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"fi" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/awaymission/spacebattle/cruiser) +"fj" = (/obj/machinery/computer/security/telescreen,/turf/simulated/shuttle/wall,/area/awaymission/spacebattle/cruiser) +"fk" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/awaymission/spacebattle/cruiser) +"fl" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate4) +"fm" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/material,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"fn" = (/obj/structure/closet/crate,/obj/item/weapon/light/tube,/obj/item/weapon/light/tube,/obj/item/weapon/light/tube,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"fo" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fp" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fq" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fr" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Walter Strider"; name = "Walter Strider"},/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fs" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel{dir = 1; icon_state = "bluecorner"},/area/awaymission/spacebattle/cruiser) +"ft" = (/obj/item/ammo_casing/a357,/obj/item/ammo_casing/a357,/obj/item/weapon/gun/projectile/revolver/mateba,/obj/effect/landmark/corpse/commander{mobname = "Aaron Bowden"; name = "Aaron Bowden"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"fu" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"fv" = (/obj/machinery/computer/shuttle,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"fw" = (/obj/structure/artilleryplaceholder{tag = "icon-1"; icon_state = "1"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fx" = (/obj/structure/artilleryplaceholder{tag = "icon-2"; icon_state = "2"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fy" = (/obj/structure/artilleryplaceholder{tag = "icon-3"; icon_state = "3"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fz" = (/obj/structure/artilleryplaceholder{tag = "icon-4"; icon_state = "4"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fA" = (/obj/structure/artilleryplaceholder{tag = "icon-5"; icon_state = "5"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fB" = (/obj/structure/artilleryplaceholder{tag = "icon-6"; icon_state = "6"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fC" = (/obj/structure/artilleryplaceholder{tag = "icon-7"; icon_state = "7"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fD" = (/obj/structure/artilleryplaceholder{tag = "icon-8"; icon_state = "8"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fE" = (/obj/structure/artilleryplaceholder{tag = "icon-9"; icon_state = "9"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fF" = (/obj/structure/artilleryplaceholder{tag = "icon-10"; icon_state = "10"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fG" = (/obj/structure/artilleryplaceholder{tag = "icon-11"; icon_state = "11"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fH" = (/obj/structure/artilleryplaceholder{tag = "icon-12"; icon_state = "12"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fI" = (/obj/structure/closet/crate/internals,/obj/item/weapon/storage/firstaid/o2,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"fJ" = (/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fK" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fL" = (/obj/item/ammo_casing/shotgun,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fM" = (/obj/item/ammo_casing/shotgun,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fN" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"fO" = (/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/awaymission/spacebattle/cruiser) +"fP" = (/obj/machinery/computer/communications,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"fQ" = (/obj/structure/artilleryplaceholder{tag = "icon-13"; icon_state = "13"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fR" = (/obj/structure/artilleryplaceholder{tag = "icon-14"; icon_state = "14"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fS" = (/obj/structure/artilleryplaceholder{tag = "icon-15"; icon_state = "15"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fT" = (/obj/structure/artilleryplaceholder{tag = "icon-16"; icon_state = "16"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fU" = (/obj/structure/artilleryplaceholder{tag = "icon-17"; icon_state = "17"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fV" = (/obj/structure/artilleryplaceholder{tag = "icon-18"; icon_state = "18"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fW" = (/obj/structure/artilleryplaceholder{tag = "icon-19"; icon_state = "19"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fX" = (/obj/structure/artilleryplaceholder{tag = "icon-20"; icon_state = "20"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fY" = (/obj/structure/artilleryplaceholder{tag = "icon-21"; icon_state = "21"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"fZ" = (/obj/structure/artilleryplaceholder{tag = "icon-22"; icon_state = "22"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"ga" = (/obj/structure/artilleryplaceholder{tag = "icon-23"; icon_state = "23"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gb" = (/obj/structure/artilleryplaceholder{tag = "icon-24"; icon_state = "24"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gc" = (/obj/structure/closet/crate,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gd" = (/obj/effect/landmark/corpse/bridgeofficer{mobname = "Robert Faver"; name = "Robert Faver"},/obj/item/ammo_casing/shotgun,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"ge" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-25"; icon_state = "25"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gf" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-26"; icon_state = "26"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gg" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-27"; icon_state = "27"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gh" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-28"; icon_state = "28"},/obj/machinery/artillerycontrol,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gi" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-29"; icon_state = "29"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gj" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-30"; icon_state = "30"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gk" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-31"; icon_state = "31"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gl" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-32"; icon_state = "32"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gm" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-33"; icon_state = "33"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gn" = (/obj/structure/artilleryplaceholder/decorative{tag = "icon-34"; icon_state = "34"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"go" = (/obj/structure/artilleryplaceholder{tag = "icon-35"; icon_state = "35"},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gp" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_casing/a357,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gq" = (/obj/structure/closet/crate,/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gr" = (/obj/machinery/door_control{dir = 2; id = "spacebattlestorage"; name = "Secure Storage"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gs" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) +"gt" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/obj/item/weapon/circular_saw,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) +"gu" = (/obj/structure/table/reinforced,/obj/item/weapon/retractor,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) +"gv" = (/obj/structure/table/reinforced,/obj/item/weapon/hemostat,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) +"gw" = (/obj/structure/table/reinforced,/obj/item/weapon/scalpel,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/awaymission/spacebattle/cruiser) +"gx" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gy" = (/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gz" = (/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"gA" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) +"gB" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate4) +"gC" = (/obj/structure/closet/crate/secure/weapon,/obj/item/weapon/gun/energy/laser,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gD" = (/obj/structure/closet/crate,/obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c10,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gE" = (/obj/effect/decal/cleanable/blood,/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/awaymission/spacebattle/cruiser) +"gF" = (/obj/effect/landmark/corpse/doctor{mobname = "Adam Smith"; name = "Adam Smith"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"gG" = (/obj/structure/optable,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"gH" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"gI" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gJ" = (/mob/living/simple_animal/hostile/syndicate/melee/space,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gK" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"gL" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gM" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gN" = (/obj/machinery/computer/secure_data,/turf/simulated/floor/plasteel{tag = "icon-bluefull"; icon_state = "bluefull"},/area/awaymission/spacebattle/cruiser) +"gO" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; name = "Jeremy Tailor"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"gP" = (/obj/machinery/porta_turret{dir = 8; emagged = 1; installation = /obj/item/weapon/gun/energy/lasercannon},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7) +"gQ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) +"gR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate4) +"gS" = (/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gT" = (/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"gU" = (/obj/machinery/computer/operating,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"gV" = (/obj/effect/landmark/corpse/doctor{mobname = "Allan Yoshimaru"; name = "Allan Yoshimaru"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"gW" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"gX" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"gY" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/awaymission/spacebattle/cruiser) +"gZ" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/awaymission/spacebattle/cruiser) +"ha" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hb" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) +"hc" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate7) +"hd" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/spacebattle/syndicate4) +"he" = (/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe/plasmacutter,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hf" = (/obj/item/weapon/circular_saw,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"hg" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"hh" = (/obj/effect/landmark/corpse/engineer/rig{corpseidjob = "Gunner"; mobname = "Dan Hedricks"; name = "Dan Hedricks"},/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/cruiser) +"hi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7) +"hj" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) +"hk" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) +"hl" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7) +"hm" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (WEST)"; icon_state = "propulsion_r"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) +"hn" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"ho" = (/obj/structure/closet/crate/secure/plasma,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hp" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hq" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit,/obj/item/clothing/head/helmet/space/hardsuit,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"hr" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) +"hs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"ht" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"hu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7) +"hv" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) +"hw" = (/obj/structure/largecrate,/mob/living/simple_animal/corgi/puppy,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hx" = (/obj/structure/closet/crate,/obj/item/weapon/paint/anycolor,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hy" = (/obj/structure/closet/crate,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hz" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hA" = (/obj/structure/closet/crate/medical,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hB" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"hC" = (/mob/living/simple_animal/hostile/syndicate/melee,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"hD" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"hE" = (/obj/structure/table/wood,/obj/item/device/violin,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"hF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"hG" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) +"hH" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/awaymission/spacebattle/cruiser) +"hI" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"hJ" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/captain,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"hK" = (/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/wood,/area/awaymission/spacebattle/cruiser) +"hL" = (/obj/effect/landmark/corpse/engineer{corpseidjob = "Gunner"; mobname = "William Gannon"; name = "William Gannon"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"hM" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/awaymission/spacebattle/cruiser) +"hN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"hO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"hP" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"hQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) +"hR" = (/obj/effect/landmark/corpse/engineer{mobname = "Javier Wismer"; name = "Javier Wismer"},/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"hS" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) +"hT" = (/obj/structure/stool/bed/chair{dir = 8},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) +"hU" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate7) +"hV" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"hW" = (/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"hX" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"hY" = (/obj/structure/toilet,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"hZ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"ia" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"},/area/awaymission/spacebattle/cruiser) +"ib" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"ic" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/spacebattle/cruiser) +"id" = (/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"ie" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/o2,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"if" = (/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"ig" = (/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/obj/item/weapon/soap,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"ih" = (/mob/living/simple_animal/hostile/syndicate/ranged/space,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"ii" = (/obj/effect/landmark/corpse/doctor{mobname = "Herbert West"; name = "Herbert West"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"ij" = (/obj/effect/landmark/corpse/engineer{mobname = "Carth Robinson"; name = "Carth Robinson"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"ik" = (/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/obj/item/ammo_casing/c10mm,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"il" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"im" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/spacebattle/cruiser) +"in" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate7) +"io" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/spacebattle/cruiser) +"ip" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser) +"iq" = (/obj/machinery/sleep_console,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser) +"ir" = (/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 1},/area/awaymission/spacebattle/cruiser) +"is" = (/obj/effect/landmark/corpse/engineer{mobname = "Cyrion"; name = "Cyrion"},/obj/item/weapon/flamethrower/full,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"it" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"iu" = (/obj/effect/landmark/corpse/syndicatesoldier,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/awaymission/spacebattle/cruiser) +"iv" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (EAST)"; icon_state = "burst_r"; dir = 4},/turf/space,/area/awaymission/spacebattle/cruiser) +"iw" = (/obj/effect/landmark/corpse/engineer{mobname = "Mercutio"; name = "Mercutio"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) +"ix" = (/obj/structure/lattice,/turf/space,/area/space) +"iy" = (/obj/effect/landmark/corpse/syndicatesoldier,/turf/space,/area/space) +"iz" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/space) +"iA" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/space) +"iB" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) +"iC" = (/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) +"iD" = (/obj/effect/landmark/corpse/syndicatesoldier,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) +"iE" = (/turf/simulated/mineral/clown,/area/space) +"iF" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) +"iG" = (/obj/item/stack/rods,/turf/simulated/floor/plasteel/airless{tag = "icon-floor4 (SOUTHWEST)"; icon_state = "floor4"; dir = 10},/area/space) +"iH" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) +"iI" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate5) +"iJ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) +"iK" = (/obj/machinery/sleeper,/turf/simulated/floor/plasteel/airless,/area/space) +"iL" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) +"iM" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) +"iN" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/space) +"iO" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/space) +"iP" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) +"iQ" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) +"iR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/space) +"iS" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/space) +"iT" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate5) +"iU" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) +"iV" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate5) +"iW" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate5) +"iX" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/spacebattle/syndicate5) +"iY" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) +"iZ" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/spacebattle/syndicate6) +"ja" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) +"jb" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) +"jc" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) +"jd" = (/obj/machinery/sleeper,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) +"je" = (/obj/structure/stool/bed/chair{dir = 1},/mob/living/simple_animal/hostile/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) +"jf" = (/obj/machinery/door/airlock/external,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/awaymission/spacebattle/syndicate6) +"jg" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) +"jh" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/awaymission/spacebattle/syndicate6) +"ji" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate6) +"jj" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/awaymission/spacebattle/syndicate6) +"jk" = (/turf/simulated/floor/plating/asteroid/airless,/area/space) +"jl" = (/turf/simulated/wall/mineral/plasma,/area/awaymission/spacebattle/secret) +"jm" = (/turf/simulated/floor/plasteel{tag = "icon-alienvault"; icon_state = "alienvault"},/area/awaymission/spacebattle/secret) +"jn" = (/obj/machinery/door/airlock/plasma,/turf/simulated/wall/mineral/plasma,/area/awaymission/spacebattle/secret) +"jo" = (/obj/item/clothing/suit/space/hardsuit/wizard,/obj/item/clothing/head/helmet/space/hardsuit/wizard,/turf/simulated/floor/plasteel{tag = "icon-alienvault"; icon_state = "alienvault"},/area/awaymission/spacebattle/secret) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -529,39 +525,39 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahajajahahahahahahahababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDaDaDaDaDaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaoajajajajalajajajajajajajaoahababababababababababababababababababababababababababababababababababababaEaDaDaDaDaDaDaDaDaDaDaDaDaDaDaEabababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaoajajajajajajajajajajajajaoahababababababababababababababababababababababababababababababababababababaEaDaDaDaDaDaDaFaDaDaDaDaDaDaDaEabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGahaHaHajajajajajalajajaHaHahaIababababababababababababababababababababababababababababababababababababaBaJaJaKaKaKaLaDaDaKaKaKaKaKaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaMaMaNahahakakahahaOaMaMahabababababababababababababababababababababababababababababababababababababaBaBaBaBaBaBaBaDaDaBaBaBaBaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababaaaaaaaaabababababababababababababababababababababababababababababaPaQaRaRaRaRaRaRaRaRaRaRaRaRaSaTabababababababababababababababababababababababababababababababababababababababababababababaGahahahacadaUaUafagahahahaIabababababababababababababababababababababababababababababababababababababaBaVaDaDaDaVaBaDaDaBaVaDaDaDaVaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaWaXaXaXaXaXaXaXaXaXaXaXaXaXaXaWababababababababababababababababababababababababababababababababababababababababababababababahahahahaYajajaZahahahahababababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDaBaDaDaBaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaWbabababababababababababababaaWababababababababababababababababababababababababababababababababababababababababababababababahahahahbbajajbcahahahahababababababababababababababababababababababababababababababababababababababaBaVaDaDaDaVaBaDaDaBaVaDaDaDaVaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbababababababababababababababdababababababababababababababababababababababababababababababababababababababababababababababahahahahbbajajbcahahahahababababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDaBaDaDaBaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbababababababebabababababababdababababababababababababababababababababababababababababababababababababababababababababababaGbfahahbbajajbcahahbfaIababababababababababababababababababababababababababababababababababababababaBaVaDaDaDaDbgaDaDbgaDaDaDaDaVaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaWbhbhbibibibibababibjbibibibiaWababababababababababababababababababababababababababababababababababababababababababababababababaGahbbajajbcahaIababababababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDbgaDaDbgaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaWaWaWaWaWaWaWbabaaWaWaWaWaWaWaWabababababababababababababababababababababababababababababababababababababababababababababababababahbbajajbcahabababababababababababababababababababababababababababababababababababababababababaBaBaBaBaBaBaBaDaDaBaBaBaBaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaWbkbabababkaWbabaaWbkbabababkaWabababababababababababababababababababababababababababababababababababababababababababababababababahajajajajahabababababababababababababababababababababababababababababababababababababababababaBaKaKaKaKaKaBaDaDaBaKaKaKaKblaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaWbababababaaWbabaaWbababababaaWabababababababababababababababababababababababababababababababababababababababababababababababababahbmajajajahabababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaKaBaDaDaBaKaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaWbkbabababkaWbabaaWbkbabababkaWabababababababababababababababababababababababababababababababababababababababababababababababababaGahbnbnahaIabababababababababababababababababababababababababababababababababababababababababaBboaDaDaDaKaBaDaDaBaKaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaWbababababaaWbabaaWbababababaaWababababababababababababababababababababababababababababababababababababababababababababababababababaGababaIababababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaKaBaDaDaBaKaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaWbkbababababpbababpbababababkaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaDbgaDaDbgaDaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaWbabababababpbababpbababababaaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaDbgaDaDbgaDaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababaWaWaWaWaWaWaWbabaaWaWaWaWaWaWaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBaBaBaBaBaDaDaBaBaBaBaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbibibibibiaWbabaaWbibibqbqbiaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaVaDaDaDaDaDaDaDaDaDaDaDaDaVaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbrbabababsaWbabaaWbibabababiaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaVaDaDaDaDaDaDaDaDaDaDaDaDaVaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbrbabababiaWbabaaWbibabababiaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbtaBbubuaDaDaDaDaDaDaDaDbubuaBbvabababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbibabababiaWbabaaWbibabababwaWabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBbxbxbyaBaBaEaEaBaBbzbxbxaBababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbibababababpbababpbababababiaWabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbtaBaBaBababababababaBaBaBbvababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbAbababababpbababpbababababiaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBababababababaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWaWaWaWaWaWaWbabaaWaWaWaWaWaWaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBababababababaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbkbababababababababababababkaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBababababababaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaWbkbababababababababababababkaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbtbBaBababababababaBbBbvabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababbCaWbDbDbababababababababDbDaWbEababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbtababababababbvabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababaWbFbFbGaWaWbdbdaWaWbHbFbFaWababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababbCaWaWaWababababababaWaWaWbEababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaWaWaWababababababaWaWaWababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaWaWaWababababababaWaWaWababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababaWaWaWababababababaWaWaWababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababbCbIaWababababababaWbIbEababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababbCababababababbEababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaGahaHaHajajajajajalajajaHaHahaIababababababababababababababababababababababababababababababababababababaBaJaJaKaKaKaKaDaDaKaKaKaKaKaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaLaLaMahahakakahahaNaLaLahabababababababababababababababababababababababababababababababababababababaBaBaBaBaBaBaBaDaDaBaBaBaBaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababaaaaaaaaabababababababababababababababababababababababababababababaOaPaQaQaQaQaQaQaQaQaQaQaQaQaRaSabababababababababababababababababababababababababababababababababababababababababababababaGahahahacadaTaTafagahahahaIabababababababababababababababababababababababababababababababababababababaBaUaDaDaDaUaBaDaDaBaUaDaDaDaUaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVaWaWaWaWaWaWaWaWaWaWaWaWaWaWaVababababababababababababababababababababababababababababababababababababababababababababababahahahahaXajajaYahahahahababababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDaBaDaDaBaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVaZaZaZaZaZaZaZaZaZaZaZaZaZaZaVababababababababababababababababababababababababababababababababababababababababababababababahahahahbaajajbbahahahahababababababababababababababababababababababababababababababababababababababaBaUaDaDaDaUaBaDaDaBaUaDaDaDaUaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbcaZaZaZaZaZaZaZaZaZaZaZaZaZaZbcababababababababababababababababababababababababababababababababababababababababababababababahahahahbaajajbbahahahahababababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDaBaDaDaBaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbcaZaZaZaZaZaZbdaZaZaZaZaZaZaZbcababababababababababababababababababababababababababababababababababababababababababababababaGbeahahbaajajbbahahbeaIababababababababababababababababababababababababababababababababababababababaBaUaDaDaDaDbfaDaDbfaDaDaDaDaUaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVbgbgbhbhbhbhaZaZbhbibhbhbhbhaVababababababababababababababababababababababababababababababababababababababababababababababababaGahbaajajbbahaIababababababababababababababababababababababababababababababababababababababababaBaDaDaDaDaDbfaDaDbfaDaDaDaDaDaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVaVaVaVaVaVaVaZaZaVaVaVaVaVaVaVabababababababababababababababababababababababababababababababababababababababababababababababababahbaajajbbahabababababababababababababababababababababababababababababababababababababababababaBaBaBaBaBaBaBaDaDaBaBaBaBaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaVbjaZaZaZbjaVaZaZaVbjaZaZaZbjaVabababababababababababababababababababababababababababababababababababababababababababababababababahajajajajahabababababababababababababababababababababababababababababababababababababababababaBaKaKaKaKaKaBaDaDaBaKaKaKaKbkaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaVaZaZaZaZaZaVaZaZaVaZaZaZaZaZaVabababababababababababababababababababababababababababababababababababababababababababababababababahblajajajahabababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaKaBaDaDaBaKaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaVbjaZaZaZbjaVaZaZaVbjaZaZaZbjaVabababababababababababababababababababababababababababababababababababababababababababababababababaGahbmbmahaIabababababababababababababababababababababababababababababababababababababababababaBbnaDaDaDaKaBaDaDaBaKaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaVaZaZaZaZaZaVaZaZaVaZaZaZaZaZaVababababababababababababababababababababababababababababababababababababababababababababababababababaGababaIababababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaKaBaDaDaBaKaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaVbjaZaZaZaZboaZaZboaZaZaZaZbjaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaDbfaDaDbfaDaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababaVaZaZaZaZaZboaZaZboaZaZaZaZaZaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaKaDaDaDaDbfaDaDbfaDaDaDaDaKaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababaVaVaVaVaVaVaVaZaZaVaVaVaVaVaVaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBaBaBaBaBaDaDaBaBaBaBaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbhbhbhbhbhaVaZaZaVbhbhbpbpbhaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaUaDaDaDaDaDaDaDaDaDaDaDaDaUaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbqaZaZaZbraVaZaZaVbhaZaZaZbhaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaUaDaDaDaDaDaDaDaDaDaDaDaDaUaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbqaZaZaZbhaVaZaZaVbhaZaZaZbhaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbsaBbtbtaDaDaDaDaDaDaDaDbtbtaBbuabababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbhaZaZaZbhaVaZaZaVbhaZaZaZbvaVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBbwbwbxaBaBaEaEaBaBbybwbwaBababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbhaZaZaZaZboaZaZboaZaZaZaZbhaVabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbsaBaBaBababababababaBaBaBbuababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbzaZaZaZaZboaZaZboaZaZaZaZbhaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBababababababaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVaVaVaVaVaVaVaZaZaVaVaVaVaVaVaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBababababababaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbjaZaZaZaZaZaZaZaZaZaZaZaZbjaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaBaBaBababababababaBaBaBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaVbjaZaZaZaZaZaZaZaZaZaZaZaZbjaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbsbAaBababababababaBbAbuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababbBaVbCbCaZaZaZaZaZaZaZaZbCbCaVbDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbsababababababbuabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababaVbEbEbFaVaVbcbcaVaVbGbEbEaVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababbBaVaVaVababababababaVaVaVbDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaVaVaVababababababaVaVaVababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaVaVaVababababababaVaVaVababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababaVaVaVababababababaVaVaVababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababbBbHaVababababababaVbHbDababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababbBababababababbDababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -588,79 +584,79 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbKbLbLbMbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObPbQbQbRbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbUbVbVbVbObQbQbQbQbObVbVbVbVbVbVbVbVbVbWbVbVbVbVbVbVbVbVbVbVbVbVbVbXbVbVbXbXbXbXbXbXbXbXbXbXbXbXbYabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbJbKbLbLbMbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbZcacbccbOcdbQbQbQbOcecececececececececfcececececececececececececececececececececececececececececgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObPbQbQbRbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicecjbOckckbOclcecececececececececfcececececececececececececececececmcecececececececececececgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicececncocpcqcrcecececececececsctcubVbVbVbVbVbVbVbVbVbVbVbVbVcvcececwbXbXbXbXbXbXbXbXcvcececubVbVbVbVbVbVbYababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacxcecrcecycoczcecececAcececectcececgcBcecCcecCcecCcecCcecCcecDcgcececgcEcFcGcHcIcJcKcKcgcececLcMcMcMcMcMcMcLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacxcececNcrcOcPcPcecNcOcececececececgcBcecececececQcececececececgcececgcRcRcRcRcRcRcRcRcgcececLcMcMcMcMcMcMcLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbObSbQbQbTbOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacxcecececececOcececScecececQcQcececgcBcecCcecCcecCcecCcecCcececfcececgcRcRcRcRcRcRcRcRcgcececTbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbYabababababababababababababababababababababababababababbUbXbXbXbObSbQbQbTbObXbXbXbXbXbYababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicecececScecececUcececececQcQcececgcBcececececececececececececfcececubVcVbVcWcWcXcYcYcgcececececececececececececececececececececececZcecececececececececececececececgabababababababababababababababababababababababababababcgcececobObQbQbQbQbOcecrcedadbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicScectcececectcecececececQcQcececgcBcecCcecCcecCcecCcecCcececgcececgdcdcdcdcdcdcdcdccgceddcececececececececececececececececececZcecececececececececececececececececgabababababababababababababababababababababababababababcgcecocpbOdebQbQbQbOcPcecedfdbdgababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdhcacicedictdjdjdjdkdkdldldmdmdmdndndncgcBcececececececececectdoctcgcececgdcdcdpdpdcdcdcdccgcececwbXbXbXbXbXbWbXbXbXbXcfbXbXbXbXbWbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXcvcfcfdqbYabababababababababababababababababababababababababbUdrcececrdsbOdtdtbOducecececLdbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdvbXbXbXdwbXbXbXbXbXbXbXbXbXbXbXbXbXbXdxbVbVbVbVbVbVbVbVbVbVbVbVbVdycececfdcdcdcdzdcdAdAdccgcececgdBdCdCdDdEcgdjcececececececedFcgdbdbdbdbdGdbdbdbdbdbdbdbdbdbdbdbcgcecedqdxcvdHdIdJdIdJdIdJdIdJdIdJdIdJdIdJdIdJdIdJdIdJdIdKcwdxdrcScecrcocjcpccdLcecedMcedadbdgababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgcMcMcMcMcMdNdOdPdQdRdRdSdScgcececfdcdcdcdcdTdUdVdWcgcececgdXcececedYcgdjcececececececedZcfdbdbdbdbeadbdbdbdbdbdbdbdbdbdbdbcgcecedqdxdrebecebecebecebecebecebecebecebecebecebecebecebdqdxdrcececpcecrcredcecpcececeeedbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgcMefegehcMcMdOeiejdRdRdSdScgcececgdcdcekdcdTdVdVdWcgcececgdXcececeelcgdjcececececececeemcgdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcgcecedqdxdreneoeneoeneoeneoeneoeneoeneoeneoeneoeneoeneoendqdxdrcecececececpcecccrcececeeedbdgababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgcMepeqercMcMcMcMcMcMcMcMcMcgcececgdcdcdcdcdcesesdccgcececgdXcececeeldqbXbXbXbXbXbXbXbXbXdydbdbdbdbdbdbdbdbdbdbdbdGdbdbdbdbcgcecedqdxdreoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeodqdxdrcecedMcecececececScececeeedbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababeteueueueueueuevababababababababababababababababababababababababababababababababcgcMewexeycMcMcMcMcMcMcMcMcMcgcececgdcdAdAezdcdAdAdccgcececgeAeBeCceeDeEeFeGeGeGeGeGeGeGeHeIdbeJdbdbdbdbdbdbdbdbdbeKdGdbdbdbcgcececTeLeLbXbXbXbXbXbXbXbXbXbXbXcfbXbXbXbXbXbXbXbXbXbXbXeLeLeMcececececScececececececedfdbdgababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababeteueNeOeNeNeOeNeuevabababababababababababababababababababababababababababababababcgcMcMcMcMcMcMcMcMcMcMcMcMcMcgcececgdTdVdVdWdTdUdVdWcgcececgeAcececeeDeEePeQcececectceeReSeTdbdbdbdbdbdbdbeJdbdbdbdGdGdbdbdbcgcecececececececececececececececececececececececececececececececececZcecececedMcececececLdbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababeteueUeNeVeNeNeVeNeUeuevababababababababababababababababababababababababababababababcgeWcMcMeWcMcMeWcMcMcMcMcMcMcgcZcecgdTeXdVdWdTdVeYdWcgcececgeAcececeeDeEePeZcececefafbeRfceTdbdbdbdbdbfddbdbdbdbdbdbdbdbdbdbcgcmcecmcecececececececececececececececececececececececececececececececececececececececedadbdgababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababeueNeNeNeNeNeNeNeNeNeNeuababababababababababababababababababababababababababababababcgeWcMcMfecMcMeWcMcMcMcMcMcMcgcececgdcesesdcdcesesdccgcececgfffgfgfgfheEePcectcZceeCceceeHeTdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcgcecececececececececececececececececececececececececececececececececececececScZcecececedfdbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababeueNeNeNeNeNeNeNeNeNeNeuababababababababababababababababababababababababababababababcgficMcMeWcMcMeWcMfjcMcMcMcMfkcececTbXbXbXbXbXbXbXbXeMcecedqbXbXcfbXbXeMflcNcOcecececeeRfmeTdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcTbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXfnababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababfoeNeNeNeNeNeNeNeNeNeNfoababababababababababababababababababababababababababababababcgfpcMcMeWcMcMfqcMcMcMcMcMcMfkcececececececececececececececffrfsftfufrfrfvcOcNctcectfwfxfyeTdbdbdbfzfAfBfCfDfEfFfGfHfIfJfKdbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababfoeNeNeNeNeNeNeNeNeNeNfoababababababababababababababababababababababababababababababcgfLcMcMeWcMcMeWcMcMcMcMcMcMfkcecZcececececececececececececffMfNfOfMfPfQfRcecOcecececeeRfSeTdbdbdbfTfUfVfWfXfYfZgagbgcgdgedbabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababeueNeNeNeNeNeNeNeNeNeNeuababababababababababababababababababababababababababababababcgfLcMcMgfcMcMeWcMcMcMcMcMcMfkcececwbXbXbXbXbXbXbXbXcvcecedqbXbXcfbXbXcvflcOcOggfbceceeRfmeTdbdbdbghdbgigjgkglgmgngogpgqgrdbcwbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbYababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababeueUeNeNeNeNeNeNeNeNeUeuababababababababababababababababababababababababababababababcggscMcMgtcMcMgucMcMcMcMcMgvcgcececggwgxgxgygzgAgxgwcgcececggBgCgCgCgCeEePcecegDcecZceceeHeTdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcgcececececececececececececececececececececececececececececececececececmcecececececececedadbdbababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababgEeueUeNeNeNeNeNeNeUeugFababababababababababababababababababababababababababababababcggGcMcMgHcMcMgucMcMcMcMcMcMgIgJcecggKgLgLgLgLgLgLgKcgcececggMgCgNgCgCeEePctcececececeeRgOeTdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcgcececececececececececececececececececececececececececececececececececececececececececedfdbdgababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababgEeueUeNeNeNeNeUeugFabababababababababababababababababababababababababababababababcggGcMcMcMcMcMcMcMcMcMcMcMcMcgctcecggLgLgLgLgLgLgLgLcgcececggCgCgCgPgQeEePcecececececeeRgReTdbdbgSdbdbdbdbdbdbdbdbdbdbdbdbdbcgcecececececececececececececececececececececececececececececececececececececececececececLdbdbababababababababababababababababababababababababababababababgTgUababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababgEeugVgVgVgVeugFababababababababababababababababababababababababababababababababcggWgWgXcMcMcMcMcMcMcMcMcMcMcgcececggYgLgLgLgZhagLgYcgcececggCgCgCgQhbeEhchdhdhdhdhdhdhdeHhedbdbdbdbeJdbdbdbdbdbdbdbeJdbdbdbcgcececwbWbWbXbXbXbXbXbXbXbXbXbXbXcfbXbXbXbXbXbXbXbXbXbXbXbWbWcvcecmcecececececececececedadbdgababababababababababababababababababababababababababababhfhghghghghghghghghggUabababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababgEhhhhhhhhgFabababababababababababababababababababababababababababababababababcggWgWhicMcMcMcMcMcMcMcMcMcMcgcececggKgLgLgLhjhagLgKcgcececggCgCgChkgCdqbXbXbXbXbXbXbXbXbXdydbdbdbdbdbdbdbhldbdbdbdbdbdbdbdbcgcececudxdyeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeoeocudxdycecececececececececeddceeedbdbababababababababababababababababababababababababababababhmhnhohohohohohohohphqabababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcghrhrhrhrhrhshseWeWeWeWhthtcgcececggLgLgLgLgLgLgLgLcgcececggCgCgCgCgCeEhucecmcececececehvcgdbdbdbdbdbdbdbdGdGdbdbdbdbdbdbdbcgcececudxdyhweohweohweohxeohxeohxeohxeohxeohxeohxeohxeohxcudxdycecececececececececececeeedbdgababababababababababababababababababababababababababababhyhnhohohohohohohohphzabababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcghAhrhrhrhrhshshBhCeWhDhDhEcgcecehFgLhGgLgLgLgLgLhHcgcececghIgNgCgCgCeEdjcecececececmcedZcfdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbcgcececudxdyhJechJechJechJechJechJechJechJechJechJechJechJcudxdycecececececececececececeeedbdbababababababababababababababababababababababababababababhyhnhohohohohohohohghKabababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbUbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXdxbVbVbVhLbVhLbVhLbVhLbVhLbVdycecehFgLgLgLgLgLgLgLhMcgcececghNgCgCgChOeEdjcecehPcecececehQcgdbdbdbdbdbdbdbeJdbdbdbdbdbdbdbdbcgcececudxeMhRhShThShThShThShThShThShThShThShThShThShThShUcTdxdycececececehVcecececececedfdbdgababababababababababababababababababababababababababababhyhWhXhohohohohohohYababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbZcacicececedjdjdjdkdkdldldmdmdmdndndncghZiaibcgiccgiccgiccgiccgiccgcececggLgLgLgLgLgLgLidcgcececTbXbXbXbXbXeLbXbXbXbXcfbXbXbXbXeLbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXeMcfcfcuieabababababababababababababababababababababababababdvdycececececececececececececLdbdbababababababababababababababababababababababababababababhyhnhohohohohohohohggUabababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicececececececececececececececececgiaiaiacgifigifigifigifigifcgcececggLhGgLgLgLgLihiicgcececececececececececececececeddcececececececececececececececececececececececgabababababababababababababababababababababababababababcgcecececececececececeddcedadbdgababababababababababababababababababababababababababababhyhnhohohohohohohohphqabababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicececececececececececececececececgijiaikcgiaiaiaiaiaiailiaiacfcecmcggLgLgLgLgLimhagLcgceddcececececececececececececececececececececececececececececececececececececgabababababababababababababababababababababababababababcgcecececececececececececedfdbdbababababababababababababababababababababababababababababhyhnhohohohohohohohphzabababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacxcececececececececececececececececgiaiaiagIiniaiaiaiaiaioiaiacfcececgipiqgLipiqgLipiqcgcececwbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXbXieabababababababababababababababababababababababababababdvbXbXbXbXbXbXbXbXbXbXbXbXbXbXfnababababababababababababababababababababababababababababirhghghghghghghghghghKabababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacxcececececececececececececececececgijiaibigiaiaiaiaiaiailiaiscgcececggLgLgLgLgLgLgLgLcgcececLcMcMcMcMcMcMcLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgThKababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacxcececececececectcececececececececgiaiaiaifiaiaiaiaiaiaiaiaiscgcececgitiuivitiuivitiucgcececLcMcMcMcMcMcMcLababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicececececececececeiwceixcPcOcecrcubVbVbVbVbVbVbVbVbVbVbVbVbVeMcececTbXbXbXbXbXbXbXbXeMcececubVbVbVbVbVbVfnababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababchcacicecececececececececececececPiycPcfcecececeixcecececececececececececececececececececececececgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababizcacbiAcecececececeixcecececNcNcPcrcPcfcececececececececececececececececmcecececececececececececgabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdvbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVeLbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbVbXbXbXbXbXbXbXbXbXbXbXfnabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbIbJbKbKbLbMababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbObPbPbQbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbTbUbUbUbNbPbPbPbPbNbUbUbUbUbUbUbUbUbUbVbUbUbUbUbUbUbUbUbUbUbUbUbUbWbUbUbWbWbWbWbWbWbWbWbWbWbWbWbXabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbIbJbKbKbLbMababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbYbZcacbbNccbPbPbPbNcdcdcdcdcdcdcdcdcdcecdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbObPbPbQbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcibNcjcjbNckcdcdcdcdcdcdcdcdcdcecdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdclcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcdcmcncocpcqcdcdcdcdcdcdcdcrcsctbUbUbUbUbUbUbUbUbUbUbUbUbUcucdcdcvbWbWbWbWbWbWbWbWcucdcdctbUbUbUbUbUbUbXababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZcwcdcqcdcxcncycdcdcdczcdcdcdcscdcdcfcAcdcBcdcBcdcBcdcBcdcBcdcCcfcdcdcfcDcEcFcGcHcIcJcJcfcdcdcKcLcLcLcLcLcLcKababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZcwcdcdcMcqcNcOcOcdcMcNcdcdcdcdcdcdcfcAcdcdcdcdcdcPcdcdcdcdcdcdcfcdcdcfcQcQcQcQcQcQcQcQcfcdcdcKcLcLcLcLcLcLcKababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbNbRbPbPbSbNababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZcwcdcdcdcdcdcNcdcdcRcdcdcdcPcPcdcdcfcAcdcBcdcBcdcBcdcBcdcBcdcdcecdcdcfcQcQcQcQcQcQcQcQcfcdcdcSbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbXabababababababababababababababababababababababababababbTbWbWbWbNbRbPbPbSbNbWbWbWbWbWbXababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcdcdcRcdcdcdcTcdcdcdcdcPcPcdcdcfcAcdcdcdcdcdcdcdcdcdcdcdcdcecdcdctbUcUbUcVcVcWcXcXcfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcYcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababcfcdcdcnbNbPbPbPbPbNcdcqcdcZdadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcRcdcscdcdcdcscdcdcdcdcdcPcPcdcdcfcAcdcBcdcBcdcBcdcBcdcBcdcdcfcdcdcfdbdbdbdbdbdbdbdbcfcddccdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcYcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababcfcdcncobNddbPbPbPbNcOcdcddedadfababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdgbZchcddhcsdidididjdjdkdkdldldldmdmdmcfcAcdcdcdcdcdcdcdcdcdcsdncscfcdcdcfdbdbdododbdbdbdbcfcdcdcvbWbWbWbWbWbVbWbWbWbWcebWbWbWbWbVbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWcucecedpbXabababababababababababababababababababababababababbTdqcdcdcqdrbNdsdsbNdtcdcdcdcKdadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdubWbWbWdvbWbWbWbWbWbWbWbWbWbWbWbWbWbWdwbUbUbUbUbUbUbUbUbUbUbUbUbUdxcdcdcedbdbdbdodbdydydbcfcdcdcfdzdAdAdBdCcfdicdcdcdcdcdcdcddDcfdadadadadEdadadadadadadadadadadacfcdcddpdwcudFdGdHdGdHdGdHdGdHdGdHdGdHdGdHdGdHdGdHdGdHdGdIcvdwdqcRcdcqcncicocbdJcdcddKcdcZdadfababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcfcLcLcLcLcLdLdMdNdOdPdPdQdQcfcdcdcedbdbdbdbdRdSdTdUcfcdcdcfdVcdcdcddWcfdicdcdcdcdcdcdcddXcedadadadadYdadadadadadadadadadadacfcdcddpdwdqdZeadZeadZeadZeadZeadZeadZeadZeadZeadZeadZeadZdpdwdqcdcdcocdcqcqebcdcocdcdcdecdadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcfcLedeeefcLcLdMegehdPdPdQdQcfcdcdcfdbdbeidbdRdTdTdUcfcdcdcfdVcdcdcdejcfdicdcdcdcdcdcdcdekcfdadadadadadadadadadadadadadadadacfcdcddpdwdqelemelemelemelemelemelemelemelemelemelemelemeldpdwdqcdcdcdcdcdcocdcbcqcdcdcdecdadfababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcfcLeneoepcLcLcLcLcLcLcLcLcLcfcdcdcfdbdbdbdbdbeqeqdbcfcdcdcfdVcdcdcdejdpbWbWbWbWbWbWbWbWbWdxdadadadadadadadadadadadEdadadadacfcdcddpdwdqemememememememememememememememememememememememdpdwdqcdcddKcdcdcdcdcdcRcdcdcdecdadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababeresesesesesesetababababababababababababababababababababababababababababababababcfcLeuevewcLcLcLcLcLcLcLcLcLcfcdcdcfdbdydyexdbdydydbcfcdcdcfeyezeAcdeBeCeDeEeEeEeEeEeEeEeFeGdaeHdadadadadadadadadaeIdEdadadacfcdcdcSeJeJbWbWbWbWbWbWbWbWbWbWbWcebWbWbWbWbWbWbWbWbWbWbWeJeJeKcdcdcdcdcRcdcdcdcdcdcdcddedadfababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababereseLeMeLeLeMeLesetabababababababababababababababababababababababababababababababcfcLcLcLcLcLcLcLcLcLcLcLcLcLcfcdcdcfdRdTdTdUdRdSdTdUcfcdcdcfeycdcdcdeBeCeNeOcdcdcdcscdePeQeRdadadadadadadaeHdadadadEdEdadadacfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcYcdcdcdcddKcdcdcdcdcKdadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababereseSeLeTeLeLeTeLeSesetababababababababababababababababababababababababababababababcfeUcLcLeUcLcLeUcLcLcLcLcLcLcfcYcdcfdReVdTdUdRdTeWdUcfcdcdcfeycdcdcdeBeCeNeXcdcdcdeYeZePfaeRdadadadadafbdadadadadadadadadadacfclcdclcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcZdadfababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababeseLeLeLeLeLeLeLeLeLeLesababababababababababababababababababababababababababababababcfeUcLcLfccLcLeUcLcLcLcLcLcLcfcdcdcfdbeqeqdbdbeqeqdbcfcdcdcffdfefefeffeCeNcdcscYcdeAcdcdeFeRdadadadadadadadadadadadadadadadacfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcRcYcdcdcdcddedadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababeseLeLeLeLeLeLeLeLeLeLesababababababababababababababababababababababababababababababcfeUcLcLeUcLcLeUcLfgcLcLcLcLfhcdcdcSbWbWbWbWbWbWbWbWeKcdcddpbWbWcebWbWeKficMcNcdcdcdcdePfjeRdadadadadadadadadadadadadadadadacSbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWfkababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababfleLeLeLeLeLeLeLeLeLeLflababababababababababababababababababababababababababababababcffmcLcLeUcLcLfncLcLcLcLcLcLfhcdcdcdcdcdcdcdcdcdcdcdcdcdcdcefofpfqfrfofofscNcMcscdcsftfufveRdadadafwfxfyfzfAfBfCfDfEfFfGfHdaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababfleLeLeLeLeLeLeLeLeLeLflababababababababababababababababababababababababababababababcffIcLcLeUcLcLeUcLcLcLcLcLcLfhcdcYcdcdcdcdcdcdcdcdcdcdcdcdcefJfKfLfJfMfNfOcdcNcdcdcdcdePfPeRdadadafQfRfSfTfUfVfWfXfYfZgagbdaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababeseLeLeLeLeLeLeLeLeLeLesababababababababababababababababababababababababababababababcffIcLcLgccLcLeUcLcLcLcLcLcLfhcdcdcvbWbWbWbWbWbWbWbWcucdcddpbWbWcebWbWcuficNcNgdeZcdcdePfjeRdadadagedagfggghgigjgkglgmgngodacvbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbXababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababeseSeLeLeLeLeLeLeLeLeSesababababababababababababababababababababababababababababababcfgpcLcLgqcLcLeUcLcLcLcLcLgrcfcdcdcfgsgtgtgugvgwgtgscfcdcdcfgxgygygygyeCeNcdcdgzcdcYcdcdeFeRdadadadadadadadadadadadadadadadacfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdclcdcdcdcdcdcdcdcdcZdadaababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababgAeseSeLeLeLeLeLeLeSesgBababababababababababababababababababababababababababababababcfgCcLcLgDcLcLeUcLcLcLcLcLcLgEgFcdcfgGgHgHgHgHgHgHgGcfcdcdcfgIgygJgygyeCeNcscdcdcdcdcdePgKeRdadadadadadadadadadadadadadadadacfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcddedadfababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababgAeseSeLeLeLeLeSesgBabababababababababababababababababababababababababababababababcfgCcLcLcLcLcLcLcLcLcLcLcLcLcfcscdcfgHgHgHgHgHgHgHgHcfcdcdcfgygygygLgMeCeNcdcdcdcdcdcdePgNeRdadagOdadadadadadadadadadadadadacfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcKdadaababababababababababababababababababababababababababababababgPgQababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababgAesgRgRgRgResgBababababababababababababababababababababababababababababababababcfgSgSgTcLcLcLcLcLcLcLcLcLcLcfcdcdcfgUgHgHgHgVgWgHgUcfcdcdcfgygygygMgXeCgYgZgZgZgZgZgZgZeFhadadadadaeHdadadadadadadaeHdadadacfcdcdcvbVbVbWbWbWbWbWbWbWbWbWbWbWcebWbWbWbWbWbWbWbWbWbWbWbVbVcucdclcdcdcdcdcdcdcdcdcdcdcZdadfababababababababababababababababababababababababababababhbhchchchchchchchchcgQabababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababgAhdhdhdhdgBabababababababababababababababababababababababababababababababababcfgSgShecLcLcLcLcLcLcLcLcLcLcfcdcdcfgGgHgHgHhfgWgHgGcfcdcdcfgygygyhggydpbWbWbWbWbWbWbWbWbWdxdadadadadadadahhdadadadadadadadacfcdcdctdwdxemememememememememememememememememememememememctdwdxcdcdcdcdcdcdcdcdcdcddccdecdadaababababababababababababababababababababababababababababhihjhkhkhkhkhkhkhkhlhmabababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcfhnhnhnhnhnhohoeUeUeUeUhphpcfcdcdcfgHgHgHgHgHgHgHgHcfcdcdcfgygygygygyeChqcdclcdcdcdcdcdhrcfdadadadadadadadEdEdadadadadadadacfcdcdctdwdxhsemhsemhsemhtemhtemhtemhtemhtemhtemhtemhtemhtctdwdxcdcdcdcdcdcdcdcdcdcdcdcdecdadfababababababababababababababababababababababababababababhuhjhkhkhkhkhkhkhkhlhvabababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcfhwhnhnhnhnhohohxhyeUhzhzhAcfcdcdhBgHhCgHgHgHgHgHhDcfcdcdcfhEgJgygygyeCdicdcdcdcdcdclcddXcedadadadadadadadadadadadadadadadacfcdcdctdwdxhFeahFeahFeahFeahFeahFeahFeahFeahFeahFeahFeahFctdwdxcdcdcdcdcdcdcdcdcdcdcdcdecdadaababababababababababababababababababababababababababababhuhjhkhkhkhkhkhkhkhchGabababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbTbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWdwbUbUbUhHbUhHbUhHbUhHbUhHbUdxcdcdhBgHgHgHgHgHgHgHhIcfcdcdcfhJgygygyhKeCdicdcdhLcdcdcdcdhMcfdadadadadadadaeHdadadadadadadadacfcdcdctdweKhNhOhPhOhPhOhPhOhPhOhPhOhPhOhPhOhPhOhPhOhPhOhQcSdwdxcdcdcdcdcdhRcdcdcdcdcdcddedadfababababababababababababababababababababababababababababhuhShThkhkhkhkhkhkhUababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbYbZchcdcdcddidididjdjdkdkdldldldmdmdmcfhVhWhXcfhYcfhYcfhYcfhYcfhYcfcdcdcfgHgHgHgHgHgHgHhZcfcdcdcSbWbWbWbWbWeJbWbWbWbWcebWbWbWbWeJbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWeKcecectiaabababababababababababababababababababababababababdudxcdcdcdcdcdcdcdcdcdcdcdcdcKdadaababababababababababababababababababababababababababababhuhjhkhkhkhkhkhkhkhcgQabababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfhWhWhWcfibicibicibicibicibcfcdcdcfgHhCgHgHgHgHidiecfcdcdcdcdcdcdcdcdcdcdcdcdcdcdcddccdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababcfcdcdcdcdcdcdcdcdcdcddccdcZdadfababababababababababababababababababababababababababababhuhjhkhkhkhkhkhkhkhlhmabababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfifhWigcfhWhWhWhWhWhWihhWhWcecdclcfgHgHgHgHgHiigWgHcfcddccdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababcfcdcdcdcdcdcdcdcdcdcdcdcddedadaababababababababababababababababababababababababababababhuhjhkhkhkhkhkhkhkhlhvabababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZcwcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfhWhWhWgEijhWhWhWhWhWikhWhWcecdcdcfilimgHilimgHilimcfcdcdcvbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWiaabababababababababababababababababababababababababababdubWbWbWbWbWbWbWbWbWbWbWbWbWbWfkababababababababababababababababababababababababababababinhchchchchchchchchchGabababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZcwcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfifhWhXichWhWhWhWhWhWihhWiocfcdcdcfgHgHgHgHgHgHgHgHcfcdcdcKcLcLcLcLcLcLcKababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababgPhGababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZcwcdcdcdcdcdcdcdcscdcdcdcdcdcdcdcdcfhWhWhWibhWhWhWhWhWhWhWhWiocfcdcdcfipiqiripiqiripiqcfcdcdcKcLcLcLcLcLcLcKababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcdcdcdcdcdcdcdcdiscditcOcNcdcqctbUbUbUbUbUbUbUbUbUbUbUbUbUeKcdcdcSbWbWbWbWbWbWbWbWeKcdcdctbUbUbUbUbUbUfkababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcgbZchcdcdcdcdcdcdcdcdcdcdcdcdcdcOiucOcecdcdcdcditcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababivbZcaiwcdcdcdcdcdcditcdcdcdcMcMcOcqcOcecdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdclcdcdcdcdcdcdcdcdcdcdcdcfabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababdubUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUeJbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbWbWbWbWbWbWbWbWbWbWbWfkabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiCababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiBabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiDababababababiBiEabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiBiFababababababiFiDiEababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiBiGiGiGiGiBabiBiGiGiGiDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiBiGiGiHiGiGiBabiBiGiGiDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaiIaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababiJiGiKiGiGiGiGiBiGiGiGiJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababiJiGiGiGiGiGiGiGiGiKiGiJababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaiIaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababiDiGiGiGiGiGiGiGiGiGiGiDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiLiMiMiMiMiMiMiNababababababababababababababababababababababababababaaaaaaaaaaiIabababababababababababababababababababababababababababababababababababababababababababababababababababababiDiOiGiGiGiGiGiGiGiGiFiDababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiLiMiPiQiPiPiQiPiMiNabababababababababababababababababababababababababaaaaaaaaaaiIabababababababababababababababababababababababababababababababababababababababababababababababababiBabababiRiDiFiGiGiGiGiGiGiFiDiSababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiLiMiTiPiUiPiPiUiPiTiMiNababababababababababababababababababababababababaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababiRiDiFiGiGiGiGiFiDiSabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiMiPiPiPiPiPiPiPiPiPiPiMababababababababababababababababababababababababaaaaiIiIiIaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababiRiDiViViViViDiSababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiMiPiPiPiPiPiPiPiPiPiPiMababababababababababababababababababababaaiIaaaaaaaaiIiIiIaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababiRiWiWiWiWiSabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiXiPiPiPiPiPiPiPiPiPiPiXababababababababababababababababababababaaaaaaaaaaaaiIiIiIaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiXiPiPiPiPiPiPiPiPiPiPiXababababababababababababababababababababaaiIiIaaaaaaiIiIiIaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiMiPiPiPiPiPiPiPiPiPiPiMababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiMiTiPiPiPiPiPiPiPiPiTiMababababababababababababababababababababababababaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiYiMiTiPiPiPiPiPiPiTiMiZababababababababababababababababababababababababaaaaaaiIiIaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiYiMiTiPiPiPiPiTiMiZabababababababababababababababababababababababababaaaaaaiIiIaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiYiMjajajajaiMiZababababababababababababababababababababababababababiIaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiYjbjbjbjbiZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababixababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiyababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababixabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababizababababababixiAabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababixiBababababababiBiziAababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababixiCiCiCiCixabixiCiCiCizababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababixiCiCiDiCiCixabixiCiCizababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaiEaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababiFiCiGiCiCiCiCixiCiCiCiFababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababiFiCiCiCiCiCiCiCiCiGiCiFababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaiEaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababiziCiCiCiCiCiCiCiCiCiCizababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiHiIiIiIiIiIiIiJababababababababababababababababababababababababababaaaaaaaaaaiEabababababababababababababababababababababababababababababababababababababababababababababababababababababiziKiCiCiCiCiCiCiCiCiBizababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiHiIiLiMiLiLiMiLiIiJabababababababababababababababababababababababababaaaaaaaaaaiEabababababababababababababababababababababababababababababababababababababababababababababababababixabababiNiziBiCiCiCiCiCiCiBiziOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiHiIiPiLiQiLiLiQiLiPiIiJababababababababababababababababababababababababaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababiNiziBiCiCiCiCiBiziOabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiIiLiLiLiLiLiLiLiLiLiLiIababababababababababababababababababababababababaaaaiEiEiEaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababiNiziRiRiRiRiziOababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiIiLiLiLiLiLiLiLiLiLiLiIababababababababababababababababababababaaiEaaaaaaaaiEiEiEaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababiNiSiSiSiSiOabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiTiLiLiLiLiLiLiLiLiLiLiTababababababababababababababababababababaaaaaaaaaaaaiEiEiEaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiTiLiLiLiLiLiLiLiLiLiLiTababababababababababababababababababababaaiEiEaaaaaaiEiEiEaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiIiLiLiLiLiLiLiLiLiLiLiIababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiIiPiLiLiLiLiLiLiLiLiPiIababababababababababababababababababababababababaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiUiIiPiLiLiLiLiLiLiPiIiVababababababababababababababababababababababababaaaaaaiEiEaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiUiIiPiLiLiLiLiPiIiVabababababababababababababababababababababababababaaaaaaiEiEaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiUiIiWiWiWiWiIiVababababababababababababababababababababababababababiEaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiUiXiXiXiXiVababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -673,19 +669,19 @@ ababababababababababababababababababababababababababababababababababababaaaaaaaa abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababaaaaaaababababababababababababababababababababababababababababababababababababjcjdjdjdjdjdjdjeababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaababababababababababababababababababababababababababababababababababjcjdjfjgjfjfjgjfjdjeabababababababababababababababababababababaaaaaaaaaaabababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababjcjdjhjfjijfjfjijfjhjdjeababababababababababababababababababababaaaaaaaaaaabababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababjdjfjfjfjfjfjfjfjfjfjfjdababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababjdjfjfjfjfjfjfjfjfjfjfjdababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjjjfjfjfjfjfjfjfjfjfjfjjababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjjjfjfjfjfjfjfjfjfjfjfjjababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjdjfjfjfjfjfjfjfjfjfjfjdababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjdjhjfjfjfjfjfjfjfjfjhjdababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjkjdjhjfjfjfjfjfjfjhjdjlabababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab -abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjkjdjhjfjfjfjfjhjdjlababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab -abababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjkjdjmjmjmjmjdjlabababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababab -abababababababababababababaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjkjnjnjnjnjlababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababaaaaaaababababababababababababababababababababababababababababababababababababiYiZiZiZiZiZiZjaababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaababababababababababababababababababababababababababababababababababiYiZjbjcjbjbjcjbiZjaabababababababababababababababababababababaaaaaaaaaaabababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababiYiZjdjbjejbjbjejbjdiZjaababababababababababababababababababababaaaaaaaaaaabababaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababiZjbjbjbjbjbjbjbjbjbjbiZababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaabababababababababababababababababababababababababababababababababiZjbjbjbjbjbjbjbjbjbjbiZababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjfjbjbjbjbjbjbjbjbjbjbjfababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjfjbjbjbjbjbjbjbjbjbjbjfababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiZjbjbjbjbjbjbjbjbjbjbiZababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababiZjdjbjbjbjbjbjbjbjbjdiZababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjgiZjdjbjbjbjbjbjbjdiZjhabababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab +abababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjgiZjdjbjbjbjbjdiZjhababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababab +abababababababababababababaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjgiZjijijijiiZjhabababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababab +abababababababababababababaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjgjjjjjjjjjhababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababab abababababababababababababaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab abababababababababababababaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab @@ -701,41 +697,41 @@ abababababababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjojojojojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaajojojojojojoaaaaaaaaaaaaaaaaaaaaaa -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojojojojojojoaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaajpjpjpjpjpjpjpjpjpjpjpjpjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajoaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojojojojojojojojojojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojrjqjqjqjqjqjqjqjqjqjqjsjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojojojojojojojojojojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojojojojojojojojojojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojojojojojojojojojojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajojojojojojojojojojoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajpjqjqjqjqjqjqjqjqjqjqjqjpaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajpjpjpjpjpjpjpjpjpjpjpjpjpaaaaaaaa +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaajkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaa +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaajljljljljljljljljljljljljlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkjkjkjkjkjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjnjmjmjmjmjmjmjmjmjmjmjojlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkjkjkjkjkjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkjkjkjkjkjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkjkjkjkjkjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajkjkjkjkjkjkjkjkjkjkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajljmjmjmjmjmjmjmjmjmjmjmjlaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajljljljljljljljljljljljljlaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 13d50d56e6a..d54c10c66f8 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -663,7 +663,7 @@ "amM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) "amN" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) "amO" = (/obj/machinery/bot/secbot/beepsky{name = "Officer Beepsky"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/hallway/primary/fore) -"amP" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) +"amP" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) "amQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) "amR" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Courtroom"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) "amS" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/courtroom) @@ -991,7 +991,7 @@ "atc" = (/obj/machinery/door/airlock{id_tag = "Dorm6"; name = "Cabin 2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "atd" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/crew_quarters/fitness) "ate" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) -"atf" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced{dir = 1},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) +"atf" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "atg" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) "ath" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) "ati" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) @@ -1094,11 +1094,11 @@ "avb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/fore) "avc" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "avd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint) -"ave" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/fancy/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep) +"ave" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/crew_quarters/fitness) "avf" = (/obj/machinery/door/airlock{id_tag = "Dorm3"; name = "Dorm 3"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "avg" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "avh" = (/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) -"avi" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) +"avi" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "avj" = (/obj/structure/table/wood,/obj/item/clothing/mask/balaclava,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "avk" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/prison) "avl" = (/obj/structure/table/wood,/obj/item/weapon/coin/silver,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) @@ -1108,7 +1108,7 @@ "avp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fitness"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "avq" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "avr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) -"avs" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/crew_quarters/fitness) +"avs" = (/obj/machinery/door/window/eastright{base_state = "left"; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) "avt" = (/obj/structure/table,/obj/item/weapon/paper{desc = ""; info = "Brusies sustained in the holodeck can be healed simply by sleeping."; name = "Holodeck Disclaimer"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "avu" = (/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "avv" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/closet/crate,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) @@ -1170,7 +1170,7 @@ "awz" = (/obj/structure/table/wood,/obj/item/device/violin,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "awA" = (/obj/structure/table/wood,/obj/item/device/paicard,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "awB" = (/obj/structure/table/wood,/obj/item/toy/cards/deck,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) -"awC" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) +"awC" = (/obj/machinery/camera{c_tag = "Arrivals Bay 1 North"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) "awD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "awE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "awF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Fitness"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) @@ -1178,7 +1178,7 @@ "awH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "awI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) "awJ" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) -"awK" = (/obj/machinery/door/window/eastright{base_state = "left"; icon_state = "left"; name = "Fitness Ring"},/obj/structure/window/reinforced,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/crew_quarters/fitness) +"awK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/storage/primary) "awL" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "awM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/crew_quarters/fitness) "awN" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) @@ -1260,7 +1260,7 @@ "ayl" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 1"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aym" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) "ayn" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) -"ayo" = (/obj/machinery/camera{c_tag = "Arrivals Bay 1 North"; dir = 1},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) +"ayo" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "ayp" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry) "ayq" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) "ayr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) @@ -1310,7 +1310,7 @@ "azj" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "azk" = (/obj/machinery/door/poddoor/preopen{id = "maint2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "azl" = (/obj/machinery/door/poddoor/preopen{id = "maint2"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) -"azm" = (/obj/structure/closet,/obj/effect/landmark{name = "blobstart"},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) +"azm" = (/obj/structure/closet,/obj/effect/landmark{name = "blobstart"},/obj/effect/spawner/lootdrop/maintenance,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/badminka,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "azn" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "azo" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "azp" = (/obj/machinery/power/smes{charge = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/electrical) @@ -1617,7 +1617,7 @@ "aFe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/toilet) "aFf" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aFg" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aFh" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aFh" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/storage/primary) "aFi" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aFj" = (/obj/machinery/light/small{dir = 8},/obj/machinery/recharge_station,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aFk" = (/obj/structure/table/wood,/obj/structure/mirror{pixel_x = -28},/obj/item/weapon/lipstick/random,/turf/simulated/floor/plasteel{tag = "icon-redbluefull"; icon_state = "redbluefull"},/area/crew_quarters/theatre) @@ -1673,7 +1673,7 @@ "aGi" = (/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/reagent_containers/spray/pestspray{pixel_x = 3; pixel_y = 4},/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh{pixel_x = 2; pixel_y = 1},/obj/structure/table/glass,/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "green"},/area/hallway/secondary/construction{name = "\improper Garden"}) "aGj" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/storage/primary) "aGk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/storage/primary) -"aGl" = (/obj/effect/landmark/start{name = "Assistant"},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plasteel,/area/storage/primary) +"aGl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGm" = (/obj/structure/table,/obj/item/weapon/weldingtool,/obj/item/weapon/crowbar,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/turf/simulated/floor/plasteel,/area/storage/primary) "aGn" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/ai_monitored/nuke_storage) "aGo" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 5},/area/ai_monitored/nuke_storage) @@ -1690,7 +1690,7 @@ "aGz" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 4},/area/hallway/primary/central) "aGA" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitory"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 8},/area/crew_quarters/sleep) "aGB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitory"},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/sleep) -"aGC" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aGC" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/wood,/area/library) "aGD" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGE" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGF" = (/obj/machinery/door/airlock{name = "Unit B"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1715,7 +1715,7 @@ "aGY" = (/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/library) "aGZ" = (/turf/simulated/floor/wood,/area/library) "aHa" = (/obj/structure/stool/bed/chair/office/dark,/obj/machinery/camera{c_tag = "Library North"; dir = 2; network = list("SS13")},/turf/simulated/floor/wood,/area/library) -"aHb" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/library) +"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) @@ -2241,9 +2241,9 @@ "aRe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aRf" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison) "aRg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"aRh" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"aRh" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 1; icon_state = "comfychair"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry) "aRi" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"aRj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"aRj" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aRk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aRl" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aRm" = (/obj/structure/table/reinforced,/obj/item/weapon/lighter/zippo,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -2267,7 +2267,7 @@ "aRE" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/library) "aRF" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/security/armory) "aRG" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) -"aRH" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) +"aRH" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aRI" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) "aRJ" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "aRK" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) @@ -2319,7 +2319,7 @@ "aSE" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/bridge) "aSF" = (/obj/machinery/computer/security/mining,/turf/simulated/floor/plasteel{dir = 6; icon_state = "brown"},/area/bridge) "aSG" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Bar West"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) -"aSH" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) +"aSH" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) "aSI" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aSJ" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) "aSK" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar) @@ -2343,17 +2343,17 @@ "aTc" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hydroponics) "aTd" = (/obj/machinery/hydroponics/constructable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/hydroponics) "aTe" = (/obj/structure/bookcase{name = "bookcase (Adult)"},/turf/simulated/floor/wood,/area/library) -"aTf" = (/obj/structure/stool/bed/chair/comfy/black,/turf/simulated/floor/wood,/area/library) +"aTf" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "aTg" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "aTh" = (/obj/effect/landmark/start{name = "Librarian"},/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/library) "aTi" = (/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library) "aTj" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "aTk" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) -"aTl" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) +"aTl" = (/obj/structure/stool/bed/chair/comfy/black,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/wood,/area/library) "aTm" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main) "aTn" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "aTo" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) -"aTp" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit) +"aTp" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main) "aTq" = (/obj/machinery/camera{c_tag = "Arrivals Bay 2"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aTr" = (/turf/simulated/floor/wood,/area/security/vacantoffice) "aTs" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -2415,7 +2415,7 @@ "aUw" = (/obj/structure/table/wood,/obj/item/weapon/pen/red,/obj/item/weapon/pen/blue{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/wood,/area/library) "aUx" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/wood,/area/library) "aUy" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main) -"aUz" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main) +"aUz" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/library) "aUA" = (/obj/machinery/camera{c_tag = "Chapel South"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) "aUB" = (/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor/plasteel{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "aUC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) @@ -2655,9 +2655,9 @@ "aZc" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard) "aZd" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard) "aZe" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/library) -"aZf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/wood,/area/library) +"aZf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/library) "aZg" = (/obj/structure/table/wood,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/library) -"aZh" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/library) +"aZh" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/quartermaster/office) "aZi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/wood,/area/library) "aZj" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/wood,/area/library) "aZk" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/library) @@ -2679,7 +2679,7 @@ "aZA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aZB" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aZC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/locker) -"aZD" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/locker) +"aZD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIE"; location = "AftH"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "aZE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/locker) "aZF" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) "aZG" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/quartermaster/storage) @@ -2714,6 +2714,7 @@ "baj" = (/turf/simulated/floor/wood,/area/crew_quarters/captain) "bak" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor/plasteel,/area/crew_quarters/bar) "bal" = (/obj/structure/sign/barsign,/turf/simulated/wall,/area/crew_quarters/bar) +"bam" = (/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/crew_quarters/hor) "ban" = (/turf/simulated/wall,/area/hallway/primary/starboard) "bao" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "bap" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 2"; dir = 2; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) @@ -2727,7 +2728,6 @@ "bax" = (/obj/machinery/power/apc{dir = 8; name = "Vacant Office APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/vacantoffice) "bay" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/port) "baz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/port) -"baA" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "baB" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "baC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "baD" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/locker) @@ -2882,7 +2882,6 @@ "bdw" = (/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bdx" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitecorner"},/area/hallway/secondary/exit) "bdy" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 4"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bdz" = (/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry) "bdA" = (/obj/machinery/door/airlock/external{name = "Port Docking Bay 3"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bdB" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) "bdC" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry) @@ -3007,7 +3006,6 @@ "bfR" = (/obj/machinery/chem_dispenser,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry) "bfS" = (/obj/machinery/chem_master,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteyellow"},/area/medical/chemistry) "bfT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/atmospherics/pipe/simple/general/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/prison) -"bfU" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bfV" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bfW" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bfX" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) @@ -3084,7 +3082,6 @@ "bhq" = (/obj/structure/bodycontainer/morgue,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/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/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plating,/area/storage/emergency) "bhu" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/storage/emergency) "bhv" = (/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/storage/emergency) "bhw" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/power/apc{dir = 4; name = "Mech Bay APC"; pixel_x = 26; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/assembly/chargebay) @@ -3649,7 +3646,6 @@ "bsj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bsk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/quartermaster/office) "bsl" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "50"},/turf/simulated/floor/plasteel,/area/quartermaster/office) -"bsm" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bsn" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central) "bso" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel{dir = 9; icon_state = "blue"},/area/crew_quarters/heads) "bsp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads) @@ -4342,7 +4338,6 @@ "bFA" = (/obj/machinery/vending/wallmed{pixel_x = 28; pixel_y = 0},/obj/machinery/camera{c_tag = "Medbay Recovery Room"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/obj/structure/closet/wardrobe/pjs,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bFB" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "telelab"; name = "test chamber blast door"},/obj/structure/window/reinforced/fulltile,/obj/machinery/door/firedoor/heavy,/turf/simulated/floor/engine,/area/toxins/explab) "bFC" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) -"bFD" = (/obj/structure/flora/tree/festivus,/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 5},/area/crew_quarters/hor) "bFE" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bFF" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/door_control{id = "medpriv4"; name = "Privacy Shutters"; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay) "bFG" = (/obj/structure/grille,/obj/machinery/door/poddoor/preopen{id = "medpriv4"; name = "privacy door"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/fulltile,/turf/simulated/floor/plating,/area/medical/medbay) @@ -5462,7 +5457,6 @@ "cbc" = (/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "yellow"},/area/tcommsat/computer) "cbd" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; dir = 8},/turf/simulated/floor/plating,/area/construction) "cbe" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) -"cbf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIE"; location = "AftH"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cbg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cbh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellow"},/area/hallway/primary/aft) "cbi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "32"},/turf/simulated/floor/plasteel,/area/engine/break_room) @@ -6473,7 +6467,6 @@ "cuz" = (/obj/docking_port/stationary{dir = 2; dwidth = 11; height = 22; id = "whiteship_ss13"; name = "SS13 Arrival Docking"; width = 35},/turf/space,/area/space) "cuA" = (/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_x = 32; pixel_y = -24; tag = "icon-direction_med (EAST)"},/obj/structure/sign/directions/science{dir = 4; icon_state = "direction_sci"; pixel_x = 32; pixel_y = -32; tag = "icon-direction_sci (EAST)"},/obj/structure/sign/directions/engineering{pixel_x = 32; pixel_y = -40},/turf/simulated/floor/plasteel,/area/hallway/primary/central) "cuB" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/sign/directions/engineering{pixel_x = -32; pixel_y = -40},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_x = -32; pixel_y = -24; tag = "icon-direction_med (EAST)"},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_x = -32; pixel_y = -32; tag = "icon-direction_evac (EAST)"},/turf/simulated/floor/plasteel,/area/hallway/primary/central) -"cuC" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/badminka,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cuD" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/camera{c_tag = "Custodial Closet"},/obj/structure/stool/bed/chair/janicart,/turf/simulated/floor/plasteel,/area/janitor) (1,1,1) = {" @@ -6569,55 +6562,55 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaafaafaafaafalnaloalnaafaafaafaafabfabfabfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajZalpalqalrajZaiyaiyaiyalsaltalualvaiAakPakQakPafRalwakSalxafRalyakSalzafRalAakSalBafRalCalDalEakYalFafRalGakSalHaiAalIalJalIalKalIalIalLalIaiuaivaiwacAacAaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaalMalNalMaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaallalOallaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaaaaafaaaaaaaafaaaalnalPalnaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajZalQalQalRajZaaaaaaalSaixaiyalTalUaiAakPalVakPaiAalWalXalXalYalXalXalXalYalXalXalXalYalZamaambamcamdaiAaiAaiAaiAaiAameamfameaiRameameamgaiRaiuamhamiamjacAacAacAaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaalMamkalMaaaaafaafaafaafaaaaafaaaaaaaaaaafaafaaaaaaaaaallamlallaafaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaafalnalnammalnalnaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakFamnalQamoajZaiyaiyaiyampamqamramsaizaiAaiAaiAaiAamtamtamtamuamtamtamtamvamtamtamtamuamtamtamtamwamwamxamyamyamyamzameamfameaiRameameamgaiRacAaivamAaeUamBamCamBaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaafalMalMalNalMalMaafaaaaaaaafaaaaafaaaaaaaaaaaaaafaafaaaaaaallamlallaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaafamDamEamFamGamDamHamHaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajZamIalQalQamJamKakLamKakeakMakNakMamLamwamwamwamMamwamwamNamwamwamwamwamwamwamwamOamwamPamwamQamwamwamwamwamwamwamRaiRamSamTamUamVaiRamWaiRamXamYamZanaanaanbacAaagaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafancandaneanfancaafaaaaaaaafaaaaafaaaaafaaaaaaaaaaafallallallamlallallallallallallaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaafamDamEamFamGamDamHamHaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajZamIalQalQamJamKakLamKakeakMakNakMamLamwamwamwamMamwamwamNamwamwamwamwamwamwamwamOamwamwamwamQamwamwamwamwamwamwamRaiRamSamTamUamVaiRamWaiRamXamYamZanaanaanbacAaagaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafancandaneanfancaafaaaaaaaafaaaaafaaaaafaaaaaaaaaaafallallallamlallallallallallallaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamHamHamHamHamHaafaafamDanganhaniamDanjamHaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajZankankankajZaiyaiyanlanmannanoanpaixanqanqanqanqanqanransanqanqanqanqanqanqanqantanuanuanuanvanwanuanxanyanzanAamzanBanCaiuaiuaiuaiuaiuaiuacAanDanEacAanFanGacAaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaafancanHanIanJancaafaaaaaaaafaaaaafaaaaafallalmallalmallanKamlamlamlamlamlamlanLallaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaamHamHamHamHanManNanOamHaaaaaaamDanPanQanRamDanSamHaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanTanUanUanUafOaaaaafaizaiyanVaixanWanXanXanYanZanYanXanXaoaaobaobaobaocaobaobaodaoeaofaoganaaohanaanaanaanaaoianaanaanaanaanaaojaokaolaomaonaonaooaopaoqaoraosacAaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaagaagaagaaaaafancaotaouaovancaowaowaowaowaowalmalmalmallaoxamlanLallallamlallallallallaoyallallaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafajxaeZaelaaaajxaeZaelaafaaaaagaagaagaaaaaaaafamHaozaoAaoBanSaoCanSamHaoDaoDamDamDaoEaoFamDanSamHamHaoDaoDaoDamHamHaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaixaoGakLaixaoHanXaoIaoJaoJaoJaoKanXaoLaoMaoNaoOaoPaoQaobamtamwaoRaoSaoTagTagTagTagTagTaoUaoVagTagTagTagTagTaoWaoXaoYaoZapaapbapcacAapdapeacAaafapfapgapgaphapgapgapiaafaafaaaaaaaaaaafalmapjalmaaaaowancancapkaplancapmamlamlamlallapnamlapoallamlamlamlappallamlallapqaprallamlapsallaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafajZaptajZaaaajZaptajZaafaafaoDapuaoDaaaaaaaafamHapvapwapxapyapzapAamHapBanSapCapDapEanSanSanSanSanSanSanSanSanSamHaaaapFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaixaoGapGaixapHanXapIapJapKapLapManXapNaobapOapPapQapRapSamtamwamyaoSahxapTapTapTapTapTapUapVapTapTapTapTapTapTapTapTapWapXapYapZapZapZapZapZaqaaqbaqcaqcaqcaqcaqcaqbapWaafaaaaaaaaaaafaqdamlalmaaaaowaqeaqfaqgaqhamlamlamlallamlallaqiamlamlallamlaqjaqkaqlaoyamlallaqmaqnallamlaqoallaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqpajZaqqajZaqpajZaqqajZaqpaafaqranSaoDaaaaaaamHamHamHamHamHaqsaqtaquaquaqvaqwaqxaqwaqyaqzaqAaqBamHanSamHamHamHanSamHaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqCaqCaqCaqCaqCaqCaqCaqCaqDanXaqEapJaqFaqGaqHanXapNaqIaqJaqKaqLaqMapSamtamwaqNaoSahxapTaqOaqPaqQaqRaqSaqTapTaqUaqVaqWapTaqXaqYaqZapWaraarbarcardarearfargarhaqbaqcaqcaqcaqcaqcaqbapWaafaafaafaafalmalmapjalmalmaowariamlarjamlanKamlallallarkallallarlallallaqlarmarnamlallamlaroaroaroaroaroaroaroaroaroabtabtabtabtaaIabtabtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarparqarrarsarparqartarsarpamHaoDapuaoDaoDaoDamHaruarvarvarvarvarvarvarwarxamHamHamHamHamHaryamHamHanSarzamHarAanSamHamHamHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaqCarBarCaqCarDarEarFaqCaqDanXarGarHarIarIarJarKarLarMarNarNarOarNapSamtamwarPaoSahxapTarQarRarSarTarUarVapTarWarXarYapTarXarZasaapWasbascasdaseaseaseasfasgaqbaqcaqcaqcaqcaqcaqbapWapWapWaaaaaaalmamlamlamlapmaowashaqlarjamlasiasjaskaoyamlamlamlamlaslamlamlarmasmamlasnamlaroasoaspasqaroasrassastaroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarparpasuarparparpasuarparpasvanSanSaswaswarzasxasyaszasAasAasAasAasAasAasBasCasDaaIasEamHasFasGasHanSasxamHasIanSanSanSaoDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqCaqCaqCasJasJaqCasJasJasJaqCasKanXasLasMasNasOasPasQasRasSaobasTasUasVaobasWamwamyaoSahxapTapTapTapTapTasXasYapTasZataatbapTapTatcatbapWatdateatfatgatgathatiatjatkaqcaqcaqcaqcaqcatlatmatnatoaaaaaaalmamlamlatpamlaowatqamlatratsatsatsatsattatsatuamlamlamlamlamlamlamlamlallasjaroatvatwatwaroatxatyatzaroaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarparpasuarparparpasuarparpasvanSanSaswaswarzasxasyaszasAasAasAasAasAasAasBasCasDaaIasEamHasFasGasHanSasxamHasIanSanSanSaoDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqCaqCaqCasJasJaqCasJasJasJaqCasKanXasLasMasNasOasPasQasRasSaobasTasUasVaobasWamwamyaoSahxapTapTapTapTapTasXasYapTasZataatbapTapTatcatbapWatdateamPatgatgathatiatjatkaqcaqcaqcaqcaqcatlatmatnatoaaaaaaalmamlamlatpamlaowatqamlatratsatsatsatsattatsatuamlamlamlamlamlamlamlamlallasjaroatvatwatwaroatxatyatzaroaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpatAatBatCarpatDatBatCarpapAatEatFatGatGatGatHatIatJatKatLatMatNatOamHasyatJaaIatPasDaoDatQatRamHamHamHamHamHamHamHanSaoDaafaagaagaagaagaagaagaagaagaagatSatTatSasJasJaqCaqCatUaqCaqCasKanXanXanXatVanXanXanXatWatXaobaobaobaobaobatYamwatZaoSahxapTaqOaqPauaaqRaubaucaudaueaufaugauhauiaujaukaulaumateaunauoauoaupasfauqatoaqcaqcaqcaqcaqcatoaurausatoaafaafallamlamlallallaowaowaowaowaowaowaowaowaowallautauuallallallallallallallauvauwauxauyauzauAauBauCatvauDaroaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaqparpasuauEaqparpauFauEaqpamHauGamHamHamHamHamHasyatJanSauHauIanSanSamHasyatJauJaafauJamHapwatRamHauKauLamHasIapAaszauMasAauNauOauOauOauOauOauPauOauOauOauNauQauNauNauRauNauSauRauTauUauVauWauWauWauWauWauWauWauXauYauWauWauWauWauZavaavbavbavcavdapTarQavearSavfarUavgavhaviavjaxZavlavmavnavoavpavqavraunauoauoaupasfavsatoaqcaqcaqcaqcaqcatoavtausatoaaaaaaallavuamlamlavvallavwanLavxavyanKallatqanKallavzamlallavAamlallavBavCavDavEatsatsavFavGavHavIavJavKavLaroabtabtaaIaaIabtabtabtabtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMavNavNavNavOavNavNavNavPavQavRavPavPavPavSamHavTatJaDravUavVanSavWamHasyavXasAasAasAasAasAasAasCanSavVavYanSanSavZawaawbawcawdawdawdaweawdawfawdawdawgawhawiawjawjawjawjawjawjawkawlawmawnawnawnawnawnawnawnawoawnawpawpawpawpawpawqawrawsawtawuapTapTapTapTapTawvawwawxawyawzawAawBawCawDawEawFawGawHawIawJawJawKawLawMawNaqcaqcaqcaqcaqcawOawPawQatoaaaaaaallamlamlamlamlamlamlavDatsatsatsatsatsatsatsawRamlamlamlamlasnamlamlarjawSawTawUawVawWawXatwatwatwawYaroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaqparpasuauEaqparpauFauEaqpamHauGamHamHamHamHamHasyatJanSauHauIanSanSamHasyatJauJaafauJamHapwatRamHauKauLamHasIapAaszauMasAauNauOauOauOauOauOauPauOauOauOauNauQauNauNauRauNauSauRauTauUauVauWauWauWauWauWauWauWauXauYauWauWauWauWauZavaavbavbavcavdapTarQarSarSavfarUavgavhatfavjaxZavlavmavnavoavpavqavraunauoauoaupasfaveatoaqcaqcaqcaqcaqcatoavtausatoaaaaaaallavuamlamlavvallavwanLavxavyanKallatqanKallavzamlallavAamlallavBavCavDavEatsatsavFavGavHavIavJavKavLaroabtabtaaIaaIabtabtabtabtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMavNavNavNavOavNavNavNavPavQavRavPavPavPavSamHavTatJaDravUavVanSavWamHasyavXasAasAasAasAasAasAasCanSavVavYanSanSavZawaawbawcawdawdawdaweawdawfawdawdawgawhawiawjawjawjawjawjawjawkawlawmawnawnawnawnawnawnawnawoawnawpawpawpawpawpawqawrawsawtawuapTapTapTapTapTawvawwawxawyawzawAawBaviawDawEawFawGawHawIawJawJavsawLawMawNaqcaqcaqcaqcaqcawOawPawQatoaaaaaaallamlamlamlamlamlamlavDatsatsatsatsatsatsatsawRamlamlamlamlasnamlamlarjawSawTawUawVawWawXatwatwatwawYaroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMawZaxaawZaxbaxaaxaaxcawZaxaaxdaxeaxfaxfaxgamHavTatJaxhanSanSaxiaxjamHaxkarvarvarvarvarvarvaxlatJaxmanSamHasvasvaxnapNaqCaxoaxpaxqaxqaxraxqaxsaxqaxqaxtaxoaxuaxvaxvaxvaxvaxvaxvaxvavZaxwaxxaxyaxzaxAaxBaxCaxDaxEaxFaxGaxHaxIaxJaxKaxLamwaxMacAaeUapTaqOaqPaxNaqRaxOaxPaxQaxQaxQaxRaxSaxTaxUaxVaulaxWaxXaxYaHFayaaybatiaycaydaqcaqcaqcaqcaqcaydapWapWapWallallallanKallallaoyallallarjallallayeallallaoyallarjavuallallaoyallamlavuarjawSayfaroaygavGayhayiayjavGaykaroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpavMaylavMaBGaxaaxaaMBavMaylavMayqayraxbaysamHavTavXaytasAasAasCayuayuallasnallayuayuayuayuayvaywauQauNauNauNauNayxapNarBaxoaaaaafaaaayyaaaayzaaaaafaaaaxoaxuaxvayAayBayCayDayEaxvavZayFayGayHayIayJayKayLayMayMayNayOayOayOayPaxKayQamwayRacAaeUapTarQarSarSaySarUayTayUayVayWayXayYayZayZazaayZapWazbazcazdazeazfazgapWaydaqcaqcaqcaqcaqcaydapWaqoamlawTazhallallallaqoamlallaqoarjallaziamlallazjamlallazkazlallazmamlallaoyaoyarjaznazoaroazpavGazqazrazqavGazsaroaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaztaqpazuatBavMaymaynayoaypavMatBazuavMaqpazvazwamHazxazyazzazAatGazBayuazCazDazEazFazGazHazCayuazIazJazKawdawdawdawdawdazLazMaxoaafazNazNazOazNazPazNazNaafaxoaxuaxvazQazRazSazTazQaxvazUazVazWazXazYazZaAaaAbaAcaAdaAeaAfayOayOayOaAgayQamwaAhacAaeUapTapTapTapTapTaAiaAjaAkayZayZayZayZayZaAlaAmaAnayZapWapWapWapWaAoaApapWaydaqcaqcaqcaqcaqcaydapWallamlaAqazhallaArallamlamlallamlarjallamlamlallamlamlallarjasjallamlamlallaAsamlarjawSaAtaroaroaroaroaroaroaroaroaroabtabtabtabtabtaafaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaztaqpazuatBavMaymaynawCaypavMatBazuavMaqpazvazwamHazxazyazzazAatGazBayuazCazDazEazFazGazHazCayuazIazJazKawdawdawdawdawdazLazMaxoaafazNazNazOazNazPazNazNaafaxoaxuaxvazQazRazSazTazQaxvazUazVazWazXazYazZaAaaAbaAcaAdaAeaAfayOayOayOaAgayQamwaAhacAaeUapTapTapTapTapTaAiaAjaAkayZayZayZayZayZaAlaAmaAnayZapWapWapWapWaAoaApapWaydaqcaqcaqcaqcaqcaydapWallamlaAqazhallaArallamlamlallamlarjallamlamlallamlamlallarjasjallamlamlallaAsamlarjawSaAtaroaroaroaroaroaroaroaroaroabtabtabtabtabtaafaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaylavMavMavMavMavMavMaylavMaaaaqpaAuaysaAvaAvaAwaAxaAvaAvaAyayuazCazEaAzaAAazEazEazCayuaqCaABaACaADaADaADaADaADaADaADaAEaaaazNaAFaAGaAIaAHaAJazNaaaaxoaxuaxvazQaAKaALaAMazQaxvawaazLaxxaANaAOaAPaAQaARaAbaASaATayOayOaAUayOaAgayQamwayRacAaeUapTaqOaqPaAVaqRaxOaAWayZaAXaAmaAYaAYayZaAlaAZaAnayZaBaaBbaBcaBdaBeaApaafaBfaBgaBgaBgaBgaBgaBhaaaallamlaBiaBjallallallallallallaBkaBlallallallallallallaBmaBnaBoaBpaBpaBpaBqaBraBsaBtaBuaBvaBwaBxaByaBzaBAaBBaBCaBDaBDaBDaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaajxaekaBEaekaeZaeZaeZaeZaekaBEaBFaelaqpaBGaBHaBIaBJaBKaBLaBMaBNaBOayuazCazEazEaBPazEazEazCayuaBQaBRaBSaBTaBUaBVaBWaBXaBYaBZaAEaafazNaCaaCbaCdaCcaCeazNaafaxoaxuaxvaCfaCgaChaCiaCjaxvapNaCkaxxaClaCmaCnayOaCnaCoaCpaCqaCraAgaxKaCsaxKayQamwayRacAaeUapTarQarRarSaCtarUaCuayZaCvaAmaAmaAmazaaCwaCxaCyayZaCzaCAaCBaCCaCDaApaaaaafaaaaafaaaaafaaaaafaaaallavuaCEaBsaCFaCGallasiamlavuarjamlallaaaallawTaBsaBsaCHaCIaCJaCJaCJaCJaCJaCKaCLaCMaCNaCOaCOaCOaCPaCQaCRaCSaCTaCUaCVaCWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajxaekaekaCXaOualQaCZaDaaDbaDcaDdaDealQaDgaDfavMaBGaDhaAvaDiaDjaDkaDlaDmaDnayuaDoazEazEazEazEaDpaDqbRJaDsaDtaDuaBYaBYaBYaBYaBYaBYaBYaAEaaaazNaDvaDwaDwaDxaDzazNaaaaxoaxuaxvaDAaDBaDCaDDaDEaxvapNaDFaxxaxxaDGaATaDHaATaDIaxxaxxaDJaDKaxKaDLaxKayQamwayRacAaeUapTapTapTapTapTaDMaDNaDOaDPaDQaDRaDRaDRaDSayZaDTayZaDUaDVaDWaBdaBeaApallallallallallallallallallallallallallaDXallallallallawTaBtaDYaDZaEaaDZaEbaEcaEdaEdaEeaEfaEfaEfaEfaEfaEgaEhaEiaEiaEiaEiaEiaEiaBDaEjaEkaElaBDaBDaBDaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZaEmaEmaEnalQaEoalQaEoalQaEoalQaEoalQaDgaEpavMaBGaEqaAvaEraEsaEtaEuaEvaEwayuaExazEaEyaEzaEzaEAaEBaECaEDaEEaEFaEGaEGaEGaEGaEGaEHaEIaAEaafazNaEJaDyaEKaELaEMazNaafaxoaENaEOaEPaEQaDCaERaESaETaEUaEVaxKaEWaEXaDJaDJaDJaEYaEZaxKaFaaFaaxKaDJaxKaFbaoeaFcacAaeUaeUaeUaeUaeUamXawvaFdaFeaFfaFgaFeaFhaFeaFiaFeaFjayZaFkaFlaFmaBdaFnaFoaFpaFqaFraFsaFtaFuaFuaFuaFuaFvaFwaFuaFuaFxaFyaFzaFAaBpaFBaFCaFDaFEaFFaFEaFGaFHaEfaEfaFIaEfaFJaFKaFLaEfaEiaFMaEiaFNaFOaFPaFQaFRaFSaFTaFUaFVaFWaFXaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZalQalQaGaalQaEoalQaEoaGbaEoalQaEoalQaDgaEpavMaBGaGcaAvaAvaGdaGeaGfaGgaAvayuayuayuayuaGhazEazEaGiayuaGjaGkaBYaBYaBYaGlaBYaBYaBYaGmaAEaaaazNazNaGnaGoaGnazNazNaaaaxoaxuaxvaGpaGqaGraGsaGtaxvapNaGuaxKaGvaEXaDJaDJaDJaEYaGwaxKaAgaAgaxKaCsaxKaGxaGyaGzacAamXacAacAacAacAacAaGAaGBayZaGCaAmayZaGDayZaGEayZaGFayZaGGaGHaFmaBdaGIaGJaGKaGLaGMaGMaGNaGMaGMaGOaGMaGPaGQauwauwauwauwaGRaGSaGTaGUaGVamlaGWaGWaGWaGWaGXaEfaGYaGZaHaaHbaHcaHdaEfaHeaHfaEiaHgaHhaHiaHjaFRaHkaEjaEkaCTaHlaHmaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZaEmaEmaEnalQaEoalQaEoalQaEoalQaEoalQaDgaEpavMaBGaEqaAvaEraEsaEtaEuaEvaEwayuaExazEaEyaEzaEzaEAaEBaECaEDaEEaEFawKaEGaEGaEGawKaEHaEIaAEaafazNaEJaDyaEKaELaEMazNaafaxoaENaEOaEPaEQaDCaERaESaETaEUaEVaxKaEWaEXaDJaDJaDJaEYaEZaxKaFaaFaaxKaDJaxKaFbaoeaFcacAaeUaeUaeUaeUaeUamXawvaFdaFeaFfaFgaFeayoaFeaFiaFeaFjayZaFkaFlaFmaBdaFnaFoaFpaFqaFraFsaFtaFuaFuaFuaFuaFvaFwaFuaFuaFxaFyaFzaFAaBpaFBaFCaFDaFEaFFaFEaFGaFHaEfaEfaFIaEfaFJaFKaFLaEfaEiaFMaEiaFNaFOaFPaFQaFRaFSaFTaFUaFVaFWaFXaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZalQalQaGaalQaEoalQaEoaGbaEoalQaEoalQaDgaEpavMaBGaGcaAvaAvaGdaGeaGfaGgaAvayuayuayuayuaGhazEaAzaGiayuaGjaGkaBYaBYaBYaFhaBYaBYaBYaGmaAEaaaazNazNaGnaGoaGnazNazNaaaaxoaxuaxvaGpaGqaGraGsaGtaxvapNaGuaxKaGvaEXaDJaDJaDJaEYaGwaxKaAgaAgaxKaCsaxKaGxaGyaGzacAamXacAacAacAacAacAaGAaGBayZaGlaAmayZaGDayZaGEayZaGFayZaGGaGHaFmaBdaGIaGJaGKaGLaGMaGMaGNaGMaGMaGOaGMaGPaGQauwauwauwauwaGRaGSaGTaGUaGVamlaGWaGWaGWaGWaGXaEfaGYaGZaHaaGCaHcaHdaEfaHeaHfaEiaHgaHhaHiaHjaFRaHkaEjaEkaCTaHlaHmaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeZaHnaHnaHoalQaEoalQaEoalQaEoalQaEoalQaDgaEpavMaHpaHqaHraHsaHsaHtaHuaxaaHvaHwaHxaHyayuaHzazEazEaHAayuaHBaHCaBYaHDaHEaOwaHGaHHaHIaHJaAEaaaaafaaaaHKaHLaHKaaaaafaaaaxoaxuaxvaDCaHMaHNaHOaHPaxvapNasJaxKaHQaHRaDJaDJaDJaHSaHTaxKaaaaaaaHUaHVaHWaHXaHYbzZaIaaIbaHUaaaaaaaIcaIdaIeaIfayZaIgaAmaAmaAmaCxaAmaAmaAmayZaBdaIhaIiaBdaBdaApaIjaIkaIkaIlaImaInaIkaIoaIkaIpaIqaIpaIraIpaIsaGWaGWaItaGWaGWaGWaGWaIuaIvaGWaGXaEfaGZaIwaIxaIyaIzaIAaEfaIBaICaIDaIEaIFaIGaIHaIIaIJaBAaIKaFVaFWaILaFYaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanTaekaekaCXaCYalQalQalQalQalQalQaIMalQaDgaINavMaBGaxaaIOaIPaIPaIPaIPaIPaIPaIPaIQaxaayuaIRaISaIRayuayuaITaIUaIVaADaADaADaADaIVaIWaIXaAEaIYaIZaIZaJaaJbaJaaIZaIZaJcaxoaJdaxvaJeaxvaJfaJfaJgaxvaJhaJiaxKaxKaxKaAgaDHaAgaxKaxKaxKaHUaHUaHUaJjaHYaHYaHYaHYaHYaJkaHUaHUaHUaIcaJlaIeaJmayZayZayZayZayZayZayZayZayZayZaJnaJoaJpaJqaJraJsaJtaJuaIkaJvaImaJwaJxaJwaIpaJyaJzaIpaJAaIpaJBaJCaJDaJEaJFaJFaJFaJGaJHaJIaGWaGXaEfaJJaIwaJKaIyaIzaJLaEfaJMaJNaJOaJPaJQaJRaJSaJTaJUaJVaJWaCTaHlaHmaFYaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanTaekaJXaekaeZaeZaeZaeZaekaBEaJYafOaqpaJZaxaaKaaKbaKbaKcaKbaKdarpaKeaKfaxaaKgaKhaKiaKiaKjaKiaKkaKlaKiaKiaKiaKiaKiaKiaKiaKmaKnaKoaKpaKqaKqaKraKsaKqaKqaKqaKtaKuaKvaKraKqaKqaKqaKwaGyaKxaHYaKyaKzaHZaIaaIaaIaaHXaHYaHYaKAaHYaKBaKCaKDaKEaKFaKGaKHaKIaHYaHYaKAaKJaKKaKLaKMaKNaKOaKPaKQaHYaKRaHYaBdaKSaKTaKUaJoaKVaKWaKXaKYaKZaLaaIkaLbaLcaLdaLeaLfaIpaLgaJzaLhaLiaIpaGWaLjaLkaLlaLmaLnaLoaLpaLqaLraGWaGXaEfaLsaLtaLuaLvaLwaLxaEfaLyaLzaEiaLAaLAaLAaLAaEiaLBaCRaJWaCTaBDaBDaBDaLCaLCaLCaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanTaekaJXaekaeZaeZaeZaeZaekaBEaJYafOaqpaJZaxaaKaaHbaKbaKcaKbaKdarpaKeaKfaxaaKgaKhaKiaKiaKjaKiaKkaKlaKiaKiaKiaKiaKiaKiaKiaKmaKnaKoaKpaKqaKqaKraKsaKqaKqaKqaKtaKuaKvaKraKqaKqaKqaKwaGyaKxaHYaKyaKzaHZaIaaIaaIaaHXaHYaHYaKAaHYaKBaKCaKDaKEaKFaKGaKHaKIaHYaHYaKAaKJaKKaKLaKMaKNaKOaKPaKQaHYaKRaHYaBdaKSaKTaKUaJoaKVaKWaKXaKYaKZaLaaIkaLbaLcaLdaLeaLfaIpaLgaJzaLhaLiaIpaGWaLjaLkaLlaLmaLnaLoaLpaLqaLraGWaGXaEfaLsaLtaLuaLvaLwaLxaEfaLyaLzaEiaLAaLAaLAaLAaEiaLBaCRaJWaCTaBDaBDaBDaLCaLCaLCaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaylavMavMavMavMavMavMaylavMaaaaqpaAuaLEaKaaLFaLGaLHaLHaLIarpaLJaKfaLKaLLaKhaLMaLNaLOaLPaLQaLRaKiaKiaKiaKiaKiaKiaKiaKmaKiaKhaKiaKiaKiaLSaLTaLUaLUaLUaLUaLVaLUaLWaLUaLUaLXaKhaGyaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaHYaKAaHYaLYaLZaMaaMbaMcaMdaMeaMfaHYaHYaKAaHYaHYaHYaHYaHYaHYaHYaHYaHYaMgaHYaBdaKUaKUaKUaMhaMiaMjaMkaMlaMmaMnaIkaMoaImaMpaIkaIkaIpaMqaJzaMraLiaMsaIpaGWaGWaGWaGWaGWaGWaMtaMuaMvaGWaGXaEfaMwaGZaMxaMyaGZaMzaEfaEiaEiaEiaEiaEiaEiaMAaEiaEjaEjaEkaCTaMCaMDaBDaMEaMFaMGaMHaMIaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaztaqpavMatBavMaNTaNUaNVaNWavMatBavMavMaqpaBGaxaaKaaMJaMKaLHaLHaLIarpaMLaKfaxaaLLaKhaKiaMMaMNaMNaMNaMOaMPaMQaMNaMRaMNaMNaMNaMSaMNaMTaMNaMNaMNaMUaMVaMWaMXaMXaMYaMZaNaaNbaNcaKicrraKhaGyaHYaNeaHYaNfaNfaNfaNfaNfaNfaNfaNfaNgaNfaNfaNfaNfaNfaNfaNfaNfaNfaNfaNfaNhaNfaNfaNfaNfaNfaNfaNfaNfaHYaHYaHYaBdaNiaNiaNiaNiaNiaNjaNkaJsaKZaNlaIkaNmaNnaNoaIkaNpaIpaNqaNraNsaLiaNtaIpaGWaNuaNvaNwaNxaNwaNyaNzaNAaGWaGXaEfaNBaNBaNCaNDaNEaNEbqoaEfaNGaNHaNIaBDaNJaNKaNLaEjaEjaNMaNNaBDaNOaBDaNPaNQaNRaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafarpavMaylavMaBGaxaaxaaMBavMaylavMaNXaNYaNZaxaaKaaOaaOaaKcaOaaKdarpaObaKfaxaaOcaOcaOcaOdaOcaOeaOeaOeaOeaOeaOfaOgaOeaOhaOeaOeaOeaOiaOjaOkaOjaOlaOmaOnaKiaKiaOoaOpaOqaOraKlaKiaNdaOsaOsaHYaHYaHZaHUaHUaHUaHUaHUaHUaHUaHUaOtbUPbUObUQbUObUObUObVMbUObWHbUObXtaOtaHUaHUaHUaHUaHUaHUaHUaHUaHXaHYaHYaIkaOAaOBaOCaOCaOCaOCaOCaJsaODaOCaIkaOEaOFaOGaIpaIpaIpaOHaOIaIpaIpaIpaIpaGWaNwaOJaOKaOKaOKaOLaOMaNwaGWaGXaEfaONaGZaNCaNDaGZaGZaOOaEfaOPaOQaORaBDaEjaOSaOTaOUaOUaOVaOWaOXaOYaBDaOZaPaaNRaPbaNRaPcaPdaPdaPcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaPeaxaavNaNZaxaaxaaPfavNaxaaPeaNZaxaaxaaxaaPgaPhaPhaPhaPhaPhaPhaPhaPiaxaaOcaPjaOcaPkaOeaPlaPmaPnaPoaPpaPmaPqaPraPsaPtaPuaPvaOiaPwaPxaPyaOlaPzaOnaOnaPAaOnaOnaOsaPBaPCaPDaPEaOsaOsaPFaHYaHZaHUaaaaaaaaaaaaaaaaaaaaaaOtaPGaPHaPIaPJaPKaPLaPMaPNaPOaPPaPQaOtaaaaaaaaaaaaaaaaaaaaaaHUaHXaHYaPRaIkaPSaOCaOCaOCaOCaOCaPTaJsaODaPUaPVaJsaPWaPXaIpaPYaPZaQaaQbaQcaQdaQeaQfaIpaNwaQgaQhaQhaQhaQiaQjaNwaGWaQkaEfaQlaQlaNCaNDaQmaQmaQnaEfaEfaQoaEfaBDaQpaNKaNLaQqaQqaNMaNNaBDaBDaBDaLDaQraQsaQtaLDaLDaLDaLDaQuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaavMaQvaQwaQwaQwaQwaQwaQwaQwaQwaQvaQwaQxaxaaxaaLLaxaaQyaQzaxaaQAaQBaxaaQCaQDaOcaQEaOcaPkaOeaQFaPmaQGaPmaPmaPmaPqaQHaPmaPmaPmaPvaOiaQIaPxaPxaOlaPzaOnaQJaQKaQKaQLaOsaQMaQNaQOaQPaQQaQRaHYaHYaHZaHUaaaaaaaaaaaaaOtaOtaOtaOtaQSaQTaQUaQVaQWaQXaQYaQZaRaaRbaRcaOtaOtaOtaOtaaaaaaaaaaaaaHUaHXaHYaHYaRdaOCaReaRgaRgaRgaRhaRiaRjaRkaRlaRmaRnaRoaRpaRqaRraRraRsaRtaRuaRuaRvaRraRwaRxaRyaRzaRAaRBaRCaQjaNwaGWaGXaEfaGZaGZaNCaNDaGZaGZaGZaRDaREaGZbqpaBDaRGaRHaRIaQqaQqaRJaRKaRLaBDaRMaRNaPaaNRaROaNRaRPaPdaPdaRQaRRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaqpaqpavMavMavMavMavMavMavMavMaqpaqparpaLLaRSaRTaRTaRUaRTaRTaRTaRVaRTaRTaRTaOcaQEaRWaRXaOeaRYaPmaRZaSaaSbaScaSdaSaaPmaPmaPmaSeaOiaSfaSgaShaOlaPzaOnaSiaSjaSkaSlaOsaSmaSnaSoaSpaSqaQRaHYaHYaHZaHUaHUaIcaSraOtaOtaSsaStaSuaSvaSwaSxaSyaSzaSxaSAaSxaSxaSBaSCaSDaSEaSFaOtaOtaSraIcaHUaHUaHXaHYaHYaIkaSGaJsaOCaOCaOCaOCaSHaOCaSIaSJaSKaSLaSMaSNaSOaSPaSQaSRaSSaSTaSUaSVaSPaSWaSXaSYaSZaTaaTbaSZaTcaTdaGWaGXaEfaTeaTeaNCaNDaTfaGZaGZaTgaGZaThaTiaBDaTjaTkaTlaQqaQqaTmaTnaEjaBDaToaNRaPaaNRaROaTpaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaymaxbaTqaRTaTraTsaTtaTuaTtaTvaTraTtaRTaQEaQEaTwaTxaOeaTyaPmaTzaTAaTBaTCaTDaSaaPmaPmaPmaPvaOiaOiaOiaOiaOlaPzaOnaOnaOnaOnaOnaOsaTEaQOaQOaQOaQOaQRaHYaHYaHZaIaaIaaTFaTGaTHaOtaTIaTJaTKaTLaTMaTLaTNaTOaTPaTQaTRaTSaTTaTRaTUaTVaTWaOtaTXaTGaTYaTZaIaaHXaHYaHYaRdaOCaJsaUaaOCaUbaOCaUaaOCaODaPUaUcaOCaOCaOCaUdaUeaUfaUgaUhaUiaUjaUkaUlaIpaUmaUnaUoaQhaUpaQhaUqaUraGWaUsaEfaEfaEfaNCaNDaUtaUuaGZaUvaUwaJKaUxaBDaEjaUyaRIaQqaQqaRJaUzaUAaBDaUBaNRaPaaUCaUDaUEaLDaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafarpavMaylavMaBGaxaaxaaMBavMaylavMaNXaNYaNZaxaaKaaOaaRhaKcaOaaKdarpaObaKfaxaaOcaOcaOcaOdaOcaOeaOeaOeaOeaOeaOfaOgaOeaOhaOeaOeaOeaOiaOjaOkaOjaOlaOmaOnaKiaKiaOoaOpaOqaOraKlaKiaNdaOsaOsaHYaHYaHZaHUaHUaHUaHUaHUaHUaHUaHUaOtbUPbUObUQbUObUObUObVMbUObWHbUObXtaOtaHUaHUaHUaHUaHUaHUaHUaHUaHXaHYaHYaIkaOAaOBaOCaOCaOCaOCaOCaJsaODaOCaIkaOEaOFaOGaIpaIpaIpaOHaOIaIpaIpaIpaIpaGWaNwaOJaOKaOKaOKaOLaOMaNwaGWaGXaEfaONaGZaNCaNDaGZaGZaOOaEfaOPaOQaORaBDaEjaOSaOTaOUaOUaOVaOWaOXaOYaBDaOZaPaaNRaPbaNRaPcaPdaPdaPcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaPeaxaavNaNZaxaaxaaPfavNaxaaPeaNZaxaaxaaxaaPgaPhaPhaPhaPhaPhaPhaPhaPiaxaaOcaPjaOcaPkaOeaPlaPmaPnaPoaPpaPmaPqaPraPsaPtaPuaPvaOiaPwaPxaPyaOlaPzaOnaOnaPAaOnaOnaOsaPBaPCaPDaPEaOsaOsaPFaHYaHZaHUaaaaaaaaaaaaaaaaaaaaaaOtaPGaPHaPIaPJaPKaPLaPMaPNaPOaPPaPQaOtaaaaaaaaaaaaaaaaaaaaaaHUaHXaHYaPRaIkaPSaOCaOCaOCaOCaOCaUaaJsaODaPUaPVaJsaPWaPXaIpaPYaPZaQaaQbaQcaQdaQeaQfaIpaNwaQgaQhaQhaQhaQiaQjaNwaGWaQkaEfaQlaQlaNCaNDaQmaQmaQnaEfaEfaQoaEfaBDaQpaNKaNLaQqaQqaNMaNNaBDaBDaBDaLDaQraQsaQtaLDaLDaLDaLDaQuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaavMaQvaQwaQwaQwaQwaQwaQwaQwaQwaQvaQwaQxaxaaxaaLLaxaaQyaQzaxaaQAaQBaxaaQCaQDaOcaQEaOcaPkaOeaQFaPmaQGaPmaPmaPmaPqaQHaPmaPmaPmaPvaOiaQIaPxaPxaOlaPzaOnaQJaQKaQKaQLaOsaQMaQNaQOaQPaQQaQRaHYaHYaHZaHUaaaaaaaaaaaaaOtaOtaOtaOtaQSaQTaQUaQVaQWaQXaQYaQZaRaaRbaRcaOtaOtaOtaOtaaaaaaaaaaaaaHUaHXaHYaHYaRdaOCaReaRgaRgaRgaRjaRiaRHaRkaRlaRmaRnaRoaRpaRqaRraRraRsaRtaRuaRuaRvaRraRwaRxaRyaRzaRAaRBaRCaQjaNwaGWaGXaEfaGZaGZaNCaNDaGZaGZaGZaRDaREaGZbqpaBDaRGaUyaRIaQqaQqaSHaRKaRLaBDaRMaRNaPaaNRaROaNRaRPaPdaPdaRQaRRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaqpaqpavMavMavMavMavMavMavMavMaqpaqparpaLLaRSaRTaRTaRUaRTaRTaRTaRVaRTaRTaRTaOcaQEaRWaRXaOeaRYaPmaRZaTfaSbaScaSdaSaaPmaPmaPmaSeaOiaSfaSgaShaOlaPzaOnaSiaSjaSkaSlaOsaSmaSnaSoaSpaSqaQRaHYaHYaHZaHUaHUaIcaSraOtaOtaSsaStaSuaSvaSwaSxaSyaSzaSxaSAaSxaSxaSBaSCaSDaSEaSFaOtaOtaSraIcaHUaHUaHXaHYaHYaIkaSGaJsaOCaOCaOCaOCaXsaOCaSIaSJaSKaSLaSMaSNaSOaSPaSQaSRaSSaSTaSUaSVaSPaSWaSXaSYaSZaTaaTbaSZaTcaTdaGWaGXaEfaTeaTeaNCaNDaTlaGZaGZaTgaGZaThaTiaBDaTjaTkaTpaQqaQqaTmaTnaEjaBDaToaNRaPaaNRaROaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaymaxbaTqaRTaTraTsaTtaTuaTtaTvaTraTtaRTaQEaQEaTwaTxaOeaTyaPmaTzaTAaTBaTCaTDaTfaPmaPmaPmaPvaOiaOiaOiaOiaOlaPzaOnaOnaOnaOnaOnaOsaTEaQOaQOaQOaQOaQRaHYaHYaHZaIaaIaaTFaTGaTHaOtaTIaTJaTKaTLaTMaTLaTNaTOaTPaTQaTRaTSaTTaTRaTUaTVaTWaOtaTXaTGaTYaTZaIaaHXaHYaHYaRdaOCaJsaPTaOCaUbaOCaPTaOCaODaPUaUcaOCaOCaOCaUdaUeaUfaUgaUhaUiaUjaUkaUlaIpaUmaUnaUoaQhaUpaQhaUqaUraGWaUsaEfaEfaEfaNCaNDaUtaUuaGZaUvaUwaJKaUxaBDaEjaUyaRIaQqaQqaRJaRKaUAaBDaUBaNRaPaaUCaUDaUEaLDaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaUFavMavMaBGaUGaUHaUIaUJaUKaULaUMaUNaTraTtaRTaUOaUPaUQaOcaOeaURaUSaUTaUUaUTaUVaUWaUVaUVaUVaUXaUYaOeaUZaVaaVbaVcaVdaVeaVfaVgaOcaVhaOsaViaVjaVkaVlaVlaQRaHYaHYaHYaHYaHYaVmaVnaVoaVpaVqaVraVsaVtaVuaVvaVwaVxaVyaVzaVAaVBaVCaVDaVsaVEaVFaVGaVHaVIaVJaVKaVLaVMaHYaHYaIkaVNaVOaVPaVQaOCaVRaVSaVQaODaPUaVTaVTaVUaVVaIpaUeaUeaUeaVWaUeaUeaUkaVXaIpaNwaUnaQhaQhaUpaQhaVYaNwaGWaVZaWaaWbaWcaWdaWeaWfaWfaWfaWfaWfaWfaWgaWhaWiaWiaWiaWiaWiaWjaWkaWlaWhaWmaWnaWoaWpaNRaWqaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWraWsatBaWsaxaaxaaRTaWtaWuaWvaWvaWvaWwaWxaWyaRTaWzaQEaUQaWAaWAaWAaWBaWCaWAaWDaWEaWFaWGaWHaWHaWIaWJaOeaWKaWLaWMaWNaWOaWPaWPaWQaWRaWRaWSaWSaWSaWSaWSaWTaOsaHYaHYaWUaWVaWWaWXaWYaWZaOtaXaaXbaXcaXdaXeaXfaXfaXgaXhaXiaXjaXkaXlaXmaXcaXnaXaaOtaWZaWYaXoaXpaWVaXqaHYaHYaRdaOCaXraXsaOCaOCaOCaXsaOCaODaOCaPUaPUaOCaOCaXtaXuaXvaUeaUeaUeaUeaXwaXxaIpaXyaXzaQhaXAaXBaXCaXzaXDaGWaXEaXFaXFaXGaXHaXIaXJaXKaXLaXJaXJaXJaXMaXNaXOaXPaXPaXPaXPaXPaXQaXRaXNaXSaXTaXUaXVaNRaXWaLDaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMavMavMaBGaxaaXXaTraXYaWvaWvaWvaXZaYaaTraRTaYbaYcaUQaWAaYdaYeaYfaYgaWAaYhaYiaYjaOeaYkaYlaYmaRZaOeaYnaYoaYpaYpaYpaYpaYqaYpaYpaYraYsaYsaYsaYtaYsaYuaYvaKAaKAaYwaYxaYxaYxaYxaYxaYxaYyaYzaYAaYBaXgaYCaYDaYDaYEaYFaYDaYCaXiaYGaYHaYIaYJaYHaYHaYHaYHaYHaYHaYKaKAaKAaIkaYLaYMaYNaYOaOCaOCaOCaYPaYQaYRaOCaYSaYTaYUaIpaIpaIpaYVaYWaYWaYWaIpaIpaIpaYXaQhaQhaYYaYZaZaaZbaYYaGWaZcaXFaZdaEfaZeaZfaZgaZhaZiaZjaTgaUuaZkaBDaZlaEjaZmaQqaQqaZmaEjaZnaBDaZoaZpaZqaROaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaZraNZaZsaRTaTtaZtaTtaTraZuaZvaZwaTtaRTaZxaZyaZzaWAaWAaWAaZAaZBaWAaZCaZDaZEaOeaYkaYlaYmaRZaOeaYnaYoaYpaZFaZGaZGaZGaZHaYpaZIaZJaZKaZLaYvaYvaYvaYvaHYaHYaZMaZNaZOaZPaZQaZRaZSaZTaZUaZVaZWaZXaYDaYDaZYaZZaZYaYDaYDbaababbacbadbaebafbagbahbaibajaYHaXqaHYaHYaIkaIkaIkaIkaIkbakaRdbakbalaIkaIkaIkaIkaIkaIkbanbaobaobaobaobaobaobapbaobanaYYbaqbaqaYYbaraXFaXFaXFbanaZcaXFaZdaEfaEfaEfbasbatbasaEfbasaEfaEfaBDaBDbaubaubaubaubaubauaBDaBDbavaNRbawaROaNRaNRaRQaPdaPdaRQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaqpaqpavMavMavMavMavMavMavMavMaqpaqparpaQyaxaaRTaRTaRUaRTaRTaRTaRVaRTaRTaRTbaxbaybazaWAbaAbaBaZAbaCaWAbaDbaEbaDaOeaYkaYlaYmaRZaOeaYnaYoaYpaZGbaFbaFaZGbaFaYpaZIbaGbaHbaHbaIbaJbaKaYvbaLaHYaWUbXubaNbaObaPbaQbaQbaRbaSbaTaZWbaUaYDaYDaZYbaVaZYaYDaYDbaWbabbaXbaYbaZbbabbbbbcbajbbdaYHaXqbbecrtaGybbfaXFaXFaXFaXFaXFaXFaXFaXFbbgaXFaXFaXFaXFbbhaXFaXFaXFaXFaXFaXFaXFaXFbbfaXFaXFaXFaXFbaraXFaXFaXFbbibbjaXFaXFbbkaXFaXFaXFbblaXFaXFaXFaXFaXFbbhbbmaXFaXFaXFaXFaXFaXFbbfbbnaRNaNRbbobbpbbqbbraLDaLDaLDaQuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMavMavMaBGaxaaXXaTraXYaWvaWvaWvaXZaYaaTraRTaYbaYcaUQaWAaYdaYeaYfaYgaWAaYhaYiaYjaOeaYkaYlaYmaRZaOeaYnaYoaYpaYpaYpaYpaYqaYpaYpaYraYsaYsaYsaYtaYsaYuaYvaKAaKAaYwaYxaYxaYxaYxaYxaYxaYyaYzaYAaYBaXgaYCaYDaYDaYEaYFaYDaYCaXiaYGaYHaYIaYJaYHaYHaYHaYHaYHaYHaYKaKAaKAaIkaYLaYMaYNaYOaOCaOCaOCaYPaYQaYRaOCaYSaYTaYUaIpaIpaIpaYVaYWaYWaYWaIpaIpaIpaYXaQhaQhaYYaYZaZaaZbaYYaGWaZcaXFaZdaEfaZeaUzaZgaZfaZiaZjaTgaUuaZkaBDaZlaEjaZmaQqaQqaZmaEjaZnaBDaZoaZpaZqaROaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMaZraNZaZsaRTaTtaZtaTtaTraZuaZvaZwaTtaRTaZxaZyaZzaWAaWAaWAaZAaZBaWAaZCaYiaZEaOeaYkaYlaYmaRZaOeaYnaYoaYpaZFaZGaZGaZGaZHaYpaZIaZJaZKaZLaYvaYvaYvaYvaHYaHYaZMaZNaZOaZPaZQaZRaZSaZTaZUaZVaZWaZXaYDaYDaZYaZZaZYaYDaYDbaababbacbadbaebafbagbahbaibajaYHaXqaHYaHYaIkaIkaIkaIkaIkbakaRdbakbalaIkaIkaIkaIkaIkaIkbanbaobaobaobaobaobaobapbaobanaYYbaqbaqaYYbaraXFaXFaXFbanaZcaXFaZdaEfaEfaEfbasbatbasaEfbasaEfaEfaBDaBDbaubaubaubaubaubauaBDaBDbavaNRbawaROaNRaNRaRQaPdaPdaRQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaqpaqpavMavMavMavMavMavMavMavMaqpaqparpaQyaxaaRTaRTaRUaRTaRTaRTaRVaRTaRTaRTbaxbaybazaWAaYdbaBaZAbaCaWAbaDbaEbaDaOeaYkaYlaYmaRZaOeaYnaYoaYpaZGbaFbaFaZGbaFaYpaZIbaGbaHbaHbaIbaJbaKaYvbaLaHYaWUbXubaNbaObaPbaQbaQbaRbaSbaTaZWbaUaYDaYDaZYbaVaZYaYDaYDbaWbabbaXbaYbaZbbabbbbbcbajbbdaYHaXqbbecrtaGybbfaXFaXFaXFaXFaXFaXFaXFaXFbbgaXFaXFaXFaXFbbhaXFaXFaXFaXFaXFaXFaXFaXFbbfaXFaXFaXFaXFbaraXFaXFaXFbbibbjaXFaXFbbkaXFaXFaXFbblaXFaXFaXFaXFaXFbbhbbmaXFaXFaXFaXFaXFaXFbbfbbnaRNaNRbbobbpbbqbbraLDaLDaLDaQuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavMavQavPavPavPavPavPavPavPavPavQavPbbsbbtaxabbuaRWbbvaWPaWPaWPbbwbbxbbyaOcbbzbbAbbBaWAaWAaWAbbCbbDaWAaOeaOeaOeaOeaYkaYlbbEbbFaOeaYnaYoaYpaZGbbGaZGbaFbbHaYpaZIbbIbaHbaHbaHbbJbbKaYvbbLaHYaWUbXvbbMbaObbNbbObbPbbQbbRbbSaZWbbTaZYaYDbbUbbVbbUaYDaZYbbWbabbbXbbYbbZbcabcbbbcbajbajaYHbccaHYaHYaGybbfaXFaXFaXFaXFaXFaXFaXFaXFbcdaXFaXFaXFaXFaXFaXFbcebcfbcfbcfbcgaXFaXFbbfaXFaXFaXFaXFbaraXFaXFbchaWbbciaWbaWbaWbaWbaWbaWbbcjaWbaWbaWbaWbaWbaWbaWbaWbaWbaWbaWbaWbbckbclbcmbcnbcnbcoaROaNRaNRbcpaPdaPdbcpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafavMawZaxaawZaxbaxaaxaaxcawZaxaawZaxbaxabcqaHqbcrbcsbctbcrbcrbcrbcubcvaOcaOcaOcbcwaUQaWAaYdbcxbcybczaWAbcAbcBbcAaOeaOeaOebcCbcDaOcaYnaYoaYpbcEaZGbaFbcFbcGaYpaZIaYvbcHbaHbaHbcIbcJbcKbcLaHYaWUbXvbcMbaObbNbcNbcObcPbaSbaOaZWbcQbcRaYDbcSbcTbcUaYDbcVbcWbabbcXbcYbcZbdabdabdbbajbdcaYHbddbdecuAaGybbfaXFaXFbdfaXFbdgbdhbdhbdhbdibdhbdhbdhbdjaXFaXFaXFaXFaXFaXFbdkbdlbdmbbfaXFaXFaXFaXFbarbdnbdobdpbdqbdraXFaXFaXFaXFaXFbdsbdtaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFaXFbbfbdubdvbdwbdxaROaNRaNSaLDaLDaLDaLDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpavMbdyavMaBGaxaaxabdzavMbdAavMayqbdBbdCbdCbdDbdEbdFbdGbdHbdIbdJbdKbdLbdMbdMbdNbdOaWAaWAaWAbdPbdQaWAaOcaOcaOcaOcbdRaVbbdSbdTaVbbdUaYoaYpbdVaZGaZGbdWbdXaYpbdYaYvbdZbaHbaHbeabebbecbedaHYaWUaYxbaObeebaPbaPbefbaRbaSbegbehaXfbeibejbekbekbekbelbemaXkbenbeobepbeqberbajbesbajbetaYHaXqaHYaHYbeubeubeubeubeubeubeubevbewbewbexbeybeybevbezbezbezbezbezbeAbeAbeBbeCbeAbeAbeAbeAbeDaXFbeEbeFbeGbeHbeIaXFaXFaXFbeJbeJbeKbeKbeKbeKbeKbeLbeMbeMbeMbeNbeMbeObePbeMbeMbeQbeRbeRbeRbeRbeSbeTbeUbeVaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaztaqpazuatBavMaymaynbeWbeXavMatBazuavMaqpaztarpbdDbeYbeZbeZbeZbfabdJbfbbfcbfdbfdbfebffaWAaYdbfgbdPbfhaWAbfibfiaQEaQEbfjbfkbflbfmbflbflbfnaYpbfobfpaZGaZGbdXbfqbfraYvbfsbaHbaHbeabftbfubedaHYbfvaYxbfwaYAbfxbfybfzbfAbaSbfBaYxaafbfCbfDbfDbfDbfEbfFbfGaafaYHbfHbfIbfJbfKbajbfLbajbfMaYHaXqaHYbfNbeubfObotbfQbfRbfSbeubqnbfUbfVbfWbfXbfXbfXbfYbfZbgabgbbezbgcbgdbgebgdbgdbgfbggbeAbeGbghbeGbeGbeGbgibeIbeIbgjbeIbgkbgkbeKbglbgmbgnbeKbgobgpbgobeKbgqbgrbgqbeRbgsbgtbgsbeRbgubgvbeRbgwbgxaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafavMbdyavMavMavMavMavMavMbdAavMaafaafaafaaabdDbgybdDbgzbeZbgAbgBbcraVbbgCbgDbgEbgFbgGbgGbgGbgGbgGbgGbgHbgIbgJbfdbgKbgLaYpaYpaYpaYpaYpaYpbgMaYpaYpaYpbgNbgObgPbgQbgRbaHbaHbeabgSbecbedaHYbgTaYxbgUaYAaYAaYAaYAbfAbaSbgVaYxaafbfCbfDbgWbgXbgYbfDbgZaafaYHbhabbYbhbbhcbajbesbajbajaYHaXqaHYaHYbeubqqbhebhfbhgbhhbhibfXbhjbfXbhkbfXbfXbhlbfYbhmbhnbhobezbhpbgdbhqbgdbhpbhrbgdbeAbhsbhtbhubhvbeGbhwbeIbhxbhybhzbhAbhAbeKbhBbhCbhDbhEbhFbhGbhHbeKbhIbhJbhKbeRbhLbhMbhLbhNbhObhObeRbhPbgxaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarpavMbdyavMaBGaxaaxaaMBavMbdAavMayqbdBbdCbdCbdDbdEbdFbdGbdHbdIbdJbdKbdLbdMbdMbdNbdOaWAaWAaWAbdPbdQaWAaOcaOcaOcaOcbdRaVbbdSbdTaVbbdUaYoaYpbdVaZGaZGbdWbdXaYpbdYaYvbdZbaHbaHbeabebbecbedaHYaWUaYxbaObeebaPbaPbefbaRbaSbegbehaXfbeibejbekbekbekbelbemaXkbenbeobepbeqberbajbesbajbetaYHaXqaHYaHYbeubeubeubeubeubeubeubevbewbewbexbeybeybevbezbezbezbezbezbeAbeAbeBbeCbeAbeAbeAbeAbeDaXFbeEbeFbeGbeHbeIaXFaXFaXFbeJbeJbeKbeKbeKbeKbeKbeLbeMbeMbeMbeNbeMbeObePbeMbeMbeQbeRbeRbeRbeRbeSbeTbeUbeVaLDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaztaqpazuatBavMaymaynbeWbeXavMatBazuavMaqpaztarpbdDbeYbeZbeZbeZbfabdJbfbbfcbfdbfdbfebffaWAaYdbfgbdPbfhaWAbfibfiaQEaQEbfjbfkbflbfmbflbflbfnaYpbfobfpaZGaZGbdXbfqbfraYvbfsbaHbaHbeabftbfubedaHYbfvaYxbfwaYAbfxbfybfzbfAbaSbfBaYxaafbfCbfDbfDbfDbfEbfFbfGaafaYHbfHbfIbfJbfKbajbfLbajbfMaYHaXqaHYbfNbeubfObotbfQbfRbfSbeubqnbfVbfVbfWbfXbfXbfXbfYbfZbgabgbbezbgcbgdbgebgdbgdbgfbggbeAbeGbghbeGbeGbeGbgibeIbeIbgjbeIbgkbgkbeKbglbgmbgnbeKbgobgpbgobeKbgqbgrbgqbeRbgsbgtbgsbeRbgubgvbeRbgwbgxaLDaLDaLDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafavMbdyavMavMavMavMavMavMbdAavMaafaafaafaaabdDbgybdDbgzbeZbgAbgBbcraVbbgCbgDbgEbgFbgGbgGbgGbgGbgGbgGbgHbgIbgJbfdbgKbgLaYpaYpaYpaYpaYpaYpbgMaYpaYpaYpbgNbgObgPbgQbgRbaHbaHbeabgSbecbedaHYbgTaYxbgUaYAaYAaYAaYAbfAbaSbgVaYxaafbfCbfDbgWbgXbgYbfDbgZaafaYHbhabbYbhbbhcbajbesbajbajaYHaXqaHYaHYbeubqqbhebhfbhgbhhbhibfXbhjbfXbhkbfXbfXbhlbfYbhmbhnbhobezbhpbgdbhqbgdbhpbhrbgdbeAbhsbhsbhubhvbeGbhwbeIbhxbhybhzbhAbhAbeKbhBbhCbhDbhEbhFbhGbhHbeKbhIbhJbhKbeRbhLbhMbhLbhNbhObhObeRbhPbgxaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaacuzaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbhQbhRbhSbhTbhTbhUbhVaWPbhWaOcbhXbhYbhZbhZbhZbiabiabiabiabiabiabiabibbgNbicbidbiebifbigbihbiibijaYpbikbilbimbinbinbiobaHbaHbeabaHaYvbedaHYaWUbipbiqbirbisbitaYAbiubaSaYxaYxaafbfCbfDbgXbfDbgXbfDbgZaafaYHaYHbivbcZbiwbajbixbiybizaYHaXqaHYbiAbiBbiCbiDbqrbiFbrWbiHbfXbiIbiJbiKbiLbiLbiMbfYbiNbhnbiObezbhpbgdbhqbiPbhpbiQbiRbeAbiSbiTbiUbiVbeGbgibeIbiWbiXbiXbiYbiZbjabjbbjcbjcbjcbjdbjebjfbeKbjgbhJbjhbeRbjibjjbjkbjlbjmbjnbeRbhPbgxbjobjobjobjoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaabdDbjpbdDbjqbjrbjrbjsbdDbjtbjtaOcbjubjvbjubjubjubjvbjuaOcaOcaYpaYpaYpbjwbgNbjxbjxbjybjxbjxbjxbiibjxbjzbjAbjBbjCbjDbjEbjEbjEbjEbjFbjGbjHbjIbjJbjKbjLbjMbjNbjObjPaYAbfAbaSaYxaafaafbfCbfDbgYbjQbgWbjRbgZaafaafaYHbjSbjTaYHaYHaYHaYHbjUaYHbjVaHYaHYbeubjWbhebjXbhgbhhbjYbfXbjZbkabkbbkcbtmbkebezbkfbkgbkhbezbhpbgdbkibkjbhpbkkbgdbeAbeGbeGbeGbeGbeGbgibeIbklbkmbknbkobkpbkqbkrbksbktbktbkubkvbkwbeKbkxbhJbkybeRbkzbkAbkBbkCbkDbkEbeRbhPbkFbkGbkHbkIbkHaaaaaaaafaaaaafaaaaafaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabdDbkJbhRbkKbjrbkLbkMbdDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkNbkObkPbkQbkRbkSbkSbkTbkSbkSbkSbkUbkSbkVbkWbkXbkYbkZbecbecbecblaaYvblbaYvblcbldaKAbipbleblfblfblfblfblgblhbliaafaaabljblkbllbfDbfDblmbgZaaaaafblnbloblpblqblrblsblnbltblnbluaHYaHYbeublvbhectCblwblxbeublybjZbkablzblAbfXblBbezblCblDblEbezblFblGblHblIblJblKblLblMblNblOblNblNblNblPbeIblQbhyblRblSblTbkqblUblVblWblWblXblYblZbeKbmabgrbmbbeRbmcbmdbmebkCbhObmfbeRbhPbmgbmhbmibmibmibmibmibmibmjaafaaaaafaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaabdDbmkbhRbhRbhRbdDbdDbdDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkNbmlbjxbmmbmnbmobmnbmnbmnbmnbmnbmpbmnbmqbmrbmsbmtbmubmvbecbmwbaHbmxbmybmzbedbmAbmBbipbipblibmCbmDbmEbmFbmGbliaaaaaabfCbmHbmIbmJbmIbmKbgZaaaaaablnbmLbmMbmNblnbmOblnbltblnbluaHYaHYbeubmPbhebjXbmQbmRbeubmSbmTbmUbmVbmWbfXbmXbezbfYbmYbmZbezbeAbnabeAbeBbnbbncbncbncbncbncbncbncbncbgibeIbndbkmbknbnebnfbngbnhbnibnibniblXbkvbnjbnkbnlbnmbnnbnobnpbnqbnpbnrbhObnsbeRbntbnubnubnubnubnubnubnubnvbgxbjobjobjoaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbnxbjxbjxbjxbnybnzbnzbnzbjxbjxbjxbjxbjzbnAbeabnBbnCbnDbnEbnFbnGbnHbaHbmzbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbnSbliaafaaabfCbnTbnUbnUbnUbnVbgZaaaaafblnbnWbnXbnYblnbnZblnbltblnboaaHYaKJbobbocbodboebofbogbeubohbjZbhkbmVboibojbmSbmSbokbolbombonboobopbfXboqborbosbvtboubovbowboxboybncbgibeIbozboAboBboCboDbeKboEbnibniboFboGbkvboHboIboJboKboLbnoboMboNbhOboOboPboQbeRboRbrVbrVbrVbrVbrVbrVbrVbhPbgxcuCboUbjobjoaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbnxbjxbjxbjxbnybnzbnzbnzbjxbjxbjxbjxbjzbnAbeabnBbnCbnDbnEbnFbnGbnHbaHbmzbnIbnJbnKbnLbnMbnNbnObnPbnQbnRbnSbliaafaaabfCbnTbnUbnUbnUbnVbgZaaaaafblnbnWbnXbnYblnbnZblnbltblnboaaHYaKJbobbocbodboebofbogbeubohbjZbhkbmVboibojbmSbmSbokbolbombonboobopbfXboqborbosbvtboubovbowboxboybncbgibeIbozboAboBboCboDbeKboEbnibniboFboGbkvboHboIboJboKboLbnoboMboNbhOboOboPboQbeRboRbrVbrVbrVbrVbrVbrVbrVbhPbgxboTboUbjobjoaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboVboWboVboXboYbjxbjxbiibjxbjxbjxbjxbjxboZaYpaYpbpabpbbjEbpcbpdbecbpebaHbpfbaHbpgblubmAbphbpibpjbpkbplbpmbpnbpobppbliaaaaaabfCbpqbprbpsbprbptbgZaaaaaabpubpvbpwbpubpubpubpubpxbpubpyaKAaKAbeubeubpzbpAbpBbpCbeubpDbjZbpEbpFbpFbpFbpFbpFbpGbpHbpIbpJbpFbpKbpFbpLbpMbosbpNbpObpPbpQbpRbpSbncbpTbpUbpVbpWbpWbpXbpYbpZbqabqbbqbbqcbqdbkvbqebqfbqgbqhbqibnobnobqjbqkbqlbqmbnobeRbrVbrVbrXbvwbrZbrYbsabrVbqsbqtbqubqvbqwbjoaaaaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqxbqybqxbqzbjxbjxbjxbnybnzbnzbnzbjxbjxbqAbqBaYpbqCbaHbaHbqDbqEbqFbqGbaHbaHbaHbpgblubqHaHYbpibpjbqIbqJbqKbqLbqMbqNbliaafaafbqObqPbqQbqRbqSbqTbqUaafaafbqVbqWbqXbqYbqZbrabrbbrcbpubrdaHYaHYbmVbrebrfbrgbrhbribrjbrkbrlbrmbrnbrnbrnbrnbrnbrobrpbrqbrrbrsbrtbrubrvbrwbosbrxbrybrzbrAbrBboybncbgibeIbrCbrDbrEbrFbrFbeKbrGbrHbrIbnkbrJbkvbrKbnkbrLbrMbrNbrObrPbrQbrRbrSbrTbrUbsbbthbtgbtjbtibtibtibtlbtkbscbgxbsdbsebjobjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbsfbjxbjxbjxbiibjxbjxbjxbjxbjxbqAbsgaYpbshbsibjEbsjbskbslbeabaHbaHbsmbmzbsnbqHaHYbpibpjblibsobspbsqbsrbssbliaaaaaaaafbfCbstbsubstbgZaafaaaaaabqVbsvbswbsxbsybszbszbsAbsBbsCaHYaHYbmVbsDbfXbsEbsFbsGbsHbsGbsIbsJbsKbsLbsKbsKbsKbsMbsNbfXbhkbsObsPbsPbsQbsRbosbosbsSbsTbsUbpRboybncbeHbeIbsVbsVbsVbsVbsVbeKbnkbnkbnkbnkbsWbsXbsYbnkbsZbtabtbbtcbtcbtcbtcbtdbtebtfbvZbuAbuzbuCbuBbuBbuDbwabrVbtnbgxbsdbsebjoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbsfbjxbjxbjxbiibjxbjxbjxbjxbjxbqAbsgaYpbshbsibjEbsjbskbslbeabaHbaHaZhbmzbsnbqHaHYbpibpjblibsobspbsqbsrbssbliaaaaaaaafbfCbstbsubstbgZaafaaaaaabqVbsvbswbsxbsybszbszbsAbsBbsCaHYaHYbmVbsDbfXbsEbsFbsGbsHbsGbsIbsJbsKbsLbsKbsKbsKbsMbsNbfXbhkbsObsPbsPbsQbsRbosbosbsSbsTbsUbpRboybncbeHbeIbsVbsVbsVbsVbsVbeKbnkbnkbnkbnkbsWbsXbsYbnkbsZbtabtbbtcbtcbtcbtcbtdbtebtfbvZbuAbuzbuCbuBbuBbuDbwabrVbtnbgxbsdbsebjoaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtobqxbqybqxbmlbtpbjxbjxbtqbjxbtpbjxbjxbjxbqAbtraYpbtsbttbnGbtubtvbecbpbbjEbtwbtxbmzbsnbqHaWUbpibtyblibtzbtAbtBbtCbmGbliaaaaaaaafbtDbtEbnUbtFbtGaafaaaaaabqVbtHbtIbtJbtKbtLbtMbtNbpubtOaHYaHYbmSbmSbtPbtQbpGbtRbtSbtTbtUbtVbtWbtXbtWbtXbtWbtXbtWbtXbtYbtZbsPbuabubbucbudbuebufbugbuhbuibujbncbukbulbumbnmbunbhJbhJbuobhJbhJbupbuqburbusbutbtcbuubuvbuwbuxbuxbuxbuybuybuybuybuybwcbwbbwebwdbwebwfbwebrVbtnbgxbsdbuEbjobjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuFbuGbuFbuHbuIbuHbuHbuHbuHbuHbuJbuKbjxbqAbuLaYpbuMbaHbuNbuObuPbuQbuRbuRbuRbuQbuQbuSbqHaJkbuTbpjblibuUbuVbuWbuXbuYbliaaaaaaaafbuZbvabqRbvbbvcaafaaaaaabqVbvdbvebvfbvgbtLbtMbtNbpubvhaHYaHYbvibvjbvkbvlbvmbvnbtXbvobvpbvqbvrbvsbDibvubvvbvubFzbtXbhkbjZbsPbvxbvybvzbvAbvBbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvMbvMbvPbvQbvRbvRbvSbvTbqibuxbvUbvVbvWbvXbvYbFDbuybxjbxibzCbyAbzDbxibAVbrVbtnbgxbwgbqvbwhbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabuFbuGbuFbuHbuIbuHbuHbuHbuHbuHbuJbuKbjxbqAbuLaYpbuMbaHbuNbuObuPbuQbuRbuRbuRbuQbuQbuSbqHaJkbuTbpjblibuUbuVbuWbuXbuYbliaaaaaaaafbuZbvabqRbvbbvcaafaaaaaabqVbvdbvebvfbvgbtLbtMbtNbpubvhaHYaHYbvibvjbvkbvlbvmbvnbtXbvobvpbvqbvrbvsbDibvubvvbvubFzbtXbhkbjZbsPbvxbvybvzbvAbvBbvCbvDbvEbvEbvFbvGbvHbvIbvJbvKbvLbvMbvNbvMbvMbvObvMbvMbvPbvQbvRbvRbvSbvTbqibuxbvUbvVbvWbvXbvYbambuybxjbxibzCbyAbzDbxibAVbrVbtnbgxbwgbqvbwhbjoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnwbkNbkNbkNaYpbkNbkNbkNbwibwibwibwibwjbwkbwkbwibwibwlbwlbwmbwnbuQbwobwpbwqbwrbuQbsnbqHaHZaIcaIcbliblibwsbliblibwtbliaHUaHUaHUbwubwvbsubwwbwxaHUaHUaHUbpubpubpubpubpubpubpubpubpubvhaHYbwybtXbtXbtXbwzbtXbtXbtXbwAbvpbwBbwCbwDbwEbwFbwGbwHbwIbwDbhkbjZbsPbwJbwKbwLbwMbwNbwObrAbrAbrAbwPbwQbwRbwSbwTbwTbwTbwTbwUbwTbwTbwTbwVbwVbwWbwXbwYbwYbwZbxabqibuxbxbbxcbxdbxebxfbxgbxhbrVbrVbFBbFBbFBbrVcfYbrVbtnbgxbsdbsebjobjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwibxkbxlbxmbxnbxobxpbwkbxqbxrbxsbxtbxubxvbxwbxxbxybuQbsnbqHaHYaHYaHYbxzaKQbxAaKAbxBbxCbxDaVLaVLaVLbxEbxFbxGbxHbxIaHYaHYaHYaHYaKQaHYaKAaHYaHYaHYbxzaHYbvhaHYbxJbtXbxKbxLbxMbxNbxObtXbxPbxQbxRbxSbwDbwEbwEbxTbxUbxVbwDbhkbxWbsPbrAbxXbxYbxZbwQbyabybbycbydbncbncbeHbyebwTbyfbygbyhbyibyjbykbwTbylbymbynbyobypbwYbyqbyrbysbytbyubyvbywbyxbyybyzbxhchfchfchfchfchfchfchfbrVbtnbgxbsdbsebjoaaaaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFZaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwkbyBbyCbyDbyEbyFbyGbyHbyIbyJbyKbyLbyMbyNbyObxxbyPbuQbsnbyQaHYaHYaHYaHYaHYaHYaKAaHYbqHaHYaHYaHYaHYaHYbyRbySbyTaHYaHYaHYaHYaHYaHYaHYaKAbyUaHYaHYaHYaHYbvhbyVbyWbtSbyXbyYbyZbyYbzabtXbzbbvpbvqbzcbtXbzdbzebzfbzgbzhbtXbhkbjZbsPbsPbsPbsPbsPbncbncbncbncbncbncbzibgibzjbwTbzkbzlbzmbznbzobzpbwTbzqbzrbzsbztbzubwYbyqbzvbzwbzxbzybzzbzzbzzbzAbzBbxhchfchfctEctDchfchfchfbrVbtnbgxbsdbsebjobjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6646,7 +6639,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfabfabfabfabfabfabfabqabfabfabfabfabfaaaaaabBcbGnbGnbGnbGnbGnbGnbGnbGnbWBbJYaafaaaaaaaafaaIbYdaaaaaaaaabEZbTNbTObYebYfbYgbYhbYibYjbYkbYlbYmcqMcqKbYobTPbYpbYqbYrbYsbGybWKbYtbXybYubYvbYwbYxbYybYzbYAbNFbYBbLnbLnbLnbYCbMFbYDbYEbTdbTebMFbOUaafbMKbMKbMKbMKbMKbMLbNPbUjbyebYFbzibYGbYHbTkbYIbYJbLHbYKbYLbYMbLHbYNbKFbYObYPbBMbCWbCWbCWbYQbRibKKbRjbKKbRkbYRbCWbCWbCWbBMbYSbRrbYTbRrbRrbYUbYVbYWbYXbYYbOpbUwbUwbYZbPvbBRbZabZbbjobZcbZdbsebXkaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaaaafaaaaafaaaaafaaaacfaaaaafaaaaafaaaabfaafaafbBcbZebGnbBcbBcbBcbRAbBcbBcbBcbBcaaaaaaaaaaaIbZfbZgaaIaaIaafbEZbTNbTObZhbWCbUGbUGbUGbWCbZibZjbZkcqGcqNcqPbTPbBcbBcbZnbZobZpbWKbWKbZqbXybZrbZsbZtbZsbZubKmbMFbZvbZwbZxbZybONbZzbZAbZBbWabRVbZCbNKbLDbNLbZDbZEbZEbMKbMLbNPbUjbyebyebyebZFbZGbyebZHbZIbyebyebZJbyebyebZIbZKbZLbZMbBMbCWbCWbCWbZNbZObQobZPbKKbShbZQbQkbQkbSjbBMbRrbRrbZRbRrbRrbPvbXXbXXbZSbZTbOpbZUbZVbZWbPvboUbZabRybjobjobjobsebjoaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXbZYbZZaaabZXbZYbZZaaabZXbZYbZZaaaabfaaaaaabBccaacabbBccacbGnbGncadbOucaebBcaaaaaaaaacafaaIaaIaafaaaaaabEZbTNbTObWCcagcahbUGcaibWCbWCbVKcajcqGcqKcakbTPcalcamcancaocapcaqcarcascatcascatcaucatcavbKmcawcaxcaybPSbPSbPUbRPcazbRUbPVbTecaAbOUaafbOVcaBcaCcaDbMKbMLbyebUjbzicaEcaFbZFcaGbyebZHcaHcaIcaJcaKcaLcaIcaMbZHbgxcaNbBMbBMbBMbBMbBMbBMcaOcaPcaObBMbBMbBMbBMbBMbBMbPvbPvbPvbPvbPvbPvcaQcaQcaRcaSbPvbPvbPvbPvbPvbjobRxbRybjocaTcaUbsebjoaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaabBcbJYbJYbBcbBccaWcaXbOubGnbQDbBcaaaaaaaaaaaaaafaaaaaaaaaaaabDCbTNbTObUGcaYcaZbUGcbacbbbUGbVKcbccqEcqQcqVcqUcqXcqWbOAcbfcbgcbhcbicbjcbkcblcbmcbnbXycbobKmcbpbMFbZvbRPbRQcbqcbrcbscbtbLAcbucbvbQabQbbNLcbwbZEbZEbMKbMLbyecbxcbycbzcbAcbBcbCbyecbDcbEcbFcbGcbHcbGcbIcbEcbJbgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjocbMbMfbkGcbNcbNbPvcbOcbOcaRbQtcbPcbQbsebsebsebBRbRxbVybjocbRbsebsebjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaabBcbJYbJYbBcbBccaWcaXbOubGnbQDbBcaaaaaaaaaaaaaafaaaaaaaaaaaabDCbTNbTObUGcaYcaZbUGcbacbbbUGbVKcbccqEcqQcqVcqUcqXcqWbOAaZDcbgcbhcbicbjcbkcblcbmcbnbXycbobKmcbpbMFbZvbRPbRQcbqcbrcbscbtbLAcbucbvbQabQbbNLcbwbZEbZEbMKbMLbyecbxcbycbzcbAcbBcbCbyecbDcbEcbFcbGcbHcbGcbIcbEcbJbgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjocbMbMfbkGcbNcbNbPvcbOcbOcaRbQtcbPcbQbsebsebsebBRbRxbVybjocbRbsebsebjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfaaabZXcaVbZZaafbZXcaVbZZaafbZXcaVbZZaaaaafaafaafaafaafaafaafbBcbBcbBcbBcbRAbBcbBcaaaaaaaaaaaaaafaaaaaaaafaaabDCbTNbTObUGcbScbTcbUcbVcbWbUGcbXcbYcbZccaccbbTPccccqYcceccfccgcchcciccjcckcclccmccnccoccpccqccrbOQccscctbMFbMFbMFbMHbSYcctbTebUYbOUaafbMKbMKbMKbMKbMKbMLbyebYFccuccvccwccxccybyebyecczccAccBbKwccCccDbyebyebgxcbKbjoaaaaaaaaaaafaaaaaacbLaaaaafaaaaaaaaaaaabjobseccEbqvccFccGbPvccHccHccIbQtbPvbOpbjoccJccKbBRbRxccLccMccMccMccNccOccPccOccQaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaafaafaaaaaaaaaaaaaaaaaabBcccRbBcbGnbGnbBcaafaaaaafaaaaaaaafaaaaaaaafaaabDCbTNbTObTObTObTObTObTObTObTObTPbTPbTPbTPbTPbTPbBcccSbBcccTccUccUccUccVccWccXccUccYccZcdabKmcdbcdcbPXcddcdecdfcdecddcdgcddcdhbRPcdiaafaafaafaafaafaafbMLcdjcdjcdjcdkcdlcdjcdjcdjcdmbyecdncdncdocdncdnbyebABbZGcbKbjobXkbXkbXkbjobXkbXkcdpbXkbjobXkbXkbXkbXkbjobjobRxcdqbjobjobPvbPvbPvcdrcdsbPvbBRbjobYcbseboTbRxbZbbjobjocdtbjobjobjobjoaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfabfabfaafaaabZXcaVbZZaaabZXcaVbZZaaabZXcaVbZZaaaaafaaaaaacducdvcdvcdvcdvbBcbBccdwbGnbBcbJYbJYbJYbJYbJYbJYbJYbJYbJYbBcbDCbTNbBccdxcdycdzcdzcdzcdzcdzcdzcdzcdzcdzcdAcdAcdzcdBcaWccTcdCcdDcdEcdFcdGcdHccUcdIcdJcdKbKmcdbcdLcdMcdNcdOcdPcdQcdRbMFcdScdTcdUbLuaafaafaaaaaaaaaaaacdVcdWcdXcdYcdZceacebceccdjcedceecefcegcehccBccBbzibzibZGbntceiceiceiceiceiceiceicejcekcekcekcekcekcekcelcekcemcekcekcenceocepceqcercesbjobjocetceoceuceocevbRybjocewbsebsebjoaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index e7adfdf3049..a209cde1838 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -338,6 +338,7 @@ "gz" = (/turf/unsimulated/wall,/area/syndicate_mothership) "gA" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 6},/area/centcom/ferry) "gB" = (/turf/unsimulated/wall/fakedoor,/area/centcom/ferry) +"gC" = (/turf/unsimulated/floor{icon_state = "stairs-r"},/area/syndicate_mothership) "gD" = (/obj/machinery/computer/shuttle/ferry/request,/turf/simulated/shuttle/floor,/area/space) "gE" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/space) "gF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry) @@ -348,6 +349,11 @@ "gK" = (/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "gL" = (/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) "gM" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/space) +"gN" = (/turf/unsimulated/floor{icon_state = "stairs-l"},/area/syndicate_mothership) +"gO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 30},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) +"gP" = (/obj/structure/optable,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) +"gQ" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/cautery,/obj/item/weapon/surgicaldrill,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) +"gR" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/surgical_drapes,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) "gT" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 12; id = "ferry"; name = "ferry shuttle"; travelDir = 180; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_away"; name = "unknown"; turf_type = /turf/unsimulated/floor; width = 5},/turf/simulated/shuttle/floor,/area/space) "gU" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/ferry) "gV" = (/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/ferry) @@ -476,7 +482,6 @@ "jI" = (/obj/structure/closet/secure_closet/ertSec,/turf/unsimulated/floor{tag = "icon-darkred"; icon_state = "darkred"; dir = 2},/area/centcom/ferry) "jJ" = (/obj/structure/closet/secure_closet/ertEngi,/obj/structure/extinguisher_cabinet{pixel_y = -28},/turf/unsimulated/floor{tag = "icon-darkbrown"; icon_state = "darkbrown"; dir = 2},/area/centcom/ferry) "jL" = (/obj/structure/table/reinforced,/obj/item/weapon/c4,/obj/item/weapon/c4{pixel_x = 7},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/ferry) -"jM" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) "jP" = (/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve) "jQ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve) "jR" = (/turf/unsimulated/floor{dir = 10; icon_state = "green"},/area/centcom/evac) @@ -586,7 +591,6 @@ "mh" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/shuttle/plating,/area/space) "mi" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) "mj" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) -"mk" = (/turf/unsimulated/floor{tag = "icon-stage_stairs"; icon_state = "stage_stairs"},/area/syndicate_mothership) "ml" = (/obj/machinery/mech_bay_recharge_port,/turf/unsimulated/floor/plating,/area/syndicate_mothership) "mm" = (/turf/unsimulated/floor{icon_state = "recharge_floor"; name = "mech bay recharge floor"; tag = "icon-recharge_floor"},/area/syndicate_mothership) "mn" = (/obj/machinery/computer/mech_bay_power_console,/turf/unsimulated/floor/plating,/area/syndicate_mothership) @@ -687,8 +691,6 @@ "oj" = (/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Corridor A"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) "ok" = (/turf/unsimulated/wall/normal{tag = "icon-uranium15"; icon_state = "uranium15"},/area/wizard_station) "ol" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Corridor A"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station) -"om" = (/obj/structure/table,/obj/item/robot_parts/r_arm,/obj/item/weapon/storage/firstaid/regular{pixel_x = 0; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) -"oo" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgicaldrill,/obj/item/weapon/scalpel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) "op" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/space) "oq" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) "or" = (/obj/machinery/teleport/hub/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space) @@ -782,7 +784,7 @@ "qb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding) "qc" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding) "qd" = (/obj/docking_port/stationary/transit{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_transit"; width = 35},/turf/space/transit/horizontal,/area/space) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababadaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeag aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaiaiaiaiaiajakakakakakajalalalalalajamanananaoap @@ -958,14 +960,14 @@ ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsjskLkRkSkTjwaaaaaaaaaaaaaaaaaaaaaa ababababababababababaaaaaaaaaaaaaaaaaaaaaalhliljlklllmjvlnjsaaaaaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihlolphNkuihkvhNhNnrlrhPlsgzltlulvlulujijijilwlxlxlygzabababababababababababababababababababababababababababababababababababababababababhZlzlAlAlAlAlAlzlzlzlAlAlAlAlAlzhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaalBlClDlElFlljvlGlHlIjsjsaaaaaaaaaaaaaaaaababababababgzlJgIhNkUihihlKhNihihihhNihihihhNjBgzlLlMlLlLlNjijijigzlOlPlygzababababababababababababababababababababababababababababababababababababababababablQlzlzlzlRlzlzlzlzlzlzlzlRlzlzlzlQababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaajsaaljlSlSlTlljvlUlGlIaalVlWaaaaaaaaaaaaaaababababababgzgIgIhNkUihihihlXihihihlYihihihhNiGgzgzkglZmambgzmcjigzgzgzgzgzabababababababababababababababababababababababababababababababababababababababababhZlzlAlAlAlAlAlzlzlzlAlAlAlAlAlzhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaaaaaalnjsaaaajsmdmejWmfjWlnjsjsaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihihihmgihihihmhihihmihNmjmjlsgzgzgzgzgzmkmkmlmmmnmogzabababababababababababababababababababababababababababababababababababababababababhZidmpmpmpmpmpmpmpmpmpmpmpmpmpibhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaaaaaalnjsaaaajsmdmejWmfjWlnjsjsaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihihihmgihihihmhihihmihNmjmjlsgzgzgzgzgzgNgCmlmmmnmogzabababababababababababababababababababababababababababababababababababababababababhZidmpmpmpmpmpmpmpmpmpmpmpmpmpibhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaakKmqmrmsmtmumtmtmqmvmsmtmtmumtmtaajsaaaaaaaaaaababababababgzgIhMhNhNhNhNhNhNmwihihhNhNhNhNhNhNhPmxmxmxmylsgzmzmzmzmzmzmzgzabababababababababababababababababababababababababababababababababmBmBmBmBmBmBmBmBmBmCmDmDmDmDmDmDmDmDmDmDmDmDmDmCmBmBmBmBmBmBmBmBmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaamEmFjvjvmFmEmGmHjvjvjvmImJmEmKmLlnmMjsjsaaaaaaababababababgzgIhNmNmNmOmPmQhNihihihhNmRmSmTmUmVhNgIgJgIgIgLjmmzmzmzmzmzmWgzabababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaanhnijvjvninhmMmMjvjvjvjvnjnhnknllSlSnmaaaaaaaaababababababgzgIhNihihihloihnnihihihnoihloihlonphNgIhcgKgJhcgznqnqnqnqnqlqgzabababababababababababababababababababababababababababababababababmBmZnanbnsnbnsnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfntnfntnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaanunvjvlGjvnwlUlGjvnxjvjvnynunznAnBnCnDnEaaaaaaababababababgzgIhNnFihihihihnGihihihnHihihihihihhNgIgIgIgKiGgzgzgzgzgzgzgzgzabababababababababababababababababababababababababababababababababmBmZnanbnbnInbnbncndmDmDmDmDmDnJnKnJmDmDmDmDmDnencnfnfnLnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaanMnijvjWlUnNjWjvjvnOjvjvjvnMnPnQnmnRlhaaaaaaaaababababababgzgIhNnFihihnSnThNnUnVnUhNnWnXihihihhNgIgKgIhciGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDnJnYnJmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaajdnZjvjvnZjdoajvlGjWjvjvoajdobocodoeaaaaaaaaaaababababababgzgIhNihihihhNhNhNofogihhNhNhNihihihhNgIgIgJgIiGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnsnbnsnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfntnfntnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab -ababababababababababaaaaaaaaaaaaaajwmqojmsmtokmtmqkIolkImsmtokmtmqjsjsjsaaaaaaaaababababababgzgIhNomjMoohNgIhNopopophNgIhNiloqorhNgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaajdnZjvjvnZjdoajvlGjWjvjvoajdobocodoeaaaaaaaaaaababababababgzgIhNihihgOhNhNhNofogihhNhNhNihihihhNgIgIgJgIiGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnsnbnsnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfntnfntnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab +ababababababababababaaaaaaaaaaaaaajwmqojmsmtokmtmqkIolkImsmtokmtmqjsjsjsaaaaaaaaababababababgzgIhNgQgPgRhNgIhNopopophNgIhNiloqorhNgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaamdlGaajsaajsoslmmdaaaajsaaaaaaaajsaaaaaaaaababababababgzgIhNopopophNgIjyotegoujAgIhNopopophNgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababmBmBmBovovovovovmBmCmDmDmDmDmDmDmDmDmDmDmDmDmDmCmBovovovovovmBmBmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaajsjsaaowlGaaoxoymdjsaalUaaaaaaaaaaaaaaaaaaababababababgzgIjyotegoujAgIgIgIgIgIgIgIjyotegoujAgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababababmBozozozozozmBoAoBoBoBoBoBoBoBoBoBoBoBoBoBoCmBoDoDoDoDoDmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsjsaaoElGoFaaaaaajsaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababababmBmBmBmBmBmBmBoGoHoHoHoHoHoIoJoKoHoHoHoHoHoGmBmBmBmBmBmBmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab diff --git a/_maps/map_files/generic/z4.dmm b/_maps/map_files/generic/z4.dmm index 64df1473ee8..e702c0a1a27 100644 --- a/_maps/map_files/generic/z4.dmm +++ b/_maps/map_files/generic/z4.dmm @@ -64,88 +64,85 @@ "bl" = (/turf/simulated/wall/r_wall,/area/space) "bm" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating/airless,/area/space) "bn" = (/turf/simulated/wall/r_wall,/area/derelict/solar_control) -"bo" = (/obj/machinery/door/airlock/engineering{name = "Turbine Maintenance"; req_access_txt = "10"},/turf/simulated/floor/plating,/area/derelict/solar_control) +"bo" = (/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_starboard) "bp" = (/turf/simulated/wall,/area/derelict/solar_control) "bq" = (/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"br" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bs" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/derelict/solar_control) -"bt" = (/turf/simulated/floor/plating,/area/derelict/solar_control) +"br" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/space,/area/solar/derelict_starboard) +"bs" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/solar/derelict_starboard) +"bt" = (/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_starboard) "bu" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/simulated/floor/plating,/area/derelict/solar_control) "bv" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/turf/simulated/floor/plating,/area/derelict/solar_control) "bw" = (/turf/simulated/wall,/area/space) "bx" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"by" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_starboard) -"bz" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"bA" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_starboard) -"bB" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Starboard Solar APC"; pixel_y = 24},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"by" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/solar/derelict_starboard) +"bz" = (/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_starboard) +"bA" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/space,/area/solar/derelict_starboard) +"bB" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/space,/area/solar/derelict_starboard) "bC" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bD" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bE" = (/obj/machinery/light/small{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bD" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/space,/area/solar/derelict_starboard) +"bE" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/solar/derelict_starboard) "bF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/solar_control) -"bG" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) +"bG" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/solar/derelict_starboard) "bH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "bI" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bK" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bL" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/computer/monitor,/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/derelict/solar_control) -"bN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/window/eastleft,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bJ" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/solar/derelict_starboard) +"bK" = (/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/obj/structure/cable,/turf/simulated/floor/plasteel/airless,/area/solar/derelict_starboard) +"bL" = (/obj/structure/lattice/catwalk,/obj/structure/cable,/turf/space,/area/solar/derelict_starboard) +"bM" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/space,/area/solar/derelict_starboard) +"bN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/solar_control) "bO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "bP" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/solar_control) -"bR" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"bS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/derelict/solar_control) +"bR" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/derelict/solar_control) +"bS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/derelict/solar_control) "bT" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bU" = (/turf/simulated/floor/plating,/area/space) "bV" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) -"bW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/external{name = "External Engineering"},/turf/simulated/floor/plating,/area/derelict/solar_control) -"bX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"bY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"bZ" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"ca" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"cb" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"cc" = (/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) -"cd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/solar_control) +"bW" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bY" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"bZ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"ca" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"cb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"cc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"cd" = (/turf/simulated/wall/r_wall,/area/derelict/gravity_generator) "ce" = (/turf/simulated/wall,/area/derelict/bridge/access) -"cf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall,/area/derelict/bridge/access) -"cg" = (/obj/machinery/door/airlock/engineering{name = "Starboard Solar Access"; req_access_txt = "10"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cf" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"cg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "ch" = (/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "ci" = (/obj/structure/rack,/obj/item/weapon/melee/classic_baton,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cj" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "ck" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cl" = (/obj/structure/rack,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cn" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cn" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "co" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cp" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/derelict/bridge/access) -"cr" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cs" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/derelict_starboard) +"cp" = (/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"cq" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Starboard Solar APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"cr" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plating/airless{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/solar/derelict_aft) +"cs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/solar_control) "ct" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cu" = (/turf/simulated/floor/plating,/area/derelict/bridge/access) -"cv" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cv" = (/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/turf/space,/area/space) "cw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access) "cx" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access) "cy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access) "cz" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cA" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cA" = (/turf/simulated/floor/plating/airless,/turf/simulated/floor/plating/airless{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/solar/derelict_aft) "cB" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/space) "cC" = (/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) "cD" = (/obj/item/stack/cable_coil/cut,/turf/space,/area/space) "cE" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/derelict/bridge/access) -"cG" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cH" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"cG" = (/turf/simulated/floor/plating/airless{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/solar/derelict_aft) "cI" = (/turf/simulated/wall/r_wall,/area/derelict/singularity_engine) "cJ" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cK" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) -"cL" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cM" = (/turf/simulated/wall,/area/derelict/bridge) "cN" = (/obj/structure/sign/electricshock,/turf/simulated/wall/r_wall,/area/derelict/singularity_engine) "cO" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/derelict/singularity_engine) -"cP" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) -"cQ" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"cR" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"},/turf/simulated/wall/r_wall,/area/derelict/singularity_engine) +"cP" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) +"cQ" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) "cS" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "cT" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/derelict/bridge) "cU" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel,/area/derelict/bridge) @@ -158,7 +155,7 @@ "db" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) "dc" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) "dd" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"de" = (/obj/item/stack/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"de" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) "df" = (/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dg" = (/turf/simulated/wall,/area/derelict/singularity_engine) "dh" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plasteel,/area/derelict/bridge) @@ -180,7 +177,7 @@ "dx" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) -"dA" = (/obj/structure/noticeboard,/turf/simulated/wall,/area/derelict/singularity_engine) +"dA" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) "dB" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "dC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) "dD" = (/obj/machinery/door/window/eastleft{name = "Heads of Staff"; req_access_txt = "19"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) @@ -212,7 +209,6 @@ "ed" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "ee" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "ef" = (/obj/structure/table,/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel,/area/derelict/bridge) -"eg" = (/obj/structure/table,/obj/structure/window/fulltile,/turf/simulated/floor/plasteel,/area/derelict/bridge) "eh" = (/obj/structure/window/fulltile,/turf/simulated/floor/plasteel,/area/derelict/bridge) "ei" = (/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/derelict/bridge) "ej" = (/obj/structure/table,/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/bridge) @@ -230,14 +226,14 @@ "ev" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "ew" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) "ex" = (/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) -"ey" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) +"ey" = (/obj/machinery/porta_turret_cover,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "ez" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eA" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eB" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eD" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/space) "eE" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) -"eF" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) +"eF" = (/obj/machinery/door/airlock/highsecurity,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "eG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) "eH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/derelict/bridge/access) "eI" = (/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/airless,/area/derelict/bridge/access) @@ -246,8 +242,8 @@ "eL" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "eM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "eN" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"eO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) -"eP" = (/turf/simulated/floor/plating/airless,/area/derelict/bridge/access) +"eO" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"eP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "eQ" = (/obj/structure/table,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) "eR" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "eS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) @@ -280,7 +276,7 @@ "ft" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) "fu" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/derelict/hallway/primary) "fv" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) -"fw" = (/obj/structure/grille,/obj/structure/window/fulltile{dir = 8},/turf/simulated/floor/plating/airless,/area/space) +"fw" = (/obj/machinery/computer/monitor,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "fx" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched2"},/area/space) "fy" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/space) "fz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) @@ -333,7 +329,7 @@ "gu" = (/obj/item/weapon/firstaid_arm_assembly,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "gv" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) "gw" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"gx" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/medical) +"gx" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/space) "gy" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) "gz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "gA" = (/obj/structure/window/fulltile{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) @@ -353,12 +349,10 @@ "gO" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/arrival) "gP" = (/obj/machinery/door/morgue{name = "coffin storage"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) "gQ" = (/obj/structure/bodycontainer/morgue,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gR" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "gS" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/space) "gT" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/space) "gU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) "gV" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/arrival) -"gW" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) "gX" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "gY" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "gZ" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) @@ -377,7 +371,6 @@ "hm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "hn" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/derelict/arrival) "ho" = (/obj/structure/window/reinforced,/turf/space,/area/space) -"hp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/space) "hq" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "hr" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "hs" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) @@ -397,18 +390,16 @@ "hG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "hH" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "hI" = (/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/derelict/arrival) -"hJ" = (/obj/machinery/door/poddoor{id = "derelict_gun"; name = "Derelict Mass Driver"},/turf/simulated/floor/plating,/area/derelict/medical/chapel) "hK" = (/turf/simulated/floor/plating,/area/derelict/medical/chapel) "hL" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "derelict_gun"},/obj/machinery/door/window{dir = 4; req_access_txt = "25"},/obj/structure/closet/coffin,/turf/simulated/floor/plating,/area/derelict/medical/chapel) "hM" = (/obj/machinery/door/window{dir = 8},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel) "hN" = (/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel) "hO" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel) "hP" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel) -"hQ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "hR" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) "hS" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hU" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"hT" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"hU" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/porta_turret_cover,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "hV" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/space) "hW" = (/obj/structure/window/fulltile,/turf/space,/area/space) "hX" = (/obj/structure/window/fulltile{dir = 8},/turf/space,/area/space) @@ -417,7 +408,7 @@ "ia" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival) "ib" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/arrival) "ic" = (/obj/structure/window/reinforced{dir = 1},/turf/space,/area/space) -"id" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/space) +"id" = (/obj/structure/rack,/obj/item/weapon/circuitboard/smes,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "ie" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) "if" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) "ig" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) @@ -466,7 +457,7 @@ "iX" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "iY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) "iZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/derelict/hallway/primary) -"ja" = (/obj/machinery/door/airlock/security{name = "Gas Storage"; req_access = null; req_access_txt = "3"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"ja" = (/obj/machinery/door/airlock/engineering{name = "Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "jb" = (/obj/structure/lattice,/obj/structure/window/fulltile{dir = 4},/turf/space,/area/space) "jc" = (/obj/structure/girder,/obj/structure/window/fulltile,/turf/simulated/floor/plating/airless,/area/derelict/arrival) "jd" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) @@ -532,15 +523,8 @@ "kl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "km" = (/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kn" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) -"ko" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict9"},/area/derelict/hallway/secondary) -"kp" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "derelict10"},/area/derelict/hallway/secondary) -"kq" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict11"},/area/derelict/hallway/secondary) -"kr" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict12"},/area/derelict/hallway/secondary) -"ks" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict13"},/area/derelict/hallway/secondary) -"kt" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict14"},/area/derelict/hallway/secondary) -"ku" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict15"},/area/derelict/hallway/secondary) -"kv" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "derelict16"},/area/derelict/hallway/secondary) -"kw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) +"kr" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) +"ks" = (/obj/structure/closet,/turf/simulated/floor/plasteel,/area/derelict/solar_control) "kx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "ky" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "kz" = (/turf/simulated/floor/plasteel/airless{icon_state = "derelict1"},/area/derelict/hallway/secondary) @@ -556,50 +540,38 @@ "kJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kL" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) -"kM" = (/obj/machinery/door/airlock/command{name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) "kN" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kO" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kP" = (/obj/structure/window/fulltile{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "kQ" = (/obj/structure/window/fulltile{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"kR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"kR" = (/turf/simulated/wall,/area/derelict/bridge/ai_upload) "kS" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) "kT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"kU" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) -"kV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) -"kW" = (/obj/machinery/door/airlock/command{name = "AI Upload"; req_access_txt = "16"},/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/airless,/area/derelict/bridge/ai_upload) -"kX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) +"kU" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/solar_control) "kY" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"kZ" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"la" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"la" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "lb" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/bridge/ai_upload) "lc" = (/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"ld" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"ld" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) "le" = (/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) -"lf" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"lg" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"lh" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) -"li" = (/obj/item/weapon/paper{desc = ""; info = "The Syndicate have cunningly disguised a Syndicate Uplink as your PDA. Simply enter the code \"678 Bravo\" into the ringtone select to unlock its hidden features.

Objective #1. Kill the God damn AI in a fire blast that it rocks the station. Success!
Objective #2. Escape alive. Failed."; name = "Mission Objectives"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) -"lj" = (/obj/machinery/light/small{dir = 4},/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"lf" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"lg" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"lh" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/area/derelict/solar_control) "lk" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "ll" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/plasteel/airless,/area/space) -"lm" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"ln" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"lo" = (/obj/item/clothing/suit/space/syndicate/black/red,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"lp" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"lq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) -"lr" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"ls" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) +"lp" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"lq" = (/obj/item/weapon/ore/slag,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) +"lr" = (/obj/structure/rack,/obj/item/weapon/circuitboard/smes,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"ls" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/derelict/solar_control) "lt" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_aft) -"lu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"lv" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"lw" = (/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"lx" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"ly" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"lz" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"lA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) +"lu" = (/obj/structure/rack,/obj/item/weapon/stock_parts/capacitor,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"lx" = (/obj/machinery/gravity_generator/main/station{on = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/gravity_generator) +"ly" = (/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) +"lz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/derelict/solar_control) +"lA" = (/obj/item/weapon/ore/slag,/turf/space,/area/space) "lB" = (/obj/structure/cable,/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/simulated/floor/plasteel/airless,/area/solar/derelict_aft) -"lC" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) -"lD" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/derelict_aft) +"lC" = (/turf/simulated/floor/plasteel/airless,/area/derelict/gravity_generator) +"lD" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) "lE" = (/turf/simulated/wall/r_wall,/area/derelict/teleporter) "lF" = (/turf/simulated/floor/plating/airless,/area/derelict/teleporter) "lG" = (/turf/simulated/floor/plasteel/airless,/area/derelict/teleporter) @@ -633,6 +605,215 @@ "mi" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/mineral/bananium/airless,/area/space) "mj" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/mineral/bananium/airless,/area/space) "mk" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/simulated/floor/mineral/bananium/airless,/area/space) +"ml" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) +"mm" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"mn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"mo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) +"mp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) +"mq" = (/obj/structure/rack,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plating,/area/derelict/bridge/access) +"mr" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/item/stack/cable_coil/cut,/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"ms" = (/obj/machinery/door/airlock/engineering{name = "Engineering Secure Storage"; req_access_txt = "10"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"mx" = (/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"my" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"mz" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/derelict/gravity_generator) +"mA" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"},/turf/simulated/wall/r_wall,/area/derelict/gravity_generator) +"mB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"mC" = (/obj/item/stack/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"mD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"mE" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"mF" = (/turf/simulated/wall,/area/derelict/gravity_generator) +"mG" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"mH" = (/obj/structure/noticeboard,/turf/simulated/wall/r_wall,/area/derelict/singularity_engine) +"mI" = (/obj/structure/rack,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"mJ" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_aft) +"mK" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_aft) +"mL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_aft) +"mM" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/space,/area/solar/derelict_aft) +"mN" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/space,/area/solar/derelict_aft) +"mO" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/space,/area/solar/derelict_aft) +"mP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_aft) +"mQ" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/space,/area/solar/derelict_aft) +"mR" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/space,/area/solar/derelict_aft) +"mS" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/area/derelict/solar_control) +"mT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_aft) +"mU" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/space,/area/solar/derelict_aft) +"mV" = (/obj/machinery/power/tracker,/obj/structure/cable,/turf/simulated/floor/plasteel/airless,/area/solar/derelict_aft) +"mW" = (/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/weapon/paper{info = "If the equipment breaks there should be enough spare parts in our engineering storage near the north east solar array."; name = "Equipment Inventory"},/turf/simulated/floor/plasteel,/area/derelict/gravity_generator) +"mX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/derelict/solar_control) +"mZ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"na" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/bridge/ai_upload) +"nb" = (/obj/structure/rack,/obj/item/weapon/circuitboard/microwave,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"nc" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) +"nd" = (/turf/space,/area/derelict/bridge/ai_upload) +"ne" = (/turf/simulated/floor/plasteel{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) +"nh" = (/obj/structure/lattice,/turf/space,/area/derelict/bridge/ai_upload) +"nj" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) +"nk" = (/obj/machinery/power/apc{dir = 8; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"nl" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"nm" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"no" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) +"np" = (/obj/structure/rack,/obj/item/weapon/circuitboard/cryo_tube,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"nq" = (/obj/machinery/light,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"nr" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) +"ns" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) +"nt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) +"nw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) +"nx" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/solar_control) +"ny" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall,/area/derelict/bridge/access) +"nz" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nA" = (/obj/structure/rack,/obj/item/weapon/module/power_control,/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/wall,/area/derelict/bridge/access) +"nC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nE" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nH" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/apc_frame,/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"nI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"nJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"nK" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"nL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/derelict/bridge/access) +"nM" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nN" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nO" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"nR" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/derelict/gravity_generator) +"nS" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/derelict/bridge/access) +"nU" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/derelict/bridge) +"nV" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/derelict/bridge) +"nW" = (/turf/space,/area/derelict/bridge/access) +"nX" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) +"nY" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"nZ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) +"oa" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"ob" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) +"oc" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"od" = (/obj/structure/closet,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"oe" = (/obj/machinery/light{dir = 1},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/derelict/medical) +"of" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/space,/area/space) +"og" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"oh" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/medical) +"oi" = (/obj/structure/table,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) +"oj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"ok" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"ol" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/space) +"om" = (/obj/structure/table,/turf/simulated/floor/plating/airless,/area/derelict/medical) +"on" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"oo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/space,/area/space) +"op" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"oq" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"or" = (/obj/machinery/sleeper{tag = "icon-sleeper-open (EAST)"; icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"os" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"ot" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"ou" = (/obj/machinery/door/poddoor{id = "derelict_gun"; name = "Derelict Mass Driver"},/turf/simulated/floor/plating,/area/space) +"ov" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor/plating/airless,/area/space) +"ow" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/space,/area/space) +"ox" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) +"oy" = (/obj/structure/table,/turf/simulated/floor/plating/airless,/area/space) +"oz" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"oA" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"oB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/stool/bed,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"oC" = (/obj/structure/stool/bed,/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"oD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"oE" = (/obj/machinery/door/airlock/medical{name = "Medical"},/turf/simulated/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"oF" = (/turf/simulated/wall/r_wall,/area/derelict/medical/chapel) +"oG" = (/obj/structure/lattice,/turf/space,/area/derelict/medical/chapel) +"oH" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical/chapel) +"oI" = (/obj/structure/closet,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oJ" = (/obj/structure/computerframe,/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oK" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical/chapel) +"oL" = (/turf/simulated/floor/plating/airless,/area/derelict/medical/chapel) +"oM" = (/obj/machinery/door/airlock/command{name = "Teleporter Room"},/turf/simulated/floor/plasteel/airless,/area/derelict/medical/chapel) +"oN" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oO" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/primary) +"oP" = (/obj/structure/girder,/turf/simulated/floor/plasteel/airless,/area/space) +"oQ" = (/obj/machinery/door/window,/turf/simulated/floor/plasteel/airless,/area/space) +"oR" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"oS" = (/turf/simulated/floor/plating,/area/derelict/atmospherics) +"oT" = (/turf/simulated/floor/plasteel,/area/derelict/atmospherics) +"oU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/derelict/atmospherics) +"oV" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"oW" = (/turf/simulated/wall,/area/derelict/atmospherics) +"oX" = (/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"oY" = (/turf/simulated/wall/r_wall,/area/derelict/atmospherics) +"oZ" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (EAST)"; dir = 4},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pa" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pb" = (/obj/machinery/atmospherics/unary/portables_connector/visible{tag = "icon-connector_map (WEST)"; icon_state = "connector_map"; dir = 8},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pc" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pe" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/plasteel,/area/derelict/atmospherics) +"pf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pg" = (/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) +"ph" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pi" = (/obj/machinery/door/window{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless,/area/space) +"pj" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pk" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/atmospherics) +"pl" = (/obj/structure/window/reinforced,/turf/simulated/floor/plasteel,/area/derelict/atmospherics) +"pm" = (/turf/simulated/floor/plasteel{tag = "icon-damaged5"; icon_state = "damaged5"},/area/derelict/atmospherics) +"pn" = (/turf/simulated/floor/plasteel{tag = "icon-damaged3"; icon_state = "damaged3"},/area/derelict/atmospherics) +"po" = (/turf/simulated/floor/plasteel{tag = "icon-damaged2"; icon_state = "damaged2"},/area/derelict/atmospherics) +"pp" = (/turf/simulated/floor/plasteel{tag = "icon-damaged4"; icon_state = "damaged4"},/area/derelict/atmospherics) +"pq" = (/obj/structure/window/fulltile,/turf/space,/area/derelict/atmospherics) +"pr" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plasteel,/area/derelict/atmospherics) +"ps" = (/obj/structure/computerframe,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) +"pt" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics) +"pu" = (/obj/structure/lattice,/turf/space,/area/derelict/atmospherics) +"pv" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"pw" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plating,/area/derelict/atmospherics) +"px" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/atmospherics) +"py" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"pz" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel,/area/derelict/atmospherics) +"pA" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pB" = (/turf/simulated/floor/plasteel{tag = "icon-damaged1"; icon_state = "damaged1"},/area/derelict/atmospherics) +"pC" = (/obj/structure/window/fulltile{dir = 8},/turf/space,/area/derelict/atmospherics) +"pD" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pE" = (/obj/structure/table,/turf/simulated/floor/plating,/area/derelict/atmospherics) +"pF" = (/obj/structure/window/fulltile{dir = 5},/turf/simulated/floor/plating/airless,/area/derelict/atmospherics) +"pG" = (/turf/space,/area/derelict/atmospherics) +"pH" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel,/area/derelict/atmospherics) +"pI" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) +"pJ" = (/obj/machinery/power/apc{dir = 1; name = "Worn-out APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel/airless,/area/derelict/atmospherics) +"pK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict9"},/area/derelict/hallway/secondary) +"pL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict11"},/area/derelict/hallway/secondary) +"pM" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict10"},/area/derelict/hallway/secondary) +"pN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict13"},/area/derelict/hallway/secondary) +"pO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict12"},/area/derelict/hallway/secondary) +"pP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict15"},/area/derelict/hallway/secondary) +"pQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict14"},/area/derelict/hallway/secondary) +"pR" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless{icon_state = "derelict16"},/area/derelict/hallway/secondary) +"pS" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) +"pT" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/hallway/secondary) +"pU" = (/turf/simulated/wall/r_wall,/area/derelict/se_solar) +"pV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Aft Solar Access"; req_access_txt = "10"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"pW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"pX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/wall/r_wall,/area/derelict/se_solar) +"pY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/wall/r_wall,/area/derelict/se_solar) +"pZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/airlock/engineering{name = "Aft Solar Access"; req_access_txt = "10"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/se_solar) +"qb" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qc" = (/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/se_solar) +"qd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qe" = (/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qf" = (/turf/simulated/floor/plating/airless,/area/derelict/se_solar) +"qg" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qh" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qi" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qk" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/derelict/se_solar) +"ql" = (/obj/machinery/light/small{dir = 4},/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qm" = (/obj/item/weapon/paper{desc = ""; info = "The Syndicate have cunningly disguised a Syndicate Uplink as your PDA. Simply enter the code \"678 Bravo\" into the ringtone select to unlock its hidden features.

Objective #1. Kill the God damn AI in a fire blast that it rocks the station. Success!
Objective #2. Escape alive. Failed."; name = "Mission Objectives"},/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/se_solar) +"qn" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qo" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qp" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qq" = (/obj/item/clothing/suit/space/syndicate/black/red,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qr" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qs" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless,/area/derelict/se_solar) +"qu" = (/obj/structure/lattice/catwalk,/turf/space,/area/solar/derelict_aft) +"qv" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/space,/area/solar/derelict_aft) +"qw" = (/obj/item/device/aicard,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) +"qx" = (/obj/structure/rack,/obj/item/weapon/circuitboard/solar_control,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"qy" = (/obj/structure/rack,/obj/item/weapon/circuitboard/autolathe,/turf/simulated/floor/plasteel,/area/derelict/bridge/ai_upload) +"qz" = (/obj/machinery/porta_turret_cover,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"qA" = (/obj/structure/table,/obj/item/device/flash/handheld,/turf/simulated/floor/plasteel/airless,/area/derelict/bridge/access) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -673,118 +854,118 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagaBaCaDaE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaAaAaAaGawaHaIaHawaJaBaBaBaKagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaLaMaNaAagawaOaPaQawagaRaSaTaUagaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaVafafaWafawawawawaXafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaeafaZafafbaawbbbcafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaYaeafbdbeafbfawbgawafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaaafafafafafafafbhafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaaaafahafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbhafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaebjbkbjblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaebjbjbkbkblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaabjbjbjbkbkbjbmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjbjbjbkbkbkbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablbnbnbobnbnbnblblaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbqbqbrbqbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsbqbqbtbqbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabubqbqbqbqbqbqbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbqbtbqbqbtbqbvaaababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbjbjbjbjbjbjbpbqbqbqbqbqbqbpaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabwbwbwbwbwbwbwbpbpbpbpbpbsbxbpaaaabybzbAaabybzbAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbBbCbDbEbqbqbFaaaabybGbAaabybGbAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbHbIbJbKbqbqbFaaaabybGbAaabybGbAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbLbqbMbNbObPbQaaaaaabRaaaaaabRaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbSbTbTbUbqbVbWbXbYbZcabXbXbXcbccccabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpbHbqbqbqbqbqcdaaaaaabRaaaaaabRaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacececececececececfcececececgceaaaabybGbAaabybGbAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchcicjckclcecmchchcechchceaaaabybGbAaabybGbAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchcncococpcqcrchchcececgceaaaabycsbAaabycsbAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchcmchchctcecuchcvcechchceaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaeaebjbjaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacecwcwcxcyczcecechchcucececAceaaababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeblaaaaaebjbjbjcBaeaeaeaablaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchcmchchcececuchchchchchceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeblcCaeaecCbjbjbjbjbjcCaeaecCblaeaeaeaaaaaaaaaaaaaacDcDblblblcecEchcFchchcAcGchchchchchcHceababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaecIcIcIcIbjcBbjbjbjcIcIcIcIaeaeaeaeaeaaaaaaaaaaaaaaaacDblblcecJcKcLcJcJcecececececececececMabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcNcIcOcIcPcQcRcIcIcIcIcIcIaeaeaaaaaaaaaacDaaaaaablblblcechchcmchchcScTcUcVcWcXcYcVcZdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIdbdcdddedbcQdfdfdgdfdbdddbcIcIcIaeaaaaaaaaaaaaaacDaaaaaaaacecEchcFchchcSdhdidjdididididkdlabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdmdndodododbdpcPdfdfdgdqdbdbdbdrdscIblaaaaaaaaaaaaaaaaaaaaaaaacecJcKdtcJcJdudididjdidididjdidvdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdxdxdxdxdydfdzcIdgdAcIdfdBdddBdBdfcIblaaaaaaaaaaaaaaaaaaaaaaaacechcudCchchdDdididididEdididFdGabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaeafaZafafbaawbbbcafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaYaeafbdbeafbfawbgawafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeabababababaaboaaaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaaafafafafafafafbhafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabraaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaaaafahafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsbybtaabtbtbtbrbtbtbtaabtbtbtaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbhafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaabzbzbAbDbBbBbBbGbEbEbEbDbEbEbJaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaebKbKbKaabKbKbKbLbKbKbKaabKbKbKaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaeaaaaaaaaaaaabMaaaaaaaaaaaaaeaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaeaaaaaaaaaaaabraaaaaaaaaaaaaeaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababbpbNbNbRbQbSbpababababaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLaakLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUbpbqbWbXbCbYbpabaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkLkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUcsbXbZcabIcbbpababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcccfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUbubHcgbTbTcnbpbpabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcpkLkLkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUbncqbPbqbqbqbqbvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLeFkLeOkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLbjbjbjbjbjbjblbjbjbjbjbjbjblbjbjbjbjbjbjbnfwePbObObPbqbFgxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcpcphTeFcphUeykLkLkLeykLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLbnbpbpbpbpjabpbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkLkLkLkLcpkLcpcpcpkLcpcpcpkLkLkLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpksbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLkLeykLeykLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpbpkUbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcplacplfldeFcpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpbplgbHlhbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcpcpcpcpkLkLlpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpksbqlzlsbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLidcpnbcpmIkLkLcpkrkrkLkLkLkLkLkLkLkLkLkLkLkLkLkrkrkrkrbpksbqmXmSbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLmIcpnpcpmIkLkLcpkrkrkLkLlclclclblclcnamZlckLkLkrkrkrkrbpksbqbHlhbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcplfcpkLcplfcpkLcpldldcphTcplpeykLkLcccpcpcpldlcnclblbndndnclcnekLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekReykLkLkLeykLkLkLeycpkLcpkLkLeFkLkLkLeykrkrkLkLnenencqwnhndncnenekLkLkrkrkrkrbpbqbqbHbxbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekRkLkLkLkLkLkLkLkLkLkLkLqxkLqyhTmIkLkLkrkrkrkLkLnknjnlncnalbnlnelckLkLkrkrkrkrbpbqbqbHbqbqbqnmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRgMaeaeaaaaaaaaaaaaaaaakLkLkLkLkLkLkLkLkLkrkrkrkLkLqznonqnelbnelcnelckLkLkrkrkrkrbpksbqbHbqbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRaaaaaeaeaaaaaaaabjabababaebjaaaaaaaaaakLkLkLkLkLkLkLnrnsnsnsnsntkLkLkLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaeaebwbwbwaeaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpbqbqbVbPbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpksbqbqbHbpbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaecdcdcdcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpbpbqnxbHbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacvcQcPcQcQcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanycecececececececececececenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaedelqdAdedeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanychchcicjckclcenAlrlucechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedelylxdelAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanBcoconCcoconDcechchchcecenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacddAlClClDcQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchcmchchctcemqchmrcechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaacdlClClClCdeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacecwcwcxcyczcececwmscwcecenEceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeblaaaacdmlmnmmmpmocdaeaablaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchcmchchcececuchchchchcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeblcCaeaecdnHnJnInJnKcdaeaecCblaeaeaeaaaaaaaaaaaaaacDcDblblblcecEchnLcoconNnMcococococonOceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaecIcIcIcImWmxnQmxnRcIcIcIcIaeaeaeaeaeaaaaaaaaaaaaaaaacDblblcecJcKnScJcJcecececececececececMbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcNcIcOcdmzcdmAcIcIcIcIcIcIaeaeaaaaaaaaaacDaaaaaablblblcechchcmchchcScTcUcVcWcXcYcVcZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIdbdcddmCmBmEmDmycddfdbdddbcIcIcIaeaaaaaaaaaaaaaacDaaaaaaaacecEchcFchchcSdhdidjdididididkdlabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdmdndodododbdpmmmxmGmFdqdbdbdbdrdscIblaaaaaaaaaaaaaaaaaaaaaaaacecJcKdtcJcJdudidinUnVdididjdidvdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdxdxdxdxdydfdzcIcImHcIdfdBdddBdBdfcIblaaaaaaaaaaaaaaaaaaaaaaaacechcudCchchdDdididididEdididFdGabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdfdBdBdBdHdcdbdIdBdfdBdBdbdcdcdBdBcIblaaaaaaaaaaaaaaaaaaaaaaaecechchdJdKdLdMdNdNdOdPdjdidididvabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBdcdddbdQdbdddbdfdfdBdbdbdbdbdddbcIblaaaaaaaaaaaaaaaaaaaaaeaecechchdCchchdRcVcVdidSdTdidTdUdVbjdWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdbdddbdXdYdZeadfebdfdfecedeedBdcddcIblaeaaaaaaaaaacDaaaaaeaeaececececmcechcSefegeheiejcTcTcVdldwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdBdbdXekelemdfdfdfdfdfeneneoeedbdccIblaeaeaablcececececececececececeepcececeeqeqereqeqeqcMcMcMabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblceexexexeyezeAeBceexexeCexexceblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIcIcIdBdBesekdcdfdfdfdfdfdfdfdfeEevdfdBcIcIcIcIcIaaceeFeGeGeGeGeGeGeHeGeGeIexeJceaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBeKeLdBdBeMeNdfeaaaaaaaaaaadfdfeEdydfdBdbdBdfcIcIaeceeOexexexexexexceePexeCexexceaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIeQdbeEeedBdcdBdfdfdfaaaaaaaaaadfdfeRdfdBeSeTeUdbdBcIcIcecfeVceeWeWeWeWceexexeXexexcecDaaaaaaaaaaaaaaaabjbjblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdqddeYevdcdcdcdddfdfaaaaaaaaaadfdfeZdfdBfafbeUdbfccIcIfdfefffffgfgfgfgcececececececeaeaeaaaaaaaaaaaaaabjbjblbwbjeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdBdBeYevdBddeafhdfdfaaaaaaaaaadfdfdffidfdBdbfjdddBfkfkfdflfmfffgfgfgfnceeDbjceceaaaeaaaaaaaaaaaaaabjbjbjbkblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBfodydbdcfpfjdfdfaaaaaaaaaadfdfdffqdBdBeceNdBcIfkfrfsftfufffgfvfgfnfwaaaeaeaeaaaaaaaaaaaaaaaabjbjbjbjfxblbwfybwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcIdBdBesdfdfdbdfdfdfdfdfdfdfdffzdcdccIcIcIcIfkflfdfdfdfAfdfdfdfdfdfdfdaeaeaaaaaaaabjbjbwbjbjfybjfBbkblbwbkeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIcIdbfCfDdfdbdddfdfdfdcdbdfdffEfzdddBcIcIcIaeaeflfdfffFfFfdfgfGfHfHfdfdaebjaeaeaebjbjfxbwbjblbkfxfyfIblbwbkbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdddcfJdfdfdbfKdbdcdddodpdofKfLdcdccIcIaaaafrfMfdfffFfffffgfgfgfdfdaaaaaaaeaaaabjbkbkbwbjfNfNfNfNfNfNfOfOfObjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgdfdgaeaefDecevdBdBdBfPdxdxdydbdbdBcIcIaafrfMfmfdfgfgfgfffQfgfdfdfdaaaeaebjaafRfOfOfOfOfOfOfSfTfUfVfUfWfXfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYfYfYfYfYfYfYfYfYfYfYfYfYfYaaaaaaaaaaaaaafZaadfdfgaaeaedfgbdBdbdbfadBdBdbdcdddBdBcIcIaaflfFfmfdfdfdfgfdfdfdfdfdfdgcgcbwbwbwfRgdgdgegegffOfSfSfSfUfUfXfXfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYggggggggggggggggggghgggigggifYgjgkgkgkgjglgmgngogjgpaegqaedBdBdbdcdcdcdbdBdBdbdccIcIcIcIaaflfmfffdfgfufffufdfufugrfubjfxfxfxbjfxgegdgfgfgegsfUfUfUfUfUfXfXfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYggggggggggggggggggggggggggggfYgtgtgtgugtgvgwgngngxaeaeaeaecIcIdBgydddbdBcIcIcIcIcIcIaeaefFgzfmfffgfgfffFfufugrfufFgAbwbwgBgBgCgBfNfNfNfNfNfNfUfUgDfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYgiggggggggggggfYfYfYfYfYgEfYfYgFgtgtgtgtgGgvgwgngngngnaeaecIcIcIcIdfcIcIcIcIcIcIaeaabjfdfFfefffffdfgfffffFfkfkfkfkfkaeaeaeaaaaaagHfygHbjcBfNfSfSfUfSgIfUgJfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYgigigggKggggggfYggggghgggggggEgtgtgtgtgtgtgvgwgngngngnaaaeaecIcIgLdfdfcIcIaeaeaeaaaabjfdfmfefffffdfdfdfdfufkfIfxfIgMaaaeaaaaaaaaaaaagHaegMfNgNgNfUgNgOfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYfYfYfYfYgPfYgQgggQgggQggfYgtgtgtgtgtgRgtgvgwgngngnaaaaaeaecIcIcIcIcIaeaeaaaagSgSgTfdffgUfffgfdfgfufffufkfxgMfxfxaaaeaaaacDaaaaaaaagMaefNfUfUfUfUgVfSfSfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagWgXgYgZgYgZgYgZgYfYgQgggQgggQgggEgtgtgtgtgthagthbgvhcgwgngnhdgjgjgjgjheheaeaaaeaahfaaaabjfdfdgUfffdfdfFfgfFfufkfxgHaaaaaaaeaaaaaaaaaaaaaaaafIfNfOfUfUfOfOfOfOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagWhghhhihhhihhhihhfYggggggggggggfYgtgtgtgtgthjgthkgtgvgvgwgngnhlgnhlbjbjbjbjaaaeaeaeaeaabjfdfghmfgfgfdfgfgfgfgfkgMfxaaaaaaaeaaaaaaaaaaaaaaaafNfNfNfUfUfOhnhnhnfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahohphqhrhshrgZgYgZgYfYfYfYfYfYfYhthuhvhwhxhxhyhzhwhwhwhwhAgwgwgwgjhBgjfIbjbjbjhChDbjbjbjhEhFfdfghGfgfgfdfgfffghHfkfkfkbjaeaebjaebjaeaeaebjaeaebjbjfNfUfUfUfUfUhIfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahJhKhKhKhKhLhihhhihhhMhNhNhNhOhNhPfYhQgtgtgthRhjhSgtgtgjhTgtgjgjgjgjgjhUhFfIfyhVbjfybjbjfIhFfdfghGfghHfdfgfgfgfFfgfgfkfdhWhWbwhXaaaaaaaaaeaaaaaaaefNhYfUfUfUfUhZfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicidieifigifgZgYgZgYfYfYfYfYfYfYihfYfdfdfdfdfdfdfdfdfdfdiiijfdfdfdfdfdfdfdfdfdfdfyhFhFhFfybjfdfgikilililililimilililinilioioipiqhWaabwbwirbwbwbwgcfNfOfUfUfUfUfUisgDisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagWhghhhihhhihhhihhfYaaaaaafdfgfgfgfgfgitfgfgfgfgfdfgfghGfgfgfgfdfgfgfgfgfgfdfdfdfdfdfdfdfdfdfghGfgfgfdfgfffgfgfFfgfkfdgBbwiuioiviwixiyizivioiviviAiBiCiDgDfUfUfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagWgXgYgZiEgZgYgZgYfYaaaaaafdfgfgfgfgfgfgfgfgfgfgfdiFfghGfgfghHfdiFfgfgfgfgfdfdfdfdfgfgfgfgfgfgiGiliHfdfgfgfffffgiIfkeDaeaaiJiJiJiKeDbwaaiLiLiJiMfNfOfUiNfUfUiOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYiPfYfYfYfYfYfYfYaaaaaafdfgfgfgfgfgfgfgfgfgfgiQfgfghGfgfgfgfdfgfgfgfgfgfgfgitfgiRilililililiSfghGfdfgfgfgfgfgiTfkeDaeaaaaaaaaaaaaaaaaaaaaaaaagefOfUfOfUfUiUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYaaaaaaaaaaaaaaaaaafdfgfgfdfdfdfgfdfdfdiVfdfgfgiWilililiXililiYililililililiSfgfgfgfgfgfgfgiZfkjafkiTfffdbwaaaeaaaaaaaaaaaaaaaaaaaaaaaajbjcfOfUfOfOfOfOfOfNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfgfgfdjditfgfdjditfgfdjejejejfiVjgfdiFfghGfgfgfgfgfgfgfgfkfkfkfkfkfkjhiZbkbkfkfdfdfdaaaaaaaaaaaaaaaajiaaaaaeaaaeaefOjjjkfUfUhIjkfUfNfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefgfdjlfgjmfdjlfgjlfdjnfgfgfgfgfgfdfgfgjofgfgfgfgfgfgfgfkbkbkjpbkbkjqjrbkblblbwbwbwaaaaaadWaaaaaaaaaaaaaejsjsaeaefOjtfUfUgDfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefdfdfdfdfdfdfdfdfdfgfgfgjufgfgfdfdfdfdfdfdfdfdfdjvfdfkbjbjbjbjbkjqjrbkbljpbkjwbwaeaeaaaeaeaeaaaaaaaeaeaeaaaeaajxjyfUfUfUfUgDfUjzfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefFfFfFfFfgjAfFjAfdfgjujljljufgfdbkbjbjbjaeaeaebwbjbjaaaaaaaedwbjbkjBjCjDbkbkjEbwaeaeaeaecDaeaeaeaeaeaaaeaaaaaajxjyjtfUfUfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaefFfFjAjGfgjHfdiFfgjIjlfghHfdbjbjaaaaaaaaaeaebjbjaaaaaeaeaeaebjjrbkjJbkjEjEbwaeaaaaaaaaaeaeaeaaaeaaaaaeaaaajxjyfUfUfUfUfUfUjKfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefFfFfFjAfgfdfgfgjljlfgfgfdbkbjaaaaaaaaaeaeaaaaaaaaaeaaaaaabjjrbkjLbkjEjEbwaeaeaaaaaeaeaaaaaaaaaaaaaaaaaajxjMjNjMiaiaiaiaiafNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafFfFfFfdfgfgjujufgfgfdbjaaaaaaaaaaaaaeaaaaaaaaaeaeaejsbjjObkbkbkbkbkjPjQjRblblaeaaaaaaaaaaaaaaaaaaaaaajSgDhVbjbjbjbjaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaefFfgfgfgfgfgfgfgfdbjaaaaaaaaaaaaaeaaaaaaaaaeaaaaaaaajTjUjUjUjUjUjVjWjRaabjaaaaaaaaaaaaaaaadWaaaaaajXjNjYbwaaaabwaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefdfdfdfdfdfdfgfdjZbjaeaaaaaaaaaaaeaaaaaaaaaeaaaaaaaaaaaebjbkbkbkjRkajRaabwaaaaaaaaaaaaaaaaaaaaaaaakbkcaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaafFfFgrfffgjHfdbjaeaeaeaeaebjbjaeaeaeaeaeaaaacDaaaaaebjbjbjbkjRkdkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaafFfmfFfgfgfdbjaeaaaaaabjbjcBbjaaaaaeaeaeaeaeaeaeaeaabjbjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFkgfFfffFfgfFbjaaaaaaaaaaaebjbjaaaaaaaaaeaaaaaaaaaeaaaabjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaeaafFfFfFfgfgfmfdbjaaaaaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaeaeaeblbljRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaeaefdfFfdfdfdfdbkaaaaaaaaaaaeaeaeaeaaaaaaaeaaaaaaaaaeaaaaaabjjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFfFfFfffmfgfdbjbjaaaaaaaaaeaaaaaeaeaaaaaeaaaaaaaaaeaaaabjbkjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaefFfFfFfffdbwbwbjaaaaaeaeaaaaaaaeaeaeaeaeaeaeaeaebjbjbkbkjPkfjRjPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaafFfFfFfmfgfdaaaabwaeaaaeaeaaaaaaaaaeaeaaaaaaaaaabjbkbkbkbkjPkfkhkijPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebwjPjQjPjPjPjPkjjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPkkkhkhkhklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaekmkhkhkhknkhkhkhkhkhkhkokpkqkrksktkukvkhkhkhkhkhkhkhkhkhkhkhkwkxkykmkhkhkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekmkmkmkhkhkhkhkhkhkhkhkzkAkBkCkDkEkFkGkhkhkhkhkhkhkhkhkhkhkhkfkhkhkhkhkhkeaaaaaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdbdddbdXdYdZeadfebdfdfecedeedBdcddcIblaeaaaaaaaaaacDaaaaaeaeaececececmcechcSefcVeheiejcTcTcVdldwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdBdbdXekelemdfdfdfdfdfeneneoeedbdccIblaeaeaablcecececececececececechcmcececeeqeqereqeqeqcMcMcMabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblceexexexqAezeAeBcecechcmcenWnWblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIcIcIdBdBesekdcdfdfdfdfdfdfdfdfeEevdfdBcIcIcIcIcIaacenXexexexexexexcecechcmcenWnWaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBeKeLdBdBeMeNdfeaaaaaaaaaaadfdfeEdydfdBdbdBdfcIcIaeceexexexexexexexcececeepcececeaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIeQdbeEeedBdcdBnYdfdfaaaaaaaaaadfdfeRnYdBeSeTeUdbdBcIcIceceeVceeWeWeWeWceexexeCexexcecDaaaaaaaaaaaaaaaabjbjblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdqddeYevdcdcdcdddfdfaaaaaaaaaadfdfeZdfdBfafbeUdbfccIcIfdnZimimilililileHeGeGeIexeJceaeaeaaaaaaaaaaaaaabjbjblbwbjeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdBdBeYevdBddeafhdfdfaaaaaaaaaadfdfdffidfdBdbfjdddBfkfkfdflfmfffgfgfgfncebjexeCexexceaaaaaaaaaaaaaabjbjbjbkblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBfodydbdcfpoadfdfaaaaaaaaaadfdfobfqdBdBeceNdBcIfkfrfsftfufffgfvfgfnceexexeXexexceaaaaaaaaaaaabjbjbjbjfxblbwfybwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcIdBdBesdfdfdbdfdfdfdfdfdfdfdffzdcdccIcIcIcIfkflfdfdfdfAfdfdfdfdfdfdfdcecececeaaaabjbjbwbjbjfybjfBbkblbwbkeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIcIdbfCfDdfdbdddfdfdfdcdbdfdffEfzdddBcIcIcIaeaeflfdfffFfFfdfgfGfHfdjZfFceceaaaeaebjbjfxbwbjblbkfxfyfIblbwbkbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdddcfJdfdfdbfKdbdcdddodpdofKfLdcdccIcIaaaafrfMfdfffFfffffgfgfgfdfdaaaeaebjaafRbjbkbkbwbjfNfNfNfNfNfNfOfOfObjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYfYfYfYfYfYfYfYfYfYfYaaaaaaaaaaaaaaaaaaaaaaaadgdfdgaeaefDecevdBdBdBfPdxdxdydbdbdBcIcIaafrfMfmfdfgfgfgfffQfgfdfdfdgcgcbwbwbwfRfOfOfOfOfOfOfSfTfUfVfUfWfXfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYgigigigiggggggggggghgifYaaaaaaaaaaaaaaaaaaaafZaadfdfgaaeaedfgbdBdbdbfadBdBdbdcdddBdBcIcIaaflfFfmfdfdfdfgfdfdfdfdfdfdbwfxbjbjfxfxgdgdgegegffOfSfSfSfUfUfXfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYgigKggggggfYfYgEfYfYfYfYfYgjgkgkgkgjglgmgngogjgpaegqaedBdBdbdcdcdcdbdBdBdbdccIcIcIcIaaflfmfffdfgfufffufdfufugrfubjfxfxfxbjfxgegdgfgfgegsfUfUfUfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqfYiPfYfYfYfYfYgPfYgQggghggggggfYgtgtgtgugtodocgngnoeaeaeaeaecIcIdBgydddbdBcIcIcIcIcIcIaeaefFgzfmfffgfgfffFfufugrfufFgAbwbwgBgBgCgBfNfNfNfNfNfNfUfUgDfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofgXgYgZgYoggYgZgYfYgQgggQgggQggfYgFgtgtgtgtgGgvgwgnohgngnaeaecIcIcIcIdfcIcIcIcIcIcIaeaabjfdfFfefffffdfgfffffFfkfkfkfkfkaeaeaeaaaaaagHfygHbjcBfNfSfSfUfSgIfUgJfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhgojoiokhihhhiolfYgQgggQgggQgggEgtgtgtgtgtgtgvonomgngngnaaaeaecIcIgLdfdfcIcIaeaeaeaaaabjfdfmfefffffdfdfdfdfufkfIfxfIgMaaaeaaaaaaaaaaaagHaegMfNgNgNfUgNgOfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahooohqhrhshrgZgYgZgYfYgQopgQoqgQggfYorgtgtgtgtotosgvgwgngngnaaaaaeaecIcIcIcIcIaeaeaaaagSgSgTfdffgUfffgfdfgfufffufkfxgMfxfxaaaeaaaacDaaaaaaaagMaefNfUfUfUfUgVfSfSfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoubUhKhKhKhLhihhhihhfYgQgggQgggQgggEgtgtgtgtgthagthbgvhcgwgngnhdgjgjgjgjovheaeaaaeaahfaaaabjfdfdgUfffdfdfFfgfFfufkfxgHaaaaaaaeaaaaaaaaaaaaaaaafIfNfOfUfUfOfOfOfOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicowieifigifgZoxoggYfYgQgggggggKggfYgtgtgtgtgthjgthkgtgvgvgwgngnhlgnhlgSbjbjbjaaaeaeaeaeaaoyfdfghmfgfgfdfgfgfgfgfkgMfxaaaaaaaeaaaaaaaaaaaaaaaafNfNfNfUfUfOhnhnhnfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhghhhiozhihhhihhfYfYfYfYfYfYhthuhvhwhxhxhyhzhwhwhwhwhAgwgwgwgjhBgjfIbjbjbjhChDbjbjbjhEhFfdfghGfgfgfdfgoAfghHfkfkfkbjaeaebjaebjaeaeaebjaeaebjbjfNfUfUfUfUfUhIfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofgXgYgZiEgZgYgZgYhMhNhNhNhOhNhPfYorgtgtgthRoBhSoCgtgjoDoEgjgjgjgjgjgthFfIfyhVbjfybjbjfIhFfdfghGfghHfdfgfgfgfFfgfgfkfdhWhWbwhXaaaaaaaaaeaaaaaaaefNhYfUfUfUfUhZfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqoFoFoFoFoFoFoFoFoFoFoFoFfYfYihfYfdfdfdfdfdfdfdfdfdfdiiijfdfdfdfdfdfdfdfdfdfdfyhFhFhFfyoyfdfgikilililililimilililinilioioipiqhWaabwbwirbwbwbwgcfNfOfUfUfUfUfUisgDisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfIbjaeaaaaaaoGoGaaoHoFfdoIfgfgfgfgitfgoIfgfgfdoJfghGfgfgfgfdfgfgfgfgfgfdfdfdfdfdfdfdfdfdfghGfgfgfdfgfffgfgfFfgfkfdgBbwiuioiviwixiyizivioiviviAiBiCiDgDfUfUfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfBaaaaaaaaaaaaoGoLoKoMfgfgfgfgoNfgfgfgfgoOfgfdiFfghGfgfghHfdiFoNfgoOfgfdfdfdfdfgfgfgfgfgfgiGiliHfdfgoOfffffgiIfkeDaeaaiJiJiJiKeDbwaaiLiLiJiMfNfOfUiNfUfUiOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjaaaaaaaaaaaaoLoGoLoFfdfgfgfgfgfgfgfgfgfgfgiQfgfghGfgfgfgfdfgfgfgfgfgfgfgitfgiRilililililiSfghGfdfgfgfgfgfgfgfkeDaeaaaaaaaaaaaaaaaaaaaaaaaagefOfUfOfUfUiUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoFoFfdfgfgfdfdfdfgfdfdfdiVfdfgfgiWilililiXililiYililililililiSfgfgfgfgfgfgfgiZfkfkfkiTfffdoPbwaeaaaaaaaaaaaaaaaaaaaaaaaajbjcfOfUfOfOfOfOfOfNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfgfgfdjditfgfdjditfgfdjejejejfiVjgfdiFfghGfgfgfgfgfgfgfgfkfkfkfkfkfkjhiZoQbkfkfdfdfdiJaaaaaaaaaaaaaajiaaaaaeaaaeaefOjjjkfUfUhIjkfUfNfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefgfdjloNjmfdjloNjlfdjnfgfgfgfgfgfdfgfgjofgfgfgfgfgfgfgfkbkbkjpbkbkjqjrbkblblbwbwbwfyaaaadWaaaaaaaaaaaaaejsjsaeaefOjtfUfUgDfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefdfdfdfdfdfdfdfdfdfgfgoNjufgfgfdfdfdfdfdfdfdfdfdjvfdfkbjbjbjbjbkjqjrbkbljpbkjwbwbjaeaaaeaeaeaaaaaaaeaeaeaaaeaajxjyfUfUfUfUgDfUjzfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefFfFfFfFoJjAoRjAfdfgjujljljufgfdoToSoUoSoVoSoSoWoXoWoYaaaaaedwbjbkjBjCjDbkbkjEbwaebwaeaecDaeaeaeaeaeaaaeaaaaaajxjyjtfUfUfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaefFfFjAjGfgjHfdiFfgjIjlfghHfdpaoZoSpboVoSoSoWpcoWoYaaaeaeaeaebjjrbkjJbkjEjEbwaeaaaaaaaaaeaeaeaaaeaaaaaeaaaajxjyfUfUfUfUfUfUjKfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefFfFfFjAfgfdfgfgjljlfgfgfdpepdpfpboVoSoToWpgoWoYaaaeaaaaaabjjrbkjLbkjEjEbwaeaeaaaaaeaeaaaaaaaaaaaaaaaaaajxjMjNjMiaiaiaiaiafNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafFfFfFfdfgfgjujufgfgfdoSoToSphphoToToWpcoWoYaaaeaeaejsbjjObkpibkbkbkjPjQjRblblaeaaaaaaaaaaaaaaaaaaaaaajSgDhVbjbjbjbjaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaefFiQfgfgfgfgfgfgfdpjoSoSoSoToSpkoWpcoWoYblblblblaaaajTjUjUjUjUjUjVjWjRaabjaaaaaaaaaaaaaaaadWaaaaaajXjNjYbwaaaabwaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefdfdfdfdfdfdiVfdjZploSoSoSoSpmpopnpnpppqaaaeaaaeaaaaaaaebjbkbkbkjRkajRaabwaaaaaaaaaaaaaaaaaaaaaaaakbkcaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaafFfFgrfffgjHfdpsproSoSoSoTptoSoSpqpuaeaefIblcDaaaaaebjbjbjbkjRkdkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaafFfmpvfgfgfdpwoToSoSoSoToSoSpxpopqaeaeaefyaeaeaeaeaabjbjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFkgfFffpyfgfdpApzoToSoToSoSoSpnpooWaaaaaeaeaaaaaaaeaaaabjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaeaafFfFfFfgfgfmfdoSoToSoSpBoToSoSpopmoWfIaaaeblblaaaaaeaeaeblbljRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaeaefdfFfdfdfdfdoToSoToSpopBoSpppBpmpCfIaaaebjbjaaaaaeaaaaaabjjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFfFfFfffmfgfdoSpDphoSoSoSpEoSpmpFpuaaaaaebwaaaaaaaeaaaabjbkjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaepvfFfFfffdoWoWoTpooSoToSoSoWoWpuaeaebwbwaeaeaeaebjbjbkbkjPkfjRjPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaafFfFfFfmfgfdpGpGoWpHpopooSoSoWpGpGaaaaaabwaaaaaabjbkbkbkbkjPkfkhkijPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebwjPjQjPjPjPjPkjjPjPoWjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPkkkhkhkhklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaekmkhkhkhknpIkhkhkhpJkxpKpMpLpOpNpQpPpRkxkxkxkxkxkxkxkxkxkxkxpSkxkykmkhkhkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekmkmkmkhkhkhkhkhkhkhkhkzkAkBkCkDkEkFkGkhkhkhkhkhkhkhkhkhkhkhkfkhpTkhkhkhkeaaaaaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaekHkIkJkJkJjPkJkJkJkJkJjPkJkJkJkJkJjPkJkJkJkJkJjPkJkJkJkJjPkfkmkmkhkhkhkKhohohoaaaaaahfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjababababababababababbwabababababdwdwdwabababblababababkLkMkLkmkhkhkmkNkOkPkQkmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaaaakLkRkLkSkSjRkTjRkTjRicicicaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbjbjkLkUkVkWkLkXkXjRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebjkLkZkLlalblclcjRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjbjkLldlelalclflcjRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejsbjfIkLlgkLlhlcliljjRlkjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjfIlllclmlnlclolplcjRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjbkbkkLlqkLlclclelcjRkYjRlkjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablblblaakLkLlqkLkLkLkLkLjRkYjRlkjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaalraaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaalsaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaltltltaaluaaltlvlwaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalxlylylzlAlzlylycDaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalBlBlBaaluaalBlwaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaluaaaaaacDaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaltltltaaluaaltltltaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalxlylylzlClzlylylDaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalBlBlBaalwaalBlBlBaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaalwaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababbjababbjbjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjababababababababababbwabababababdwdwdwabababblababababpUpVpUkmkhkhkmkNkOkPkQkmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaaaapUpWpUkSkSjRkTjRkTjRicicicaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbjbjpUpYpXpZpUqaqajRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebjpUqbpUqdqcqeqejRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjbjpUqgqfqdqhqiqejRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejsbjfIpUqjpUqkqeqmqljRlkjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjfIllqnqpqoqeqqqrqejRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjbkbkpUqdpUqeqeqfqsjRkYjRlkjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablblblaapUpUqtpUpUpUpUpUjRkYjRlkjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaemJaeaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaamKaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaltltltaamLaaltcrcAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaamNmMmMmOmPmOmRmQcDaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalBlBlBaamLaalBcGaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaquaaaaaacDaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaltltltaamLaaltltltaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaequqvmMmTmPmTmRmRmUaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalBlBlBaamLaalBlBlBaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaamVaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeababaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index a8b240c4743..c21cb6c999f 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -14,8 +14,10 @@ #define CHAT_PULLR 2048 #define INTENT_STYLE 4096 #define CHAT_GHOSTWHISPER 8192 +#define MIDROUND_ANTAG 16384 +#define CHAT_GHOSTPDA 32768 -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC|CHAT_PULLR|INTENT_STYLE|CHAT_GHOSTWHISPER) +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC|CHAT_PULLR|INTENT_STYLE|CHAT_GHOSTWHISPER|MIDROUND_ANTAG|CHAT_GHOSTPDA) #define BE_TRAITOR 1 #define BE_OPERATIVE 2 @@ -29,4 +31,4 @@ #define BE_BLOB 512 #define BE_NINJA 1024 #define BE_MONKEY 2048 -#define BE_GANG 4096 +#define BE_GANG 4096 diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 1324f6cbcd9..51f5c6b4442 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -798,3 +798,70 @@ The _flatIcons list is a cache for generated icon files. var/image/I = O composite.Blend(icon(I.icon, I.icon_state, I.dir, 1), ICON_OVERLAY) return composite + + +//What the mob looks like as animated static +//By vg's ComicIronic +/proc/getStaticIcon(icon/A, safety=1) + var/icon/flat_icon = safety ? A : new(A) + flat_icon.Blend(rgb(255,255,255)) + flat_icon.BecomeAlphaMask() + var/icon/static_icon = new/icon('icons/effects/effects.dmi', "static_base") + static_icon.AddAlphaMask(flat_icon) + return static_icon + + +//What the mob looks like as a pitch black outline +//By vg's ComicIronic +/proc/getBlankIcon(icon/A, safety=1) + var/icon/flat_icon = safety ? A : new(A) + flat_icon.Blend(rgb(255,255,255)) + flat_icon.BecomeAlphaMask() + var/icon/blank_icon = new/icon('icons/effects/effects.dmi', "blank_base") + blank_icon.AddAlphaMask(flat_icon) + return blank_icon + + +//Dwarf fortress style icons based on letters (defaults to the first letter of the Atom's name) +//By vg's ComicIronic +/proc/getLetterImage(atom/A, letter= "", uppercase = 0) + if(!A) + return + + var/icon/atom_icon = new(A.icon, A.icon_state) + + if(!letter) + letter = copytext(A.name, 1, 2) + if(uppercase == 1) + letter = uppertext(letter) + else if(uppercase == -1) + letter = lowertext(letter) + + var/image/text_image = new(loc = A) + text_image.maptext = "[letter]" + text_image.color = AverageColour(atom_icon) + text_image.pixel_x = 7 + text_image.pixel_y = 5 + del(atom_icon) + return text_image + + +//Find's the average colour of the icon +//By vg's ComicIronic +/proc/AverageColour(var/icon/I) + var/list/colours = list() + for(var/x_pixel = 1 to I.Width()) + for(var/y_pixel = 1 to I.Height()) + var/this_colour = I.GetPixel(x_pixel, y_pixel) + if(this_colour) + colours.Add(this_colour) + + if(!colours.len) + return null + + var/final_average = colours[1] + for(var/colour in (colours - colours[1])) + final_average = BlendRGB(final_average, colour, 1) + return final_average + + diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 16c24cdae9a..cc7b16db52b 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -544,3 +544,46 @@ for(var/t in test_times) else . = max(0, min(255, 138.5177312231 * log(temp - 10) - 305.0447927307)) +/proc/color2hex(var/color) //web colors + if(!color) + return "#000000" + + switch(color) + if("white") + return "#FFFFFF" + if("black") + return "#000000" + if("gray") + return "#808080" + if("brown") + return "#A52A2A" + if("red") + return "#FF0000" + if("darkred") + return "#8B0000" + if("crimson") + return "#DC143C" + if("orange") + return "#FFA500" + if("yellow") + return "#FFFF00" + if("green") + return "#008000" + if("lime") + return "#00FF00" + if("darkgreen") + return "#006400" + if("cyan") + return "#00FFFF" + if("blue") + return "#0000FF" + if("navy") + return "#000080" + if("teal") + return "#008080" + if("purple") + return "#800080" + if("indigo") + return "#4B0082" + else + return "#FFFFFF" \ No newline at end of file diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index f0f01f421bd..f3b61f94ba4 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -776,7 +776,7 @@ Turf and target are seperate in case you want to teleport some distance from a t sleep(timefraction) if(!user || !target) return 0 - if ( user.loc != user_loc || target.loc != target_loc || user.get_active_hand() != holding || user.stat || ( user.stunned || user.weakened || user.paralysis || user.lying ) ) + if ( user.loc != user_loc || target.loc != target_loc || user.get_active_hand() != holding || user.incapacitated() || user.lying ) return 0 return 1 @@ -798,7 +798,7 @@ Turf and target are seperate in case you want to teleport some distance from a t sleep(delayfraction) - if(!user || user.stat || user.weakened || user.stunned || !(user.loc == T)) + if(!user || user.incapacitated() || !(user.loc == T)) return 0 if(needhand) //Sometimes you don't want the user to have to keep their active hand @@ -1306,7 +1306,7 @@ var/global/list/common_tools = list( return 0 if(istype(W, /obj/item/weapon/match)) var/obj/item/weapon/match/O = W - if(O.lit) + if(O.lit == 1) return 1000 else return 0 @@ -1489,4 +1489,15 @@ var/list/WALLITEMS = list( for(var/mob in player_list) if(mob in living_mob_list) living_player_count += 1 - return living_player_count \ No newline at end of file + return living_player_count + +/proc/randomColor(var/mode = 0) //if 1 it doesn't pick white, black or gray + switch(mode) + if(0) + return pick("white","black","gray","red","green","blue","brown","yellow","orange","darkred", + "crimson","lime","darkgreen","cyan","navy","teal","purple","indigo") + if(1) + return pick("red","green","blue","brown","yellow","orange","darkred","crimson", + "lime","darkgreen","cyan","navy","teal","purple","indigo") + else + return "white" \ No newline at end of file diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 802facfd5e4..2940c6eddc8 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -26,6 +26,7 @@ var/global/list/global_map = null //5 - empty space var/list/landmarks_list = list() //list of all landmarks created +var/list/start_landmarks_list = list() //list of all spawn points created var/list/monkeystart = list() var/list/wizardstart = list() diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index b0ba6b304aa..cbbd9bc7052 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -77,25 +77,22 @@ #define ui_borg_radio "EAST-1:28,SOUTH+1:7" #define ui_borg_intents "EAST-2:26,SOUTH:5" -//Upper-middle right (damage indicators) -#define ui_toxin "EAST-1:28,CENTER+5:27" -#define ui_fire "EAST-1:28,CENTER+4:25" -#define ui_oxygen "EAST-1:28,CENTER+3:23" -#define ui_pressure "EAST-1:28,CENTER+2:21" -#define ui_alien_toxin "EAST-1:28,CENTER+5:25" -#define ui_alien_fire "EAST-1:28,CENTER+4:25" -#define ui_alien_oxygen "EAST-1:28,CENTER+3:25" -#define ui_alien_nightvision "EAST-1:28,CENTER+2:25" +//Upper-middle right (alerts) +#define ui_alert1 "EAST-1:28,CENTER+5:27" +#define ui_alert2 "EAST-1:28,CENTER+4:25" +#define ui_alert3 "EAST-1:28,CENTER+3:23" +#define ui_alert4 "EAST-1:28,CENTER+2:21" +#define ui_alert5 "EAST-1:28,CENTER+1:19" + //Middle right (status indicators) -#define ui_nutrition "EAST-1:28,CENTER-3:11" -#define ui_temp "EAST-1:28,CENTER-2:13" -#define ui_healthdoll "EAST-1:28,CENTER-1:15" -#define ui_health "EAST-1:28,CENTER:17" -#define ui_internal "EAST-1:28,CENTER+1:19" +#define ui_healthdoll "EAST-1:28,CENTER-2:13" +#define ui_health "EAST-1:28,CENTER-1:15" +#define ui_internal "EAST-1:28,CENTER:17" //borgs and aliens +#define ui_alien_nightvision "EAST-1:28,CENTER:17" #define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. #define ui_alien_health "EAST-1:28,CENTER-1:15" //aliens have the health display where humans have the pressure damage indicator. #define ui_alienplasmadisplay "EAST-1:28,CENTER-2:15" diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm new file mode 100644 index 00000000000..5dffc0127b2 --- /dev/null +++ b/code/_onclick/hud/alert.dm @@ -0,0 +1,204 @@ +//A system to manage and display alerts on screen without needing you to do it yourself + +//PUBLIC - call these wherever you want + + +/mob/proc/throw_alert(category, id, severity, obj/new_master) + +/* Proc to create or update an alert. Returns 1 if the alert is new or updated, 0 if it was thrown already + + category is a text string. Each mob may only have one alert per category; the previous one will be replaced + + id is a text string, If you don't provide one, category will be used as id + Either way it MUST match a type path like so: /obj/screen/alert/[id] + Also the alert's icon_state will be [id] so you must add it to screen_alert.dmi + + severity is an optional number that will be placed at the end of the icon_state for this alert + For example, high pressure's id is "highpressure" and can be serverity 1 or 2 to get "highpressure1" or "highpressure2" as icon_states + + new_master is optional and sets the alert's icon state to "template" in the ui_style icons with the master as an overlay. + Clicks are forwarded to master */ + + if(!category) + return + if(!id) + id = category + + var/obj/screen/alert/alert + if(alerts[category]) + alert = alerts[category] + if(new_master && new_master != alert.master) + WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [alert.master]") +// alert.overlays.Cut() // This is apparently an invalid expression + clear_alert(category) + return .() + else if(alert.icon_state == "[id][severity]") +// src << "threw alert not in need of update [category] [id] [severity]" + return 0 +// src << "updating alert [category] [id] [severity]" + else + alert = PoolOrNew(/obj/screen/alert) +// src << "throwing new alert [category] [id] [severity]" + + if(new_master) + var/old_layer = new_master.layer + new_master.layer = FLOAT_LAYER + alert.overlays += new_master + new_master.layer = old_layer + alert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts() + alert.master = new_master + else + alert.icon_state = "[id][severity]" + + alerts[category] = alert + if(client && hud_used) + hud_used.reorganize_alerts() + alert.transform = matrix(32, 6, MATRIX_TRANSLATE) + animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING) + + var/obj/screen/alert/path_as_obj = text2path("/obj/screen/alert/[id]") + // BYOND magic-fu - we'll be storing a path in this reference and retrieving vars from it. + if(!path_as_obj) + ERROR("[src] threw alert [category] with invalid path /obj/screen/alert/[id]") + return 0 + alert.name = initial(path_as_obj.name) + alert.desc = initial(path_as_obj.desc) + alert.mouse_opacity = 1 + + return alert + +// Proc to clear an existing alert. +/mob/proc/clear_alert(category) + var/obj/screen/alert/alert = alerts[category] + if(!alert) + return 0 + + alerts -= category + if(client && hud_used) + hud_used.reorganize_alerts() + client.screen -= alert + qdel(alert) + +// Make sure any alerts you throw have a path that matches /obj/screen/alert/[id] or /obj/screen/alert/[category] + +/obj/screen/alert + icon = 'icons/mob/screen_alert.dmi' + icon_state = "default" + name = "Alert" + desc = "Something seems to have gone wrong with this alert, so report this bug please" + +/obj/screen/alert/oxy + name = "Choking" + desc = "You're not getting enough oxygen. Find some good air before you pass out! \ +The box in your backpack has an oxygen tank and gas mask in it." + +/obj/screen/alert/tox_in_air + name = "Toxic Gas" + desc = "There's highly flammable, toxic plasma in the air and you're breathing it in. Find some fresh air. \ +The box in your backpack has an oxygen tank and gas mask in it." + +/obj/screen/alert/fat + name = "Fat" + desc = "You ate too much food, lardass. Run around the station and lose some weight." + +/obj/screen/alert/hungry + name = "Hungry" + desc = "Some food would be good right about now." + +/obj/screen/alert/starving + name = "Starving" + desc = "Some food would be to kill for right about now. The hunger pains make moving around a chore." + +/obj/screen/alert/hot + name = "Too Hot" + desc = "You're flaming hot! Get somewhere cooler and take off any insulating clothing like a fire suit." + +/obj/screen/alert/cold + name = "Too Cold" + desc = "You're freezing cold! Get somewhere warmer and take off any insulating clothing like a space suit." + +/obj/screen/alert/lowpressure + name = "Low Pressure" + desc = "The air around you is hazardously thin. A space suit would protect you." + +/obj/screen/alert/highpressure + name = "High Pressure" + desc = "The air around you is hazardously thick. A fire suit would protect you." + +/obj/screen/alert/alien_tox + name = "Plasma" + desc = "There's flammable plasma in the air. If it lights up, you'll be toast." + +/obj/screen/alert/alien_fire +// This alert is temporarily gonna be thrown for all hot air but one day it will be used for literally being on fire + name = "Burning" + desc = "It's too hot! Flee to space or at least away from the flames. Standing on weeds will heal you up." + +/obj/screen/alert/nocell + name = "Missing Power Cell" + desc = "Unit has no power cell. No modules available until a power cell is reinstalled. Robotics may provide assistance." + +/obj/screen/alert/emptycell + name = "Out of Power" + desc = "Unit's power cell has no charge remaining. No modules available until power cell is recharged. \ +Reharging stations are available in robotics, the dormitory's bathrooms. and the AI satelite." + +/obj/screen/alert/lowcell + name = "Low Charge" + desc = "Unit's power cell is running low. Reharging stations are available in robotics, the dormitory's bathrooms. and the AI satelite." + +/obj/screen/alert/buckled + name = "Buckled" + desc = "You've been buckled to something and can't move. Click the alert to unbuckle unless you're handcuffed." + +/obj/screen/alert/handcuffed // Not used right now. + name = "Handcuffed" + desc = "You're handcuffed and can't act. If anyone drags you, you won't be able to move. Click the alert to free yourself." + +// PRIVATE = only edit, use, or override these if you're editing the system as a whole + +// Re-render all alerts - also called in /datum/hud/show_hud() because it's needed there +/datum/hud/proc/reorganize_alerts() + var/list/alerts = mymob.alerts + var/icon_pref + if(!hud_shown) + for(var/i = 1, i <= alerts.len, i++) + mymob.client.screen -= alerts[alerts[i]] + return 1 + for(var/i = 1, i <= alerts.len, i++) + var/obj/screen/alert/alert = alerts[alerts[i]] + if(alert.icon_state == "template") + if(!icon_pref) + icon_pref = ui_style2icon(mymob.client.prefs.UI_style) + alert.icon = icon_pref + switch(i) + if(1) + . = ui_alert1 + if(2) + . = ui_alert2 + if(3) + . = ui_alert3 + if(4) + . = ui_alert4 + if(5) + . = ui_alert5 // Right now there's 5 slots + alert.screen_loc = . + mymob.client.screen |= alert + return 1 + +/mob + var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly + +/obj/screen/alert/Click(location, control, params) + if(!usr || !usr.client) + return + var/paramslist = params2list(params) + if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat + usr << "[name] - [desc]" + return + if(master) + return usr.client.Click(master, location, control, params) + +/obj/screen/alert/Destroy() + PlaceInPool(src) + return 1 // Don't destroy me, I have a family! \ No newline at end of file diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index 7b183381253..4f13c983594 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -111,24 +111,6 @@ //begin indicators - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen_alien.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_alien_oxygen - - mymob.toxin = new /obj/screen() - mymob.toxin.icon = 'icons/mob/screen_alien.dmi' - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_alien_toxin - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen_alien.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_alien_fire - mymob.healths = new /obj/screen() mymob.healths.icon = 'icons/mob/screen_alien.dmi' mymob.healths.icon_state = "health0" @@ -152,7 +134,7 @@ mymob.blind.layer = 0 mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen_alien.dmi' + mymob.flash.icon = 'icons/mob/screen_gen.dmi' mymob.flash.icon_state = "blank" mymob.flash.name = "flash" mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" @@ -164,6 +146,6 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.healths, nightvisionicon, alien_plasma_display, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 716947a1245..3f9ea8e37d6 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -18,26 +18,6 @@ adding += using move_intent = using - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen_alien.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_alien_oxygen - - mymob.toxin = new /obj/screen() - mymob.toxin.icon = 'icons/mob/screen_alien.dmi' - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_alien_toxin - - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen_alien.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_alien_fire - - mymob.healths = new /obj/screen() mymob.healths.icon = 'icons/mob/screen_alien.dmi' mymob.healths.icon_state = "health0" @@ -60,7 +40,7 @@ mymob.blind.layer = 0 mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen_alien.dmi' + mymob.flash.icon = 'icons/mob/screen_gen.dmi' mymob.flash.icon_state = "blank" mymob.flash.name = "flash" mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" @@ -72,5 +52,5 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, nightvisionicon, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list( mymob.zone_sel, mymob.healths, nightvisionicon, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other \ No newline at end of file diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index ac6f4c89414..c84ae5a071c 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -225,21 +225,16 @@ datum/hud/New(mob/owner) action_intent.screen_loc = ui_acti //Restore intent selection to the original position mymob.client.screen += mymob.zone_sel //This one is a special snowflake - mymob.client.screen += mymob.bodytemp //As are the rest of these... - mymob.client.screen += mymob.fire - mymob.client.screen += mymob.healths + mymob.client.screen += mymob.healths //As are the rest of these. mymob.client.screen += mymob.healthdoll mymob.client.screen += mymob.internals - mymob.client.screen += mymob.nutrition_icon - mymob.client.screen += mymob.oxygen - mymob.client.screen += mymob.pressure - mymob.client.screen += mymob.toxin mymob.client.screen += lingstingdisplay mymob.client.screen += lingchemdisplay hidden_inventory_update() persistant_inventory_update() mymob.update_action_buttons() + reorganize_alerts() if(HUD_STYLE_REDUCED) //Reduced HUD hud_shown = 0 //Governs behavior of other procs if(adding) @@ -265,6 +260,7 @@ datum/hud/New(mob/owner) hidden_inventory_update() persistant_inventory_update() mymob.update_action_buttons() + reorganize_alerts() if(HUD_STYLE_NOHUD) //No HUD hud_shown = 0 //Governs behavior of other procs if(adding) @@ -278,21 +274,16 @@ datum/hud/New(mob/owner) //These ones are not a part of 'adding', 'other' or 'hotkeybuttons' but we want them gone. mymob.client.screen -= mymob.zone_sel //zone_sel is a mob variable for some reason. - mymob.client.screen -= mymob.bodytemp - mymob.client.screen -= mymob.fire mymob.client.screen -= mymob.healths mymob.client.screen -= mymob.healthdoll mymob.client.screen -= mymob.internals - mymob.client.screen -= mymob.nutrition_icon - mymob.client.screen -= mymob.oxygen - mymob.client.screen -= mymob.pressure - mymob.client.screen -= mymob.toxin mymob.client.screen -= lingstingdisplay mymob.client.screen -= lingchemdisplay hidden_inventory_update() persistant_inventory_update() mymob.update_action_buttons() + reorganize_alerts() hud_version = display_hud_version //Triggered when F12 is pressed (Unless someone changed something in the DMF) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 37002c8025e..4d2ea2b32f0 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -252,34 +252,10 @@ mymob.throw_icon.screen_loc = ui_drop_throw hotkeybuttons += mymob.throw_icon - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.pressure = new /obj/screen() - mymob.pressure.icon_state = "pressure0" - mymob.pressure.name = "pressure" - mymob.pressure.screen_loc = ui_pressure - - mymob.toxin = new /obj/screen() - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_toxin mymob.internals = new /obj/screen/internals() mymob.internals.screen_loc = ui_internal - mymob.fire = new /obj/screen() - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire - - mymob.bodytemp = new /obj/screen() - mymob.bodytemp.icon_state = "temp1" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - mymob.healths = new /obj/screen() mymob.healths.icon_state = "health0" mymob.healths.name = "health" @@ -289,11 +265,6 @@ mymob.healthdoll.name = "health doll" mymob.healthdoll.screen_loc = ui_healthdoll - mymob.nutrition_icon = new /obj/screen() - mymob.nutrition_icon.icon_state = "nutrition0" - mymob.nutrition_icon.name = "nutrition" - mymob.nutrition_icon.screen_loc = ui_nutrition - mymob.pullin = new /obj/screen/pull() mymob.pullin.icon = ui_style mymob.pullin.icon_state = "pull0" @@ -336,7 +307,7 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.healthdoll, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.internals, mymob.healths, mymob.healthdoll, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach ) mymob.client.screen += adding + hotkeybuttons inventory_shown = 0; diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 8b2227e1009..3cd2871960c 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -86,34 +86,9 @@ mymob.throw_icon.icon = ui_style mymob.throw_icon.screen_loc = ui_drop_throw - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.pressure = new /obj/screen() - mymob.pressure.icon_state = "pressure0" - mymob.pressure.name = "pressure" - mymob.pressure.screen_loc = ui_pressure - - mymob.toxin = new /obj/screen() - mymob.toxin.icon_state = "tox0" - mymob.toxin.name = "toxin" - mymob.toxin.screen_loc = ui_toxin - mymob.internals = new /obj/screen/internals() mymob.internals.screen_loc = ui_internal - mymob.fire = new /obj/screen() - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire - - mymob.bodytemp = new /obj/screen() - mymob.bodytemp.icon_state = "temp1" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - mymob.healths = new /obj/screen() mymob.healths.icon_state = "health0" mymob.healths.name = "health" @@ -137,8 +112,17 @@ mymob.blind.screen_loc = "CENTER-7,CENTER-7" mymob.blind.layer = 0 + mymob.damageoverlay = new /obj/screen() + mymob.damageoverlay.icon = 'icons/mob/screen_full.dmi' + mymob.damageoverlay.icon_state = "oxydamageoverlay0" + mymob.damageoverlay.name = "dmg" + mymob.damageoverlay.blend_mode = BLEND_MULTIPLY + mymob.damageoverlay.screen_loc = "CENTER-7,CENTER-7" + mymob.damageoverlay.mouse_opacity = 0 + mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top. + mymob.flash = new /obj/screen() - mymob.flash.icon = ui_style + mymob.flash.icon = 'icons/mob/screen_gen.dmi' mymob.flash.icon_state = "blank" mymob.flash.name = "flash" mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" @@ -155,5 +139,5 @@ using.screen_loc = ui_pull_resist adding += using - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.internals, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, lingchemdisplay, lingstingdisplay) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index a6a76e74355..c74f1ee7849 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -13,6 +13,9 @@ mymob.blind.screen_loc = "CENTER-7,CENTER-7" mymob.blind.layer = 0 + mymob.client.screen = null + mymob.client.screen += list(mymob.blind) + /datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen_midnight.dmi') blobpwrdisplay = new /obj/screen() @@ -28,6 +31,5 @@ blobhealthdisplay.layer = 20 mymob.client.screen = null - mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay) diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 66258562b5c..fe5b38db0ab 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -110,13 +110,6 @@ adding += using action_intent = using -//Cell - mymobR.cells = new /obj/screen() - mymobR.cells.icon = 'icons/mob/screen_cyborg.dmi' - mymobR.cells.icon_state = "charge-empty" - mymobR.cells.name = "cell" - mymobR.cells.screen_loc = ui_toxin - //Health mymob.healths = new /obj/screen() mymob.healths.icon = 'icons/mob/screen_cyborg.dmi' @@ -132,25 +125,6 @@ mymob.throw_icon = new /obj/screen/robot/store() mymob.throw_icon.screen_loc = ui_borg_store -//Temp - mymob.bodytemp = new /obj/screen() - mymob.bodytemp.icon_state = "temp0" - mymob.bodytemp.name = "body temperature" - mymob.bodytemp.screen_loc = ui_temp - - - mymob.oxygen = new /obj/screen() - mymob.oxygen.icon = 'icons/mob/screen_cyborg.dmi' - mymob.oxygen.icon_state = "oxy0" - mymob.oxygen.name = "oxygen" - mymob.oxygen.screen_loc = ui_oxygen - - mymob.fire = new /obj/screen() - mymob.fire.icon = 'icons/mob/screen_cyborg.dmi' - mymob.fire.icon_state = "fire0" - mymob.fire.name = "fire" - mymob.fire.screen_loc = ui_fire - mymob.pullin = new /obj/screen/pull() mymob.pullin.icon = 'icons/mob/screen_cyborg.dmi' mymob.pullin.icon_state = "pull0" @@ -164,7 +138,7 @@ mymob.blind.layer = 0 mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen_cyborg.dmi' + mymob.flash.icon = 'icons/mob/screen_gen.dmi' mymob.flash.icon_state = "blank" mymob.flash.name = "flash" mymob.flash.screen_loc = "WEST,SOUTH to EAST,NORTH" @@ -176,7 +150,7 @@ mymob.client.screen = null - mymob.client.screen += list(mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymobR.cells, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list(mymob.zone_sel, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += adding + other return diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 430134f6504..0a289671a7a 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -133,29 +133,29 @@ C << "You are not wearing a mask." return 1 else - if(istype(C.l_hand, /obj/item/weapon/tank/internals)) + if(istype(C.l_hand, /obj/item/weapon/tank)) C << "You are now running on internals from the [C.l_hand] on your left hand." C.internal = C.l_hand - else if(istype(C.r_hand, /obj/item/weapon/tank/internals)) + else if(istype(C.r_hand, /obj/item/weapon/tank)) C << "You are now running on internals from the [C.r_hand] on your right hand." C.internal = C.r_hand else if(ishuman(C)) var/mob/living/carbon/human/H = C - if(istype(H.s_store, /obj/item/weapon/tank/internals)) + if(istype(H.s_store, /obj/item/weapon/tank)) H << "You are now running on internals from the [H.s_store] on your [H.wear_suit]." H.internal = H.s_store - else if(istype(H.belt, /obj/item/weapon/tank/internals)) + else if(istype(H.belt, /obj/item/weapon/tank)) H << "You are now running on internals from the [H.belt] on your belt." H.internal = H.belt - else if(istype(H.l_store, /obj/item/weapon/tank/internals)) + else if(istype(H.l_store, /obj/item/weapon/tank)) H << "You are now running on internals from the [H.l_store] in your left pocket." H.internal = H.l_store - else if(istype(H.r_store, /obj/item/weapon/tank/internals)) + else if(istype(H.r_store, /obj/item/weapon/tank)) H << "You are now running on internals from the [H.r_store] in your right pocket." H.internal = H.r_store //Seperate so CO2 jetpacks are a little less cumbersome. - if(!C.internal && istype(C.back, /obj/item/weapon/tank/internals)) + if(!C.internal && istype(C.back, /obj/item/weapon/tank)) C << "You are now running on internals from the [C.back] on your back." C.internal = C.back diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 4c33cb30726..66422fdb659 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -99,8 +99,10 @@ var/enforce_human_authority = 0 //If non-human species are barred from joining as a head of staff var/allow_latejoin_antagonists = 0 // If late-joining players can be traitor/changeling var/continuous_round_rev = 0 // Gamemodes which end instantly will instead keep on going until the round ends by escape shuttle or nuke. + var/continuous_round_gang = 0 var/continuous_round_wiz = 0 var/continuous_round_malf = 0 + var/continuous_round_blob = 0 var/shuttle_refuel_delay = 12000 var/show_game_type_odds = 0 //if set this allows players to see the odds of each roundtype on the get revision screen var/mutant_races = 0 //players can choose their mutant race before joining the game @@ -153,6 +155,8 @@ var/starlight = 0 var/grey_assistants = 0 + var/aggressive_changelog = 0 + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for(var/T in L) @@ -326,6 +330,8 @@ config.notify_new_player_age = text2num(value) if("irc_first_connection_alert") config.irc_first_connection_alert = 1 + if("aggressive_changelog") + config.aggressive_changelog = 1 else diary << "Unknown setting in configuration: '[name]'" @@ -387,10 +393,14 @@ config.gateway_delay = text2num(value) if("continuous_round_rev") config.continuous_round_rev = 1 + if("continuous_round_gang") + config.continuous_round_gang = 1 if("continuous_round_wiz") config.continuous_round_wiz = 1 if("continuous_round_malf") config.continuous_round_malf = 1 + if("continuous_round_blob") + config.continuous_round_blob = 1 if("shuttle_refuel_delay") config.shuttle_refuel_delay = text2num(value) if("show_game_type_odds") diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index 66e6487c440..93e38c36be7 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -70,6 +70,9 @@ var/datum/subsystem/events/SSevent if(E.runEvent() == PROCESS_KILL) E.max_occurrences = 0 continue + if (E.alertadmins) + message_admins("Random Event triggering: [E.name] ([E.typepath])") + log_game("Random Event triggering: [E.name] ([E.typepath])") return sum_of_weights += E.weight @@ -86,6 +89,9 @@ var/datum/subsystem/events/SSevent if(E.runEvent() == PROCESS_KILL)//we couldn't run this event for some reason, set its max_occurrences to 0 E.max_occurrences = 0 continue + if (E.alertadmins) + message_admins("Random Event triggering: [E.name] ([E.typepath])") + log_game("Random Event triggering: [E.name] ([E.typepath])") return diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm index ef35a1923ee..1d663b946ca 100644 --- a/code/controllers/subsystem/jobs.dm +++ b/code/controllers/subsystem/jobs.dm @@ -59,12 +59,11 @@ var/datum/subsystem/job/SSjob var/position_limit = job.total_positions if(!latejoin) position_limit = job.spawn_positions - if((job.current_positions < position_limit) || position_limit == -1) - Debug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]") - player.mind.assigned_role = rank - unassigned -= player - job.current_positions++ - return 1 + Debug("Player: [player] is now Rank: [rank], JCP:[job.current_positions], JPL:[position_limit]") + player.mind.assigned_role = rank + unassigned -= player + job.current_positions++ + return 1 Debug("AR has failed, Player: [player], Rank: [rank]") return 0 @@ -141,6 +140,7 @@ var/datum/subsystem/job/SSjob for(var/command_position in command_positions) var/datum/job/job = GetJob(command_position) if(!job) continue + if((job.current_positions >= job.total_positions) && job.total_positions != -1) continue var/list/candidates = FindOccupationCandidates(job, level) if(!candidates.len) continue var/mob/new_player/candidate = pick(candidates) @@ -155,6 +155,7 @@ var/datum/subsystem/job/SSjob for(var/command_position in command_positions) var/datum/job/job = GetJob(command_position) if(!job) continue + if((job.current_positions >= job.total_positions) && job.total_positions != -1) continue var/list/candidates = FindOccupationCandidates(job, level) if(!candidates.len) continue var/mob/new_player/candidate = pick(candidates) @@ -329,7 +330,7 @@ var/datum/subsystem/job/SSjob //If we joined at roundstart we should be positioned at our workstation if(!joined_late) var/obj/S = null - for(var/obj/effect/landmark/start/sloc in landmarks_list) + for(var/obj/effect/landmark/start/sloc in start_landmarks_list) if(sloc.name != rank) continue if(locate(/mob/living) in sloc.loc) continue S = sloc diff --git a/code/controllers/subsystem/nanoUI.dm b/code/controllers/subsystem/nanoUI.dm index 45fc8f8c1f4..e8452ce5054 100644 --- a/code/controllers/subsystem/nanoUI.dm +++ b/code/controllers/subsystem/nanoUI.dm @@ -30,7 +30,7 @@ var/datum/subsystem/nano/SSnano //Ignore directories if(copytext(filename, length(filename)) != "/") if(fexists(path + filename)) - asset_files.Add(fcopy_rsc(path + filename)) + asset_files.Add(fcopy_rsc(path + filename)) /datum/subsystem/nano/stat_entry() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index dac80e068a2..da53d767a22 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -177,6 +177,7 @@ var/datum/subsystem/ticker/ticker auto_toggle_ooc(0) // Turn it off round_start_time = world.time + start_landmarks_list = shuffle(start_landmarks_list) //Shuffle the order of spawn points so they dont always predictably spawn bottom-up and right-to-left create_characters() //Create player characters and transfer them collect_minds() equip_characters() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 44128128056..9f8acdd9c52 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -110,7 +110,6 @@ qdel(changeling) changeling = null special_role = null - remove_objectives() remove_antag_equip() /datum/mind/proc/remove_traitor() @@ -121,7 +120,6 @@ A.set_zeroth_law("") A.show_laws() special_role = null - remove_objectives() remove_antag_equip() /datum/mind/proc/remove_nukeop() @@ -137,7 +135,6 @@ ticker.mode.wizards -= src current.spellremove(current) special_role = null - remove_objectives() remove_antag_equip() /datum/mind/proc/remove_cultist() @@ -288,15 +285,15 @@ text = "[text]: " if (src in ticker.mode.A_bosses) text += "loyal|none|(A) gangster BOSS|(B) gangster boss" - text += "
Flash & Recaller: give" + text += "
Equipment: give" var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L if (flash) if(!flash.broken) - text += "|take equipment." + text += "|take." else - text += "|take equipment|repair flash." + text += "|take|repair flash." else text += "." @@ -306,15 +303,15 @@ else if (src in ticker.mode.B_bosses) text += "loyal|none|(A) gangster boss|(B) gangster BOSS" - text += "
Flash & Recaller: give" + text += "
Equipment: give" var/list/L = current.get_contents() var/obj/item/device/flash/flash = locate() in L if (flash) if(!flash.broken) - text += "
take equipment." + text += "
take." else - text += "
take equipment|repair flash." + text += "
take|repair flash." else text += "." @@ -527,6 +524,8 @@ if (((src in ticker.mode.head_revolutionaries) || \ + (src in ticker.mode.A_bosses) || \ + (src in ticker.mode.B_bosses) || \ (src in ticker.mode.traitors) || \ (src in ticker.mode.syndicates)) && \ istype(current,/mob/living/carbon/human) ) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index e58d964dfcd..9c01029e1bb 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -570,7 +570,7 @@ var/list/uplink_items = list() name = "Explosive Implant" desc = "An implant injected into the body, and later activated either manually or automatically upon death. Creates a moderately-sized fiery explosion. For those agents who know there is no going back." item = /obj/item/weapon/storage/box/syndie_kit/imp_explosive - cost = 9 + cost = 6 // POINTLESS BADASSERY diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index aa6bb44d7af..fb9b8f856d3 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1087,6 +1087,10 @@ proc/process_ghost_teleport_locs() name = "\improper Derelict Solar Control" icon_state = "engine" +/area/derelict/se_solar + name = "South East Solars" + icon_state = "engine" + /area/derelict/crew_quarters name = "\improper Derelict Crew Quarters" icon_state = "fitness" @@ -1121,12 +1125,20 @@ proc/process_ghost_teleport_locs() /area/solar/derelict_aft name = "\improper Derelict Aft Solar Array" - icon_state = "aft" + icon_state = "yellow" /area/derelict/singularity_engine name = "\improper Derelict Singularity Engine" icon_state = "engine" +/area/derelict/gravity_generator + name = "\improper Derelict Gravity Generator Room" + icon_state = "red" + +/area/derelict/atmospherics + name = "Derelict Atmospherics" + icon_state = "red" + //Construction /area/construction diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index ae0b05441c6..207805d235b 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -57,7 +57,8 @@ var/list/blob_nodes = list() var/list/candidates = list() for(var/mob/living/carbon/human/player in player_list) if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (player.client.prefs.be_special & BE_BLOB)) - candidates += player + if(age_check(player.client)) + candidates += player return candidates @@ -182,7 +183,8 @@ var/list/blob_nodes = list() // Stage 2 sleep(30000) - stage(2) + if(!round_converted) + stage(2) return ..(0) diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm index 56c1b4449c8..d3e0d49933e 100644 --- a/code/game/gamemodes/blob/blob_finish.dm +++ b/code/game/gamemodes/blob/blob_finish.dm @@ -1,9 +1,20 @@ /datum/game_mode/blob/check_finished() + if(round_converted) + return ..() if(infected_crew.len > burst)//Some blobs have yet to burst return 0 if(blobwincount <= blobs.len)//Blob took over return 1 if(!blob_cores.len) // blob is dead + if(config.continuous_round_blob) + round_converted = convert_roundtype() + if(!round_converted) + return 1 + 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") + return 0 return 1 if(station_was_nuked)//Nuke went off return 1 diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index b05c83e0450..d3a367e5e64 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -1,24 +1,12 @@ - //////////////// -// BLOB SPORE // +// BASE TYPE // //////////////// -/mob/living/simple_animal/hostile/blobspore - name = "blob" - desc = "Some blob thing." +//Do not spawn +/mob/living/simple_animal/hostile/blob icon = 'icons/mob/blob.dmi' - icon_state = "blobpod" - icon_living = "blobpod" pass_flags = PASSBLOB - health = 40 - maxHealth = 40 - melee_damage_lower = 2 - melee_damage_upper = 4 - attacktext = "hits" - attack_sound = 'sound/weapons/genhit1.ogg' - var/obj/effect/blob/factory/factory = null - var/is_zombie = 0 faction = list("blob") min_oxy = 0 max_oxy = 0 @@ -30,26 +18,51 @@ max_n2 = 0 minbodytemp = 0 maxbodytemp = 360 + var/mob/camera/blob/overmind = null -/mob/living/simple_animal/hostile/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/mob/living/simple_animal/hostile/blob/proc/adjustcolors(var/a_color) + if(a_color) + color = a_color + +/mob/living/simple_animal/hostile/blob/blob_act() + return + +//////////////// +// BLOB SPORE // +//////////////// + +/mob/living/simple_animal/hostile/blob/blobspore + name = "blob" + desc = "Some blob thing." + icon_state = "blobpod" + icon_living = "blobpod" + health = 40 + maxHealth = 40 + melee_damage_lower = 2 + melee_damage_upper = 4 + attacktext = "hits" + attack_sound = 'sound/weapons/genhit1.ogg' + var/obj/effect/blob/factory/factory = null + var/list/human_overlays = list() + var/is_zombie = 0 + +/mob/living/simple_animal/hostile/blob/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() adjustBruteLoss(Clamp(0.01 * exposed_temperature, 1, 5)) -/mob/living/simple_animal/hostile/blobspore/blob_act() - return -/mob/living/simple_animal/hostile/blobspore/CanPass(atom/movable/mover, turf/target, height=0) +/mob/living/simple_animal/hostile/blob/blobspore/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover, /obj/effect/blob)) return 1 return ..() -/mob/living/simple_animal/hostile/blobspore/New(loc, var/obj/effect/blob/factory/linked_node) +/mob/living/simple_animal/hostile/blob/blobspore/New(loc, var/obj/effect/blob/factory/linked_node) if(istype(linked_node)) factory = linked_node factory.spores += src ..() -/mob/living/simple_animal/hostile/blobspore/Life() +/mob/living/simple_animal/hostile/blob/blobspore/Life() if(!is_zombie && isturf(src.loc)) for(var/mob/living/carbon/human/H in oview(src,1)) //Only for corpse right next to/on same tile @@ -58,7 +71,8 @@ break ..() -/mob/living/simple_animal/hostile/blobspore/proc/Zombify(var/mob/living/carbon/human/H) +/mob/living/simple_animal/hostile/blob/blobspore/proc/Zombify(var/mob/living/carbon/human/H) + is_zombie = 1 if(H.wear_suit) var/obj/item/clothing/suit/armor/A = H.wear_suit if(A.armor && A.armor["melee"]) @@ -73,23 +87,23 @@ icon_state = "husk_s" H.hair_style = null H.update_hair() - overlays = H.overlays - var/image/I = image('icons/mob/blob.dmi', icon_state = "blob_head") - I.color = color - color = initial(color)//looks better. - overlays += I + human_overlays = H.overlays + adjustcolors(overmind.blob_reagent_datum.color) H.loc = src - is_zombie = 1 loc.visible_message(" The corpse of [H.name] suddenly rises!") -/mob/living/simple_animal/hostile/blobspore/Die() +/mob/living/simple_animal/hostile/blob/blobspore/Die() // On death, create a small smoke of harmful gas (s-Acid) var/datum/effect/effect/system/chem_smoke_spread/S = new var/turf/location = get_turf(src) - // Create the reagents to put into the air, s-acid is yellow and stings a little + // Create the reagents to put into the air create_reagents(25) - reagents.add_reagent("spore", 25) + + if(overmind && overmind.blob_reagent_datum) + reagents.add_reagent(overmind.blob_reagent_datum.id, 25) + else + reagents.add_reagent("spore", 25) // Attach the smoke spreader and setup/start it. S.attach(location) @@ -98,7 +112,7 @@ qdel(src) -/mob/living/simple_animal/hostile/blobspore/Destroy() +/mob/living/simple_animal/hostile/blob/blobspore/Destroy() if(factory) factory.spores -= src if(contents) @@ -107,47 +121,50 @@ ..() -/mob/living/simple_animal/hostile/blobbernaut +/mob/living/simple_animal/hostile/blob/blobspore/adjustcolors(var/a_color) + color = a_color + if(is_zombie) + overlays.Cut() + overlays = human_overlays + var/image/I = image('icons/mob/blob.dmi', icon_state = "blob_head") + I.color = color + color = initial(color)//looks better. + overlays += I + + +///////////////// +// BLOBBERNAUT // +///////////////// + +/mob/living/simple_animal/hostile/blob/blobbernaut name = "blobbernaut" desc = "Some HUGE blob thing." - icon = 'icons/mob/blob.dmi' icon_state = "blobbernaut" icon_living = "blobbernaut" icon_dead = "blobbernaut_dead" - pass_flags = PASSBLOB health = 240 maxHealth = 240 melee_damage_lower = 10 melee_damage_upper = 10 attacktext = "hits" attack_sound = 'sound/effects/blobattack.ogg' - faction = list("blob") - min_oxy = 0 - max_oxy = 0 - min_tox = 0 - max_tox = 0 - min_co2 = 0 - max_co2 = 0 - min_n2 = 0 - max_n2 = 0 minbodytemp = 0 maxbodytemp = 360 force_threshold = 10 environment_smash = 3 mob_size = 2 - var/mob/camera/blob/overmind -/mob/living/simple_animal/hostile/blobbernaut/AttackingTarget() +/mob/living/simple_animal/hostile/blob/blobbernaut/AttackingTarget() ..() if(isliving(target)) if(overmind) overmind.blob_reagent_datum.reaction_mob(target, TOUCH) -/mob/living/simple_animal/hostile/blobbernaut/blob_act() +/mob/living/simple_animal/hostile/blob/blobbernaut/blob_act() return -/mob/living/simple_animal/hostile/blobbernaut/Die() +/mob/living/simple_animal/hostile/blob/blobbernaut/Die() ..() flick("blobbernaut_death", src) \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm index d5e58010fc6..26fe695a62f 100644 --- a/code/game/gamemodes/blob/blobs/core.dm +++ b/code/game/gamemodes/blob/blobs/core.dm @@ -8,11 +8,11 @@ var/overmind_get_delay = 0 // we don't want to constantly try to find an overmind, do it every 30 seconds var/resource_delay = 0 var/point_rate = 2 - can_change_color = 0 /obj/effect/blob/core/New(loc, var/h = 200, var/client/new_overmind = null, var/new_rate = 2) blob_cores += src SSobj.processing |= src + adjustcolors(color) //so it atleast appears if(!overmind) create_overmind(new_overmind) if(overmind) @@ -22,6 +22,7 @@ /obj/effect/blob/core/adjustcolors(var/a_color) + overlays.Cut() color = null var/image/I = new('icons/mob/blob.dmi', "blob") I.color = a_color diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 4badc0cf315..872dafad212 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -14,7 +14,7 @@ qdel(src) /obj/effect/blob/factory/Destroy() - for(var/mob/living/simple_animal/hostile/blobspore/spore in spores) + for(var/mob/living/simple_animal/hostile/blob/blobspore/spore in spores) if(spore.factory == src) spore.factory = null ..() @@ -31,8 +31,9 @@ return 0 spore_delay = world.time + 100 // 10 seconds PulseAnimation(1) - var/mob/living/simple_animal/hostile/blobspore/BS = new/mob/living/simple_animal/hostile/blobspore(src.loc, src) + var/mob/living/simple_animal/hostile/blob/blobspore/BS = new/mob/living/simple_animal/hostile/blob/blobspore(src.loc, src) BS.color = color + BS.overmind = overmind overmind.blob_mobs.Add(BS) return 0 diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm index 29f288b0ddd..d436693ed4f 100644 --- a/code/game/gamemodes/blob/blobs/node.dm +++ b/code/game/gamemodes/blob/blobs/node.dm @@ -5,7 +5,6 @@ health = 100 fire_resist = 2 var/mob/camera/blob/overmind - can_change_color = 0 /obj/effect/blob/node/New(loc, var/h = 100) blob_nodes += src @@ -13,6 +12,7 @@ ..(loc, h) /obj/effect/blob/node/adjustcolors(var/a_color) + overlays.Cut() color = null var/image/I = new('icons/mob/blob.dmi', "blob") I.color = a_color diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 99a5d1e8154..2b354f6c801 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -17,6 +17,7 @@ var/last_attack = 0 var/datum/reagent/blob_reagent_datum = new/datum/reagent() var/list/blob_mobs = list() + var/ghostimage = null /mob/camera/blob/New() var/new_name = "[initial(name)] ([rand(1, 999)])" @@ -27,8 +28,21 @@ for(var/type in (typesof(/datum/reagent/blob) - /datum/reagent/blob)) possible_reagents.Add(new type) blob_reagent_datum = pick(possible_reagents) + if(blob_core) + blob_core.adjustcolors(blob_reagent_datum.color) + + ghostimage = image(src.icon,src,src.icon_state) + ghost_darkness_images |= ghostimage //so ghosts can see the blob cursor when they disable darkness + updateallghostimages() ..() +/mob/camera/blob/Destroy() + if (ghostimage) + ghost_darkness_images -= ghostimage + qdel(ghostimage) + ghostimage = null; + updateallghostimages() + /mob/camera/blob/Login() ..() sync_mind() diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index d1cacbfe1b7..94c650a7ee9 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -190,7 +190,7 @@ if(!can_buy(20)) return - var/mob/living/simple_animal/hostile/blobbernaut/blobber = new /mob/living/simple_animal/hostile/blobbernaut (get_turf(B)) + var/mob/living/simple_animal/hostile/blob/blobbernaut/blobber = new /mob/living/simple_animal/hostile/blob/blobbernaut (get_turf(B)) if(blobber) B.Destroy() blobber.color = blob_reagent_datum.color @@ -300,7 +300,7 @@ if(!surrounding_turfs.len) return - for(var/mob/living/simple_animal/hostile/blobspore/BS in living_mob_list) + for(var/mob/living/simple_animal/hostile/blob/blobspore/BS in living_mob_list) if(isturf(BS.loc) && get_dist(BS, T) <= 35) BS.LoseTarget() BS.Goto(pick(surrounding_turfs), BS.move_to_delay) @@ -396,4 +396,25 @@ R.overmind = src R.update_max_blob_points(50) - return \ No newline at end of file + return + + +/mob/camera/blob/verb/chemical_reroll() + set category = "Blob" + set name = "Reactive Chemical Adaptation (50)" + set desc = "Replaces your chemical with a different one" + + if(!can_buy(50)) + return + + var/list/excluded = list(/datum/reagent/blob, blob_reagent_datum.type) //guaranteed new chemical + var/datum/reagent/blob/B = pick((typesof(/datum/reagent/blob) - excluded)) + blob_reagent_datum = new B + + for(var/obj/effect/blob/BL in blobs) + BL.adjustcolors(blob_reagent_datum.color) + + for(var/mob/living/simple_animal/hostile/blob/BLO) + BLO.adjustcolors(blob_reagent_datum.color) + + src << "Your reagent is now: [blob_reagent_datum.name]!" \ No newline at end of file diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 3a01fd40794..6a45f0e4765 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -11,7 +11,6 @@ var/health_timestamp = 0 var/brute_resist = 4 var/fire_resist = 1 - var/can_change_color = 1 /obj/effect/blob/New(loc) @@ -92,8 +91,8 @@ if(!B) expand(T,1,a_color)//No blob here so try and expand return - if(B.can_change_color) - B.color = a_color + B.adjustcolors(a_color) + B.Pulse((pulse+1),get_dir(src.loc,T), a_color) return return @@ -197,6 +196,8 @@ qdel(src) /obj/effect/blob/proc/adjustcolors(var/a_color) + if(a_color) + color = a_color return /obj/effect/blob/normal diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 7b5c1acc332..9e53d64cfc3 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -13,6 +13,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" required_players = 15 required_enemies = 1 recommended_enemies = 4 + reroll_friendly = 1 var/const/prob_int_murder_target = 50 // intercept names the assassination target half the time @@ -86,8 +87,9 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" if(changelings.len <= (changelingcap - 2) || prob(100 - (config.changeling_scaling_coeff*2))) if(character.client.prefs.be_special & BE_CHANGELING) if(!jobban_isbanned(character.client, "changeling") && !jobban_isbanned(character.client, "Syndicate")) - if(!(character.job in ticker.mode.restricted_jobs)) - character.mind.make_Changling() + if(age_check(character.client)) + if(!(character.job in ticker.mode.restricted_jobs)) + character.mind.make_Changling() ..() /datum/game_mode/proc/forge_changeling_objectives(var/datum/mind/changeling) diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 6f13e670890..37535659afb 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -71,6 +71,7 @@ if(changelings.len <= (changelingcap - 2) || prob(100 / (config.changeling_scaling_coeff * 4))) if(character.client.prefs.be_special & BE_CHANGELING) if(!jobban_isbanned(character.client, "changeling") && !jobban_isbanned(character.client, "Syndicate")) - if(!(character.job in ticker.mode.restricted_jobs)) - character.mind.make_Changling() + if(age_check(character.client)) + if(!(character.job in ticker.mode.restricted_jobs)) + character.mind.make_Changling() ..() diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index ab63a288f26..b4abfb1c20d 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -29,6 +29,7 @@ required_players = 20 required_enemies = 6 recommended_enemies = 6 + enemy_minimum_age = 14 var/finished = 0 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 0f72c9d92ac..39df1504e1e 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -823,7 +823,8 @@ var/list/sacrificed = list() )) user << "The [cultist] is already free." return - cultist.buckled = null + if(cultist.buckled) + cultist.buckled.unbuckle_mob() if (cultist.handcuffed) cultist.handcuffed.loc = cultist.loc cultist.handcuffed = null diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index 77e754ee36f..409b655f5ba 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -2,6 +2,7 @@ name = "extended" config_tag = "extended" required_players = 0 + reroll_friendly = 1 /datum/game_mode/announce() world << "The current game mode is - Extended Role-Playing!" diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 03a424efb75..04fa08b5a57 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -29,6 +29,9 @@ var/pre_setup_before_jobs = 0 var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag var/datum/mind/sacrifice_target = null + var/round_converted = 0 + var/reroll_friendly //During mode conversion only these are in the running + var/enemy_minimum_age = 7 //How many days must players have been playing before they can play this antagonist var/const/waittime_l = 600 var/const/waittime_h = 1800 // started at 1800 @@ -88,6 +91,59 @@ /datum/game_mode/proc/make_antag_chance(var/mob/living/carbon/human/character) return +///convert_roundtype() +///Allows rounds to basically be "rerolled" should the initial premise fall through +/datum/game_mode/proc/convert_roundtype() + var/list/datum/game_mode/runnable_modes = config.get_runnable_modes() + for(var/datum/game_mode/G in runnable_modes) + if(!G.reroll_friendly) del(G) + + SSshuttle.emergencyNoEscape = 0 //Time to get the fuck out of here + + if(!runnable_modes) return 0 + + var/list/datum/game_mode/replacementmode = pickweight(runnable_modes) + + switch(SSshuttle.emergency.mode) //Rounds on the verge of ending don't get new antags, they just run out + if(SHUTTLE_STRANDED, SHUTTLE_ESCAPE) + return 1 + if(SHUTTLE_CALL) + if(SSshuttle.emergency.timeLeft(1) < initial(SSshuttle.emergencyCallTime)*0.5) + return 1 + + var/living_crew = 0 + + for(var/mob/Player in mob_list) + if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player)) + living_crew++ + if(living_crew / joined_player_list.len <= 0.7) //If a lot of the player base died, we start fresh + return 0 + + var/list/antag_canadates = list() + + for(var/mob/living/carbon/human/H in living_crew) + if(H.client && H.client.prefs.allow_midround_antag) + antag_canadates += H + + if(!antag_canadates) + message_admins("The roundtype has been converted, antagonists may have been created") + return 1 + + antag_canadates = shuffle(antag_canadates) + + if(config.protect_roles_from_antagonist) + replacementmode.restricted_jobs += replacementmode.protected_jobs + if(config.protect_assistant_from_antagonist) + replacementmode.restricted_jobs += "Assistant" + + spawn(rand(1800,4200)) //somewhere between 3 and 7 minutes from now + for(var/mob/living/carbon/human/H in antag_canadates) + replacementmode.make_antag_chance(H) + + message_admins("The roundtype has been converted, antagonists may have been created") + + return 1 + ///process() ///Called by the gameticker /datum/game_mode/proc/process() @@ -170,7 +226,8 @@ if(player.client && player.ready) if(player.client.prefs.be_special & role) if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans - candidates += player.mind // Get a list of all the people who want to be the antagonist for this round + if(age_check(player.client)) //Must be older than the minimum age + candidates += player.mind // Get a list of all the people who want to be the antagonist for this round if(restricted_jobs) for(var/datum/mind/player in candidates) @@ -336,3 +393,22 @@ proc/display_roundstart_logout_report() text += ")" return text + +//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 +/datum/game_mode/proc/age_check(client/C) + if(get_remaining_days(C) == 0) + return 1 //Available in 0 days = available right now = player is old enough to play. + return 0 + + +/datum/game_mode/proc/get_remaining_days(client/C) + if(!C) + return 0 + if(!config.use_age_restriction_for_jobs) + return 0 + if(!isnum(C.player_age)) + return 0 //This is only a number if the db connection is established, otherwise it is text: "Requires database", meaning these restrictions cannot be enforced + if(!isnum(enemy_minimum_age)) + return 0 + + return max(0, enemy_minimum_age - C.player_age) \ No newline at end of file diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 8bbb539f6f4..c8b6d860376 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -14,7 +14,8 @@ restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") required_players = 20 required_enemies = 2 - recommended_enemies = 4 + recommended_enemies = 2 + enemy_minimum_age = 14 var/finished = 0 var/checkwin_counter = 0 @@ -23,7 +24,7 @@ /////////////////////////// /datum/game_mode/gang/announce() world << "The current game mode is - Gang War!" - world << "A violent turf war has erupted on the station!
Gangsters - Take over the station by killing the rival gang's bosses! Recruit gangsters by flashing them!
Security - Protect the Crew! Identify and stop the mob bosses!
" + world << "A violent turf war has erupted on the station!
Gangsters - Take over the station by recruiting gangsters and killing the rival gang's boss!
Crew - Identify and stop the mob bosses without killing either of them!
" /////////////////////////////////////////////////////////////////////////////// @@ -43,8 +44,6 @@ if(antag_candidates.len >= 2) assign_bosses() - if(antag_candidates.len > 20) - assign_bosses() if(!A_bosses.len || !B_bosses.len) return 0 @@ -119,6 +118,47 @@ mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself." mob.dna.remove_mutation(CLOWNMUT) + // find a radio! toolbox(es), backpack, belt, headset + var/loc = "" + var/obj/item/R = locate(/obj/item/device/pda) in mob.contents //Hide the uplink in a PDA if available, otherwise radio + if(!R) + R = locate(/obj/item/device/radio) in mob.contents + + if (!R) + mob << "Unfortunately, Your Syndicate benefactors wasn't able to get you an uplink." + . = 0 + else + if (istype(R, /obj/item/device/radio)) + // generate list of radio freqs + var/obj/item/device/radio/target_radio = R + var/freq = 1441 + var/list/freqlist = list() + while (freq <= 1489) + if (freq < 1451 || freq > 1459) + freqlist += freq + freq += 2 + if ((freq % 2) == 0) + freq += 1 + freq = freqlist[rand(1, freqlist.len)] + + var/obj/item/device/uplink/hidden/T = new(R) + target_radio.hidden_uplink = T + T.uplink_owner = "[mob.key]" + target_radio.traitor_frequency = freq + mob << "Your Syndicate benefactors have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features." + mob.mind.store_memory("Radio Freq: [format_frequency(freq)] ([R.name] [loc]).") + else if (istype(R, /obj/item/device/pda)) + // generate a passcode if the uplink is hidden in a PDA + var/pda_pass = "[rand(100,999)] [pick("Alpha","Bravo","Delta","Omega")]" + + var/obj/item/device/uplink/hidden/T = new(R) + R.hidden_uplink = T + T.uplink_owner = "[mob.key]" + var/obj/item/device/pda/P = R + P.lock_code = pda_pass + + mob << "Your Syndicate benefactors have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features." + mob.mind.store_memory("Uplink Passcode: [pda_pass] ([R.name] [loc]).") var/obj/item/device/flash/T = new(mob) var/obj/item/device/recaller/recaller = new(mob) @@ -145,7 +185,6 @@ mob << "Your Syndicate benefactors were unfortunately unable to get you a flash." else mob << "The flash in your [where] will help you to persuade the crew to work for you." - mob << "Keep in mind that your underlings can only identify their bosses, but not each other. You must coordinate your gang effectively to beat out the competition." . += 1 mob.update_icons() @@ -172,7 +211,7 @@ //Checks if the round is over// /////////////////////////////// /datum/game_mode/gang/check_finished() - if(finished) //Check for Gang Boss death + if(finished && !config.continuous_round_gang) //Check for Gang Boss death return 1 return ..() //Check for evacuation/nuke @@ -188,8 +227,10 @@ A_gangsters += gangster_mind else B_gangsters += gangster_mind + if(check) + gangster_mind.current.Paralyse(5) gangster_mind.current << "You are now a member of the [gang=="A" ? gang_name("A") : gang_name("B")] Gang!" - gangster_mind.current << "Help your bosses take over the station by defeating their rivals. You can identify your bosses by the brown \"B\" icons, but only they know who the other members of your gang are! Work with your boss to avoid attacking your own gang." + gangster_mind.current << "Help your Boss take over the station by defeating the rival gang. You can identify your Boss by their brown \"B\" icon." gangster_mind.current.attack_log += "\[[time_stamp()]\] Has been converted to the [gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"]!" gangster_mind.special_role = "[gang=="A" ? "[gang_name("A")] Gang (A)" : "[gang_name("B")] Gang (B)"]" update_gang_icons_added(gangster_mind,gang) @@ -197,22 +238,23 @@ ////////////////////////////////////////////////////////////// //Deals with players going straight (Not a gangster anymore)// ////////////////////////////////////////////////////////////// -/datum/game_mode/proc/remove_gangster(datum/mind/gangster_mind, var/beingborged, var/silent) +/datum/game_mode/proc/remove_gangster(datum/mind/gangster_mind, var/beingborged, var/silent, var/exclude_bosses=0) var/gang - if(gangster_mind in A_bosses) - A_bosses -= gangster_mind - gang = "A" + if(!exclude_bosses) + if(gangster_mind in A_bosses) + A_bosses -= gangster_mind + gang = "A" - else if(gangster_mind in A_gangsters) + if(gangster_mind in B_bosses) + B_bosses -= gangster_mind + gang = "B" + + if(gangster_mind in A_gangsters) A_gangsters -= gangster_mind gang = "A" - else if(gangster_mind in B_bosses) - B_bosses -= gangster_mind - gang = "B" - - else if(gangster_mind in B_gangsters) + if(gangster_mind in B_gangsters) B_gangsters -= gangster_mind gang = "B" @@ -230,6 +272,7 @@ message_admins("[key_name_admin(gangster_mind.current)] ? 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) gangster_mind.current.visible_message("[gangster_mind.current] looks like they've given up the life of crime!") gangster_mind.current << "You have been reformed! You are no longer a gangster!" @@ -277,7 +320,7 @@ return 0 for(var/datum/mind/boss_mind in boss_list) if(boss_mind.current) - if(boss_mind.current.stat == DEAD || !ishuman(boss_mind.current) || !boss_mind.current.ckey || !boss_mind.current.client) + if(boss_mind.current.stat == DEAD || !ishuman(boss_mind.current) || !boss_mind.current.ckey) return 1 var/turf/T = get_turf(boss_mind.current) if(T && (T.z != ZLEVEL_STATION)) //If they leave the station they count as dead for this @@ -302,7 +345,10 @@ var/winner var/datum/game_mode/gang/game_mode = ticker.mode if(istype(game_mode)) - winner = game_mode.finished + if(game_mode.finished) + winner = game_mode.finished + else + winner = "Draw" var/num_ganga = 0 var/list/agang = A_gangsters + A_bosses @@ -318,26 +364,23 @@ if(bgangster.current in living_mob_list) num_gangb++ - var/num_survivors = 0 - for(var/mob/living/carbon/survivor in living_mob_list) - if(survivor.key) - num_survivors++ - if(A_bosses.len || A_gangsters.len) - if(winner == "A" || winner == "B") - world << "
The [gang_name("A")] Gang was [winner=="A" ? "victorious" : "defeated"] with [round((num_ganga/num_survivors)*100, 0.1)]% influence." - world << "
The [gang_name("A")] Gang bosses were:" + if(winner) + world << "
The [gang_name("A")] Gang was [winner=="A" ? "victorious" : "defeated"] with [num_ganga] members!" + world << "
The [gang_name("A")] Gang Boss was:" gang_membership_report(A_bosses) world << "
The [gang_name("A")] Gangsters were:" gang_membership_report(A_gangsters) + world << "
" if(B_bosses.len || B_gangsters.len) - if(winner == "A" || winner == "B") - world << "
The [gang_name("B")] Gang was [winner=="B" ? "victorious" : "defeated"] with [round((num_gangb/num_survivors)*100, 0.1)]% influence." - world << "
The [gang_name("B")] Gang bosses were:" + if(winner) + world << "
The [gang_name("B")] Gang was [winner=="B" ? "victorious" : "defeated"] with [num_gangb] members!" + world << "
The [gang_name("B")] Gang Boss was:" gang_membership_report(B_bosses) world << "
The [gang_name("B")] Gangsters were:" gang_membership_report(B_gangsters) + world << "
" /datum/game_mode/proc/gang_membership_report(var/list/membership) var/text = "" @@ -355,6 +398,5 @@ else text += "body destroyed" text += ")" - text += "

" world << text diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 930b43848a9..1e2e53f7661 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -9,6 +9,7 @@ required_enemies = 1 recommended_enemies = 1 pre_setup_before_jobs = 1 + enemy_minimum_age = 30 //Same as AI minimum age var/AI_win_timeleft = 5400 //started at 5400, in case I change this for testing round end. @@ -153,6 +154,7 @@ priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority") SSshuttle.emergencyNoEscape = 0 malf_mode_declared = 0 + round_converted = convert_roundtype() else return 1 return ..() //check for shuttle and nuke diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index a2a75543f92..afd98a9ab5d 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -10,6 +10,7 @@ recommended_enemies = 5 pre_setup_before_jobs = 1 antag_flag = BE_OPERATIVE + enemy_minimum_age = 14 var/const/agents_possible = 5 //If we ever need more syndicate agents. diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 20427ecc5df..6a493fbfd89 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -18,6 +18,7 @@ required_players = 20 required_enemies = 1 recommended_enemies = 3 + enemy_minimum_age = 14 var/finished = 0 var/check_counter = 0 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 44c6b4365e8..07fc56c7264 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -15,6 +15,7 @@ required_players = 0 required_enemies = 1 recommended_enemies = 4 + reroll_friendly = 1 var/traitors_possible = 4 //hard limit on traitors if scaling is turned off var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual. @@ -79,8 +80,9 @@ if(traitors.len <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2))) if(character.client.prefs.be_special & BE_TRAITOR) if(!jobban_isbanned(character.client, "traitor") && !jobban_isbanned(character.client, "Syndicate")) - if(!(character.job in ticker.mode.restricted_jobs)) - add_latejoin_traitor(character.mind) + if(age_check(character.client)) + if(!(character.job in ticker.mode.restricted_jobs)) + add_latejoin_traitor(character.mind) ..() /datum/game_mode/traitor/proc/add_latejoin_traitor(var/datum/mind/character) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 4dfb32d2c77..9ddb0fa2aba 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -95,4 +95,88 @@ user << "You can see...everything!" visible_message("[usr] stares into [src], their eyes glazing over.") user.ghostize(1) - return \ No newline at end of file + return + +/////////////////////////////////////////Necromantic Stone/////////////////// + +/obj/item/device/necromantic_stone + name = "necromantic stone" + desc = "A shard capable of resurrecting humans as skeleton thralls." + icon = 'icons/obj/wizard.dmi' + icon_state = "necrostone" + item_state = "electronic" + origin_tech = "bluespace=4;materials=4" + w_class = 1 + var/list/spooky_scaries = list() + var/unlimited = 0 + +/obj/item/device/necromantic_stone/unlimited + unlimited = 1 + +/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) + if(!istype(M, /mob/living/carbon/human)) + return ..() + + if(!istype(user) || !user.canUseTopic(M,1)) + return + + if(M.stat != DEAD) + user << "This artifact can only affect the dead!" + return + + if(!M.mind || !M.client) + user << "There is no soul connected to this body..." + return + + check_spooky()//clean out/refresh the list + if(spooky_scaries.len >= 3 && !unlimited) + user << "This artifact can only affect three undead at a time!" + return + + hardset_dna(M, null, null, null, null, /datum/species/skeleton) + M.revive() + spooky_scaries |= M + M << "You have been revived by [user.real_name]!" + M << "They are your master now, assist them even if it costs you your new life!" + + if(prob(33)) + equip_roman_skeleton(M) + + var/mob/living/carbon/human/master = user + + var/datum/objective/protect/protect_master = new /datum/objective/protect + protect_master.owner = M.mind + protect_master.target = master.mind + protect_master.explanation_text = "Protect [master.real_name], your master." + M.mind.objectives += protect_master + ticker.mode.traitors += M.mind + M.mind.special_role = "skeleton-thrall" + + desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" + +/obj/item/device/necromantic_stone/proc/check_spooky() + if(unlimited) //no point, the list isn't used. + return + + for(var/X in spooky_scaries) + if(!istype(X, /mob/living/carbon/human)) + spooky_scaries.Remove(X) + continue + var/mob/living/carbon/human/H = X + if(H.stat) + spooky_scaries.Remove(X) + continue + listclearnulls(spooky_scaries) + +//Funny gimmick, skeletons always seem to wear roman/ancient armour +/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(var/mob/living/carbon/human/H) + for(var/obj/item/I in H) + H.unEquip(I) + + var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) + H.equip_to_slot_or_del(new hat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/roman(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/twohanded/spear(H), slot_back) diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm index f2704347e88..d0d350d86d7 100644 --- a/code/game/gamemodes/wizard/raginmages.dm +++ b/code/game/gamemodes/wizard/raginmages.dm @@ -14,9 +14,16 @@ /datum/game_mode/wizard/raginmages/post_setup() ..() + var/playercount = 0 if(!max_mages) - max_mages = round(num_players() / 5) - + for(var/mob/living/player in mob_list) + if(player.client && player.stat != 2) + playercount += 1 + max_mages = round(playercount / 8) + if(max_mages > 20) + max_mages = 20 + if(max_mages < 1) + max_mages = 1 /datum/game_mode/wizard/raginmages/greet_wizard(var/datum/mind/wizard, var/you_are=1) if (you_are) wizard.current << "You are the Space Wizard!" @@ -73,20 +80,22 @@ for(var/mob/dead/observer/G in player_list) if(G.client && !G.client.holder && !G.client.is_afk() && G.client.prefs.be_special & BE_WIZARD) if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) - candidates += G + if(age_check(G.client)) + candidates += G if(!candidates.len) message_admins("No applicable ghosts for the next ragin' mage, asking ghosts instead.") var/time_passed = world.time for(var/mob/dead/observer/G in player_list) if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) - spawn(0) - switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. + if(age_check(G.client)) + spawn(0) + switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) + if("Yes") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + continue + candidates += G + if("No") continue - candidates += G - if("No") - continue sleep(300) if(!candidates.len) diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm index c0e34cfd3b9..27668da7648 100644 --- a/code/game/gamemodes/wizard/rightandwrong.dm +++ b/code/game/gamemodes/wizard/rightandwrong.dm @@ -2,7 +2,7 @@ /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") - 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/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying", "necromantic","staffdoor", "special") var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos") if(user) //in this case either someone holding a spellbook or a badmin @@ -138,7 +138,8 @@ if (!(H.dna.check_mutation(XRAY))) H.dna.add_mutation(XRAY) H << "The walls suddenly disappear." - + if("necromantic") + new /obj/item/device/necromantic_stone(get_turf(H)) if("special") magiclist -= "special" //only one super OP item per summoning max switch (randomizemagicspecial) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 6fe5906aaf5..9f0fed8fcb9 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -163,6 +163,10 @@ dat += "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot.
" dat += "
" + dat += "A Necromantic Stone
" + dat += "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." + dat += "
" + dat += "Wand Assortment
" dat += "A collection of wands that allow for a wide variety of utility. Wands do not recharge, so be conservative in use. Comes in a handy belt.
" dat += "
" @@ -216,7 +220,7 @@ uses-- /* */ - var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", repulse = "Repulse", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonitem = "Instant Summons", summonguns = "Summon Guns", summonmagic = "Summon Magic", summonevents = "Summon Events", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation", staffchaos = "Staff of Chaos", staffdoor = "Staff of Door Creation", wands = "Wand Assortment") + var/list/available_spells = list(magicmissile = "Magic Missile", fireball = "Fireball", disintegrate = "Disintegrate", disabletech = "Disable Tech", repulse = "Repulse", smoke = "Smoke", blind = "Blind", mindswap = "Mind Transfer", forcewall = "Forcewall", blink = "Blink", teleport = "Teleport", mutate = "Mutate", etherealjaunt = "Ethereal Jaunt", knock = "Knock", horseman = "Curse of the Horseman", fleshtostone = "Flesh to Stone", summonitem = "Instant Summons", summonguns = "Summon Guns", summonmagic = "Summon Magic", summonevents = "Summon Events", staffchange = "Staff of Change", soulstone = "Six Soul Stone Shards and the spell Artificer", necrostone = "A Necromantic stone", armor = "Mastercrafted Armor Set", staffanimate = "Staff of Animation", staffchaos = "Staff of Chaos", staffdoor = "Staff of Door Creation", wands = "Wand Assortment") var/already_knows = 0 for(var/obj/effect/proc_holder/spell/aspell in H.mind.spell_list) if(available_spells[href_list["spell_choice"]] == initial(aspell.name)) @@ -348,6 +352,11 @@ H.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null) temp = "You have purchased a belt full of soulstones and have learned the artificer spell." max_uses-- + if("necrostone") + feedback_add_details("wizard_spell_learned","NS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells + new /obj/item/device/necromantic_stone(get_turf(H)) + temp = "You have purchased a necromantic stone." + max_uses-- if("armor") feedback_add_details("wizard_spell_learned","HS") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells new /obj/item/clothing/shoes/sandal(get_turf(H)) //In case they've lost them. diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 1b6b18b7c89..c091c9c3f02 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -9,6 +9,7 @@ required_enemies = 1 recommended_enemies = 1 pre_setup_before_jobs = 1 + enemy_minimum_age = 14 var/use_huds = 0 var/finished = 0 @@ -170,7 +171,7 @@ /datum/game_mode/wizard/check_finished() - if(config.continuous_round_wiz) + if(round_converted) return ..() var/wizards_alive = 0 @@ -192,11 +193,17 @@ if (wizards_alive || traitors_alive) return ..() - else - finished = 1 - return 1 + if(config.continuous_round_wiz) + round_converted = convert_roundtype() + if(!round_converted) + finished = 1 + return 1 + else + return ..() + finished = 1 + return 1 /datum/game_mode/wizard/declare_completion() if(finished) diff --git a/code/game/jobs/job/cargo_service.dm b/code/game/jobs/job/cargo_service.dm new file mode 100644 index 00000000000..a3f2f33b3b4 --- /dev/null +++ b/code/game/jobs/job/cargo_service.dm @@ -0,0 +1,232 @@ +/* +Quartermaster +*/ +/datum/job/qm + title = "Quartermaster" + flag = QUARTERMASTER + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#d7b088" + + default_pda = /obj/item/device/pda/quartermaster + default_headset = /obj/item/device/radio/headset/headset_cargo + + access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) + minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) + +/datum/job/qm/equip_items(var/mob/living/carbon/human/H) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) + H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) + +/* +Cargo Technician +*/ +/datum/job/cargo_tech + title = "Cargo Technician" + flag = CARGOTECH + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 2 + supervisors = "the quartermaster and the head of personnel" + selection_color = "#dcba97" + + default_pda = /obj/item/device/pda/cargo + default_headset = /obj/item/device/radio/headset/headset_cargo + + access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) + minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) + +/datum/job/cargo_tech/equip_items(var/mob/living/carbon/human/H) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) + +/* +Shaft Miner +*/ +/datum/job/mining + title = "Shaft Miner" + flag = MINER + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 3 + supervisors = "the quartermaster and the head of personnel" + selection_color = "#dcba97" + + default_pda = /obj/item/device/pda/shaftminer + default_headset = /obj/item/device/radio/headset/headset_cargo + default_backpack = /obj/item/weapon/storage/backpack/industrial + default_satchel = /obj/item/weapon/storage/backpack/satchel_eng + default_storagebox = /obj/item/weapon/storage/box/engineer + + access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) + minimal_access = list(access_mining, access_mining_station, access_mailsorting, access_mineral_storeroom) + +/datum/job/mining/equip_items(var/mob/living/carbon/human/H) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) + + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_belt) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_l_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_r_store) + else + H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_l_store) + +/* +Bartender +*/ +/datum/job/bartender + title = "Bartender" + flag = BARTENDER + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#bbe291" + + default_pda = /obj/item/device/pda/bar + default_headset = /obj/item/device/radio/headset/headset_srv + + access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) + minimal_access = list(access_bar) + +/datum/job/bartender/equip_backpack(var/mob/living/carbon/human/H) + switch(H.backbag) + if(1) //No backpack or satchel + + var/obj/item/weapon/storage/box/box = new default_storagebox(H) + new /obj/item/ammo_casing/shotgun/beanbag(box) + new /obj/item/ammo_casing/shotgun/beanbag(box) + new /obj/item/ammo_casing/shotgun/beanbag(box) + new /obj/item/ammo_casing/shotgun/beanbag(box) + H.equip_to_slot_or_del(box, slot_r_hand) + + if(2) // Backpack + var/obj/item/weapon/storage/backpack/BPK = new default_backpack(H) + new default_storagebox(BPK) + H.equip_to_slot_or_del(BPK, slot_back,1) + if(3) //Satchel + var/obj/item/weapon/storage/backpack/BPK = new default_satchel(H) + new default_storagebox(BPK) + H.equip_to_slot_or_del(BPK, slot_back,1) + +/datum/job/bartender/equip_items(var/mob/living/carbon/human/H) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) + + if(H.backbag != 1) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) + +/* +Cook +*/ +/datum/job/cook + title = "Cook" + flag = COOK + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#bbe291" + var/global/cooks = 0 //Counts cooks amount + + default_pda = /obj/item/device/pda/cook + default_headset = /obj/item/device/radio/headset/headset_srv + + access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) + minimal_access = list(access_kitchen, access_morgue) + +/datum/job/cook/equip_items(var/mob/living/carbon/human/H) + cooks += 1 + + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) + switch(cooks) + if(1) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/chef(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) + else + H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron/chef(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/head/soft/mime(H), slot_head) + +/* +Botanist +*/ +/datum/job/hydro + title = "Botanist" + flag = BOTANIST + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 2 + supervisors = "the head of personnel" + selection_color = "#bbe291" + + default_pda = /obj/item/device/pda/botanist + default_headset = /obj/item/device/radio/headset/headset_srv + + access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning. + minimal_access = list(access_hydroponics, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning. + +/datum/job/hydro/equip_items(var/mob/living/carbon/human/H) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) + +/* +Janitor +*/ +/datum/job/janitor + title = "Janitor" + flag = JANITOR + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#bbe291" + var/global/janitors = 0 + + default_pda = /obj/item/device/pda/janitor + default_headset = /obj/item/device/radio/headset/headset_srv + + access = list(access_janitor, access_maint_tunnels) + minimal_access = list(access_janitor, access_maint_tunnels) + +/datum/job/janitor/equip_items(var/mob/living/carbon/human/H) + janitors += 1 + + if(H.backbag != 1) + switch(janitors) + if(1) + H.equip_to_slot_or_del(new /obj/item/key/janitor(H), slot_in_backpack) + else + H.equip_to_slot_or_del(new /obj/item/weapon/soap/deluxe(H), slot_in_backpack) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 84ca4577f6d..cd2e564b41b 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -1,115 +1,3 @@ -/* -Bartender -*/ -/datum/job/bartender - title = "Bartender" - flag = BARTENDER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - default_pda = /obj/item/device/pda/bar - default_headset = /obj/item/device/radio/headset/headset_srv - - access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) - minimal_access = list(access_bar) - -/datum/job/bartender/equip_backpack(var/mob/living/carbon/human/H) - switch(H.backbag) - if(1) //No backpack or satchel - - var/obj/item/weapon/storage/box/box = new default_storagebox(H) - new /obj/item/ammo_casing/shotgun/beanbag(box) - new /obj/item/ammo_casing/shotgun/beanbag(box) - new /obj/item/ammo_casing/shotgun/beanbag(box) - new /obj/item/ammo_casing/shotgun/beanbag(box) - H.equip_to_slot_or_del(box, slot_r_hand) - - if(2) // Backpack - var/obj/item/weapon/storage/backpack/BPK = new default_backpack(H) - new default_storagebox(BPK) - H.equip_to_slot_or_del(BPK, slot_back,1) - if(3) //Satchel - var/obj/item/weapon/storage/backpack/BPK = new default_satchel(H) - new default_storagebox(BPK) - H.equip_to_slot_or_del(BPK, slot_back,1) - -/datum/job/bartender/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) - - if(H.backbag != 1) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - -/* -Cook -*/ -/datum/job/cook - title = "Cook" - flag = COOK - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - var/global/cooks = 0 //Counts cooks amount - - default_pda = /obj/item/device/pda/cook - default_headset = /obj/item/device/radio/headset/headset_srv - - access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) - minimal_access = list(access_kitchen, access_morgue) - -/datum/job/cook/equip_items(var/mob/living/carbon/human/H) - cooks += 1 - - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - switch(cooks) - if(1) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/chef(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) - else - H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron/chef(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/soft/mime(H), slot_head) - -/* -Botanist -*/ -/datum/job/hydro - title = "Botanist" - flag = BOTANIST - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 3 - spawn_positions = 2 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - default_pda = /obj/item/device/pda/botanist - default_headset = /obj/item/device/radio/headset/headset_srv - - access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning. - minimal_access = list(access_hydroponics, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning. - -/datum/job/hydro/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) - /* Clown */ @@ -196,39 +84,6 @@ Mime H.rename_self("mime") -/* -Janitor -*/ -/datum/job/janitor - title = "Janitor" - flag = JANITOR - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - var/global/janitors = 0 - - default_pda = /obj/item/device/pda/janitor - default_headset = /obj/item/device/radio/headset/headset_srv - - access = list(access_janitor, access_maint_tunnels) - minimal_access = list(access_janitor, access_maint_tunnels) - -/datum/job/janitor/equip_items(var/mob/living/carbon/human/H) - janitors += 1 - - if(H.backbag != 1) - switch(janitors) - if(1) - H.equip_to_slot_or_del(new /obj/item/key/janitor(H), slot_in_backpack) - else - H.equip_to_slot_or_del(new /obj/item/weapon/soap/deluxe(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - /* Librarian */ diff --git a/code/game/jobs/job/supply.dm b/code/game/jobs/job/supply.dm deleted file mode 100644 index daa24aef3e9..00000000000 --- a/code/game/jobs/job/supply.dm +++ /dev/null @@ -1,87 +0,0 @@ -/* -Quartermaster -*/ -/datum/job/qm - title = "Quartermaster" - flag = QUARTERMASTER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - default_pda = /obj/item/device/pda/quartermaster - default_headset = /obj/item/device/radio/headset/headset_cargo - - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - -/datum/job/qm/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) - H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) - -/* -Cargo Technician -*/ -/datum/job/cargo_tech - title = "Cargo Technician" - flag = CARGOTECH - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 3 - spawn_positions = 2 - supervisors = "the quartermaster and the head of personnel" - selection_color = "#dddddd" - - default_pda = /obj/item/device/pda/cargo - default_headset = /obj/item/device/radio/headset/headset_cargo - - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) - -/datum/job/cargo_tech/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - -/* -Shaft Miner -*/ -/datum/job/mining - title = "Shaft Miner" - flag = MINER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 3 - spawn_positions = 3 - supervisors = "the quartermaster and the head of personnel" - selection_color = "#dddddd" - - default_pda = /obj/item/device/pda/shaftminer - default_headset = /obj/item/device/radio/headset/headset_cargo - default_backpack = /obj/item/weapon/storage/backpack/industrial - default_satchel = /obj/item/weapon/storage/backpack/satchel_eng - default_storagebox = /obj/item/weapon/storage/box/engineer - - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - minimal_access = list(access_mining, access_mining_station, access_mailsorting, access_mineral_storeroom) - -/datum/job/mining/equip_items(var/mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_r_store) - else - H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_l_store) diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm index c9a7c1cf6c2..64f7f4c35b4 100644 --- a/code/game/machinery/atmoalter/meter.dm +++ b/code/game/machinery/atmoalter/meter.dm @@ -73,7 +73,7 @@ if (src.target) var/datum/gas_mixture/environment = target.return_air() if(environment) - t += "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)]°K ([round(environment.temperature-T0C,0.01)]°C)" + t += "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)] K ([round(environment.temperature-T0C,0.01)]°C)" else t += "The sensor error light is blinking." else diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index eb580f5795c..a574b24ccbc 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -24,6 +24,7 @@ var/global/mulebot_count = 0 control_freq = 1447 bot_type = MULE_BOT bot_filter = RADIO_MULEBOT + blood_DNA = list() suffix = "" @@ -240,7 +241,7 @@ obj/machinery/bot/mulebot/bot_reset() //user << browse("M.U.L.E. Mk. III [suffix ? "([suffix])" : ""][dat]", "window=mulebot;size=350x500") //onclose(user, "mulebot") - var/datum/browser/popup = new(user, "mulebot", "M.U.L.E. Mk. V [suffix ? "([suffix])" : ""]", 350, 500) + var/datum/browser/popup = new(user, "mulebot", "M.U.L.E. Mk. V [suffix ? "([suffix])" : ""]", 350, 550) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() @@ -554,6 +555,7 @@ obj/machinery/bot/mulebot/bot_reset() if(bloodiness) var/obj/effect/decal/cleanable/blood/tracks/B = new(loc) + B.blood_DNA |= blood_DNA.Copy() var/newdir = get_dir(next, loc) if(newdir == dir) B.dir = newdir @@ -747,7 +749,8 @@ obj/machinery/bot/mulebot/bot_reset() // called from mob/living/carbon/human/Crossed() // when mulebot is in the same loc /obj/machinery/bot/mulebot/proc/RunOver(var/mob/living/carbon/human/H) - visible_message("[src] drives over [H]!") + H.visible_message("[src] drives over [H]!", \ + "[src] drives over you!") playsound(loc, 'sound/effects/splat.ogg', 50, 1) var/damage = rand(5,15) @@ -759,9 +762,8 @@ obj/machinery/bot/mulebot/bot_reset() H.apply_damage(0.5*damage, BRUTE, "r_arm") var/obj/effect/decal/cleanable/blood/B = new(loc) - B.blood_DNA = list() B.blood_DNA[H.dna.unique_enzymes] = H.dna.blood_type - + blood_DNA[H.dna.unique_enzymes] = H.dna.blood_type bloodiness += 4 // player on mulebot attempted to move diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 7f1f9bdb3ed..1bcc4decc8e 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -29,7 +29,9 @@ /obj/item/toy/minimeteor = 2, /obj/item/toy/carpplushie = 2, /obj/item/toy/foamblade = 2, - /obj/item/toy/redbutton = 2 + /obj/item/toy/redbutton = 2, + /obj/item/toy/owl = 2, + /obj/item/toy/griffin = 2 ) /obj/machinery/computer/arcade/New() diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 7bc63ee4692..79eb6283a86 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -11,6 +11,7 @@ req_access = list(access_robotics) var/recharge_speed var/repairs + state_open = 1 /obj/machinery/recharge_station/New() ..() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 5e0c8bc7990..77472452150 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -75,7 +75,6 @@ /obj/machinery/suit_storage_unit/syndicate SUIT_TYPE = /obj/item/clothing/suit/space/hardsuit/syndi - HELMET_TYPE = /obj/item/clothing/head/helmet/space/hardsuit/syndi MASK_TYPE = /obj/item/clothing/mask/gas/syndicate STORAGE_TYPE = /obj/item/weapon/tank/jetpack/oxygen/harness diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 38fe88157a0..eb35481a9bc 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -741,7 +741,7 @@ /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp = 3, /obj/item/weapon/storage/fancy/cigarettes/cigpack_midori = 1, /obj/item/weapon/storage/box/matches = 10, - /obj/item/weapon/lighter/random = 4, + /obj/item/weapon/lighter/grayscale = 4, /obj/item/weapon/storage/fancy/rollingpapers = 5) contraband = list(/obj/item/weapon/lighter/zippo = 4) premium = list(/obj/item/clothing/mask/cigarette/cigar/havana = 2, /obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold = 1) @@ -864,7 +864,9 @@ /obj/item/clothing/tie/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/tie/waistcoat = 1, /obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1, /obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1, - /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1,/obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1, + /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1, + /obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, /obj/item/clothing/under/griffin = 1, /obj/item/clothing/shoes/griffin = 1, /obj/item/clothing/head/griffin = 1, + /obj/item/clothing/suit/apron = 1,/obj/item/clothing/under/waiter = 1, /obj/item/clothing/under/pirate = 1,/obj/item/clothing/suit/pirate = 1,/obj/item/clothing/head/pirate = 1,/obj/item/clothing/head/bandana = 1, /obj/item/clothing/head/bandana = 1,/obj/item/clothing/under/soviet = 1,/obj/item/clothing/head/ushanka = 1,/obj/item/clothing/suit/imperium_monk = 1, /obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1, @@ -921,7 +923,7 @@ icon_state = "engivend" icon_deny = "engivend-deny" req_access_txt = "11" //Engineering Equipment access - products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10,/obj/item/weapon/airalarm_electronics = 10,/obj/item/weapon/stock_parts/cell/high = 10) + products = list(/obj/item/clothing/glasses/meson/engine = 2,/obj/item/device/multitool = 4,/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10,/obj/item/weapon/airalarm_electronics = 10,/obj/item/weapon/stock_parts/cell/high = 10) contraband = list(/obj/item/weapon/stock_parts/cell/potato = 3) premium = list(/obj/item/weapon/storage/belt/utility = 3) @@ -933,7 +935,7 @@ icon_deny = "engi-deny" req_access_txt = "11" products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/sneakers/orange = 4,/obj/item/clothing/head/hardhat = 4, - /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12, + /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson/engine = 4,/obj/item/clothing/gloves/color/yellow = 4, /obj/item/weapon/screwdriver = 12, /obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12, /obj/item/weapon/stock_parts/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8, /obj/item/weapon/light/tube = 10,/obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5,/obj/item/weapon/stock_parts/micro_laser = 5, diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 381eeb06196..78933650b03 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -42,6 +42,7 @@ buckled_mob = M M.update_canmove() post_buckle_mob(M) + M.throw_alert("buckled", new_master = src) return 1 /obj/proc/unbuckle_mob() @@ -50,6 +51,7 @@ buckled_mob.buckled = null buckled_mob.anchored = initial(buckled_mob.anchored) buckled_mob.update_canmove() + buckled_mob.clear_alert("buckled") buckled_mob = null post_buckle_mob(.) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index b50b02a3a46..f7b073c5fc7 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -37,7 +37,7 @@ /obj/effect/decal/cleanable/trail_holder //not a child of blood on purpose name = "blood" - icon_state = "blank" + icon_state = "ltrails_1" desc = "Your instincts say you shouldn't be following these." gender = PLURAL density = 0 diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index e7cff56a202..00615da6e0e 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -1,9 +1,9 @@ //########################## CONTRABAND ;3333333333333333333 -Agouri ################################################### -#define NUM_OF_POSTER_DESIGNS 32 //subtype 0-contraband posters +#define NUM_OF_POSTER_DESIGNS 33 //subtype 0-contraband posters -#define NUM_OF_POSTER_DESIGNS_LEGIT 32 //subtype 1-corporate approved posters +#define NUM_OF_POSTER_DESIGNS_LEGIT 33 //subtype 1-corporate approved posters /obj/item/weapon/contraband name = "contraband item" @@ -188,6 +188,9 @@ obj/structure/sign/poster/New(serial,subtype) if(32) name += " - Punch Shit" desc += " Fight things for no reason, like a man!" + if(33) + name += " - The Griffin" + desc += " The Griffin commands you to be the worst you can be. Will you?" else name += " - Error (subtype 0 serial_number)" desc += " This is a bug, please report the circumstances under which you encountered this poster at https://github.com/tgstation/-tg-station/issues." @@ -291,6 +294,9 @@ obj/structure/sign/poster/New(serial,subtype) if(32) name += " - High-Class Martini" desc += " I told you to shake it, no stirring" + if(33) + name += " - The Owl" + desc += " The Owl would do his best to protect the station. Will you?" else name += " - Error (subtype 1 serial_number)" desc += " This is a bug, please report the circumstances under which you encountered this poster at https://github.com/NTStation/NTstation13/issues." diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index 05994439ca0..11271644ee1 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -32,7 +32,7 @@ var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition) I.dir = src.holder.dir flick("ion_fade", I) - I.icon_state = "blank" + I.icon_state = "ion_trails" spawn( 20 ) if(I) I.delete() diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 1fa64b3c89c..cf4b7fdab27 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -84,6 +84,7 @@ ..() tag = "start*[name]" invisibility = 101 + start_landmarks_list += src return 1 @@ -164,10 +165,18 @@ qdel(src) /obj/effect/landmark/costume/nightowl/New() + new /obj/item/clothing/suit/toggle/owlwings(src.loc) new /obj/item/clothing/under/owl(src.loc) new /obj/item/clothing/mask/gas/owl_mask(src.loc) qdel(src) +/obj/effect/landmark/costume/thegriffin/New() + new /obj/item/clothing/suit/toggle/owlwings/griffinwings(src.loc) + new /obj/item/clothing/shoes/griffin(src.loc) + new /obj/item/clothing/under/griffin(src.loc) + new /obj/item/clothing/head/griffin(src.loc) + qdel(src) + /obj/effect/landmark/costume/waiter/New() new /obj/item/clothing/under/waiter(src.loc) var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 64b328c5877..846d42b7b3e 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -816,6 +816,9 @@ var/global/list/obj/item/device/pda/PDAs = list() tnote += "→ To [P.owner]:
[t]
" P.tnote += "← From [owner] ([ownjob]):
[t]
" + for(var/mob/M in player_list) + if(isobserver(M) && M.client && (M.client.prefs.toggles & CHAT_GHOSTPDA)) + M.show_message("PDA Message - [owner] -> [P.owner]: [t]") if (!P.silent) playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1) @@ -837,9 +840,23 @@ var/global/list/obj/item/device/pda/PDAs = list() else U << "ERROR: Server isn't responding." +/obj/item/device/pda/AltClick() + ..() + + if(issilicon(usr)) + return + + if(can_use(usr)) + if(id) + remove_id() + else + usr << "This PDA does not have an ID in it." + else + usr << "You cannot do this while restrained." + /obj/item/device/pda/verb/verb_remove_id() set category = "Object" - set name = "Remove id" + set name = "Eject ID" set src in usr if(issilicon(usr)) @@ -856,7 +873,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/verb/verb_remove_pen() set category = "Object" - set name = "Remove pen" + set name = "Remove Pen" set src in usr if(issilicon(usr)) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9a413dc59b4..833cf976128 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -36,7 +36,7 @@ MASS SPECTROMETER /obj/item/device/t_scanner/proc/scan() - for(var/turf/T in range(1, src.loc) ) + for(var/turf/T in range(2, src.loc) ) if(!T.intact) continue diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index ed4ce6212e1..2a912e4319f 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -119,23 +119,13 @@ var/multiplier = text2num(href_list["multiplier"]) if (!multiplier ||(multiplier <= 0)) //href protection return - if (src.get_amount() < R.req_amount*multiplier) - if (R.req_amount*multiplier>1) - usr << "You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!" - else - usr << "You haven't got enough [src] to build \the [R.title]!" - return - if (R.one_per_turf && (locate(R.result_type) in usr.loc)) - usr << "There is another [R.title] here!" - return - if (R.on_floor && !istype(usr.loc, /turf/simulated/floor)) - usr << "\The [R.title] must be constructed on the floor!" + if(!building_checks(R, multiplier)) return if (R.time) usr << "Building [R.title] ..." if (!do_after(usr, R.time)) return - if (src.get_amount() < R.req_amount*multiplier) + if(!building_checks(R, multiplier)) return var/atom/O = new R.result_type( usr.loc ) @@ -167,6 +157,21 @@ return return +/obj/item/stack/proc/building_checks(datum/stack_recipe/R, multiplier) + if (src.get_amount() < R.req_amount*multiplier) + if (R.req_amount*multiplier>1) + usr << "You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!" + else + usr << "You haven't got enough [src] to build \the [R.title]!" + return 0 + if (R.one_per_turf && (locate(R.result_type) in usr.loc)) + usr << "There is another [R.title] here!" + return 0 + if (R.on_floor && !istype(usr.loc, /turf/simulated/floor)) + usr << "\The [R.title] must be constructed on the floor!" + return 0 + return 1 + /obj/item/stack/proc/use(var/used) // return 0 = borked; return 1 = had enough if (is_cyborg) return source.use_charge(used * cost) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ed1d27efecf..f21f71a1fa0 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -686,7 +686,43 @@ return ..() +/obj/item/toy/owl + name = "owl action figure" + desc = "An action figure modeled after 'The Owl', defender of justice." + icon = 'icons/obj/toy.dmi' + icon_state = "owlprize" + w_class = 2.0 + var/cooldown = 0 +/obj/item/toy/owl/attack_self(mob/user) + if(!cooldown) //for the sanity of everyone + var/message = pick("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!") + user << "You pull the string on the [src]." + playsound(user, 'sound/machines/click.ogg', 20, 1) + src.loc.visible_message("\icon[src] [message]") + cooldown = 1 + spawn(30) cooldown = 0 + return + ..() + +/obj/item/toy/griffin + name = "griffin action figure" + desc = "An action figure modeled after 'The Griffin', criminal mastermind." + icon = 'icons/obj/toy.dmi' + icon_state = "griffinprize" + w_class = 2.0 + var/cooldown = 0 + +/obj/item/toy/griffin/attack_self(mob/user) + if(!cooldown) //for the sanity of everyone + var/message = pick("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!") + user << "You pull the string on the [src]." + playsound(user, 'sound/machines/click.ogg', 20, 1) + src.loc.visible_message("\icon[src] [message]") + cooldown = 1 + spawn(30) cooldown = 0 + return + ..() /* diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index da2e082ca48..2e22500c790 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -33,7 +33,7 @@ icon_state = "syndi_cakes" /obj/item/trash/waffles - name = "waffles" + name = "waffles tray" icon_state = "waffles" /obj/item/trash/plate diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index c8c9fa39367..075bab36a2a 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -439,6 +439,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM attack_verb = null var/lit = 0 +/obj/item/weapon/lighter/grayscale + name = "cheap lighter" + desc ="A cheap-as-free lighter." + icon = 'icons/obj/cigarettes.dmi' + icon_state = "lighter-off" + item_state = "lighter-off" + icon_on = "lighter-on" + icon_off = "lighter-off" + +/obj/item/weapon/lighter/grayscale/New() + var/icon/overlay = new /icon('icons/obj/cigarettes.dmi',"lighter-overlay") + overlay.ColorTone(color2hex(randomColor(1))) + overlays += overlay + /obj/item/weapon/lighter/zippo name = "\improper Zippo lighter" desc = "The zippo." @@ -447,6 +461,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_on = "zippoon" icon_off = "zippo" +/obj/item/weapon/lighter/update_icon() + icon_state = lit ? icon_on : icon_off + /obj/item/weapon/lighter/random New() var/color = pick("r","c","y","g") @@ -458,8 +475,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(user.r_hand == src || user.l_hand == src) if(!lit) lit = 1 - icon_state = icon_on - item_state = icon_on + update_icon() force = 5 damtype = "fire" hitsound = 'sound/items/welder.ogg' @@ -478,8 +494,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM SSobj.processing |= src else lit = 0 - icon_state = icon_off - item_state = icon_off + update_icon() hitsound = "swing_hit" force = 0 attack_verb = null //human_defense.dm takes care of it diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 1349bd16bbc..17c514f8ffe 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -44,6 +44,7 @@ /obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user) if(!target.handcuffed) user.drop_item() + //target.throw_alert("handcuffed", src) // Can't do this because escaping cuffs isn't standardized. Also zipties. if(trashtype) target.handcuffed = new trashtype(target) qdel(src) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 1e201c2aa39..749a4b281ce 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -168,11 +168,12 @@ /obj/item/weapon/implant/loyalty/implanted(mob/target) ..() - if(target.mind in ticker.mode.head_revolutionaries) + if((target.mind in ticker.mode.head_revolutionaries) || (target.mind in ticker.mode.A_bosses) || (target.mind in ticker.mode.B_bosses)) target.visible_message("[target] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!") return 0 - if(target.mind in ticker.mode.revolutionaries) + if((target.mind in ticker.mode.revolutionaries) || (target.mind in ticker.mode.A_gangsters) || (target.mind in ticker.mode.B_gangsters)) ticker.mode.remove_revolutionary(target.mind) + ticker.mode.remove_gangster(target.mind, exclude_bosses=0) target << "You feel a surge of loyalty towards Nanotrasen." return 1 diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm index 448673346eb..7cbdc8f8261 100644 --- a/code/game/objects/items/weapons/power_cells.dm +++ b/code/game/objects/items/weapons/power_cells.dm @@ -113,7 +113,7 @@ name = "potato battery" desc = "A rechargable starch based power cell." origin_tech = "powerstorage=1" - icon = 'icons/obj/power.dmi' //'icons/obj/harvest.dmi' + icon = 'icons/obj/power.dmi' //'icons/obj/hydroponics/harvest.dmi' icon_state = "potato_cell" //"potato_battery" charge = 100 maxcharge = 300 diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 80a46ed0572..2c9bb1a2ccf 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -124,6 +124,37 @@ icon_state = "engiepack" item_state = "engiepack" +/obj/item/weapon/storage/backpack/botany + name = "botany backpack" + desc = "It's a backpack made of all-natural fibers." + icon_state = "botpack" + item_state = "botpack" + +/obj/item/weapon/storage/backpack/chemistry + name = "chemistry backpack" + desc = "A backpack specially designed to repel stains and hazardous liquids." + icon_state = "chempack" + item_state = "chempack" + +/obj/item/weapon/storage/backpack/genetics + name = "genetics backpack" + desc = "A bag designed to be super tough, just in case someone hulks out on you." + icon_state = "genepack" + item_state = "genepack" + +/obj/item/weapon/storage/backpack/science + name = "science backpack" + desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." + icon_state = "toxpack" + item_state = "toxpack" + +/obj/item/weapon/storage/backpack/virology + name = "virology backpack" + desc = "A backpack made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey." + icon_state = "viropack" + item_state = "viropack" + + /* * Satchel Types */ @@ -158,21 +189,31 @@ name = "virologist satchel" desc = "A sterile satchel with virologist colours." icon_state = "satchel-vir" + item_state = "satchel-vir" /obj/item/weapon/storage/backpack/satchel_chem name = "chemist satchel" desc = "A sterile satchel with chemist colours." icon_state = "satchel-chem" + item_state = "satchel-chem" /obj/item/weapon/storage/backpack/satchel_gen name = "geneticist satchel" desc = "A sterile satchel with geneticist colours." icon_state = "satchel-gen" + item_state = "satchel-gen" /obj/item/weapon/storage/backpack/satchel_tox name = "scientist satchel" desc = "Useful for holding research materials." icon_state = "satchel-tox" + item_state = "satchel-tox" + +/obj/item/weapon/storage/backpack/satchel_hyd + name = "botanist satchel" + desc = "A satchel made of all natural fibers." + icon_state = "satchel-hyd" + item_state = "satchel-hyd" /obj/item/weapon/storage/backpack/satchel_sec name = "security satchel" @@ -180,11 +221,6 @@ icon_state = "satchel-sec" item_state = "securitypack" -/obj/item/weapon/storage/backpack/satchel_hyd - name = "hydroponics satchel" - desc = "A green satchel for plant related work." - icon_state = "satchel_hyd" - /obj/item/weapon/storage/backpack/satchel_cap name = "captain's satchel" desc = "An exclusive satchel for Nanotrasen officers." diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index bbc33441f3a..fa45ef40477 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -79,6 +79,14 @@ max_w_class = 3 can_hold = list(/obj/item/weapon/ore) +/obj/item/weapon/storage/bag/ore/holding //miners, your messiah has arrived + name = "mining satchel of holding" + desc = "A revolution in convenience, this satchel allows for infinite ore storage. It's been outfitted with anti-malfunction safety measures." + storage_slots = INFINITY + max_combined_w_class = INFINITY + origin_tech = "bluespace=3" + icon_state = "satchel_bspace" + // ----------------------------- // Plant bag @@ -86,7 +94,7 @@ /obj/item/weapon/storage/bag/plants name = "plant bag" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "plantbag" storage_slots = 50; //the number of plant pieces it can carry. max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 93a3a7f1564..010ae17b7da 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -2,7 +2,7 @@ /obj/item/weapon/watertank name = "backpack water tank" desc = "A S.U.N.S.H.I.N.E. brand watertank backpack with nozzle to water plants." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "waterbackpack" item_state = "waterbackpack" w_class = 4.0 @@ -106,7 +106,7 @@ /obj/item/weapon/reagent_containers/spray/mister name = "water mister" desc = "A mister nozzle attached to a water tank." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "mister" item_state = "mister" w_class = 4.0 @@ -165,7 +165,7 @@ /obj/item/weapon/reagent_containers/spray/mister/janitor name = "janitor spray nozzle" desc = "A janitorial spray nozzle attached to a watertank, designed to clean up large messes." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "misterjani" item_state = "misterjani" amount_per_transfer_from_this = 5 @@ -203,7 +203,7 @@ /obj/item/weapon/extinguisher/mini/nozzle name = "extinguisher nozzle" desc = "A heavy duty nozzle attached to a firefighter's backpack tank." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "atmos_nozzle" item_state = "nozzleatmos" safety = 0 @@ -290,7 +290,7 @@ if(!Adj|| !istype(target, /turf)) return if(metal_synthesis_cooldown < 5) - var/obj/effect/effect/foam/F = new /obj/effect/effect/foam(get_turf(target), 1) + var/obj/effect/effect/foam/metal/F = new /obj/effect/effect/foam/metal(get_turf(target)) F.amount = 0 metal_synthesis_cooldown++ spawn(100) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index fbef8b501a6..e303f91ece2 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -211,6 +211,63 @@ desc = "Honk." +/datum/barsign/thenest + name = "The Nest" + icon = "thenest" + desc = "A good place to retire for a drink after a long night of crime fighting." + + +/datum/barsign/thecoderbus + name = "The Coderbus" + icon = "thecoderbus" + desc = "A very controversial bar known for its wide variety of constantly-changing drinks." + + +/datum/barsign/theadminbus + name = "The Adminbus" + icon = "theadminbus" + desc = "An establishment visited mainly by space-judges. It isn't bombed nearly as much as court hearings." + +/datum/barsign/oldcockinn + name = "The Old Cock Inn" + icon = "oldcockinn" + desc = "Something about this sign fills you with despair." + +/datum/barsign/thewretchedhive + name = "The Wretched Hive" + icon = "thewretchedhive" + desc = "Legally obligated to instruct you to check your drinks for acid before consumption." + +/datum/barsign/robustacafe + name = "The Robusta Cafe" + icon = "robustacafe" + desc = "Holder of the 'Most Lethal Barfights' record 5 years uncontested." + +/datum/barsign/emergencyrumparty + name = "The Emergency Rum Party" + icon = "emergencyrumparty" + desc = "Still serving drinks that were banned years ago." + +/datum/barsign/combocafe + name = "The Combo Cafe" + icon = "combocafe" + desc = "Renowned system-wide for their utterly uncreative drink combinations." + +/datum/barsign/vladssaladbar + name = "Vlad's Salad Bar" + icon = "vladssaladbar" + desc = "Under new management. Vlad was always a bit too trigger happy with that shotgun." + +/datum/barsign/theshaken + name = "The Shaken" + icon = "theshaken" + desc = "This establishment does not serve stirred drinks." + +/datum/barsign/thealenath + name = "The Ale' Nath" + icon = "thealenath" + desc = "All right, buddy. I think you've had EI NATH. Time to get a cab." + /datum/barsign/hiddensigns diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index c8dac873ad8..037b5f64864 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -34,6 +34,7 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/device/multitool(src) new /obj/item/device/flash/handheld(src) + new /obj/item/clothing/glasses/meson/engine(src) return /obj/structure/closet/secure_closet/engineering_electrical @@ -113,7 +114,7 @@ new /obj/item/weapon/storage/toolbox/mechanical(src) new /obj/item/tapeproj/engineering(src) new /obj/item/clothing/mask/gas(src) - new /obj/item/clothing/glasses/meson(src) + new /obj/item/clothing/glasses/meson/engine(src) return /obj/structure/closet/secure_closet/atmospherics diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 144f70fbd1a..100ecee2218 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -24,4 +24,8 @@ new /obj/item/clothing/mask/bandana(src) new /obj/item/weapon/minihoe(src) new /obj/item/weapon/hatchet(src) + new /obj/item/weapon/storage/backpack/botany(src) + new /obj/item/weapon/storage/backpack/botany(src) + new /obj/item/weapon/storage/backpack/satchel_hyd(src) + new /obj/item/weapon/storage/backpack/satchel_hyd(src) return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 1179a079e6e..a7298c248e3 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -17,6 +17,10 @@ new /obj/item/device/radio/headset/headset_sci(src) new /obj/item/weapon/tank/internals/air(src) new /obj/item/clothing/mask/gas(src) + new /obj/item/weapon/storage/backpack/science(src) + new /obj/item/weapon/storage/backpack/science(src) + new /obj/item/weapon/storage/backpack/satchel_tox(src) + new /obj/item/weapon/storage/backpack/satchel_tox(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index df449794738..0a9f02bf133 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -16,8 +16,7 @@ if(ishuman(L) || ismonkey(L) || iscorgi(L)) if(L.buckled) - L.buckled = 0 - L.anchored = 0 + L.buckled.unbuckle_mob() if(L.client) L.client.perspective = EYE_PERSPECTIVE L.client.eye = src diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index c7d5f263928..74608f4f0d3 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -38,9 +38,6 @@ new /obj/item/clothing/head/soft/sec(src) new /obj/item/clothing/mask/bandana/red(src) new /obj/item/clothing/mask/bandana/red(src) - new /obj/item/clothing/head/santa(src) - new /obj/item/clothing/head/santa(src) - new /obj/item/clothing/head/santa(src) return /obj/structure/closet/wardrobe/pink @@ -294,6 +291,10 @@ new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/suit/toggle/labcoat/chemist(src) new /obj/item/clothing/suit/toggle/labcoat/chemist(src) + new /obj/item/weapon/storage/backpack/chemistry(src) + new /obj/item/weapon/storage/backpack/chemistry(src) + new /obj/item/weapon/storage/backpack/satchel_chem(src) + new /obj/item/weapon/storage/backpack/satchel_chem(src) return @@ -309,6 +310,10 @@ new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/suit/toggle/labcoat/genetics(src) new /obj/item/clothing/suit/toggle/labcoat/genetics(src) + new /obj/item/weapon/storage/backpack/genetics(src) + new /obj/item/weapon/storage/backpack/genetics(src) + new /obj/item/weapon/storage/backpack/satchel_gen(src) + new /obj/item/weapon/storage/backpack/satchel_gen(src) return @@ -326,6 +331,10 @@ new /obj/item/clothing/suit/toggle/labcoat/virologist(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/clothing/mask/surgical(src) + new /obj/item/weapon/storage/backpack/virology(src) + new /obj/item/weapon/storage/backpack/virology(src) + new /obj/item/weapon/storage/backpack/satchel_vir(src) + new /obj/item/weapon/storage/backpack/satchel_vir(src) return diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 1a3fff351a6..6ee88dda1bb 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -206,4 +206,27 @@ /obj/structure/flora/kirbyplants/dead name = "RD's potted plant" desc = "A gift from the botanical staff, presented after the RD's reassignment. There's a tag on it that says \"Y'all come back now, y'hear?\"\nIt doesn't look very healthy..." - icon_state = "plant-25" \ No newline at end of file + icon_state = "plant-25" + + +//a rock is flora according to where the icon file is +//and now these defines +/obj/structure/flora/rock + name = "rock" + desc = "a rock" + icon_state = "rock1" + icon = 'icons/obj/flora/rocks.dmi' + anchored = 1 + +/obj/structure/flora/rock/New() + ..() + icon_state = "rock[rand(1,5)]" + +/obj/structure/flora/rock/pile + name = "rocks" + desc = "some rocks" + icon_state = "rockpile1" + +/obj/structure/flora/rock/pile/New() + ..() + icon_state = "rockpile[rand(1,5)]" \ No newline at end of file diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index ebe1fd7c6e6..e674b20fad5 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -14,7 +14,8 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "Now disassembling the girder..." if(do_after(user,40)) - if(!src) return + if(!src.loc) + return user << "You dissasembled the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) qdel(src) @@ -25,7 +26,8 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "Now securing the girder..." if(do_after(user, 40)) - if(!src) return + if(!src.loc) + return user << "You secured the girder!" var/obj/structure/girder/G = new (loc) transfer_fingerprints_to(G) @@ -34,7 +36,8 @@ else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) user << "Now slicing apart the girder..." if(do_after(user,30)) - if(!src) return + if(!src.loc) + return user << "You slice apart the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) qdel(src) @@ -54,7 +57,8 @@ playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) user << "Now unsecuring support struts..." if(do_after(user,40)) - if(!src) return + if(!src.loc) + return user << "You unsecured the support struts!" state = 1 @@ -62,7 +66,8 @@ playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) user << "Now removing support struts..." if(do_after(user,40)) - if(!src) return + if(!src.loc) + return user << "You removed the support struts!" var/obj/structure/girder/G = new (loc) transfer_fingerprints_to(G) @@ -72,7 +77,8 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user << "Now dislodging the girder..." if(do_after(user, 40)) - if(!src) return + if(!src.loc) + return user << "You dislodged the girder!" var/obj/structure/girder/displaced/D = new (loc) transfer_fingerprints_to(D) @@ -129,7 +135,8 @@ if(S.amount < 1) return ..() user << "Now finalising reinforced wall..." if(do_after(user, 50)) - if(!src || !S || S.amount < 1) return + if(!src.loc || !S || S.amount < 1) + return S.use(1) user << "Wall fully reinforced!" var/turf/Tsrc = get_turf(src) @@ -142,7 +149,8 @@ if(S.amount < 1) return ..() user << "Now reinforcing girders..." if (do_after(user,60)) - if(!src || !S || S.amount < 1) return + if(!src.loc || !S || S.amount < 1) + return S.use(1) user << "Girders reinforced!" var/obj/structure/girder/reinforced/R = new (loc) @@ -166,7 +174,8 @@ if(S.amount < 2) return ..() user << "Now adding plating..." if (do_after(user,40)) - if(!src || !S || S.amount < 2) return + if(!src.loc || !S || S.amount < 2) + return S.use(2) user << "You added the plating!" var/turf/Tsrc = get_turf(src) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 0de4c76e488..623cb4c6c5b 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -246,17 +246,20 @@ Crematorium Switch user << "That's not connected to anything." /obj/structure/tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) - if ((!( istype(O, /atom/movable) ) || O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src) || user.contents.Find(O))) + if(!istype(O, /atom/movable) || O.anchored || !Adjacent(user) || !user.Adjacent(O) || O.loc == user) return - if (!ismob(O) && !istype(O, /obj/structure/closet/body_bag)) - return - if (!ismob(user) || user.stat || user.lying || user.stunned) + if(!ismob(O)) + if(!istype(O, /obj/structure/closet/body_bag)) + return + else + var/mob/M = O + if(M.buckled) + return + if(!ismob(user) || user.lying || user.incapacitated()) return O.loc = src.loc if (user != O) - for(var/mob/B in viewers(user, 3)) - B.show_message("[user] stuffs [O] into [src]!", 1) - //Foreach goto(99) + visible_message("[user] stuffs [O] into [src]!") return /* diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index a16153e32e2..b81baa63d7b 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -70,10 +70,9 @@ else density = 0 icon_state = "down" - if(buckled_mob) - buckled_mob.pixel_y = initial(buckled_mob.pixel_y) - if(buckled_mob.lying) - buckled_mob.pixel_y -= buckled_pixel_y_offset + M.pixel_y = initial(M.pixel_y) + if(M.lying) + M.pixel_y -= buckled_pixel_y_offset /obj/item/roller diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 79c7b682a38..196ce0cbb0b 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -27,6 +27,7 @@ var/busy = 0 var/buildstackamount = 1 var/framestackamount = 2 + var/mob/tableclimber /obj/structure/table/New() ..() @@ -219,6 +220,10 @@ /obj/structure/table/attack_hand(mob/living/user) user.changeNext_move(CLICK_CD_MELEE) + if(tableclimber) + tableclimber.Weaken(2) + tableclimber.visible_message("[tableclimber.name] has been knocked off the table", "You've been knocked off the table", "You see [tableclimber.name] get knocked off the table") + /obj/structure/table/attack_tk() // no telehulk sorry return @@ -324,8 +329,11 @@ I.Move(loc) var/list/click_params = params2list(params) //Center the icon where the user clicked. - I.pixel_x = (text2num(click_params["icon-x"]) - 16) - I.pixel_y = (text2num(click_params["icon-y"]) - 16) + if(!click_params || !click_params["icon-x"] || !click_params["icon-y"]) + return + //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf) + I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2) + I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) /* @@ -380,6 +388,7 @@ var/climb_time = 20 if(user.restrained()) //Table climbing takes twice as long when restrained. climb_time *= 2 + tableclimber = user if(do_mob(user, user, climb_time)) if(src.loc) //Checking if table has been destroyed user.pass_flags += PASSTABLE @@ -389,7 +398,9 @@ "You climb onto [src].") add_logs(user, src, "climbed onto") user.Stun(2) + tableclimber = null return 1 + tableclimber = null return 0 diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 886593f4af8..2971a867071 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -380,11 +380,6 @@ user << "Someone's already washing here." return - if(istype(O, /obj/item/trash)) - user.drop_item() - user << "You wash up [O]." //sims!!! - qdel(O) - if(istype(O, /obj/item/weapon/reagent_containers)) var/obj/item/weapon/reagent_containers/RG = O RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm index 1a4507dfd1f..5799286f3ea 100644 --- a/code/game/turfs/unsimulated/floor.dm +++ b/code/game/turfs/unsimulated/floor.dm @@ -17,4 +17,12 @@ icon_state = "engine" /turf/unsimulated/floor/attack_paw(user as mob) - return src.attack_hand(user) \ No newline at end of file + return src.attack_hand(user) + + +/turf/unsimulated/floor/grass + icon_state = "grass1" + +/turf/unsimulated/floor/grass/New() + ..() + icon_state = "grass[rand(1,4)]" \ No newline at end of file diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a05337f3f68..2b2672214c7 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -815,22 +815,29 @@ var/global/floorIsLava = 0 var/J_title = html_encode(job.title) var/J_opPos = html_encode(job.total_positions - (job.total_positions - job.current_positions)) var/J_totPos = html_encode(job.total_positions) - if(job.total_positions <= 0) - dat += "[J_title]: [J_opPos]" + if(job.total_positions < 0) + dat += "[J_title]: [J_opPos] (unlimited)" else dat += "[J_title]: [J_opPos]/[J_totPos]" - if(initial(job.total_positions) > 0) + + if(job.title == "AI" || job.title == "Cyborg") + dat += " (Cannot Late Join)
" + continue + if(job.total_positions >= 0) dat += " Add | " if(job.total_positions > job.current_positions) - dat += "Remove" + dat += "Remove | " else - dat += "Remove" + dat += "Remove | " + dat += "Unlimit" + else + dat += " Limit" dat += "
" dat += "" var/winheight = 100 + (count * 20) winheight = min(winheight, 690) - usr << browse(dat, "window=players;size=316x[winheight]") + usr << browse(dat, "window=players;size=375x[winheight]") // // diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index f35c93a3e89..29944163e29 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -118,7 +118,8 @@ var/list/admin_verbs_debug = list( /client/proc/callproc_datum, /client/proc/SDQL2_query, /client/proc/test_movable_UI, - /client/proc/test_snap_UI + /client/proc/test_snap_UI, + /client/proc/debugNatureMapGenerator ) var/list/admin_verbs_possess = list( /proc/possess, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 97c2c39ccdd..ddb5f5c3868 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1404,6 +1404,31 @@ src.manage_free_slots() + else if(href_list["unlimitjobslot"]) + if(!check_rights(R_ADMIN)) return + + var/Unlimit = href_list["unlimitjobslot"] + + for(var/datum/job/job in SSjob.occupations) + if(job.title == Unlimit) + job.total_positions = -1 + break + + src.manage_free_slots() + + else if(href_list["limitjobslot"]) + if(!check_rights(R_ADMIN)) return + + var/Limit = href_list["limitjobslot"] + + for(var/datum/job/job in SSjob.occupations) + if(job.title == Limit) + job.total_positions = job.current_positions + break + + src.manage_free_slots() + + else if(href_list["adminspawncookie"]) if(!check_rights(R_ADMIN|R_FUN)) return diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 7d6dd693e86..52524559573 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -99,7 +99,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," src << "PM to-Admins: [original_msg]" //send it to irc if nobody is on and tell us how many were on - var/admin_number_present = send2irc_adminless_only(original_msg) + var/admin_number_present = send2irc_adminless_only(ckey,original_msg) log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins who have +BAN.") feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 41442e9cdd8..3c3407e8138 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -149,14 +149,10 @@ message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)] to [A]") /proc/admin_forcemove(var/mob/mover, var/atom/newloc) - var/startdensity = mover.density - var/startflags = mover.pass_flags - var/startdestinationdensity = newloc.density - mover.density = 0 - mover.pass_flags = ALL - newloc.density = 0 - . = mover.Move(newloc) - mover.density = startdensity - mover.pass_flags = startflags - newloc.density = startdestinationdensity + mover.loc = newloc + mover.on_forcemove(newloc) + +/mob/proc/on_forcemove(var/atom/newloc) + return + diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 10676a6815f..ffc7ebe20e5 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -1217,7 +1217,7 @@ var/global/list/g_fancy_list_of_types = null M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/ert/engi(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/card/id/ert/Engineer(M), slot_wear_id) M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(M), slot_glasses) + M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/engine(M), slot_glasses) M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack) M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/hardsuit/ert/engi(M), slot_in_backpack) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 422b26ec36d..e5c3b465337 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -75,8 +75,9 @@ client/proc/one_click_antag() if(applicant.mind) if (!applicant.mind.special_role) if(!jobban_isbanned(applicant, "traitor") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(temp.age_check(applicant.client)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numTraitors = min(candidates.len, 3) @@ -110,8 +111,9 @@ client/proc/one_click_antag() if(applicant.mind) if (!applicant.mind.special_role) if(!jobban_isbanned(applicant, "changeling") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(temp.age_check(applicant.client)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numChanglings = min(candidates.len, 3) @@ -143,8 +145,9 @@ client/proc/one_click_antag() if(applicant.mind) if(!applicant.mind.special_role) if(!jobban_isbanned(applicant, "revolutionary") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(temp.age_check(applicant.client)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numRevs = min(candidates.len, 3) @@ -158,22 +161,24 @@ client/proc/one_click_antag() return 0 /datum/admins/proc/makeWizard() + var/datum/game_mode/wizard/temp = new var/list/mob/dead/observer/candidates = list() var/mob/dead/observer/theghost = null var/time_passed = world.time for(var/mob/dead/observer/G in player_list) if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) - spawn(0) - switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. + if(temp.age_check(G.client)) + spawn(0) + switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) + if("Yes") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + if("No") + return + else return - candidates += G - if("No") - return - else - return sleep(300) @@ -211,8 +216,9 @@ client/proc/one_click_antag() if(applicant.mind) if(!applicant.mind.special_role) if(!jobban_isbanned(applicant, "cultist") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(temp.age_check(applicant.client)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len) var/numCultists = min(candidates.len, 4) @@ -231,6 +237,7 @@ client/proc/one_click_antag() /datum/admins/proc/makeNukeTeam() + var/datum/game_mode/nuclear/temp = new var/list/mob/dead/observer/candidates = list() var/list/mob/dead/observer/chosen = list() var/mob/dead/observer/theghost = null @@ -238,16 +245,17 @@ client/proc/one_click_antag() for(var/mob/dead/observer/G in player_list) if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate")) - spawn(0) - switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. + if(temp.age_check(G.client)) + spawn(0) + switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No")) + if("Yes") + if((world.time-time_passed)>300)//If more than 30 game seconds passed. + return + candidates += G + if("No") + return + else return - candidates += G - if("No") - return - else - return sleep(300) @@ -410,12 +418,13 @@ client/proc/one_click_antag() for(var/mob/living/carbon/human/applicant in player_list) if(applicant.client.prefs.be_special & BE_GANG) - if(applicant.stat == CONSCIOUS) + if(!applicant.stat) if(applicant.mind) if(!applicant.mind.special_role) if(!jobban_isbanned(applicant, "gangster") && !jobban_isbanned(applicant, "Syndicate")) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant + if(temp.age_check(applicant.client)) + if(!(applicant.job in temp.restricted_jobs)) + candidates += applicant if(candidates.len >= 2) H = pick(candidates) @@ -423,7 +432,6 @@ client/proc/one_click_antag() candidates.Remove(H) H = pick(candidates) H.mind.make_Gang("B") - candidates.Remove(H) return 1 return 0 diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 4607b7ff78d..2fc40207bab 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -149,7 +149,7 @@ var/next_external_rsc = 0 if (config.notify_new_player_age >= 0) message_admins("New user: [key_name_admin(src)] is connecting here for the first time.") if (config.irc_first_connection_alert) - send2irc_adminless_only("New user", "[key_name(src)] is connecting for the first time!") + send2irc_adminless_only("New-user", "[key_name(src)] is connecting for the first time!") player_age = 0 // set it from -1 to 0 so the job selection code doesn't have a panic attack @@ -167,8 +167,11 @@ var/next_external_rsc = 0 send_resources() if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. - winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold") - + src << "You have unread updates in the changelog." + if(config.aggressive_changelog) + src.changes() + else + winset(src, "rpane.changelogb", "background-color=#eaeaea;font-style=bold") ////////////// //DISCONNECT// diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index f22870a8cf8..876723c9d0a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2,22 +2,20 @@ var/list/preferences_datums = list() -#define IS_MODE_COMPILED(MODE) (ispath(text2path("/datum/game_mode/"+(MODE)))) - var/global/list/special_roles = list( //keep synced with the defines BE_* in setup.dm //some autodetection here. - "traitor" = IS_MODE_COMPILED("traitor"), // 0 - "operative" = IS_MODE_COMPILED("nuclear"), // 1 - "changeling" = IS_MODE_COMPILED("changeling"), // 2 - "wizard" = IS_MODE_COMPILED("wizard"), // 3 - "malf AI" = IS_MODE_COMPILED("malfunction"), // 4 - "revolutionary" = IS_MODE_COMPILED("revolution"), // 5 - "alien" = 1, //always show // 6 - "pAI candidate" = 1, // 7 - "cultist" = IS_MODE_COMPILED("cult"), // 8 - "blob" = IS_MODE_COMPILED("blob"), // 9 - "monkey" = IS_MODE_COMPILED("monkey"), // 10 - "gangster" = IS_MODE_COMPILED("gang") // 11 + "traitor" = /datum/game_mode/traitor, //0 + "operative" = /datum/game_mode/nuclear, //1 + "changeling" = /datum/game_mode/changeling, //2 + "wizard" = /datum/game_mode/wizard, //3 + "malf AI" = /datum/game_mode/malfunction, //4 + "revolutionary" = /datum/game_mode/revolution, //5 + "alien", //6 + "pAI", //7 + "cultist" = /datum/game_mode/cult, //8 + "blob" = /datum/game_mode/blob, //9 + "monkey" = /datum/game_mode/monkey, //10 + "gangster" = /datum/game_mode/gang //11 ) @@ -39,6 +37,7 @@ datum/preferences var/UI_style = "Midnight" var/toggles = TOGGLES_DEFAULT var/ghost_form = "ghost" + var/allow_midround_antag = 1 //character preferences var/real_name //our character's name @@ -176,44 +175,63 @@ datum/preferences dat += "Species: Human
" dat += "Blood Type: [blood_type]
" - dat += "Skin Tone:
[skin_tone]
" dat += "Underwear:
[underwear]
" dat += "Undershirt:
[undershirt]
" dat += "Socks:
[socks]
" dat += "Backpack:
[backbaglist[backbag]]
" + if(pref_species.use_skintones) - dat += "" + dat += "" - dat += "

Hair Style

" + dat += "

Skin Tone

" - dat += "[hair_style]
" - dat += "< >
" - dat += "    Change
" + dat += "[skin_tone]
" + + dat += "" + + if(HAIR in pref_species.specflags) + + dat += "" + + dat += "

Hair Style

" + + dat += "[hair_style]
" + dat += "< >
" + dat += "    Change
" - dat += "" + dat += "" - dat += "

Facial Hair Style

" + dat += "

Facial Hair Style

" - dat += "[facial_hair_style]
" - dat += "< >
" - dat += "    Change
" + dat += "[facial_hair_style]
" + dat += "< >
" + dat += "    Change
" + dat += "" - dat += "" + if(EYECOLOR in pref_species.specflags) - dat += "

Eye Color

" + dat += "" - dat += "    Change
" + dat += "

Eye Color

" - dat += "" + dat += "    Change
" - dat += "

Alien Color

" // even if choosing your mutantrace is off, this is here in case you gain one during a round + dat += "" - dat += "    Change
" + if(MUTCOLORS in pref_species.specflags) - dat += "" + dat += "" + + dat += "

Alien Color

" + + dat += "    Change
" + + dat += "" + + dat += "" if (1) // Game Preferences @@ -225,8 +243,9 @@ datum/preferences dat += "Ghost ears: [(toggles & CHAT_GHOSTEARS) ? "Nearest Creatures" : "All Speech"]
" dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
" dat += "Ghost whispers: [(toggles & CHAT_GHOSTWHISPER) ? "Nearest Creatures" : "All Speech"]
" + dat += "Ghost pda: [(toggles & CHAT_GHOSTPDA) ? "Nearest Creatures" : "All Messages"]
" dat += "Pull requests: [(toggles & CHAT_PULLR) ? "Yes" : "No"]
" - + dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Yes" : "No"]
" if(config.allow_Metadata) dat += "OOC Notes: Edit
" @@ -248,17 +267,23 @@ datum/preferences dat += "

Antagonist Settings

" if(jobban_isbanned(user, "Syndicate")) - dat += "You are banned from antagonist roles." + dat += "You are banned from antagonist roles." src.be_special = 0 + else var/n = 0 for (var/i in special_roles) - if(special_roles[i]) //if mode is available on the server - if(jobban_isbanned(user, i)) - dat += "Be [i]: \[BANNED]
" - else if(i == "pai candidate") - if(jobban_isbanned(user, "pAI")) - dat += "Be [i]: \[BANNED]
" + if(jobban_isbanned(user, i)) + dat += "Be [i]: \[BANNED]
" + else + var/days_remaining = null + if(config.use_age_restriction_for_jobs && ispath(special_roles[i])) //If it's a game mode antag, check if the player meets the minimum age + var/mode_path = special_roles[i] + var/datum/game_mode/temp_mode = new mode_path + days_remaining = temp_mode.get_remaining_days(user.client) + + if(days_remaining) + dat += "Be [i]: \[IN [days_remaining] DAYS]
" else dat += "Be [i]: [src.be_special&(1<
" n++ @@ -782,9 +807,15 @@ datum/preferences if("ghost_whispers") toggles ^= CHAT_GHOSTWHISPER + if("ghost_pda") + toggles ^= CHAT_GHOSTPDA + if("pull_requests") toggles ^= CHAT_PULLR + if("allow_midround_antag") + toggles ^= MIDROUND_ANTAG + if("save") save_preferences() save_character() diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 3f35026c7be..3f41b53cdfd 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -26,6 +26,15 @@ prefs.save_preferences() feedback_add_details("admin_verb","TGW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/toggle_ghost_pda() + set name = "Show/Hide GhostPDA" + set category = "Preferences" + set desc = ".Toggle Between seeing all mob pda messages, and only pda messages of nearby mobs" + prefs.toggles ^= CHAT_GHOSTPDA + src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTPDA) ? "see all pda messages in the world" : "only see pda messages from nearby mobs"]." + prefs.save_preferences() + feedback_add_details("admin_verb","TGP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/proc/toggle_hear_radio() set name = "Show/Hide RadioChatter" set category = "Preferences" @@ -73,6 +82,15 @@ src << "You will [(prefs.toggles & CHAT_PULLR) ? "now" : "no longer"] see new pull request announcements." feedback_add_details("admin_verb","TPullR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/togglemidroundantag() + set name = "Toggle Midround Antagonist" + set category = "Preferences" + set desc = "Toggles whether or not you will be considered for antagonist status given during a round." + prefs.toggles ^= MIDROUND_ANTAG + prefs.save_preferences() + src << "You will [(prefs.toggles & MIDROUND_ANTAG) ? "now" : "no longer"] be considered for midround antagonist positions." + feedback_add_details("admin_verb","TMidroundA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/verb/toggletitlemusic() set name = "Hear/Silence LobbyMusic" set category = "Preferences" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 54aeace00c6..c84fd4b7916 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -7,7 +7,7 @@ var/visor_flags_inv = 0 // same as visor_flags, but for flags_inv lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' - + var/alt_desc = null //Ears: currently only used for headsets and earmuffs /obj/item/clothing/ears @@ -191,7 +191,6 @@ BLIND // can't see anything strip_delay = 80 put_on_delay = 80 - //Under clothing /obj/item/clothing/under icon = 'icons/obj/clothing/uniforms.dmi' @@ -307,10 +306,17 @@ atom/proc/generate_female_clothing(index,t_color,icon,type) ..() -/obj/item/clothing/under/verb/rolldown() +/obj/item/clothing/under/AltClick() + ..() + rolldown() + +/obj/item/clothing/under/verb/jumpsuit_adjust() set name = "Adjust Jumpsuit Style" - set category = "Object" + set category = null set src in usr + rolldown() + +/obj/item/clothing/under/proc/rolldown() if(!can_use(usr)) return if(!can_adjust) @@ -330,6 +336,13 @@ atom/proc/generate_female_clothing(index,t_color,icon,type) usr.update_inv_w_uniform() ..() +/obj/item/clothing/under/examine(mob/user) + ..() + if(src.adjusted) + user << "Alt-click on [src] to wear it normally." + else + user << "Alt-click on [src] to wear it casually." + /obj/item/clothing/under/verb/removetie() set name = "Remove Accessory" set category = "Object" diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm new file mode 100644 index 00000000000..69a41a17689 --- /dev/null +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -0,0 +1,85 @@ +//Engineering Mesons + +/obj/item/clothing/glasses/meson/engine + name = "Engineering Scanner Goggles" + desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes." + icon_state = "trayson-meson" + var/mode = 0 //0 - regular mesons mode 1 - t-ray mode + var/invis_objects = list() + action_button_name = "Change Scanning Mode" + +/obj/item/clothing/glasses/meson/engine/attack_self() + ui_action_click() + +/obj/item/clothing/glasses/meson/engine/ui_action_click() + mode = !mode + + if(mode) + SSobj.processing |= src + vision_flags = 0 + darkness_view = 2 + invis_view = SEE_INVISIBLE_LIVING + usr << "You toggle the goggles scanning mode to \[T-Ray]." + else + SSobj.processing.Remove(src) + vision_flags = SEE_TURFS + darkness_view = 1 + invis_view = SEE_INVISIBLE_MINIMUM + usr << "You toggle the goggles scanning mode to \[Meson]." + invis_update() + + update_icon() + +/obj/item/clothing/glasses/meson/engine/process() + if(!mode) + return null + + if(!istype(loc,/mob/living/carbon/human)) + invis_update() + return null + + var/mob/living/carbon/human/user = loc + if(user.glasses != src) + invis_update() + return null + + scan() + +/obj/item/clothing/glasses/meson/engine/proc/scan() + for(var/turf/T in range(1, loc)) + + if(!T.intact) + continue + + for(var/obj/O in T.contents) + if(O.level != 1) + continue + + if(O.invisibility == 101) + O.invisibility = 0 + invis_objects += O + + spawn(5) + invis_update() + +/obj/item/clothing/glasses/meson/engine/proc/invis_update() + for(var/obj/O in invis_objects) + if(!t_ray_on() || !(O in range(1, loc))) + invis_objects -= O + var/turf/T = O.loc + if(T.intact) + O.invisibility = 101 + +/obj/item/clothing/glasses/meson/engine/proc/t_ray_on() + if(!istype(loc,/mob/living/carbon/human)) + return 0 + + var/mob/living/carbon/human/user = loc + return mode & (user.glasses == src) + +/obj/item/clothing/glasses/meson/engine/update_icon() + icon_state = mode ? "trayson-tray" : "trayson-meson" + if(istype(loc,/mob/living/carbon/human/)) + var/mob/living/carbon/human/user = loc + if(user.glasses == src) + user.update_inv_glasses() diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 7ce60948acb..bb52cd01980 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -124,7 +124,7 @@ origin_tech = "magnets=3" vision_flags = SEE_MOBS invis_view = 2 - flash_protect = -1 + flash_protect = 0 emp_act(severity) if(istype(src.loc, /mob/living/carbon/human)) @@ -143,6 +143,7 @@ desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition." icon_state = "meson" origin_tech = "magnets=3;syndicate=4" + flash_protect = -1 /obj/item/clothing/glasses/thermal/monocle name = "Thermoncle" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 01c472edfac..2ac171d76de 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -144,6 +144,14 @@ flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE +/obj/item/clothing/head/griffin + name = "griffon head" + desc = "Why not 'eagle head'? Who knows." + icon_state = "griffinhat" + item_state = "griffinhat" + flags = BLOCKHAIR + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + /obj/item/clothing/head/bearpelt name = "bear pelt hat" desc = "Fuzzy." diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 85b3cd3af70..a1f83e984d2 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -137,4 +137,10 @@ icon_state = "roman" item_state = "roman" strip_delay = 100 - put_on_delay = 100 \ No newline at end of file + put_on_delay = 100 + +/obj/item/clothing/shoes/griffin + name = "griffon boots" + desc = "A pair of costume boots fashioned after bird talons." + icon_state = "griffinboots" + item_state = "griffinboots" \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 9e9596af8d2..c76fbd9c198 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -17,24 +17,23 @@ return on = !on icon_state = "hardsuit[on]-[item_color]" -// item_state = "hardsuit[on]-[item_color]" user.update_inv_head() //so our mob-overlays update if(on) user.AddLuminosity(brightness_on) else user.AddLuminosity(-brightness_on) + /obj/item/clothing/head/helmet/space/hardsuit/pickup(mob/user) if(on) user.AddLuminosity(brightness_on) -// user.UpdateLuminosity() SetLuminosity(0) /obj/item/clothing/head/helmet/space/hardsuit/dropped(mob/user) if(on) user.AddLuminosity(-brightness_on) -// user.UpdateLuminosity() SetLuminosity(brightness_on) + /obj/item/clothing/suit/space/hardsuit name = "engineering hardsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." @@ -116,83 +115,107 @@ /obj/item/clothing/head/helmet/space/hardsuit/syndi name = "blood-red hardsuit helmet" desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." + alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_helm" item_color = "syndi" armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) - on = 1 + on = 0 + var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null action_button_name = "Toggle Helmet Mode" - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL + flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP /obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon() icon_state = "hardsuit[on]-[item_color]" -/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user) +/obj/item/clothing/head/helmet/space/hardsuit/syndi/New() + ..() + if(istype(loc, /obj/item/clothing/suit/space/hardsuit/syndi)) + linkedsuit = loc + +/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user) //Toggle Helmet if(!isturf(user.loc)) user << "You cannot toggle your helmet while in this [user.loc]" //To prevent some lighting anomalities. return on = !on - if(on) - user << "You switch your helmet to travel mode." - name = "blood-red hardsuit helmet" - desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." - flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE - cold_protection = HEAD + if(on || force) + user << "You switch your hardsuit to travel mode." + name = initial(name) + desc = initial(desc) user.AddLuminosity(brightness_on) + flags |= HEADCOVERSEYES | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL + flags_inv |= HIDEMASK|HIDEEYES|HIDEFACE + cold_protection |= HEAD else - user << "You switch your helmet to combat mode." - name = "blood-red hardsuit helmet (combat)" - desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." - flags = BLOCKHAIR - flags_inv = HIDEEARS - cold_protection = null + user << "You switch your hardsuit to combat mode." + name += " (combat)" + desc = alt_desc user.AddLuminosity(-brightness_on) - + flags &= ~(HEADCOVERSEYES| HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL) + flags_inv &= ~(HIDEMASK|HIDEEYES|HIDEFACE) + cold_protection &= ~HEAD update_icon() playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1) + toggle_hardsuit_mode(user) user.update_inv_head() +/obj/item/clothing/head/helmet/space/hardsuit/syndi/proc/toggle_hardsuit_mode(mob/user) //Helmet Toggles Suit Mode + if(linkedsuit) + if(on) + linkedsuit.name = initial(linkedsuit.name) + linkedsuit.desc = initial(linkedsuit.desc) + linkedsuit.slowdown = 1 + linkedsuit.flags |= STOPSPRESSUREDMAGE | THICKMATERIAL + linkedsuit.cold_protection |= CHEST | GROIN | LEGS | FEET | ARMS | HANDS + else + linkedsuit.name += " (combat)" + linkedsuit.desc = linkedsuit.alt_desc + linkedsuit.slowdown = 0 + linkedsuit.flags &= ~(STOPSPRESSUREDMAGE | THICKMATERIAL) + linkedsuit.cold_protection &= ~(CHEST | GROIN | LEGS | FEET | ARMS | HANDS) + + linkedsuit.icon_state = "hardsuit[on]-[item_color]" + linkedsuit.update_icon() + user.update_inv_wear_suit() + user.update_inv_w_uniform() + + /obj/item/clothing/suit/space/hardsuit/syndi name = "blood-red hardsuit" desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." + alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" item_color = "syndi" slowdown = 1 w_class = 3 - var/on = 1 - action_button_name = "Toggle Hardsuit Mode" + action_button_name = "Toggle Helmet" armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals) - helmettype = null + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi -/obj/item/clothing/suit/space/hardsuit/syndi/update_icon() - icon_state = "hardsuit[on]-[item_color]" +/obj/item/clothing/suit/space/hardsuit/syndi/ToggleHelmet() + ..() + flags ^= NODROP -/obj/item/clothing/suit/space/hardsuit/syndi/attack_self(mob/user) - on = !on - if(on) - user << "You switch your hardsuit to travel mode." - name = "blood-red hardsuit helmet" - desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." - slowdown = 1 - flags = STOPSPRESSUREDMAGE | THICKMATERIAL - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS - else - user << "You switch your hardsuit to combat mode." - name = "blood-red hardsuit helmet (combat)" - desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." - slowdown = 0 - flags = BLOCKHAIR - flags_inv = null - cold_protection = null - update_icon() - playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1) - user.update_inv_wear_suit() - user.update_inv_w_uniform() +//The Owl Hardsuit +/obj/item/clothing/head/helmet/space/hardsuit/syndi/owl + name = "owl hardsuit helmet" + desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in travel mode." + alt_desc = "A dual-mode advanced helmet designed for any crime-fighting situation. It is in combat mode." + icon_state = "hardsuit1-owl" + item_state = "s_helmet" + item_color = "owl" + +/obj/item/clothing/suit/space/hardsuit/syndi/owl + name = "owl hardsuit" + desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in travel mode." + alt_desc = "A dual-mode advanced hardsuit designed for any crime-fighting situation. It is in combat mode." + icon_state = "hardsuit1-owl" + item_state = "s_suit" + item_color = "owl" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl //Wizard hardsuit diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 22a6d9b74e1..b8683c10cc7 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -110,7 +110,6 @@ item_state = "suitjacket_blue" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS - action_button_name = "Toggle Suit Buttons" togglename = "buttons" /obj/item/clothing/suit/toggle/lawyer/purple diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 7990e20c371..cab20d84a4f 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -7,7 +7,6 @@ body_parts_covered = CHEST|ARMS allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) - action_button_name = "Toggle Labcoat Buttons" togglename = "buttons" /obj/item/clothing/suit/toggle/labcoat/cmo diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index d18025b4472..0adae1c15a2 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -126,6 +126,22 @@ body_parts_covered = CHEST|ARMS|GROIN|LEGS|FEET|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT +/obj/item/clothing/suit/toggle/owlwings + name = "owl cloak" + desc = "A soft brown cloak made of synthetic feathers. Soft to the touch, stylish, and a 2 meter wing span that will drive the ladies mad." + icon_state = "owl_wings" + item_state = "owl_wings" + togglename = "wings" + body_parts_covered = ARMS|CHEST + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/classic_baton/telescopic) + action_button_name = "Toggle Owl Wings" + +/obj/item/clothing/suit/toggle/owlwings/griffinwings + name = "griffon cloak" + desc = "A plush white cloak made of synthetic feathers. Soft to the touch, stylish, and a 2 meter wing span that will drive your captives mad." + icon_state = "griffin_wings" + item_state = "griffin_wings" + /obj/item/clothing/suit/holidaypriest name = "holiday priest" diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 779ad6c05e4..c9567e9c4ed 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -53,7 +53,11 @@ //Toggle exosuits for different aesthetic styles (hoodies, suit jacket buttons, etc) -/obj/item/clothing/suit/toggle/attack_self() +/obj/item/clothing/suit/toggle/AltClick() + ..() + suit_toggle() + +/obj/item/clothing/suit/toggle/proc/suit_toggle() set src in usr if(!can_use(usr)) @@ -68,6 +72,10 @@ src.suittoggled = 1 usr.update_inv_wear_suit() +/obj/item/clothing/suit/toggle/examine(mob/user) + ..() + user << "Alt-click on [src] to toggle the [togglename]." + //Hardsuit toggle code /obj/item/clothing/suit/space/hardsuit/New() diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 049fab17adc..72e8be76e3f 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -128,11 +128,18 @@ /obj/item/clothing/under/owl name = "owl uniform" - desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" + desc = "A soft brown jumpsuit made of synthetic feathers and strong conviction." icon_state = "owl" item_color = "owl" can_adjust = 0 +/obj/item/clothing/under/griffin + name = "griffon uniform" + desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem." + icon_state = "griffin" + item_color = "griffin" + can_adjust = 0 + /obj/item/clothing/under/rainbow name = "rainbow" desc = "rainbow" diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index 5c5bdfb596a..3dad124aabe 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -4,6 +4,8 @@ weight = 300 max_occurrences = 1000 earliest_start = 0 + alertadmins = 0 + /datum/round_event/meteor_wave/dust startWhen = 1 diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 4ccd64f5cd9..1d7ff646543 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -3,6 +3,7 @@ typepath = /datum/round_event/electrical_storm earliest_start = 6000 weight = 40 + alertadmins = 0 /datum/round_event/electrical_storm var/lightsoutAmount = 1 diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 59d8bb0b309..172a562905b 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -17,6 +17,9 @@ //anything with a (non-null) holidayID which does not match holiday, cannot run. var/wizardevent = 0 + var/alertadmins = 1 //should we let the admins know this event is firing + //should be disabled on events that fire a lot + /datum/round_event_control/wizard wizardevent = 1 diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 44bfb8b7be2..525d66debca 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -324,6 +324,8 @@ KZ.production = (master.spread_cap / initial(master.spread_cap)) * 50 mutations = list() SetOpacity(0) + if(buckled_mob) + unbuckle_mob() ..() /obj/effect/spacevine/proc/on_chem_effect(datum/reagent/R) diff --git a/code/modules/events/wizard/blobies.dm b/code/modules/events/wizard/blobies.dm index d66cd5f76c3..2f9f04053fd 100644 --- a/code/modules/events/wizard/blobies.dm +++ b/code/modules/events/wizard/blobies.dm @@ -8,4 +8,4 @@ /datum/round_event/wizard/blobies/start() for(var/mob/living/carbon/human/H in dead_mob_list) - new /mob/living/simple_animal/hostile/blobspore(H.loc) + new /mob/living/simple_animal/hostile/blob/blobspore(H.loc) diff --git a/code/modules/food&drinks/drinks/drinks.dm b/code/modules/food&drinks/drinks/drinks.dm index 9e98ef77fa3..51ece9f90d7 100644 --- a/code/modules/food&drinks/drinks/drinks.dm +++ b/code/modules/food&drinks/drinks/drinks.dm @@ -33,10 +33,6 @@ return 0 if(M == user) - if(src.reagents.has_reagent("sugar") && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 ) - M << "You don't feel like drinking any more sugary drink at the moment." - return 0 - M << "You swallow a gulp of [src]." if(reagents.total_volume) reagents.reaction(M, INGEST) @@ -95,6 +91,16 @@ return +/obj/item/weapon/reagent_containers/food/drinks/attackby(var/obj/item/I, mob/user as mob, params) + if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird + return + if(is_hot(I)) + var/added_heat = (is_hot(I) / 100) //ishot returns a temperature + if(src.reagents) + src.reagents.chem_temp += added_heat + user << "You heat [src] with [I]." + src.reagents.handle_reactions() + //////////////////////////////////////////////////////////////////////////////// /// Drinks. END //////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm index c1ebb561162..816c4d7f651 100644 --- a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm @@ -518,7 +518,7 @@ name = "shot of nothing" desc = "The mime insists there's booze in the glass. You're not so sure." if ("goldschlager") - icon_state = "shotglassschlag" + icon_state = "shotglassgold" name = "shot of goldschlager" desc = "Yup. You're officially a college girl." if ("cognac") diff --git a/code/modules/food&drinks/food/condiment.dm b/code/modules/food&drinks/food/condiment.dm index e0312212374..63010138089 100644 --- a/code/modules/food&drinks/food/condiment.dm +++ b/code/modules/food&drinks/food/condiment.dm @@ -40,9 +40,6 @@ return 0 if(M == user) - if(src.reagents.has_reagent("sugar") && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 ) - M << "You don't feel like drinking any more sugary food at the moment." - return 0 M << "You swallow some of contents of \the [src]." if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index bc39bb04a71..fc0b9137e77 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -59,8 +59,8 @@ fullness += C.nutriment_factor * C.volume / C.metabolization_rate if(M == user) //If you're eating it yourself. - if(src.reagents.has_reagent("sugar") && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 ) - M << "You don't feel like eating any more sugary food at the moment." + if(junkiness && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 ) + M << "You don't feel like eating any more junk food at the moment." return 0 if(wrapped) @@ -203,7 +203,7 @@ overlays += I -// cook() is called when microwaving the food +// initialize_cooked_food() is called when microwaving the food /obj/item/weapon/reagent_containers/food/snacks/proc/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S) if(reagents) reagents.trans_to(S, reagents.total_volume) diff --git a/code/modules/food&drinks/food/snacks/dough.dm b/code/modules/food&drinks/food/snacks/dough.dm index 11f89dc25f1..aca417a2473 100644 --- a/code/modules/food&drinks/food/snacks/dough.dm +++ b/code/modules/food&drinks/food/snacks/dough.dm @@ -2,25 +2,6 @@ /////////////////// Dough Ingredients //////////////////////// -// Flour + egg = dough -/obj/item/weapon/reagent_containers/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg)) - var/obj/item/weapon/reagent_containers/food/snacks/egg/E = W - if(flags & OPENCONTAINER) - if(reagents) - if(reagents.has_reagent("flour")) - if(reagents.get_reagent_amount("flour") >= 15) - var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/dough(get_turf(src)) - user << "You mix egg and flour to make some dough." - reagents.remove_reagent("flour", 15) - if(E.reagents) - E.reagents.trans_to(S,E.reagents.total_volume) - qdel(E) - else - user << "Not enough flour to make dough." - return - ..() - /obj/item/weapon/reagent_containers/food/snacks/dough name = "dough" desc = "A piece of dough." diff --git a/code/modules/food&drinks/food/snacks/meat.dm b/code/modules/food&drinks/food/snacks/meat.dm index 6102cad58d2..14634bb1f9d 100644 --- a/code/modules/food&drinks/food/snacks/meat.dm +++ b/code/modules/food&drinks/food/snacks/meat.dm @@ -10,12 +10,17 @@ slices_num = 3 filling_color = "#FF0000" -/obj/item/weapon/reagent_containers/food/snacks/meat/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice) +/obj/item/weapon/reagent_containers/food/snacks/meat/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/rawcutlet/slice) var/image/I = new(icon, "rawcutlet_coloration") I.color = filling_color slice.overlays += I slice.filling_color = filling_color + slice.name = "raw [name] cutlet" + slice.meat_type = name +/obj/item/weapon/reagent_containers/food/snacks/meat/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S) + ..() + S.name = "[name] steak" ///////////////////////////////////// HUMAN MEATS ////////////////////////////////////////////////////// @@ -24,23 +29,24 @@ name = "-meat" var/subjectname = "" var/subjectjob = null + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/meatsteak/plain/human slice_path = /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/plain/human /obj/item/weapon/reagent_containers/food/snacks/meat/human/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/rawcutlet/plain/human/slice) ..() if(subjectname) slice.subjectname = subjectname - slice.name = "[subjectname] [initial(slice.name)]" + slice.name = "raw [subjectname] cutlet" else if(subjectjob) slice.subjectjob = subjectjob - slice.name = "[subjectjob] [initial(slice.name)]" + slice.name = "raw [subjectjob] cutlet" /obj/item/weapon/reagent_containers/food/snacks/meat/human/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S) ..() if(subjectname) - S.name = "[subjectname] [initial(S.name)]" + S.name = "[subjectname] meatsteak" else if(subjectjob) - S.name = "[subjectjob] [initial(S.name)]" + S.name = "[subjectjob] meatsteak" /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/slime @@ -117,7 +123,7 @@ desc = "Tastes like... well you know..." /obj/item/weapon/reagent_containers/food/snacks/meat/killertomato - name = "tomato slice" + name = "killer tomato meat" desc = "A slice from a huge tomato." icon_state = "tomatomeat" list_reagents = list("nutriment" = 2) @@ -161,7 +167,7 @@ /obj/item/weapon/reagent_containers/food/snacks/meatsteak - name = "meat steak" + name = "steak" desc = "A piece of hot spicy meat." icon_state = "meatsteak" list_reagents = list("nutriment" = 2, "vitamin" = 1) @@ -173,21 +179,18 @@ /obj/item/weapon/reagent_containers/food/snacks/meatsteak/plain/human /obj/item/weapon/reagent_containers/food/snacks/meatsteak/killertomato - name = "killer tomato steak" /obj/item/weapon/reagent_containers/food/snacks/meatsteak/bear - name = "bear steak" /obj/item/weapon/reagent_containers/food/snacks/meatsteak/xeno - name = "xeno steak" /obj/item/weapon/reagent_containers/food/snacks/meatsteak/spider - name = "spider steak" //////////////////////////////// MEAT CUTLETS /////////////////////////////////////////////////////// +//Raw cutlets /obj/item/weapon/reagent_containers/food/snacks/rawcutlet name = "raw cutlet" @@ -196,10 +199,17 @@ cooked_type = /obj/item/weapon/reagent_containers/food/snacks/cutlet/plain bitesize = 2 filling_color = "#B22222" + var/meat_type = "meat" + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S) + ..() + S.name = "[meat_type] cutlet" + /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/plain /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/plain/human + cooked_type = /obj/item/weapon/reagent_containers/food/snacks/cutlet/plain/human var/subjectname = "" var/subjectjob = null @@ -211,18 +221,16 @@ S.name = "[subjectjob] [initial(S.name)]" /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/killertomato - name = "raw killer tomato cutlet" /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/bear - name = "raw bear cutlet" /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/xeno - name = "raw xeno cutlet" /obj/item/weapon/reagent_containers/food/snacks/rawcutlet/spider - name = "raw spider cutlet" +//Cooked cutlets + /obj/item/weapon/reagent_containers/food/snacks/cutlet name = "cutlet" desc = "A cooked meat cutlet." @@ -236,13 +244,9 @@ /obj/item/weapon/reagent_containers/food/snacks/cutlet/plain/human /obj/item/weapon/reagent_containers/food/snacks/cutlet/killertomato - name = "killer tomato cutlet" /obj/item/weapon/reagent_containers/food/snacks/cutlet/bear - name = "bear cutlet" /obj/item/weapon/reagent_containers/food/snacks/cutlet/xeno - name = "xeno cutlet" -/obj/item/weapon/reagent_containers/food/snacks/cutlet/spider - name = "spider cutlet" +/obj/item/weapon/reagent_containers/food/snacks/cutlet/spider \ No newline at end of file diff --git a/code/modules/food&drinks/kitchen machinery/smartfridge.dm b/code/modules/food&drinks/kitchen machinery/smartfridge.dm index 758e3876730..f9c5bdb002e 100644 --- a/code/modules/food&drinks/kitchen machinery/smartfridge.dm +++ b/code/modules/food&drinks/kitchen machinery/smartfridge.dm @@ -186,7 +186,7 @@ // ---------------------------- /obj/machinery/smartfridge/drying_rack name = "drying rack" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "drying_rack_on" use_power = 1 idle_power_usage = 5 diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 6a9b225d6ab..77e26b97cf5 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -17,7 +17,7 @@ var/production = 0 var/yield = 0 var/plant_type = 0 - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/hydroponics/harvest.dmi' potency = -1 dried_type = -1 //bit different. saves us from having to define each stupid grown's dried_type as itself. If you don't want a plant to be driable (watermelons) set this to null in the time definition. @@ -123,6 +123,19 @@ reagents.add_reagent("sugar", 1 + round((potency / 15), 1)) bitesize = 1 + round(reagents.total_volume / 2, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries + seed = /obj/item/seeds/bluecherryseed + name = "blue cherries" + desc = "They're cherries that are blue." + icon_state = "bluecherry" + filling_color = "#6495ED" + +/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 15), 1)) + reagents.add_reagent("sugar", 1 + round((potency / 50), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + /obj/item/weapon/reagent_containers/food/snacks/grown/poppy seed = /obj/item/seeds/poppyseed @@ -138,11 +151,24 @@ reagents.add_reagent("hotline", 3 + round((potency / 10), 1)) bitesize = 1 + round(reagents.total_volume / 3, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/lily + seed = /obj/item/seeds/lilyseed + name = "lily" + desc = "A beautiful orange flower" + icon_state = "lily" + filling_color = "#FFA500" + +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/geranium + seed = /obj/item/seeds/geraniumseed + name = "geranium" + desc = "A beautiful blue flower" + icon_state = "geranium" + filling_color = "#008B8B" /obj/item/weapon/reagent_containers/food/snacks/grown/harebell seed = /obj/item/seeds/harebell name = "harebell" - desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\"" + desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\"" icon_state = "harebell" slot_flags = SLOT_HEAD filling_color = "#E6E6FA" @@ -302,6 +328,19 @@ reagents.add_reagent("cocoa", 4 + round((potency / 5), 1)) bitesize = 1 + round(reagents.total_volume / 2, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod + seed = /obj/item/seeds/vanillapodseed + name = "vanilla pod" + desc = "Fattening... Mmmmm... vanilla." + icon_state = "vanillapod" + filling_color = "#FFD700" + +/obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 10), 1)) + reagents.add_reagent("vanilla", 4 + round((potency / 5), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane seed = /obj/item/seeds/sugarcaneseed name = "sugarcane" @@ -353,7 +392,6 @@ ..() reagents.add_reagent("omnizine", 1 + round(potency / 8, 1)) reagents.add_reagent("synaptizine", 1 + round(potency / 8, 1)) - reagents.add_reagent("morphine", 1 + round(potency / 10, 1)) reagents.add_reagent("space_drugs", 1 + round(potency / 10, 1)) reagents.add_reagent("vitamin", 1 + round((potency / 25), 1)) @@ -418,6 +456,19 @@ reagents.add_reagent("vitamin", 1 + round((potency / 25), 1)) bitesize = 1 + round(reagents.total_volume / 2, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/holymelon + seed = /obj/item/seeds/holymelonseed + name = "holymelon" + desc = "The water within this melon has been blessed by some deity that's particularly fond of watermelon." + icon_state = "holymelon" + filling_color = "#FFD700" + dried_type = null + +/obj/item/weapon/reagent_containers/food/snacks/grown/holymelon/add_juice() + if(..()) + reagents.add_reagent("holywater", 1 + round((potency / 6), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin seed = /obj/item/seeds/pumpkinseed name = "pumpkin" @@ -433,12 +484,24 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() - if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/melee/energy)) + if(is_sharp(W)) user.show_message("You carve a face into [src]!", 1) new /obj/item/clothing/head/hardhat/pumpkinhead (user.loc) qdel(src) return +/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin + seed = /obj/item/seeds/blumpkinseed + name = "blumpkin" + desc = "When you're making a mess this blumpkin's there to clean you up." + icon_state = "blumpkin" + filling_color = "#87CEFA" + +/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 6), 1)) + reagents.add_reagent("ammonia", 1 + round((potency / 6), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/ //abstract type seed = /obj/item/seeds/limeseed @@ -488,6 +551,43 @@ reagents.add_reagent("sugar", 1 + round((potency / 5), 1)) bitesize = 1 + round(reagents.total_volume / 2, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato + seed = /obj/item/seeds/sweetpotatoseed + name = "sweet potato" + desc = "It's sweet." + icon_state = "sweetpotato" + +/obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 10), 1)) + reagents.add_reagent("vitamin", 1 + round((potency / 10), 1)) + reagents.add_reagent("sugar", 1 + round((potency / 10), 1)) + bitesize = reagents.total_volume + +/obj/item/weapon/reagent_containers/food/snacks/grown/parsnip + seed = /obj/item/seeds/parsnipseed + name = "parsnip" + desc = "Closely related to carrots." + icon_state = "parsnip" + +/obj/item/weapon/reagent_containers/food/snacks/grown/parsnip/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 20), 1)) + reagents.add_reagent("vitamin", 1 + round((potency / 20), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + +/obj/item/weapon/reagent_containers/food/snacks/grown/redbeet + seed = /obj/item/seeds/redbeetseed + name = "red beet" + desc = "You can't beat red beet." + icon_state = "redbeet" + +/obj/item/weapon/reagent_containers/food/snacks/grown/redbeet/add_juice() + if(..()) + reagents.add_reagent("nutriment", round((potency / 20), 1)) + reagents.add_reagent("vitamin", 1 + round((potency / 20), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + /obj/item/weapon/reagent_containers/food/snacks/grown/banana seed = /obj/item/seeds/bananaseed name = "banana" @@ -514,6 +614,20 @@ user.visible_message("[user] laughs so hard they begin to suffocate!") return (OXYLOSS) +/obj/item/weapon/reagent_containers/food/snacks/grown/mimana + seed = /obj/item/seeds/mimanaseed + name = "mimana" + desc = "It's an excellent prop for a mime." + icon_state = "mimana" + filling_color = "#FFFFEE" + +/obj/item/weapon/reagent_containers/food/snacks/grown/mimana/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 50), 1)) + reagents.add_reagent("nothing", 2 + round((potency / 10), 1)) + reagents.add_reagent("mutetoxin", 2 + round((potency / 10), 1)) + bitesize = 5 + /obj/item/weapon/reagent_containers/food/snacks/grown/chili seed = /obj/item/seeds/chiliseed name = "chili" @@ -806,6 +920,32 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() reagents.add_reagent("nutriment", 1 + round((potency / 25), 1)) bitesize = 1 + round(reagents.total_volume / 2, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/oat + seed = /obj/item/seeds/oatseed + name = "oat" + desc = "Eat oats, do squats." + gender = PLURAL + icon_state = "oat" + filling_color = "#556B2F" + +/obj/item/weapon/reagent_containers/food/snacks/grown/oat/add_juice() + if(..()) + reagents.add_reagent("nutriment", 1 + round((potency / 25), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + +/obj/item/weapon/reagent_containers/food/snacks/grown/rice + seed = /obj/item/seeds/riceseed + name = "rice" + desc = "Rice to meet you." + gender = PLURAL + icon_state = "rice" + filling_color = "#FAFAD2" + +/obj/item/weapon/reagent_containers/food/snacks/grown/rice/add_juice() + if(..()) + reagents.add_reagent("rice", 1 + round((potency / 6), 1)) + bitesize = 1 + round(reagents.total_volume / 2, 1) + /obj/item/weapon/reagent_containers/food/snacks/grown/grass seed = /obj/item/seeds/grassseed name = "grass" diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index fd8c3c37a67..27c3ff1d38e 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -45,7 +45,7 @@ seed = /obj/item/seeds/towermycelium name = "tower-cap log" desc = "It's better than bad, it's good!" - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "logs" force = 5 throwforce = 5 @@ -97,7 +97,7 @@ seed = /obj/item/seeds/sunflowerseed name = "sunflower" desc = "It's beautiful! A certain person might beat you to death if you trample these." - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "sunflower" damtype = "fire" force = 0 @@ -116,7 +116,7 @@ seed = /obj/item/seeds/novaflowerseed name = "novaflower" desc = "These beautiful flowers have a crisp smokey scent, like a summer bonfire." - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "novaflower" damtype = "fire" force = 0 @@ -278,10 +278,17 @@ /obj/item/weapon/grown/bananapeel/specialpeel/Crossed(AM) if(..()) qdel(src) +/obj/item/weapon/grown/bananapeel/mimanapeel + name = "mimana peel" + desc = "A mimana peel." + icon = 'icons/obj/hydroponics/harvest.dmi' + icon_state = "mimana_peel" + + /obj/item/weapon/grown/corncob name = "corn cob" desc = "A reminder of meals gone by." - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "corncob" item_state = "corncob" w_class = 1.0 @@ -291,9 +298,36 @@ /obj/item/weapon/grown/corncob/attackby(obj/item/weapon/grown/W as obj, mob/user as mob, params) ..() - if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/kitchen/utensil/knife)) + if(is_sharp(W)) user << "You use [W] to fashion a pipe out of the corn cob!" new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc) - usr.unEquip(src) + user.unEquip(src) + qdel(src) + return + +/obj/item/weapon/grown/snapcorn + name = "snap corn" + desc = "A cob with snap pops" + icon = 'icons/obj/hydroponics/harvest.dmi' + icon_state = "snapcorn" + item_state = "corncob" + w_class = 1.0 + throwforce = 0 + throw_speed = 3 + throw_range = 7 + var/snap_pops = 1 + +/obj/item/weapon/grown/snapcorn/add_juice() + ..() + snap_pops = max(round(potency/8), 1) + +/obj/item/weapon/grown/snapcorn/attack_self(mob/user as mob) + ..() + user << "You pick up a snap pops from the cob." + var/obj/item/toy/snappop/S = new /obj/item/toy/snappop(user.loc) + if(ishuman(user)) + user.put_in_hands(S) + snap_pops -= 1 + if(!snap_pops) + new /obj/item/weapon/grown/corncob(user.loc) qdel(src) - return \ No newline at end of file diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 98e669c7399..9d31d3f7b00 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -16,7 +16,7 @@ /obj/item/weapon/reagent_containers/spray/weedspray // -- Skie desc = "It's a toxic mixture, in spray form, to kill small weeds." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' name = "weed spray" icon_state = "weedspray" item_state = "spray" @@ -38,7 +38,7 @@ /obj/item/weapon/reagent_containers/spray/pestspray // -- Skie desc = "It's some pest eliminator spray! Do not inhale!" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' name = "pest spray" icon_state = "pestspray" item_state = "spray" diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 8c5c8be36ff..dc57adaae27 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -1,6 +1,6 @@ /obj/machinery/hydroponics name = "hydroponics tray" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "hydrotray" density = 1 anchored = 1 // anchored == 2 means the hoses are screwed in place @@ -28,7 +28,7 @@ /obj/machinery/hydroponics/constructable name = "hydroponics tray" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "hydrotray3" /obj/machinery/hydroponics/constructable/New() @@ -243,29 +243,29 @@ obj/machinery/hydroponics/update_icon() if(planted) if(dead) - overlays += image('icons/obj/hydroponics.dmi', icon_state = "[myseed.species]-dead") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-dead") else if(harvest) if(myseed.plant_type == 2) // Shrooms don't have a -harvest graphic - overlays += image('icons/obj/hydroponics.dmi', icon_state = "[myseed.species]-grow[myseed.growthstages]") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-grow[myseed.growthstages]") else - overlays += image('icons/obj/hydroponics.dmi', icon_state = "[myseed.species]-harvest") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-harvest") else if(age < myseed.maturation) var/t_growthstate = ((age / myseed.maturation) * myseed.growthstages ) // Make sure it won't crap out due to HERPDERP 6 stages only - overlays += image('icons/obj/hydroponics.dmi', icon_state = "[myseed.species]-grow[round(t_growthstate)]") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-grow[round(t_growthstate)]") lastproduce = age //Cheating by putting this here, it means that it isn't instantly ready to harvest else - overlays += image('icons/obj/hydroponics.dmi', icon_state = "[myseed.species]-grow[myseed.growthstages]") // Same + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-grow[myseed.growthstages]") // Same if(waterlevel <= 10) - overlays += image('icons/obj/hydroponics.dmi', icon_state = "over_lowwater3") + overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowwater3") if(nutrilevel <= 2) - overlays += image('icons/obj/hydroponics.dmi', icon_state = "over_lownutri3") + overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lownutri3") if(health <= (myseed.endurance / 2)) - overlays += image('icons/obj/hydroponics.dmi', icon_state = "over_lowhealth3") + overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowhealth3") if(weedlevel >= 5 || pestlevel >= 5 || toxic >= 40) - overlays += image('icons/obj/hydroponics.dmi', icon_state = "over_alert3") + overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_alert3") if(harvest) - overlays += image('icons/obj/hydroponics.dmi', icon_state = "over_harvest3") + overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_harvest3") if(istype(myseed,/obj/item/seeds/glowshroom)) SetLuminosity(round(myseed.potency / 10)) @@ -945,7 +945,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p /////////////////////////////////////////////////////////////////////////////// /obj/machinery/hydroponics/soil //Not actually hydroponics at all! Honk! name = "soil" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "soil" density = 0 use_power = 0 @@ -958,18 +958,18 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p if(planted) if(dead) - overlays += image('icons/obj/hydroponics.dmi', icon_state= "[myseed.species]-dead") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-dead") else if(harvest) if(myseed.plant_type == 2) // Shrooms don't have a -harvest graphic - overlays += image('icons/obj/hydroponics.dmi', icon_state= "[myseed.species]-grow[myseed.growthstages]") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-grow[myseed.growthstages]") else - overlays += image('icons/obj/hydroponics.dmi', icon_state= "[myseed.species]-harvest") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-harvest") else if(age < myseed.maturation) var/t_growthstate = ((age / myseed.maturation) * myseed.growthstages ) - overlays += image('icons/obj/hydroponics.dmi', icon_state= "[myseed.species]-grow[round(t_growthstate)]") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-grow[round(t_growthstate)]") lastproduce = age else - overlays += image('icons/obj/hydroponics.dmi', icon_state= "[myseed.species]-grow[myseed.growthstages]") + overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-grow[myseed.growthstages]") if(istype(myseed,/obj/item/seeds/glowshroom)) SetLuminosity(round(myseed.potency/10)) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index 616d6039a5d..24c611329c0 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -46,7 +46,7 @@ /obj/machinery/seed_extractor name = "seed extractor" desc = "Extracts and bags seeds from produce." - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "sextractor" density = 1 anchored = 1 diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index a821083c60f..219a9fa7b18 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -4,7 +4,7 @@ /obj/item/seeds name = "pack of seeds" - icon = 'icons/obj/seeds.dmi' + icon = 'icons/obj/hydroponics/seeds.dmi' icon_state = "seed" //Unknown plant seed - these shouldn't exist in-game. w_class = 1 //Pocketable. var/plantname = "Plants" //Name of plant when planted. @@ -163,6 +163,7 @@ potency = 10 plant_type = 0 growthstages = 1 + mutatelist = list(/obj/item/seeds/replicapod) /obj/item/seeds/berryseed name = "pack of berry seeds" @@ -213,6 +214,23 @@ potency = 10 plant_type = 0 growthstages = 6 + mutatelist = list(/obj/item/seeds/mimanaseed) + +/obj/item/seeds/mimanaseed + name = "pack of mimana seeds" + desc = "They're seeds that grow into mimana trees. When grown, keep away from mime." + icon_state = "seed-mimana" + species = "mimana" + plantname = "Mimana Tree" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/mimana + lifespan = 50 + endurance = 30 + maturation = 6 + production = 6 + yield = 3 + potency = 10 + plant_type = 0 + growthstages = 6 /obj/item/seeds/eggplantseed name = "pack of eggplant seeds" @@ -350,6 +368,24 @@ oneharvest = 1 potency = 20 growthstages = 3 + mutatelist = list(/obj/item/seeds/snapcornseed) + +/obj/item/seeds/snapcornseed + name = "pack of snapcorn seeds" + desc = "Oh snap!" + icon_state = "seed-snapcorn" + species = "snapcorn" + plantname = "Snapcorn Stalks" + product = /obj/item/weapon/grown/snapcorn + lifespan = 25 + endurance = 15 + maturation = 8 + production = 6 + yield = 3 + plant_type = 0 + oneharvest = 1 + potency = 20 + growthstages = 3 /obj/item/seeds/poppyseed name = "pack of poppy seeds" @@ -367,13 +403,48 @@ plant_type = 0 oneharvest = 1 growthstages = 3 + mutatelist = list(/obj/item/seeds/bluetomatoseed, /obj/item/seeds/bloodtomatoseed) + +/obj/item/seeds/geraniumseed + name = "pack of geranium seeds" + desc = "These seeds grow into geranium." + icon_state = "seed-geranium" + species = "geranium" + plantname = "geranium Plants" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/geranium + lifespan = 25 + endurance = 10 + maturation = 8 + production = 6 + yield = 6 + potency = 20 + plant_type = 0 + oneharvest = 1 + growthstages = 3 + +/obj/item/seeds/lilyseed + name = "pack of lily seeds" + desc = "These seeds grow into lilies." + icon_state = "seed-lily" + species = "lily" + plantname = "Lily Plants" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/lily + lifespan = 25 + endurance = 10 + maturation = 8 + production = 6 + yield = 6 + potency = 20 + plant_type = 0 + oneharvest = 1 + growthstages = 3 /obj/item/seeds/potatoseed name = "pack of potato seeds" desc = "Boil 'em! Mash 'em! Stick 'em in a stew!" icon_state = "seed-potato" species = "potato" - plantname = "Potato-Plants" + plantname = "Potato Plants" product = /obj/item/weapon/reagent_containers/food/snacks/grown/potato lifespan = 30 endurance = 15 @@ -384,6 +455,24 @@ oneharvest = 1 potency = 10 growthstages = 4 + mutatelist = list(/obj/item/seeds/sweetpotatoseed) + +/obj/item/seeds/sweetpotatoseed + name = "pack of sweet potato seeds" + desc = "These seeds grow into sweet potato plants" + icon_state = "seed-sweetpotato" + species = "sweetpotato" + plantname = "Sweet Potato Plants" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato + lifespan = 30 + endurance = 15 + maturation = 10 + production = 1 + yield = 4 + plant_type = 0 + oneharvest = 1 + potency = 10 + growthstages = 4 /obj/item/seeds/icepepperseed name = "pack of chilly pepper seeds" @@ -452,6 +541,41 @@ oneharvest = 1 plant_type = 0 growthstages = 6 + mutatelist = list(/obj/item/seeds/oatseed, /obj/item/seeds/riceseed) + +/obj/item/seeds/oatseed + name = "pack of oat seeds" + desc = "These may, or may not, grow into oat." + icon_state = "seed-oat" + species = "oat" + plantname = "oat Stalks" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/oat + lifespan = 25 + endurance = 15 + maturation = 6 + production = 1 + yield = 4 + potency = 15 + oneharvest = 1 + plant_type = 0 + growthstages = 6 + +/obj/item/seeds/riceseed + name = "pack of rice seeds" + desc = "These may, or may not, grow into rice." + icon_state = "seed-rice" + species = "rice" + plantname = "rice Stalks" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/rice + lifespan = 25 + endurance = 15 + maturation = 6 + production = 1 + yield = 4 + potency = 15 + oneharvest = 1 + plant_type = 0 + growthstages = 6 /obj/item/seeds/carrotseed name = "pack of carrot seeds" @@ -469,6 +593,24 @@ oneharvest = 1 plant_type = 0 growthstages = 3 + mutatelist = list(/obj/item/seeds/parsnipseed) + +/obj/item/seeds/parsnipseed + name = "pack of parsnip seeds" + desc = "These seeds grow into parsnips." + icon_state = "seed-parsnip" + species = "parsnip" + plantname = "Parsnip" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip + lifespan = 25 + endurance = 15 + maturation = 10 + production = 1 + yield = 5 + potency = 10 + oneharvest = 1 + plant_type = 0 + growthstages = 3 /obj/item/seeds/reishimycelium name = "pack of reishi mycelium" @@ -573,6 +715,24 @@ oneharvest = 1 growthstages = 3 plant_type = 2 + mutatelist = list(/obj/item/seeds/steelmycelium) + +/obj/item/seeds/steelmycelium + name = "pack of steel-cap mycelium" + desc = "This mycelium grows into metal rods." + icon_state = "mycelium-steelcap" + species = "steelcap" + plantname = "Steel Caps" + product = /obj/item/stack/rods + lifespan = 80 + endurance = 50 + maturation = 15 + production = 1 + yield = 5 + potency = 50 + oneharvest = 1 + growthstages = 3 + plant_type = 2 /obj/item/seeds/glowshroom name = "pack of glowshroom mycelium" @@ -851,6 +1011,24 @@ potency = 10 plant_type = 0 growthstages = 6 + mutatelist = list(/obj/item/seeds/redbeetseed) + +/obj/item/seeds/redbeetseed + name = "pack of redbeet seeds" + desc = "These seeds grow into red beet producing plants." + icon_state = "seed-redbeet" + species = "redbeet" + plantname = "Red-Beet Plants" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/redbeet + lifespan = 60 + endurance = 50 + maturation = 6 + production = 6 + yield = 6 + oneharvest = 1 + potency = 10 + plant_type = 0 + growthstages = 6 /obj/item/seeds/sugarcaneseed name = "pack of sugarcane seeds" @@ -883,6 +1061,23 @@ potency = 10 plant_type = 0 growthstages = 6 + mutatelist = list(/obj/item/seeds/holymelonseed) + +/obj/item/seeds/holymelonseed + name = "pack of holymelon seeds" + desc = "These seeds grow into holymelon plants." + icon_state = "seed-holymelon" + species = "holymelon" + plantname = "Holy Melon Vines" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/holymelon + lifespan = 50 + endurance = 40 + maturation = 6 + production = 6 + yield = 3 + potency = 10 + plant_type = 0 + growthstages = 6 /obj/item/seeds/pumpkinseed name = "pack of pumpkin seeds" @@ -899,6 +1094,23 @@ potency = 10 plant_type = 0 growthstages = 3 + mutatelist = list(/obj/item/seeds/blumpkinseed) + +/obj/item/seeds/blumpkinseed + name = "pack of blumpkin seeds" + desc = "These seeds grow into blumpkin vines." + icon_state = "seed-blumpkin" + species = "blumpkin" + plantname = "Blumpkin Vines" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin + lifespan = 50 + endurance = 40 + maturation = 6 + production = 6 + yield = 3 + potency = 10 + plant_type = 0 + growthstages = 3 /obj/item/seeds/limeseed name = "pack of lime seeds" @@ -915,6 +1127,7 @@ potency = 15 plant_type = 0 growthstages = 6 + mutatelist = list(/obj/item/seeds/orangeseed) /obj/item/seeds/lemonseed name = "pack of lemon seeds" @@ -965,6 +1178,7 @@ potency = 20 plant_type = 0 growthstages = 6 + mutatelist = list(/obj/item/seeds/limeseed) /obj/item/seeds/poisonberryseed name = "pack of poison-berry seeds" @@ -1049,6 +1263,23 @@ potency = 10 plant_type = 0 growthstages = 5 + mutatelist = list(/obj/item/seeds/vanillapodseed) + +/obj/item/seeds/vanillapodseed + name = "pack of vanilla pod seeds" + desc = "These seeds grow into vanilla trees. They look fattening." + icon_state = "seed-vanillapod" + species = "vanillapod" + plantname = "Vanilla Tree" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod + lifespan = 20 + endurance = 15 + maturation = 5 + production = 5 + yield = 2 + potency = 10 + plant_type = 0 + growthstages = 5 /obj/item/seeds/cherryseed name = "pack of cherry pits" @@ -1066,6 +1297,22 @@ plant_type = 0 growthstages = 5 +/obj/item/seeds/bluecherryseed + name = "pack of blue cherry pits" + desc = "The blue kind of cherries" + icon_state = "seed-bluecherry" + species = "bluecherry" + plantname = "Blue Cherry Tree" + product = /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries + lifespan = 35 + endurance = 35 + maturation = 5 + production = 5 + yield = 3 + potency = 10 + plant_type = 0 + growthstages = 5 + /obj/item/seeds/kudzuseed name = "pack of kudzu seeds" desc = "These seeds grow into a weed that grows incredibly fast." diff --git a/code/modules/mob/dead/observer/login.dm b/code/modules/mob/dead/observer/login.dm index b386c04eb96..df5c83f9b8c 100644 --- a/code/modules/mob/dead/observer/login.dm +++ b/code/modules/mob/dead/observer/login.dm @@ -2,4 +2,10 @@ ..() if(client.prefs.unlock_content) icon_state = client.prefs.ghost_form + if (ghostimage) + ghostimage.icon_state = src.icon_state + + updateghostimages() + + update_interface() \ No newline at end of file diff --git a/code/modules/mob/dead/observer/logout.dm b/code/modules/mob/dead/observer/logout.dm index 11c6c3c834c..f80f0100cfc 100644 --- a/code/modules/mob/dead/observer/logout.dm +++ b/code/modules/mob/dead/observer/logout.dm @@ -1,4 +1,6 @@ /mob/dead/observer/Logout() + if (client) + client.images -= ghost_darkness_images ..() spawn(0) if(src && !key) //we've transferred to another mob. This ghost should be deleted. diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d8e22b4af0b..850f4d63cf7 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1,3 +1,4 @@ +var/list/image/ghost_darkness_images = list() //this is a list of images for things ghosts should still be able to see when they toggle darkness /mob/dead/observer name = "ghost" desc = "It's a g-g-g-g-ghooooost!" //jinkies! @@ -18,6 +19,9 @@ //Note that this is not a reliable way to determine if admins started as observers, since they change mobs a lot. var/atom/movable/following = null var/fun_verbs = 0 + var/image/ghostimage = null //this mobs ghost image, for deleting and stuff + var/ghostvision = 1 //is the ghost able to see things humans can't? + var/seedarkness = 1 /mob/dead/observer/New(mob/body) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF @@ -26,6 +30,9 @@ verbs += /mob/dead/observer/proc/dead_tele stat = DEAD + ghostimage = image(src.icon,src,src.icon_state) + ghost_darkness_images |= ghostimage + updateallghostimages() var/turf/T if(ismob(body)) T = get_turf(body) //Where is the body located? @@ -55,6 +62,14 @@ animate(src, pixel_y = 2, time = 10, loop = -1) + + ..() +/mob/dead/observer/Destroy() + if (ghostimage) + ghost_darkness_images -= ghostimage + qdel(ghostimage) + ghostimage = null + updateallghostimages() ..() /mob/dead/CanPass(atom/movable/mover, turf/target, height=0) @@ -254,14 +269,43 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set hidden = 1 src << "You are dead! You have no mind to store memory!" +/mob/dead/observer/verb/toggle_ghostsee() + set name = "Toggle Ghost Vision" + set desc = "Toggles your ability to see things only ghosts can see, like other ghosts" + set category = "Ghost" + ghostvision = !(ghostvision) + updateghostsight() + usr << "You [(ghostvision?"now":"no longer")] have ghost vision." + /mob/dead/observer/verb/toggle_darkness() set name = "Toggle Darkness" set category = "Ghost" + seedarkness = !(seedarkness) + updateghostsight() - if (see_invisible == SEE_INVISIBLE_OBSERVER_NOLIGHTING) - see_invisible = SEE_INVISIBLE_OBSERVER - else +/mob/dead/observer/proc/updateghostsight() + if (!seedarkness) see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + else + see_invisible = SEE_INVISIBLE_OBSERVER + if (!ghostvision) + see_invisible = SEE_INVISIBLE_LIVING; + updateghostimages() + +/proc/updateallghostimages() + for (var/mob/dead/observer/O in player_list) + O.updateghostimages() + +/mob/dead/observer/proc/updateghostimages() + if (!client) + return + if (seedarkness || !ghostvision) + client.images -= ghost_darkness_images + else + //add images for the 60inv things ghosts can normally see when darkness is enabled so they can see them now + client.images |= ghost_darkness_images + if (ghostimage) + client.images -= ghostimage //remove ourself /mob/dead/observer/verb/possess() set category = "Ghost" diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index fd9af671dab..cba4f274cf5 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -25,10 +25,6 @@ var/heal_rate = 5 var/plasma_rate = 5 - var/oxygen_alert = 0 - var/toxins_alert = 0 - var/fire_alert = 0 - var/heat_protection = 0.5 var/leaping = 0 @@ -94,48 +90,42 @@ // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. if(bodytemperature > 360.15) //Body temperature is too hot. - fire_alert = max(fire_alert, 1) + throw_alert("alien_fire") switch(bodytemperature) if(360 to 400) apply_damage(HEAT_DAMAGE_LEVEL_1, BURN) - fire_alert = max(fire_alert, 2) if(400 to 460) apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) - fire_alert = max(fire_alert, 2) if(460 to INFINITY) if(on_fire) apply_damage(HEAT_DAMAGE_LEVEL_3, BURN) - fire_alert = max(fire_alert, 2) else apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) - fire_alert = max(fire_alert, 2) - return + else + clear_alert("alien_fire") -/mob/living/carbon/alien/handle_mutations_and_radiation() - // Aliens love radiation nom nom nom - if (radiation) - if (radiation > 100) - radiation = 100 +/mob/living/carbon/alien/ex_act(severity, target) + ..() - if (radiation < 0) - radiation = 0 + switch (severity) + if (1.0) + gib() + return - switch(radiation) - if(0 to 50) - radiation-- - if(prob(25)) - adjustToxLoss(1) + if (2.0) + adjustBruteLoss(60) + adjustFireLoss(60) + adjustEarDamage(30,120) - if(50 to 75) - radiation -= 2 - adjustToxLoss(1) - if(prob(5)) - radiation -= 5 + if(3.0) + adjustBruteLoss(30) + if (prob(50)) + Paralyse(1) + adjustEarDamage(15,60) + + updatehealth() - if(75 to 100) - radiation -= 3 - adjustToxLoss(3) /mob/living/carbon/alien/handle_fire()//Aliens on fire code if(..()) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 1b06c1e1766..98067011363 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -15,26 +15,26 @@ real_name = name ..() -/mob/living/carbon/alien/humanoid/hunter/handle_regular_hud_updates() - ..() //-Yvarov - +/mob/living/carbon/alien/humanoid/hunter/handle_hud_icons_health() if (healths) if (stat != 2) switch(health) if(150 to INFINITY) healths.icon_state = "health0" - if(100 to 150) + if(120 to 150) healths.icon_state = "health1" - if(50 to 100) + if(90 to 120) healths.icon_state = "health2" - if(25 to 50) + if(60 to 90) healths.icon_state = "health3" - if(0 to 25) + if(30 to 60) healths.icon_state = "health4" - else + if(0 to 30) healths.icon_state = "health5" + else + healths.icon_state = "health6" else - healths.icon_state = "health6" + healths.icon_state = "health7" /mob/living/carbon/alien/humanoid/hunter/handle_environment() diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index f6d14be8d91..c277695df7c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -17,9 +17,7 @@ verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin) ..() -/mob/living/carbon/alien/humanoid/sentinel/handle_regular_hud_updates() - ..() //-Yvarov - +/mob/living/carbon/alien/humanoid/sentinel/handle_hud_icons_health() if (healths) if (stat != 2) switch(health) @@ -29,14 +27,16 @@ healths.icon_state = "health1" if(75 to 100) healths.icon_state = "health2" - if(25 to 75) + if(50 to 75) healths.icon_state = "health3" - if(0 to 25) + if(25 to 50) healths.icon_state = "health4" - else + if(0 to 25) healths.icon_state = "health5" + else + healths.icon_state = "health6" else - healths.icon_state = "health6" + healths.icon_state = "health7" /mob/living/carbon/alien/humanoid/sentinel/movement_delay() . = ..() diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 6112f31c72d..50f8ed4b4a1 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -28,53 +28,6 @@ if(l_store) l_store.emp_act(severity) ..() -/mob/living/carbon/alien/humanoid/ex_act(severity, target) - ..() - - var/shielded = 0 - - var/b_loss = null - var/f_loss = null - switch (severity) - if (1.0) - gib() - return - - if (2.0) - if (!shielded) - b_loss += 60 - - f_loss += 60 - - adjustEarDamage(30, 120) - - if(3.0) - b_loss += 30 - if (prob(50) && !shielded) - Paralyse(1) - adjustEarDamage(15 , 60) - - adjustBruteLoss(b_loss) - adjustFireLoss(f_loss) - - updatehealth() - -/mob/living/carbon/alien/humanoid/blob_act() - if (stat == 2) - return - var/shielded = 0 - var/damage = null - if (stat != 2) - damage = rand(30,40) - - if(shielded) - damage /= 4 - - show_message("The blob attacks!") - adjustFireLoss(damage) - return - - /mob/living/carbon/alien/humanoid/attack_slime(mob/living/carbon/slime/M as mob) ..() var/damage = rand(5, 35) @@ -139,10 +92,6 @@ return 0 -/mob/living/carbon/alien/humanoid/var/co2overloadtime = null -/mob/living/carbon/alien/humanoid/var/temperature_resistance = T0C+75 - - /mob/living/carbon/alien/humanoid/show_inv(mob/user) user.set_machine(src) var/dat = {" diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 3862e75e7eb..ea2d5f9164b 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -1,11 +1,7 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 /mob/living/carbon/alien/humanoid - oxygen_alert = 0 - toxins_alert = 0 - fire_alert = 0 pass_flags = PASSTABLE - var/temperature_alert = 0 /mob/living/carbon/alien/humanoid/proc/adjust_body_temperature(current, loc_temp, boost) @@ -25,162 +21,4 @@ temp_change = (temperature - current) return temp_change -/mob/living/carbon/alien/humanoid/handle_regular_status_updates() - updatehealth() - - if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP - eye_blind = 1 - silent = 0 - else //ALIVE. LIGHTS ARE ON - if(health < config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) - death() - eye_blind = 1 - stat = DEAD - silent = 0 - return 1 - - //UNCONSCIOUS. NO-ONE IS HOME - if( (getOxyLoss() > 50) || (config.health_threshold_crit >= health) ) - if( health <= 20 && prob(1) ) - spawn(0) - emote("gasp") - if(!reagents.has_reagent("epinephrine")) - adjustOxyLoss(1) - Paralyse(3) - - if(paralysis) - AdjustParalysis(-1) - eye_blind = max(eye_blind, 1) - stat = UNCONSCIOUS - else if(sleeping) - sleeping = max(sleeping-1, 0) - eye_blind = max(eye_blind, 1) - stat = UNCONSCIOUS - if( prob(10) && health ) - spawn(0) - emote("hiss") - //CONSCIOUS - else - stat = CONSCIOUS - - /* What in the living hell is this?*/ - if(move_delay_add > 0) - move_delay_add = max(0, move_delay_add - rand(1, 2)) - - //Eyes - if(disabilities & BLIND) //disabled-blind, doesn't get better on its own - eye_blind = max(eye_blind, 1) - else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) - else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) - - //Ears - if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) - else - adjustEarDamage(-1, (ear_damage < 25 ? -0.05 : 0)) - //deafness, heals slowly over time - //ear damage heals slowly under this threshold. otherwise you'll need earmuffs - - //Other - if(stunned) - AdjustStunned(-1) - if(!stunned) - update_icons() - - if(weakened) - weakened = max(weakened-1,0) - if(!weakened) - update_icons() - - if(stuttering) - stuttering = max(stuttering-1, 0) - - if(silent) - silent = max(silent-1, 0) - - if(druggy) - druggy = max(druggy-1, 0) - return 1 - - -/mob/living/carbon/alien/humanoid/handle_regular_hud_updates() - - if (stat == 2) - sight |= SEE_TURFS - sight |= SEE_MOBS - sight |= SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - else if (stat != 2) - sight |= SEE_MOBS - sight &= ~SEE_TURFS - sight &= ~SEE_OBJS - if(nightvision) - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - else if(!nightvision) - see_in_dark = 4 - see_invisible = 45 - if(see_override) - see_invisible = see_override - - if (healths) - if (stat != 2) - switch(health) - if(100 to INFINITY) - healths.icon_state = "health0" - if(75 to 100) - healths.icon_state = "health1" - if(50 to 75) - healths.icon_state = "health2" - if(25 to 50) - healths.icon_state = "health3" - if(0 to 25) - healths.icon_state = "health4" - else - healths.icon_state = "health5" - else - healths.icon_state = "health6" - - if(pullin) - if(pulling) - pullin.icon_state = "pull" - else - pullin.icon_state = "pull0" - - - if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]" - if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]" - if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]" - //NOTE: the alerts dont reset when youre out of danger. dont blame me, - //blame the person who coded them. Temporary fix added. - - client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - - if ((blind && stat != 2)) - if ((eye_blind)) - blind.layer = 18 - else - blind.layer = 0 - - if (disabilities & NEARSIGHT) - client.screen += global_hud.vimpaired - - if (eye_blurry) - client.screen += global_hud.blurry - - if (druggy) - client.screen += global_hud.druggy - - if (stat != 2) - if (machine) - if (!( machine.check_eye(src) )) - reset_view(null) - else - if(!client.adminobs) - reset_view(null) - - return 1 diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 8473fa5e8e1..a42e347ac21 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -25,26 +25,26 @@ verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin) ..() -/mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates() - ..() //-Yvarov - +/mob/living/carbon/alien/humanoid/queen/handle_hud_icons_health() if (src.healths) if (src.stat != 2) switch(health) if(250 to INFINITY) src.healths.icon_state = "health0" - if(175 to 250) + if(200 to 250) src.healths.icon_state = "health1" - if(100 to 175) + if(150 to 200) src.healths.icon_state = "health2" - if(50 to 100) + if(100 to 150) src.healths.icon_state = "health3" - if(0 to 50) + if(50 to 100) src.healths.icon_state = "health4" - else + if(0 to 50) src.healths.icon_state = "health5" + else + src.healths.icon_state = "health6" else - src.healths.icon_state = "health6" + src.healths.icon_state = "health7" /mob/living/carbon/alien/humanoid/queen/movement_delay() . = ..() diff --git a/code/modules/mob/living/carbon/alien/larva/emote.dm b/code/modules/mob/living/carbon/alien/larva/emote.dm index 1533fa673a8..57c3783ed82 100644 --- a/code/modules/mob/living/carbon/alien/larva/emote.dm +++ b/code/modules/mob/living/carbon/alien/larva/emote.dm @@ -76,9 +76,9 @@ if (!src.restrained()) message = text("[src] signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null)) m_type = 1 -// if ("sit") -// message = "[src] sits down." //Larvan can't sit down, /N -// m_type = 1 + if ("snore") + message = "[src] snores." + m_type = 2 if ("sulk") message = "[src] sulks down sadly." m_type = 1 diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index cf2753460ed..6bdcbb4307d 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -34,60 +34,6 @@ amount_grown = min(amount_grown + 1, max_grown) ..(amount) - -/mob/living/carbon/alien/larva/ex_act(severity, target) - ..() - - var/b_loss = null - var/f_loss = null - switch (severity) - if (1.0) - gib() - return - - if (2.0) - - b_loss += 60 - - f_loss += 60 - - adjustEarDamage(30,120) - - if(3.0) - b_loss += 30 - if (prob(50)) - Paralyse(1) - adjustEarDamage(15,60) - - adjustBruteLoss(b_loss) - adjustFireLoss(f_loss) - - updatehealth() - - - -/mob/living/carbon/alien/larva/blob_act() - if (stat == 2) - return - var/shielded = 0 - - var/damage = null - if (stat != 2) - damage = rand(10,30) - - if(shielded) - damage /= 4 - - //paralysis += 1 - - show_message("The blob attacks you!") - - adjustFireLoss(damage) - - updatehealth() - return - - //can't equip anything /mob/living/carbon/alien/larva/attack_ui(slot_id) return @@ -137,9 +83,6 @@ /mob/living/carbon/alien/larva/restrained() return 0 -/mob/living/carbon/alien/larva/var/co2overloadtime = null -/mob/living/carbon/alien/larva/var/temperature_resistance = T0C+75 - // new damage icon system // now constructs damage icon for each organ from mask * damage field @@ -153,15 +96,6 @@ /mob/living/carbon/alien/larva/start_pulling() return -/* Commented out because it's duplicated in life.dm -/mob/living/carbon/alien/larva/proc/grow() // Larvae can grow into full fledged Xenos if they survive long enough - if(icon_state == "larva_l" && !canmove) // This is a shit death check. It is made of shit and death. Fix later. - return - else - var/mob/living/carbon/alien/humanoid/A = new(loc) - A.key = key - qdel(src) */ - /mob/living/carbon/alien/larva/stripPanelUnequip(obj/item/what, mob/who) src << "You don't have the dexterity to do this!" return diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 1c114151162..bc843e1dc13 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -1,10 +1,11 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 -/mob/living/carbon/alien/larva - var/temperature_alert = 0 - /mob/living/carbon/alien/larva/Life() + set invisibility = 0 + set background = BACKGROUND_ENABLED + if (notransform) + return if(..()) // GROW! if(amount_grown < max_grown) @@ -13,160 +14,26 @@ //some kind of bug in canmove() isn't properly calling update_icons, so this is here as a placeholder update_icons() - -/mob/living/carbon/alien/larva/handle_regular_status_updates() - updatehealth() - - if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP - eye_blind = max(1, eye_blind) - silent = 0 - else //ALIVE. LIGHTS ARE ON - if(health < -25 || !getorgan(/obj/item/organ/brain)) - death() - eye_blind = max(1, eye_blind) - - silent = 0 - return 1 - - //UNCONSCIOUS. NO-ONE IS HOME - if( (getOxyLoss() > 25) || (config.health_threshold_crit >= health) ) - //if( health <= 20 && prob(1) ) - // spawn(0) - // emote("gasp") - if(!reagents.has_reagent("epinephrine")) - adjustOxyLoss(1) - Paralyse(3) - - if(paralysis) - AdjustParalysis(-2) - eye_blind = max(eye_blind, 1) - stat = UNCONSCIOUS - else if(sleeping) - sleeping = max(sleeping-1, 0) - eye_blind = max(eye_blind, 1) - stat = UNCONSCIOUS - if( prob(10) && health ) - spawn(0) - emote("hiss_") - //CONSCIOUS - else - stat = CONSCIOUS - - /* What in the living hell is this?*/ - if(move_delay_add > 0) - move_delay_add = max(0, move_delay_add - rand(1, 2)) - - //Eyes - if(disabilities & BLIND) //disabled-blind, doesn't get better on its own - eye_blind = max(eye_blind, 1) - else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) - else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) - - //Ears - if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) - else - adjustEarDamage(-1, (ear_damage < 25 ? -0.05 : 0)) - //deafness, heals slowly over time - //ear damage heals slowly under this threshold. otherwise you'll need earmuffs - - //Other - if(stunned) - AdjustStunned(-1) - - if(weakened) - weakened = max(weakened-1,0) - - if(stuttering) - stuttering = max(stuttering-1, 0) - - if(silent) - silent = max(silent-1, 0) - - if(druggy) - druggy = max(druggy-1, 0) - return 1 - - -/mob/living/carbon/alien/larva/handle_regular_hud_updates() - - if (stat == 2) - sight |= SEE_TURFS - sight |= SEE_MOBS - sight |= SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - else if (stat != 2) - sight |= SEE_MOBS - sight &= ~SEE_TURFS - sight &= ~SEE_OBJS - if(nightvision) - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - else if(!nightvision) - see_in_dark = 4 - see_invisible = 45 - if(see_override) - see_invisible = see_override +/mob/living/carbon/alien/larva/handle_hud_icons_health() if (healths) if (stat != 2) switch(health) if(25 to INFINITY) healths.icon_state = "health0" - if(19 to 25) + if(20 to 25) healths.icon_state = "health1" - if(13 to 19) + if(15 to 20) healths.icon_state = "health2" - if(7 to 13) + if(10 to 15) healths.icon_state = "health3" - if(0 to 7) + if(5 to 10) healths.icon_state = "health4" - else + if(0 to 5) healths.icon_state = "health5" + else + healths.icon_state = "health6" else - healths.icon_state = "health6" - - if(pullin) - if(pulling) - pullin.icon_state = "pull" - else - pullin.icon_state = "pull0" - - if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]" - if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]" - if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]" - //NOTE: the alerts dont reset when youre out of danger. dont blame me, - //blame the person who coded them. Temporary fix added. - - - client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - - if ((blind && stat != 2)) - if ((eye_blind)) - blind.layer = 18 - else - blind.layer = 0 - - if (disabilities & NEARSIGHT) - client.screen += global_hud.vimpaired - - if (eye_blurry) - client.screen += global_hud.blurry - - if (druggy) - client.screen += global_hud.druggy - - if (stat != 2) - if (machine) - if (!( machine.check_eye(src) )) - reset_view(null) - else - if(!client.adminobs) - reset_view(null) - - return 1 + healths.icon_state = "health7" diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index ac723c4cb26..248333825ae 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -1,95 +1,5 @@ -/mob/living/carbon/alien/Life() - - if(..()) - //First, resolve location and get a breath - if(SSair.times_fired%4==2) - //Only try to take a breath every 4 seconds, unless suffocating - spawn(0) breathe() - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - return 1 - - -/mob/living/carbon/alien/handle_chemicals_in_body() - if(reagents) - reagents.metabolize(src) - - if (drowsyness) - drowsyness-- - eye_blurry = max(2, eye_blurry) - if (prob(5)) - sleeping += 1 - Paralyse(5) - - confused = max(0, confused - 1) - // decrement dizziness counter, clamped to 0 - if(resting) - dizziness = max(0, dizziness - 5) - jitteriness = max(0, jitteriness - 5) - else - dizziness = max(0, dizziness - 1) - jitteriness = max(0, jitteriness - 1) - - updatehealth() - - return //TODO: DEFERRED - -/mob/living/carbon/alien/proc/breathe() - if(reagents) - if(reagents.has_reagent("lexorin")) return - if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return - - var/datum/gas_mixture/environment = loc.return_air() - var/datum/gas_mixture/breath - // HACK NEED CHANGING LATER - if(health <= config.health_threshold_crit) - losebreath++ - - if(losebreath>0) //Suffocating so do not take a breath - losebreath-- - if (prob(75)) //High chance of gasping for air - spawn emote("gasp") - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - else - //First, check for air from internal atmosphere (using an air tank and mask generally) - breath = get_breath_from_internal(BREATH_VOLUME) - - //No breath from internal atmosphere so get breath from location - if(!breath) - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) - else if(istype(loc, /turf/)) - var/breath_moles = environment.total_moles()*BREATH_PERCENTAGE - - breath = loc.remove_air(breath_moles) - - // Handle chem smoke effect -- Doohl - for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) - if(smoke.reagents.total_volume) - smoke.reagents.reaction(src, INGEST) - spawn(5) - if(smoke) - smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs? - break // If they breathe in the nasty stuff once, no need to continue checking - - - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - - handle_breath(breath) - - if(breath) - loc.assume_air(breath) - -/mob/living/carbon/alien/proc/handle_breath(datum/gas_mixture/breath) +/mob/living/carbon/alien/check_breath(datum/gas_mixture/breath) if(status_flags & GODMODE) return @@ -106,26 +16,86 @@ if(Toxins_pp) // Detect toxins in air adjustToxLoss(breath.toxins*250) - toxins_alert = max(toxins_alert, 1) + throw_alert("alien_tox") toxins_used = breath.toxins else - toxins_alert = 0 + clear_alert("alien_tox") //Breathe in toxins and out oxygen breath.toxins -= toxins_used breath.oxygen += toxins_used - if(breath.temperature > (T0C+66)) // Hot air hurts :( - if(prob(20)) - src << "You feel a searing heat in your lungs!" - fire_alert = max(fire_alert, 1) - else - fire_alert = 0 + //BREATH TEMPERATURE + handle_breath_temperature(breath) - //Temporary fixes to the alerts. + +/mob/living/carbon/alien/handle_regular_status_updates() + ..() + //natural reduction of movement delay due to stun. + if(move_delay_add > 0) + move_delay_add = max(0, move_delay_add - rand(1, 2)) return 1 +/mob/living/carbon/alien/handle_vision() + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask) + + if (stat == 2) + sight |= SEE_TURFS + sight |= SEE_MOBS + sight |= SEE_OBJS + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_LEVEL_TWO + else if (stat != 2) + sight |= SEE_MOBS + sight &= ~SEE_TURFS + sight &= ~SEE_OBJS + if(nightvision) + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_MINIMUM + else if(!nightvision) + see_in_dark = 4 + see_invisible = 45 + if(see_override) + see_invisible = see_override + + if ((blind && stat != 2)) + if((eye_blind)) + blind.layer = 18 + else + blind.layer = 0 + + if (disabilities & NEARSIGHT) + client.screen += global_hud.vimpaired + + if (eye_blurry) + client.screen += global_hud.blurry + + if (druggy) + client.screen += global_hud.druggy + + if (stat != 2) + if(machine) + if (!( machine.check_eye(src) )) + reset_view(null) + else + if(!client.adminobs) + reset_view(null) + + +/mob/living/carbon/alien/handle_hud_icons() + + handle_hud_icons_health() + + if(pullin) + if(pulling) + pullin.icon_state = "pull" + else + pullin.icon_state = "pull0" + + + + return 1 diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index e70ea378428..3600cdc4de9 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -28,13 +28,15 @@ /mob/living/carbon/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up. return - -/mob/living/carbon/brain/Move(var/atom/newloc) + +/mob/living/carbon/brain/blob_act() + return + +/mob/living/carbon/brain/on_forcemove(var/atom/newloc) if(container) - container.Move(newloc) + container.loc = newloc else //something went very wrong. - CRASH("Brainmob without container") - . = ..() + CRASH("Brainmob without container.") loc = container /mob/living/carbon/brain/UnarmedAttack(var/atom/A)//Stops runtimes due to attack_animal being the default diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index e5237d1e774..0f1ef27541f 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -1,40 +1,25 @@ +/mob/living/carbon/brain/handle_breathing() + return + /mob/living/carbon/brain/handle_mutations_and_radiation() if (radiation) if (radiation > 100) - radiation = 100 if(!container)//If it's not in an MMI src << "You feel weak." else//Fluff-wise, since the brain can't detect anything itself, the MMI handles thing like that src << "STATUS: CRITICAL AMOUNTS OF RADIATION DETECTED." - if (radiation < 0) - radiation = 0 - switch(radiation) - if(0 to 50) - radiation-- - if(prob(25)) - adjustToxLoss(1) - updatehealth() if(50 to 75) - radiation -= 2 - adjustToxLoss(1) if(prob(5)) - radiation -= 5 if(!container) src << "You feel weak." else src << "STATUS: DANGEROUS LEVELS OF RADIATION DETECTED." - updatehealth() - - if(75 to 100) - radiation -= 3 - adjustToxLoss(3) - updatehealth() - + ..() /mob/living/carbon/brain/handle_environment(datum/gas_mixture/environment) if(!environment) @@ -61,193 +46,92 @@ if(exposed_temperature > bodytemperature) var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0) - //adjustFireLoss(2.5*discomfort) - //adjustFireLoss(5.0*discomfort) adjustFireLoss(20.0*discomfort) else var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0) - //adjustFireLoss(2.5*discomfort) adjustFireLoss(5.0*discomfort) - -/mob/living/carbon/brain/handle_chemicals_in_body() - - if(reagents) reagents.metabolize(src) - - confused = max(0, confused - 1) - // decrement dizziness counter, clamped to 0 - if(resting) - dizziness = max(0, dizziness - 5) - else - dizziness = max(0, dizziness - 1) - - updatehealth() - - return //TODO: DEFERRED - - /mob/living/carbon/brain/handle_regular_status_updates() //TODO: comment out the unused bits >_> - updatehealth() - if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP + if(stat == DEAD) eye_blind = max(eye_blind, 1) silent = 0 - else //ALIVE. LIGHTS ARE ON + else + updatehealth() if( !container && (health < config.health_threshold_dead || ((world.time - timeofhostdeath) > config.revival_brain_life)) ) death() eye_blind = max(eye_blind, 1) silent = 0 return 1 + if(health < config.health_threshold_crit) + stat = UNCONSCIOUS + eye_blind = max(eye_blind, 1) + else + stat = CONSCIOUS - //Handling EMP effect in the Life(), it's made VERY simply, and has some additional effects handled elsewhere - if(emp_damage) //This is pretty much a damage type only used by MMIs, dished out by the emp_act - if(!(container && istype(container, /obj/item/device/mmi))) - emp_damage = 0 + //Handling EMP effect in the Life(), it's made VERY simply, and has some additional effects handled elsewhere + if(emp_damage) //This is pretty much a damage type only used by MMIs, dished out by the emp_act + if(!(container && istype(container, /obj/item/device/mmi))) + emp_damage = 0 + else + emp_damage = round(emp_damage,1)//Let's have some nice numbers to work with + switch(emp_damage) + if(31 to INFINITY) + emp_damage = 30//Let's not overdo it + if(21 to 30)//High level of EMP damage, unable to see, hear, or speak + eye_blind = max(eye_blind, 1) + setEarDamage(-1,1) + silent = 1 + if(!alert)//Sounds an alarm, but only once per 'level' + emote("alarm") + src << "Major electrical distruption detected: System rebooting." + alert = 1 + if(prob(75)) + emp_damage -= 1 + if(20) + alert = 0 + eye_blind = 0 + setEarDamage(-1,0) + silent = 0 + emp_damage -= 1 + if(11 to 19)//Moderate level of EMP damage, resulting in nearsightedness and ear damage + eye_blurry = 1 + setEarDamage(1,-1) + if(!alert) + emote("alert") + src << "Primary systems are now online." + alert = 1 + if(prob(50)) + emp_damage -= 1 + if(10) + alert = 0 + eye_blurry = 0 + setEarDamage(0,-1) + emp_damage -= 1 + if(2 to 9)//Low level of EMP damage, has few effects(handled elsewhere) + if(!alert) + emote("notice") + src << "System reboot nearly complete." + alert = 1 + if(prob(25)) + emp_damage -= 1 + if(1) + alert = 0 + src << "All systems restored." + emp_damage -= 1 else - emp_damage = round(emp_damage,1)//Let's have some nice numbers to work with - switch(emp_damage) - if(31 to INFINITY) - emp_damage = 30//Let's not overdo it - if(21 to 30)//High level of EMP damage, unable to see, hear, or speak - eye_blind = max(eye_blind, 1) - setEarDamage(-1,1) - silent = 1 - if(!alert)//Sounds an alarm, but only once per 'level' - emote("alarm") - src << "Major electrical distruption detected: System rebooting." - alert = 1 - if(prob(75)) - emp_damage -= 1 - if(20) - alert = 0 - eye_blind = 0 - setEarDamage(-1,0) - silent = 0 - emp_damage -= 1 - if(11 to 19)//Moderate level of EMP damage, resulting in nearsightedness and ear damage - eye_blurry = 1 - setEarDamage(1,-1) - if(!alert) - emote("alert") - src << "Primary systems are now online." - alert = 1 - if(prob(50)) - emp_damage -= 1 - if(10) - alert = 0 - eye_blurry = 0 - setEarDamage(0,-1) - emp_damage -= 1 - if(2 to 9)//Low level of EMP damage, has few effects(handled elsewhere) - if(!alert) - emote("notice") - src << "System reboot nearly complete." - alert = 1 - if(prob(25)) - emp_damage -= 1 - if(1) - alert = 0 - src << "All systems restored." - emp_damage -= 1 + eye_blind = 0 - //Other - /* commented out because none of these should happen - if(stunned) - AdjustStunned(-1) - - if(weakened) - weakened = max(weakened-1,0) - - if(stuttering) - stuttering = max(stuttering-1, 0) - - if(silent) - silent = max(silent-1, 0) - - if(druggy) - druggy = max(druggy-1, 0) - */ return 1 /mob/living/carbon/brain/handle_regular_hud_updates() - if (stat == 2) - sight |= SEE_TURFS - sight |= SEE_MOBS - sight |= SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - else if (stat != 2) - sight &= ~SEE_TURFS - sight &= ~SEE_MOBS - sight &= ~SEE_OBJS - see_in_dark = 2 - see_invisible = SEE_INVISIBLE_LIVING - if(see_override) - see_invisible = see_override + handle_vision() - if (healths) - if (stat != 2) - switch(health) - if(100 to INFINITY) - healths.icon_state = "health0" - if(80 to 100) - healths.icon_state = "health1" - if(60 to 80) - healths.icon_state = "health2" - if(40 to 60) - healths.icon_state = "health3" - if(20 to 40) - healths.icon_state = "health4" - if(0 to 20) - healths.icon_state = "health5" - else - healths.icon_state = "health6" - else - healths.icon_state = "health7" - - if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]" - - client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - - if ((blind && stat != 2)) - if (eye_blind) - blind.layer = 18 - else - blind.layer = 0 - - if (disabilities & NEARSIGHT) - client.screen += global_hud.vimpaired - - if (eye_blurry) - client.screen += global_hud.blurry - - if (druggy) - client.screen += global_hud.druggy - - if (stat != 2) - if (machine) - if (!( machine.check_eye(src) )) - reset_view(null) - else - if(!client.adminobs) - reset_view(null) + handle_hud_icons_health() return 1 - -/*/mob/living/carbon/brain/emp_act(severity) - if(!(container && istype(container, /obj/item/device/mmi))) - return - else - switch(severity) - if(1) - emp_damage += rand(20,30) - if(2) - emp_damage += rand(10,20) - if(3) - emp_damage += rand(0,10) - ..()*/ diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 91ec145e815..6733b7be1b2 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -384,4 +384,11 @@ var/const/GALOSHES_DONT_HELP = 8 /mob/living/carbon/revive() heart_attack = 0 ..() - return \ No newline at end of file + return + +/mob/living/carbon/blob_act() + if (stat == DEAD) + return + else + show_message("The blob attacks!") + adjustBruteLoss(10) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 65ebbcff2d0..7904c7cfb0f 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -15,4 +15,9 @@ var/obj/item/weapon/tank/internal = null var/datum/dna/dna = null//Carbon - var/heart_attack = 0 \ No newline at end of file + var/heart_attack = 0 + + var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. + + var/co2overloadtime = null + var/temperature_resistance = T0C+75 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 61ad8e31b36..6e546dfaabf 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -78,7 +78,6 @@ /mob/living/carbon/human/ex_act(severity, ex_target) - var/shielded = 0 var/b_loss = null var/f_loss = null switch (severity) @@ -95,8 +94,7 @@ //user.throw_at(target, 200, 4) if (2.0) - if (!shielded) - b_loss += 60 + b_loss += 60 f_loss += 60 @@ -106,7 +104,7 @@ if (!istype(ears, /obj/item/clothing/ears/earmuffs)) adjustEarDamage(30, 120) - if (prob(70) && !shielded) + if (prob(70)) Paralyse(10) if(3.0) @@ -115,7 +113,7 @@ b_loss = b_loss/2 if (!istype(ears, /obj/item/clothing/ears/earmuffs)) adjustEarDamage(15,60) - if (prob(50) && !shielded) + if (prob(50)) Paralyse(10) var/update = 0 @@ -138,17 +136,13 @@ ..() /mob/living/carbon/human/blob_act() - if(stat == 2) return + if(stat == DEAD) return show_message(" The blob attacks you!") var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone)) apply_damage(5, BRUTE, affecting, run_armor_check(affecting, "melee")) return -/mob/living/carbon/human/var/co2overloadtime = null -/mob/living/carbon/human/var/temperature_resistance = T0C+75 - - /mob/living/carbon/human/show_inv(mob/user) user.set_machine(src) var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask) @@ -717,3 +711,19 @@ H.w_uniform.add_fingerprint(M) ..() + + +/mob/living/carbon/human/generateStaticOverlay() + var/image/staticOverlay = image(icon('icons/effects/effects.dmi', "static"), loc = src) + staticOverlay.override = 1 + staticOverlays["static"] = staticOverlay + + staticOverlay = image(icon('icons/effects/effects.dmi', "blank"), loc = src) + staticOverlay.override = 1 + staticOverlays["blank"] = staticOverlay + + staticOverlay = getLetterImage(src, "H", 1) + staticOverlay.override = 1 + staticOverlays["letter"] = staticOverlay + + diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b489cb31652..0748e9d3747 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -179,13 +179,14 @@ emp_act switch(hit_area) if("head") //Harder to score a stun but if you do it lasts a bit longer - if(stat == CONSCIOUS && prob(I.force)) - visible_message("[src] has been knocked unconscious!", \ - "[src] has been knocked unconscious!") - apply_effect(20, PARALYZE, armor) - if(src != user && I.damtype == BRUTE) + if(stat == CONSCIOUS) + if(prob(I.force)) + visible_message("[src] has been knocked unconscious!", \ + "[src] has been knocked unconscious!") + apply_effect(20, PARALYZE, armor) + if(prob(I.force + ((100 - src.health)/2)) && src != user && I.damtype == BRUTE) ticker.mode.remove_revolutionary(mind) - ticker.mode.remove_gangster(mind) + ticker.mode.remove_gangster(mind, exclude_bosses=1) if(bloody) //Apply blood if(wear_mask) wear_mask.add_blood(src) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 6bd44a4115d..efcec3c28ee 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -44,8 +44,6 @@ var/special_voice = "" // For changing our voice. Used by a symptom. - var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. - var/xylophone = 0 //For the spoooooooky xylophone cooldown var/gender_ambiguous = 0 //if something goes wrong during gender reassignment this generates a line in examine diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ccce7f74c00..28870b142f0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -6,8 +6,6 @@ #define TINT_IMPAIR 2 //Threshold of tint level to apply weld mask overlay #define TINT_BLIND 3 //Threshold of tint level to obscure vision fully -#define HUMAN_MAX_OXYLOSS 3 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it. - #define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point #define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point #define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire @@ -26,31 +24,20 @@ #define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point /mob/living/carbon/human - var/oxygen_alert = 0 - var/toxins_alert = 0 - var/fire_alert = 0 - var/pressure_alert = 0 - var/temperature_alert = 0 var/tinttotal = 0 // Total level of visualy impairing items /mob/living/carbon/human/Life() + set invisibility = 0 + set background = BACKGROUND_ENABLED + + if (notransform) + return - fire_alert = 0 //Reset this here, because both breathe() and handle_environment() have a chance to set it. tinttotal = tintcheck() //here as both hud updates and status updates call it if(..()) - if(dna) - for(var/datum/mutation/human/HM in dna.mutations) - HM.on_life(src) - if(SSmob.times_fired%4==2 || failed_last_breath) //First, resolve location and get a breath - breathe() //Only try to take a breath every 4 ticks, unless suffocating - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - //Stuff jammed in your limbs hurts handle_embedded_objects() @@ -79,7 +66,19 @@ /mob/living/carbon/human/handle_disabilities() - if (getBrainLoss() >= 60 && stat != 2) + ..() + //Eyes + if(!(disabilities & BLIND)) + if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster + eye_blurry = max(eye_blurry-2, 0) + + //Ears + if(!(disabilities & DEAF)) + if(istype(ears, /obj/item/clothing/ears/earmuffs)) // earmuffs rest your ears, healing ear_deaf faster and ear_damage, but keeping you deaf. + setEarDamage(max(ear_damage-0.10, 0), max(ear_deaf - 1, 1)) + + + if (getBrainLoss() >= 60 && stat != DEAD) if (prob(3)) switch(pick(1,2,3)) if(1) @@ -92,9 +91,10 @@ /mob/living/carbon/human/handle_mutations_and_radiation() if(dna) - dna.species.handle_mutations_and_radiation(src) + if(dna.species.handle_mutations_and_radiation(src)) + ..() -/mob/living/carbon/human/proc/breathe() +/mob/living/carbon/human/breathe() if(dna) dna.species.breathe(src) @@ -140,27 +140,8 @@ dna.species.ExtinguishMob(src) else ..() - //END FIRE CODE - /* -/mob/living/carbon/human/proc/adjust_body_temperature(current, loc_temp, boost) - var/temperature = current - var/difference = abs(current-loc_temp) //get difference - var/increments// = difference/10 //find how many increments apart they are - if(difference > 50) - increments = difference/5 - else - increments = difference/10 - var/change = increments*boost // Get the amount to change by (x per increment) - var/temp_change - if(current < loc_temp) - temperature = min(loc_temp, temperature+change) - else if(current > loc_temp) - temperature = max(loc_temp, temperature-change) - temp_change = (temperature - current) - return temp_change -*/ /mob/living/carbon/human/proc/stabilize_temperature_from_calories() switch(bodytemperature) @@ -297,65 +278,9 @@ return min(1,thermal_protection) -/* -/mob/living/carbon/human/proc/add_fire_protection(var/temp) - var/fire_prot = 0 - if(head) - if(head.protective_temperature > temp) - fire_prot += (head.protective_temperature/10) - if(wear_mask) - if(wear_mask.protective_temperature > temp) - fire_prot += (wear_mask.protective_temperature/10) - if(glasses) - if(glasses.protective_temperature > temp) - fire_prot += (glasses.protective_temperature/10) - if(ears) - if(ears.protective_temperature > temp) - fire_prot += (ears.protective_temperature/10) - if(wear_suit) - if(wear_suit.protective_temperature > temp) - fire_prot += (wear_suit.protective_temperature/10) - if(w_uniform) - if(w_uniform.protective_temperature > temp) - fire_prot += (w_uniform.protective_temperature/10) - if(gloves) - if(gloves.protective_temperature > temp) - fire_prot += (gloves.protective_temperature/10) - if(shoes) - if(shoes.protective_temperature > temp) - fire_prot += (shoes.protective_temperature/10) - - return fire_prot - -/mob/living/carbon/human/proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) - if(nodamage) - return - //world <<"body_part = [body_part], exposed_temperature = [exposed_temperature], exposed_intensity = [exposed_intensity]" - var/discomfort = min(abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0) - - if(exposed_temperature > bodytemperature) - discomfort *= 4 - - if(mutantrace == "plant") - discomfort *= TEMPERATURE_DAMAGE_COEFFICIENT * 2 //I don't like magic numbers. I'll make mutantraces a datum with vars sometime later. -- Urist - else - discomfort *= TEMPERATURE_DAMAGE_COEFFICIENT //Dangercon 2011 - now with less magic numbers! - //world <<"[discomfort]" - - switch(body_part) - if(HEAD) - apply_damage(2.5*discomfort, BURN, "head") - if(CHEST) - apply_damage(2.5*discomfort, BURN, "chest") - if(LEGS) - apply_damage(0.6*discomfort, BURN, "l_leg") - apply_damage(0.6*discomfort, BURN, "r_leg") - if(ARMS) - apply_damage(0.4*discomfort, BURN, "l_arm") - apply_damage(0.4*discomfort, BURN, "r_arm") -*/ /mob/living/carbon/human/handle_chemicals_in_body() + ..() if(dna) dna.species.handle_chemicals_in_body(src) @@ -478,104 +403,20 @@ druggy = max(druggy-1, 0) CheckStamina() +/mob/living/carbon/human/handle_vision() + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask) + if(machine) + if(!machine.check_eye(src)) reset_view(null) + else + if(!client.adminobs) reset_view(null) if(dna) dna.species.handle_vision(src) - return 1 - -/mob/living/carbon/human/handle_regular_hud_updates() - if(!client) return 0 - - client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask) - - update_action_buttons() - - if(damageoverlay.overlays) - damageoverlay.overlays = list() - - if(stat == UNCONSCIOUS) - //Critical damage passage overlay - if(health <= config.health_threshold_crit) - var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage0") - I.blend_mode = BLEND_OVERLAY //damageoverlay is BLEND_MULTIPLY - switch(health) - if(-20 to -10) - I.icon_state = "passage1" - if(-30 to -20) - I.icon_state = "passage2" - if(-40 to -30) - I.icon_state = "passage3" - if(-50 to -40) - I.icon_state = "passage4" - if(-60 to -50) - I.icon_state = "passage5" - if(-70 to -60) - I.icon_state = "passage6" - if(-80 to -70) - I.icon_state = "passage7" - if(-90 to -80) - I.icon_state = "passage8" - if(-95 to -90) - I.icon_state = "passage9" - if(-INFINITY to -95) - I.icon_state = "passage10" - damageoverlay.overlays += I - else - //Oxygen damage overlay - if(oxyloss) - var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay0") - switch(oxyloss) - if(10 to 20) - I.icon_state = "oxydamageoverlay1" - if(20 to 25) - I.icon_state = "oxydamageoverlay2" - if(25 to 30) - I.icon_state = "oxydamageoverlay3" - if(30 to 35) - I.icon_state = "oxydamageoverlay4" - if(35 to 40) - I.icon_state = "oxydamageoverlay5" - if(40 to 45) - I.icon_state = "oxydamageoverlay6" - if(45 to INFINITY) - I.icon_state = "oxydamageoverlay7" - damageoverlay.overlays += I - - //Fire and Brute damage overlay (BSSR) - var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp - damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. - if(hurtdamage) - var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay0") - I.blend_mode = BLEND_ADD - switch(hurtdamage) - if(5 to 15) - I.icon_state = "brutedamageoverlay1" - if(15 to 30) - I.icon_state = "brutedamageoverlay2" - if(30 to 45) - I.icon_state = "brutedamageoverlay3" - if(45 to 70) - I.icon_state = "brutedamageoverlay4" - if(70 to 85) - I.icon_state = "brutedamageoverlay5" - if(85 to INFINITY) - I.icon_state = "brutedamageoverlay6" - var/image/black = image(I.icon, I.icon_state) //BLEND_ADD doesn't let us darken, so this is just to blacken the edge of the screen - black.color = "#170000" - damageoverlay.overlays += I - damageoverlay.overlays += black - - if(machine) - if(!machine.check_eye(src)) reset_view(null) - else - if(!client.adminobs) reset_view(null) - +/mob/living/carbon/human/handle_hud_icons() if(dna) dna.species.handle_hud_icons(src) - return 1 - /mob/living/carbon/human/handle_random_events() // Puke if toxloss is too high if(!stat) @@ -600,10 +441,25 @@ /mob/living/carbon/human/handle_changeling() - if(mind && mind.changeling) - mind.changeling.regenerate() - + if(mind) + if(mind.changeling) + mind.changeling.regenerate() + hud_used.lingchemdisplay.invisibility = 0 + hud_used.lingchemdisplay.maptext = "
[mind.changeling.chem_charges]
" + else + hud_used.lingchemdisplay.invisibility = 101 +/mob/living/carbon/human/has_smoke_protection() + if(wear_mask) + if(wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) + . = 1 + if(glasses) + if(glasses.flags & BLOCK_GAS_SMOKE_EFFECT) + . = 1 + if(head) + if(head.flags & BLOCK_GAS_SMOKE_EFFECT) + . = 1 + return . /mob/living/carbon/human/proc/handle_embedded_objects() for(var/obj/item/organ/limb/L in organs) for(var/obj/item/I in L.embedded_objects) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index d7342c7843b..28a4bd30768 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -449,7 +449,6 @@ //////// /datum/species/proc/handle_chemicals_in_body(var/mob/living/carbon/human/H) - if(H.reagents) H.reagents.metabolize(H) //The fucking FAT mutation is the dumbest shit ever. It makes the code so difficult to work with if(H.disabilities & FAT) @@ -501,22 +500,6 @@ H << "You no longer feel vigorous." H.metabolism_efficiency = 1 - if (H.drowsyness) - H.drowsyness-- - H.eye_blurry = max(2, H.eye_blurry) - if (prob(5)) - H.sleeping += 1 - H.Paralyse(5) - - H.confused = max(0, H.confused - 1) - // decrement dizziness counter, clamped to 0 - if(H.resting) - H.dizziness = max(0, H.dizziness - 15) - H.jitteriness = max(0, H.jitteriness - 15) - else - H.dizziness = max(0, H.dizziness - 3) - H.jitteriness = max(0, H.jitteriness - 3) - H.updatehealth() return @@ -535,13 +518,6 @@ if(H.seer) H.see_invisible = SEE_INVISIBLE_OBSERVER - if(H.mind) - if(H.mind.changeling) - H.hud_used.lingchemdisplay.invisibility = 0 - H.hud_used.lingchemdisplay.maptext = "
[H.mind.changeling.chem_charges]
" - else - H.hud_used.lingchemdisplay.invisibility = 101 - if(H.glasses) if(istype(H.glasses, /obj/item/clothing/glasses)) var/obj/item/clothing/glasses/G = H.glasses @@ -622,23 +598,15 @@ if(icon_num) H.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[L.name][icon_num]") - if(H.nutrition_icon) - switch(H.nutrition) - if(NUTRITION_LEVEL_FULL to INFINITY) - H.nutrition_icon.icon_state = "nutritionFAT" - if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL) - H.nutrition_icon.icon_state = "nutrition0" - if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED) - H.nutrition_icon.icon_state = "nutrition1" - if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) - H.nutrition_icon.icon_state = "nutrition2" - if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) - H.nutrition_icon.icon_state = "nutrition3" - else - H.nutrition_icon.icon_state = "nutrition4" - - if(H.pressure) - H.pressure.icon_state = "pressure[H.pressure_alert]" + switch(H.nutrition) + if(NUTRITION_LEVEL_FULL to INFINITY) + H.throw_alert("nutrition","fat") + if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL) + H.clear_alert("nutrition") + if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) + H.throw_alert("nutrition","hungry") + else + H.throw_alert("nutrition","starving") if(H.pullin) if(H.pulling) H.pullin.icon_state = "pull" @@ -646,59 +614,23 @@ // if(rest) //Not used with new UI // if(resting || lying || sleeping) rest.icon_state = "rest1" // else rest.icon_state = "rest0" - if(H.toxin) - if(H.hal_screwyhud == 4 || H.toxins_alert) H.toxin.icon_state = "tox1" - else H.toxin.icon_state = "tox0" - if(H.oxygen) - if(H.hal_screwyhud == 3 || H.oxygen_alert) H.oxygen.icon_state = "oxy1" - else H.oxygen.icon_state = "oxy0" - if(H.fire) - if(H.fire_alert) H.fire.icon_state = "fire[H.fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. - else H.fire.icon_state = "fire0" - if(H.bodytemp) - if(!(HEATRES in specflags)) - switch(H.bodytemperature) //310.055 optimal body temp - if(370 to INFINITY) H.bodytemp.icon_state = "temp4" - if(350 to 370) H.bodytemp.icon_state = "temp3" - if(335 to 350) H.bodytemp.icon_state = "temp2" - switch(H.bodytemperature) - if(320 to 335) H.bodytemp.icon_state = "temp1" - if(300 to 320) H.bodytemp.icon_state = "temp0" - if(295 to 300) H.bodytemp.icon_state = "temp-1" - if(!(COLDRES in specflags)) - switch(H.bodytemperature) - if(280 to 295) H.bodytemp.icon_state = "temp-2" - if(260 to 280) H.bodytemp.icon_state = "temp-3" - if(-INFINITY to 260) H.bodytemp.icon_state = "temp-4" return 1 /datum/species/proc/handle_mutations_and_radiation(var/mob/living/carbon/human/H) - if (H.radiation && !(RADIMMUNE in specflags)) - if (H.radiation > 100) - H.radiation = 100 - H.Weaken(10) - H << "You feel weak." - H.emote("collapse") + if(!(RADIMMUNE in specflags)) + if(H.radiation) + if (H.radiation > 100) + H.Weaken(10) + H << "You feel weak." + H.emote("collapse") - if (H.radiation < 0) - H.radiation = 0 - - else switch(H.radiation) - if(0 to 50) - H.radiation-- - if(prob(25)) - H.adjustToxLoss(1) - H.updatehealth() if(50 to 75) - H.radiation -= 2 - H.adjustToxLoss(1) if(prob(5)) - H.radiation -= 5 H.Weaken(3) H << "You feel weak." H.emote("collapse") @@ -709,17 +641,14 @@ H.facial_hair_style = "Shaved" H.hair_style = "Bald" H.update_hair() - H.updatehealth() if(75 to 100) - H.radiation -= 3 - H.adjustToxLoss(3) if(prob(1)) H << "You mutate!" randmutb(H) domutcheck(H,null) H.emote("gasp") - H.updatehealth() + return 1 //////////////// // MOVE SPEED // @@ -964,13 +893,14 @@ switch(hit_area) if("head") //Harder to score a stun but if you do it lasts a bit longer - if(H.stat == CONSCIOUS && prob(I.force) && armor < 50) - H.visible_message("[H] has been knocked unconscious!", \ - "[H] has been knocked unconscious!") - H.apply_effect(20, PARALYZE, armor) - if(H != user && I.damtype == BRUTE) + if(H.stat == CONSCIOUS && armor < 50) + if(prob(I.force)) + H.visible_message("[H] has been knocked unconscious!", \ + "[H] has been knocked unconscious!") + H.apply_effect(20, PARALYZE, armor) + if(prob(I.force + ((100 - H.health)/2)) && H != user && I.damtype == BRUTE) ticker.mode.remove_revolutionary(H.mind) - ticker.mode.remove_gangster(H.mind) + ticker.mode.remove_gangster(H.mind, exclude_bosses=1) if(bloody) //Apply blood if(H.wear_mask) @@ -1105,20 +1035,9 @@ breath_moles = environment.total_moles()*BREATH_PERCENTAGE breath = H.loc.remove_air(breath_moles) + // Handle chem smoke effect -- Doohl - var/block = 0 - if(H.wear_mask) - if(H.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) - block = 1 - if(H.glasses) - if(H.glasses.flags & BLOCK_GAS_SMOKE_EFFECT) - block = 1 - if(H.head) - if(H.head.flags & BLOCK_GAS_SMOKE_EFFECT) - block = 1 - - if(!block) - + if(!H.has_smoke_protection()) for(var/obj/effect/effect/chem_smoke/smoke in view(1, H)) if(smoke.reagents.total_volume) smoke.reagents.reaction(H, INGEST) @@ -1132,12 +1051,12 @@ var/obj/location_as_object = H.loc location_as_object.handle_internal_lifeform(H, 0) - handle_breath(breath, H) + check_breath(breath, H) if(breath) H.loc.assume_air(breath) -/datum/species/proc/handle_breath(datum/gas_mixture/breath, var/mob/living/carbon/human/H) +/datum/species/proc/check_breath(datum/gas_mixture/breath, var/mob/living/carbon/human/H) if((H.status_flags & GODMODE)) return @@ -1152,7 +1071,7 @@ H.adjustOxyLoss(HUMAN_CRIT_MAX_OXYLOSS) H.failed_last_breath = 1 - H.oxygen_alert = max(H.oxygen_alert, 1) + H.throw_alert("oxy") return 0 @@ -1185,18 +1104,12 @@ else H.adjustOxyLoss(HUMAN_MAX_OXYLOSS) H.failed_last_breath = 1 - H.oxygen_alert = max(H.oxygen_alert, 1) - /*else if (O2_pp > safe_oxygen_max) // Too much oxygen (commented this out for now, I'll deal with pressure damage elsewhere I suppose) - spawn(0) emote("cough") - var/ratio = O2_pp/safe_oxygen_max - oxyloss += 5*ratio - oxygen_used = breath.oxygen*ratio/6 - oxygen_alert = max(oxygen_alert, 1)*/ + H.throw_alert("oxy") else // We're in safe limits H.failed_last_breath = 0 H.adjustOxyLoss(-5) oxygen_used = breath.oxygen/6 - H.oxygen_alert = 0 + H.clear_alert("oxy") breath.oxygen -= oxygen_used breath.carbon_dioxide += oxygen_used @@ -1221,9 +1134,9 @@ //adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) //Limit amount of damage toxin exposure can do per second if(H.reagents) H.reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) - H.toxins_alert = max(H.toxins_alert, 1) + H.throw_alert("tox_in_air") else - H.toxins_alert = 0 + H.clear_alert("tox_in_air") if(breath.trace_gases.len && !(NOBREATH in specflags)) // If there's some other shit in the air lets deal with it here. for(var/datum/gas/sleeping_agent/SA in breath.trace_gases) @@ -1236,45 +1149,30 @@ if(prob(20)) spawn(0) H.emote(pick("giggle", "laugh")) - handle_temperature(breath, H) + handle_breath_temperature(breath, H) return 1 -/datum/species/proc/handle_temperature(datum/gas_mixture/breath, var/mob/living/carbon/human/H) // called by human/life, handles temperatures +/datum/species/proc/handle_breath_temperature(datum/gas_mixture/breath, var/mob/living/carbon/human/H) // called by human/life, handles temperatures if( (abs(310.15 - breath.temperature) > 50) && !(mutations_list[COLDRES] in H.dna.mutations) && !(COLDRES in specflags)) // Hot air hurts :( - if(breath.temperature < 260.15) - if(prob(20)) - H << "You feel your face freezing and an icicle forming in your lungs!" - else if(breath.temperature > 360.15 && !(HEATRES in specflags)) - if(prob(20)) - H << "You feel your face burning and a searing heat in your lungs!" if(!(mutations_list[COLDRES] in H.dna.mutations)) // COLD DAMAGE switch(breath.temperature) if(-INFINITY to 120) H.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, "head") - H.fire_alert = max(H.fire_alert, 1) if(120 to 200) H.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, "head") - H.fire_alert = max(H.fire_alert, 1) if(200 to 260) H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head") - H.fire_alert = max(H.fire_alert, 1) if(!(HEATRES in specflags)) // HEAT DAMAGE switch(breath.temperature) if(360 to 400) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head") - H.fire_alert = max(H.fire_alert, 2) if(400 to 1000) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head") - H.fire_alert = max(H.fire_alert, 2) if(1000 to INFINITY) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head") - H.fire_alert = max(H.fire_alert, 2) - - return - /datum/species/proc/handle_environment(datum/gas_mixture/environment, var/mob/living/carbon/human/H) if(!environment) return @@ -1302,35 +1200,37 @@ // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(HEATRES in specflags)) //Body temperature is too hot. - H.fire_alert = max(H.fire_alert, 1) switch(H.bodytemperature) if(360 to 400) + H.throw_alert("temp","hot",1) H.apply_damage(HEAT_DAMAGE_LEVEL_1*heatmod, BURN) - H.fire_alert = max(H.fire_alert, 2) if(400 to 460) + H.throw_alert("temp","hot",2) H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN) - H.fire_alert = max(H.fire_alert, 2) if(460 to INFINITY) + H.throw_alert("temp","hot",3) if(H.on_fire) H.apply_damage(HEAT_DAMAGE_LEVEL_3*heatmod, BURN) - H.fire_alert = max(H.fire_alert, 2) else H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN) - H.fire_alert = max(H.fire_alert, 2) else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !(mutations_list[COLDRES] in H.dna.mutations)) - H.fire_alert = max(H.fire_alert, 1) if(!istype(H.loc, /obj/machinery/atmospherics/unary/cryo_cell)) switch(H.bodytemperature) if(200 to 260) + H.throw_alert("temp","cold",1) H.apply_damage(COLD_DAMAGE_LEVEL_1*coldmod, BURN) - H.fire_alert = max(H.fire_alert, 1) if(120 to 200) + H.throw_alert("temp","cold",2) H.apply_damage(COLD_DAMAGE_LEVEL_2*coldmod, BURN) - H.fire_alert = max(H.fire_alert, 1) if(-INFINITY to 120) + H.throw_alert("temp","cold",3) H.apply_damage(COLD_DAMAGE_LEVEL_3*coldmod, BURN) - H.fire_alert = max(H.fire_alert, 1) + else + H.clear_alert("temp") + + else + H.clear_alert("temp") // Account for massive pressure differences. Done by Polymorph // Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense! @@ -1341,23 +1241,21 @@ if(HAZARD_HIGH_PRESSURE to INFINITY) if(!(HEATRES in specflags)) H.adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) - H.pressure_alert = 2 + H.throw_alert("pressure","highpressure",2) else - H.pressure_alert = 1 + H.clear_alert("pressure") if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE) - H.pressure_alert = 1 + H.throw_alert("pressure","highpressure",1) if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE) - H.pressure_alert = 0 + H.clear_alert("pressure") if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) - H.pressure_alert = -1 + H.throw_alert("pressure","lowpressure",1) else if(H.dna.check_mutation(COLDRES) || (COLDRES in specflags)) - H.pressure_alert = -1 + H.clear_alert("pressure") else H.adjustBruteLoss( LOW_PRESSURE_DAMAGE ) - H.pressure_alert = -2 - - return + H.throw_alert("pressure","lowpressure",2) ////////// // FIRE // diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index 43e597937a5..58091c54642 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -279,6 +279,7 @@ // 2spooky name = "Spooky Scary Skeleton" id = "skeleton" + say_mod = "rattles" sexes = 0 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/skeleton specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE) @@ -315,4 +316,4 @@ name = "Human" id = "zombie" sexes = 0 - meat = /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/zombie \ No newline at end of file + meat = /obj/item/weapon/reagent_containers/food/snacks/meat/human/mutant/zombie diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 1bd8938d2a1..f54a6004086 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -1,17 +1,10 @@ -/mob/living/carbon/proc/get_breath_from_internal(volume_needed) - if(internal) - if (!contents.Find(internal)) - internal = null - if (!wear_mask || !(wear_mask.flags & MASKINTERNALS) ) - internal = null - if(internal) - if (internals) - internals.icon_state = "internal1" - return internal.remove_air_volume(volume_needed) - else - if (internals) - internals.icon_state = "internal0" - return + +/mob/living/carbon + var/oxygen_alert = 0 + var/toxins_alert = 0 + var/fire_alert = 0 + var/pressure_alert = 0 + var/temperature_alert = 0 /mob/living/carbon/Life() set invisibility = 0 @@ -23,13 +16,11 @@ return var/datum/gas_mixture/environment = loc.return_air() - //Handle temperature/pressure differences between body and environment - handle_environment(environment) - - handle_regular_status_updates() // Status updates, death etc. - if(stat != DEAD) + //Breathing, if applicable + handle_breathing() + //Updates the number of stored chemicals for powers handle_changeling() @@ -39,9 +30,6 @@ //Chemicals in the body handle_chemicals_in_body() - //Disabilities - handle_disabilities() - //Blud handle_blood() @@ -56,6 +44,9 @@ . = 1 + //Handle temperature/pressure differences between body and environment + handle_environment(environment) + handle_fire() //stuff in the stomach @@ -68,6 +59,8 @@ for(var/obj/item/weapon/grab/G in src) G.process() + handle_regular_status_updates() // Status updates, death etc. + if(client) handle_regular_hud_updates() @@ -75,29 +68,246 @@ +/////////////// +// BREATHING // +/////////////// + +//Start of a breath chain, calls breathe() +/mob/living/carbon/proc/handle_breathing() + if(SSmob.times_fired%4==2 || failed_last_breath) + breathe() //Breathe per 4 ticks, unless suffocating + else + if(istype(loc, /obj/)) + var/obj/location_as_object = loc + location_as_object.handle_internal_lifeform(src,0) + +//Second link in a breath chain, calls check_breath() +/mob/living/carbon/proc/breathe() + if(reagents.has_reagent("lexorin")) + return + if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) + return + + var/datum/gas_mixture/environment + if(loc) + environment = loc.return_air() + + var/datum/gas_mixture/breath + + if(health <= config.health_threshold_crit) + losebreath++ + + //Suffocate + if(losebreath > 0) + losebreath-- + if(prob(10)) + spawn emote("gasp") + if(istype(loc, /obj/)) + var/obj/loc_as_obj = loc + loc_as_obj.handle_internal_lifeform(src,0) + else + //Breathe from internal + breath = get_breath_from_internal(BREATH_VOLUME) + + if(!breath) + + if(isobj(loc)) //Breathe from loc as object + var/obj/loc_as_obj = loc + breath = loc_as_obj.handle_internal_lifeform(src, BREATH_VOLUME) + + else if(isturf(loc)) //Breathe from loc as turf + var/breath_moles = 0 + if(environment) + breath_moles = environment.total_moles()*BREATH_PERCENTAGE + + breath = loc.remove_air(breath_moles) + + //Harmful gasses + if(!has_smoke_protection()) + for(var/obj/effect/effect/chem_smoke/smoke in view(1,src)) + if(smoke.reagents.total_volume) + smoke.reagents.reaction(src,INGEST) + spawn(5) + if(smoke) + smoke.reagents.copy_to(src, 10) + break + + else //Breathe from loc as obj again + if(istype(loc, /obj/)) + var/obj/loc_as_obj = loc + loc_as_obj.handle_internal_lifeform(src,0) + + check_breath(breath) + + if(breath) + loc.assume_air(breath) + +/mob/living/carbon/proc/has_smoke_protection() + return 0 +//Third link in a breath chain, calls handle_breath_temperature() +/mob/living/carbon/proc/check_breath(datum/gas_mixture/breath) + if((status_flags & GODMODE)) + return + + //CRIT + if(!breath || (breath.total_moles() == 0)) + if(reagents.has_reagent("epinephrine")) + return + adjustOxyLoss(1) + failed_last_breath = 1 + throw_alert("oxy") + + return 0 + + var/safe_oxy_min = 16 + var/safe_co2_max = 10 + var/safe_tox_max = 0.05 + var/SA_para_min = 1 + var/SA_sleep_min = 5 + var/oxygen_used = 0 + var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME + + var/O2_partialpressure = (breath.oxygen/breath.total_moles())*breath_pressure + var/Toxins_partialpressure = (breath.toxins/breath.total_moles())*breath_pressure + var/CO2_partialpressure = (breath.carbon_dioxide/breath.total_moles())*breath_pressure + //OXYGEN + if(O2_partialpressure < safe_oxy_min) //Not enough oxygen + if(prob(20)) + spawn(0) + emote("gasp") + if(O2_partialpressure > 0) + var/ratio = safe_oxy_min/O2_partialpressure + adjustOxyLoss(min(5*ratio, 3)) + failed_last_breath = 1 + oxygen_used = breath.oxygen*ratio/6 + else + adjustOxyLoss(3) + failed_last_breath = 1 + throw_alert("oxy") + + else //Enough oxygen + failed_last_breath = 0 + adjustOxyLoss(-5) + oxygen_used = breath.oxygen/6 + clear_alert("oxy") + + breath.oxygen -= oxygen_used + breath.carbon_dioxide += oxygen_used + + //CARBON DIOXIDE + if(CO2_partialpressure > safe_co2_max) + if(!co2overloadtime) + co2overloadtime = world.time + else if(world.time - co2overloadtime > 120) + Paralyse(3) + adjustOxyLoss(3) + if(world.time - co2overloadtime > 300) + adjustOxyLoss(8) + if(prob(20)) + spawn(0) emote("cough") + + else + co2overloadtime = 0 + + //TOXINS/PLASMA + if(Toxins_partialpressure > safe_tox_max) + var/ratio = (breath.toxins/safe_tox_max) * 10 + if(reagents) + reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) + throw_alert("tox_in_air") + else + clear_alert("tox_in_air") + + //TRACE GASES + if(breath.trace_gases.len) + for(var/datum/gas/sleeping_agent/SA in breath.trace_gases) + var/SA_partialpressure = (SA.moles/breath.total_moles())*breath_pressure + if(SA_partialpressure > SA_para_min) + Paralyse(3) + if(SA_partialpressure > SA_sleep_min) + sleeping = max(sleeping+2, 10) + else if(SA_partialpressure > 0.01) + if(prob(20)) + spawn(0) emote(pick("giggle","laugh")) + + //BREATH TEMPERATURE + handle_breath_temperature(breath) + + return 1 + +//Fourth and final link in a breath chain +/mob/living/carbon/proc/handle_breath_temperature(datum/gas_mixture/breath) +/mob/living/carbon/proc/get_breath_from_internal(volume_needed) + if(internal) + if (!contents.Find(internal)) + internal = null + if (!wear_mask || !(wear_mask.flags & MASKINTERNALS) ) + internal = null + if(internal) + if (internals) + internals.icon_state = "internal1" + return internal.remove_air_volume(volume_needed) + else + if (internals) + internals.icon_state = "internal0" + return - - - -//remember to remove the "proc" of the child procs of these. - /mob/living/carbon/proc/handle_changeling() return /mob/living/carbon/proc/handle_mutations_and_radiation() - return + if(radiation) + + switch(radiation) + if(0 to 50) + radiation-- + if(prob(25)) + adjustToxLoss(1) + updatehealth() + + if(50 to 75) + radiation -= 2 + adjustToxLoss(1) + if(prob(5)) + radiation -= 5 + updatehealth() + + if(75 to 100) + radiation -= 3 + adjustToxLoss(3) + updatehealth() + + radiation = Clamp(radiation, 0, 100) + /mob/living/carbon/proc/handle_chemicals_in_body() - return + if(reagents) + reagents.metabolize(src) -/mob/living/carbon/proc/handle_disabilities() + if(drowsyness) + drowsyness-- + eye_blurry = max(2, eye_blurry) + if(prob(5)) + sleeping += 1 + Paralyse(5) + + confused = max(0, confused - 1) + // decrement dizziness counter, clamped to 0 + if(resting) + dizziness = max(0, dizziness - 5) + jitteriness = max(0, jitteriness - 5) + else + dizziness = max(0, dizziness - 1) + jitteriness = max(0, jitteriness - 1) + + updatehealth() return /mob/living/carbon/proc/handle_blood() @@ -115,9 +325,6 @@ /mob/living/carbon/proc/handle_environment(var/datum/gas_mixture/environment) return -/mob/living/carbon/proc/handle_regular_status_updates() - return - /mob/living/carbon/proc/handle_stomach() spawn(0) for(var/mob/living/M in stomach_contents) @@ -135,7 +342,293 @@ M.adjustBruteLoss(5) nutrition += 10 +/mob/living/carbon/proc/handle_regular_status_updates() + + if(stat == DEAD) + eye_blind = max(eye_blind, 1) + silent = 0 + else + updatehealth() + if(health <= config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) + death() + eye_blind = max(eye_blind, 1) + silent = 0 + return 1 + + if( (getOxyLoss() > 50) || (config.health_threshold_crit >= health) ) + Paralyse(3) + + if(paralysis) + AdjustParalysis(-1) + stat = UNCONSCIOUS + else if(sleeping) + handle_dreams() + adjustStaminaLoss(-10) + sleeping = max(sleeping-1, 0) + stat = UNCONSCIOUS + if( prob(10) && health && !hal_crit ) + spawn(0) + emote("snore") + + else if (status_flags & FAKEDEATH) + stat = UNCONSCIOUS + + else + stat = CONSCIOUS + + handle_disabilities() + + //Dizziness + if(dizziness) + var/client/C = client + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/temp + var/saved_dizz = dizziness + dizziness = max(dizziness-1, 0) + if(C) + var/oldsrc = src + var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength + src = null + spawn(0) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) + if(C) + C.pixel_x -= pixel_x_diff + C.pixel_y -= pixel_y_diff + src = oldsrc + + //Jitteryness + if(jitteriness) + do_jitter_animation(jitteriness) + jitteriness = max(jitteriness-1, 0) + + //Other + + if(stuttering) + stuttering = max(stuttering-1, 0) + + if(slurring) + slurring = max(slurring-1,0) + + if(silent) + silent = max(silent-1, 0) + + if(druggy) + druggy = max(druggy-1, 0) + + if(stunned) + AdjustStunned(-1) + if(!stunned) + update_icons() + + if(weakened) + weakened = max(weakened-1,0) + if(!weakened) + update_icons() + + if(hallucination) + spawn handle_hallucinations() + + if(hallucination<=2) + hallucination = 0 + else + hallucination -= 2 + + else + for(var/atom/a in hallucinations) + qdel(a) + + CheckStamina() + return 1 + +/mob/living/carbon/proc/handle_disabilities() + //Eyes + if(disabilities & BLIND || stat) //blindness from disability or unconsciousness doesn't get better on its own + eye_blind = max(eye_blind, 1) + else if(eye_blind) //blindness, heals slowly over time + eye_blind = max(eye_blind-1,0) + else if(eye_blurry) //blurry eyes heal slowly + eye_blurry = max(eye_blurry-1, 0) + + //Ears + if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own + setEarDamage(-1, max(ear_deaf, 1)) + else + // deafness heals slowly over time, unless ear_damage is over 100 + if(ear_damage < 100) + adjustEarDamage(-0.05,-1) + + +//this handles hud updates. Calles update_vision() and handle_hud_icons() /mob/living/carbon/proc/handle_regular_hud_updates() + if(!client) return 0 + + update_action_buttons() + + if(damageoverlay) + if(damageoverlay.overlays) + damageoverlay.overlays = list() + + if(stat == UNCONSCIOUS) + //Critical damage passage overlay + if(health <= config.health_threshold_crit) + var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "passage0") + I.blend_mode = BLEND_OVERLAY //damageoverlay is BLEND_MULTIPLY + switch(health) + if(-20 to -10) + I.icon_state = "passage1" + if(-30 to -20) + I.icon_state = "passage2" + if(-40 to -30) + I.icon_state = "passage3" + if(-50 to -40) + I.icon_state = "passage4" + if(-60 to -50) + I.icon_state = "passage5" + if(-70 to -60) + I.icon_state = "passage6" + if(-80 to -70) + I.icon_state = "passage7" + if(-90 to -80) + I.icon_state = "passage8" + if(-95 to -90) + I.icon_state = "passage9" + if(-INFINITY to -95) + I.icon_state = "passage10" + damageoverlay.overlays += I + else + //Oxygen damage overlay + if(oxyloss) + var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "oxydamageoverlay0") + switch(oxyloss) + if(10 to 20) + I.icon_state = "oxydamageoverlay1" + if(20 to 25) + I.icon_state = "oxydamageoverlay2" + if(25 to 30) + I.icon_state = "oxydamageoverlay3" + if(30 to 35) + I.icon_state = "oxydamageoverlay4" + if(35 to 40) + I.icon_state = "oxydamageoverlay5" + if(40 to 45) + I.icon_state = "oxydamageoverlay6" + if(45 to INFINITY) + I.icon_state = "oxydamageoverlay7" + damageoverlay.overlays += I + + //Fire and Brute damage overlay (BSSR) + var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp + damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. + if(hurtdamage) + var/image/I = image("icon" = 'icons/mob/screen_full.dmi', "icon_state" = "brutedamageoverlay0") + I.blend_mode = BLEND_ADD + switch(hurtdamage) + if(5 to 15) + I.icon_state = "brutedamageoverlay1" + if(15 to 30) + I.icon_state = "brutedamageoverlay2" + if(30 to 45) + I.icon_state = "brutedamageoverlay3" + if(45 to 70) + I.icon_state = "brutedamageoverlay4" + if(70 to 85) + I.icon_state = "brutedamageoverlay5" + if(85 to INFINITY) + I.icon_state = "brutedamageoverlay6" + var/image/black = image(I.icon, I.icon_state) //BLEND_ADD doesn't let us darken, so this is just to blacken the edge of the screen + black.color = "#170000" + damageoverlay.overlays += I + damageoverlay.overlays += black + + + handle_vision() + handle_hud_icons() + + return 1 + +/mob/living/carbon/proc/handle_vision() + + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask) + + if(stat == DEAD) + sight |= SEE_TURFS + sight |= SEE_MOBS + sight |= SEE_OBJS + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_LEVEL_TWO + else + sight &= ~SEE_TURFS + sight &= ~SEE_MOBS + sight &= ~SEE_OBJS + see_in_dark = 2 + see_invisible = SEE_INVISIBLE_LIVING + if(see_override) + see_invisible = see_override + + if(blind) + if(eye_blind) + blind.layer = 18 + else + blind.layer = 0 + + if (disabilities & NEARSIGHT) + client.screen += global_hud.vimpaired + + if (eye_blurry) + client.screen += global_hud.blurry + + if (druggy) + client.screen += global_hud.druggy + + if(eye_stat > 20) + if(eye_stat > 30) + client.screen += global_hud.darkMask + else + client.screen += global_hud.vimpaired + + if(machine) + if (!( machine.check_eye(src) )) + reset_view(null) + else + if(!client.adminobs) + reset_view(null) + +/mob/living/carbon/proc/handle_hud_icons() return - +/mob/living/carbon/proc/handle_hud_icons_health() + if(healths) + if (stat != DEAD) + switch(health) + if(100 to INFINITY) + healths.icon_state = "health0" + if(80 to 100) + healths.icon_state = "health1" + if(60 to 80) + healths.icon_state = "health2" + if(40 to 60) + healths.icon_state = "health3" + if(20 to 40) + healths.icon_state = "health4" + if(0 to 20) + healths.icon_state = "health5" + else + healths.icon_state = "health6" + else + healths.icon_state = "health7" diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index d2015e7dc8c..f9589c35ca9 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -1,24 +1,16 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 /mob/living/carbon/monkey - var/oxygen_alert = 0 - var/toxins_alert = 0 - var/fire_alert = 0 - var/pressure_alert = 0 - - var/temperature_alert = 0 /mob/living/carbon/monkey/Life() - if(..()) - //First, resolve location and get a breath - if(SSmob.times_fired%4==2) - //Only try to take a breath every 4 seconds, unless suffocating - breathe() - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) + set invisibility = 0 + set background = BACKGROUND_ENABLED + + if (notransform) + return + + ..() if(!client && stat == CONSCIOUS) if(prob(33) && canmove && isturf(loc) && !pulledby && !grabbed_by.len) @@ -30,203 +22,31 @@ ..() return pressure -/mob/living/carbon/monkey/handle_disabilities() - /mob/living/carbon/monkey/handle_mutations_and_radiation() if (radiation) if (radiation > 100) - radiation = 100 Weaken(10) src << "You feel weak." emote("collapse") - if (radiation < 0) - radiation = 0 - switch(radiation) - if(0 to 50) - radiation-- - if(prob(25)) - adjustToxLoss(1) - updatehealth() if(50 to 75) - radiation -= 2 - adjustToxLoss(1) if(prob(5)) - radiation -= 5 Weaken(3) src << "You feel weak." emote("collapse") - updatehealth() if(75 to 100) - radiation -= 3 - adjustToxLoss(3) if(prob(1)) src << "You mutate!" randmutb(src) domutcheck(src,null) emote("gasp") - updatehealth() + ..() -/mob/living/carbon/monkey/proc/breathe() - if(reagents) - - if(reagents.has_reagent("lexorin")) return - - if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite - - var/datum/gas_mixture/environment = loc.return_air() - var/datum/gas_mixture/breath - if(health <= config.health_threshold_crit) - losebreath++ - if(losebreath>0) //Suffocating so do not take a breath - losebreath-- - if (prob(75)) //High chance of gasping for air - spawn emote("gasp") - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - else - //First, check for air from internal atmosphere (using an air tank and mask generally) - breath = get_breath_from_internal(BREATH_VOLUME) - - //No breath from internal atmosphere so get breath from location - if(!breath) - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) - else if(istype(loc, /turf/)) - var/breath_moles = environment.total_moles()*BREATH_PERCENTAGE - breath = loc.remove_air(breath_moles) - - // Handle chem smoke effect -- Doohl - var/block = 0 - if(wear_mask) - if(istype(wear_mask, /obj/item/clothing/mask/gas)) - block = 1 - - if(!block) - - for(var/obj/effect/effect/chem_smoke/smoke in view(1, src)) - if(smoke.reagents.total_volume) - smoke.reagents.reaction(src, INGEST) - spawn(5) - if(smoke) - smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs? - break // If they breathe in the nasty stuff once, no need to continue checking - - - else //Still give containing object the chance to interact - if(istype(loc, /obj/)) - var/obj/location_as_object = loc - location_as_object.handle_internal_lifeform(src, 0) - - handle_breath(breath) - - if(breath) - loc.assume_air(breath) - -/mob/living/carbon/monkey/proc/handle_breath(datum/gas_mixture/breath) - if(status_flags & GODMODE) - return - - if(!breath || (breath.total_moles() == 0)) - adjustOxyLoss(7) - - oxygen_alert = max(oxygen_alert, 1) - - return 0 - - var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa - //var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now) - var/safe_co2_max = 10 // Yes it's an arbitrary value who cares? - var/safe_toxins_max = 0.5 - var/SA_para_min = 0.5 - var/SA_sleep_min = 5 - var/oxygen_used = 0 - var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME - - //Partial pressure of the O2 in our breath - var/O2_pp = (breath.oxygen/breath.total_moles())*breath_pressure - // Same, but for the toxins - var/Toxins_pp = (breath.toxins/breath.total_moles())*breath_pressure - // And CO2, lets say a PP of more than 10 will be bad (It's a little less really, but eh, being passed out all round aint no fun) - var/CO2_pp = (breath.carbon_dioxide/breath.total_moles())*breath_pressure - - if(O2_pp < safe_oxygen_min) // Too little oxygen - if(prob(20)) - spawn(0) emote("gasp") - if (O2_pp == 0) - O2_pp = 0.01 - var/ratio = safe_oxygen_min/O2_pp - adjustOxyLoss(min(5*ratio, 7)) // Don't fuck them up too fast (space only does 7 after all!) - oxygen_used = breath.oxygen*ratio/6 - oxygen_alert = max(oxygen_alert, 1) - /*else if (O2_pp > safe_oxygen_max) // Too much oxygen (commented this out for now, I'll deal with pressure damage elsewhere I suppose) - spawn(0) emote("cough") - var/ratio = O2_pp/safe_oxygen_max - oxyloss += 5*ratio - oxygen_used = breath.oxygen*ratio/6 - oxygen_alert = max(oxygen_alert, 1)*/ - else // We're in safe limits - adjustOxyLoss(-5) - oxygen_used = breath.oxygen/6 - oxygen_alert = 0 - - breath.oxygen -= oxygen_used - breath.carbon_dioxide += oxygen_used - - if(CO2_pp > safe_co2_max) - if(!co2overloadtime) // If it's the first breath with too much CO2 in it, lets start a counter, then have them pass out after 12s or so. - co2overloadtime = world.time - else if(world.time - co2overloadtime > 120) - Paralyse(3) - adjustOxyLoss(3) // Lets hurt em a little, let them know we mean business - if(world.time - co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good! - adjustOxyLoss(8) - if(prob(20)) // Lets give them some chance to know somethings not right though I guess. - spawn(0) emote("cough") - - else - co2overloadtime = 0 - - if(Toxins_pp > safe_toxins_max) // Too much toxins - var/ratio = (breath.toxins/safe_toxins_max) * 10 - //adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) //Limit amount of damage toxin exposure can do per second - if(reagents) - reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) - toxins_alert = max(toxins_alert, 1) - else - toxins_alert = 0 - - if(breath.trace_gases.len) // If there's some other shit in the air lets deal with it here. - for(var/datum/gas/sleeping_agent/SA in breath.trace_gases) - var/SA_pp = (SA.moles/breath.total_moles())*breath_pressure - if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit - Paralyse(3) // 3 gives them one second to wake up and run away a bit! - if(SA_pp > SA_sleep_min) // Enough to make us sleep as well - sleeping = max(sleeping+2, 10) - else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning - if(prob(20)) - spawn(0) emote(pick("giggle", "laugh")) - - - if(breath.temperature > (T0C+66)) // Hot air hurts :( - if(prob(20)) - src << "You feel a searing heat in your lungs!" - fire_alert = max(fire_alert, 2) - else - fire_alert = 0 - - - //Temporary fixes to the alerts. - - return 1 - /mob/living/carbon/monkey/handle_environment(datum/gas_mixture/environment) if(!environment) return @@ -251,162 +71,33 @@ switch(adjusted_pressure) if(HAZARD_HIGH_PRESSURE to INFINITY) adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) - pressure_alert = 2 + throw_alert("pressure","highpressure",2) if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE) - pressure_alert = 1 + throw_alert("pressure","highpressure",1) if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE) - pressure_alert = 0 + clear_alert("pressure") if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) - pressure_alert = -1 + throw_alert("pressure","lowpressure",1) else adjustBruteLoss( LOW_PRESSURE_DAMAGE ) - pressure_alert = -2 + throw_alert("pressure","lowpressure",2) return /mob/living/carbon/monkey/proc/handle_temperature_damage(body_part, exposed_temperature, exposed_intensity) if(status_flags & GODMODE) return var/discomfort = min( abs(exposed_temperature - bodytemperature)*(exposed_intensity)/2000000, 1.0) - //adjustFireLoss(2.5*discomfort) if(exposed_temperature > bodytemperature) adjustFireLoss(20.0*discomfort) - else adjustFireLoss(5.0*discomfort) -/mob/living/carbon/monkey/handle_chemicals_in_body() +/mob/living/carbon/monkey/handle_hud_icons() - if(reagents) reagents.metabolize(src) - - if (drowsyness) - drowsyness-- - eye_blurry = max(2, eye_blurry) - if (prob(5)) - sleeping += 1 - Paralyse(5) - - confused = max(0, confused - 1) - // decrement dizziness counter, clamped to 0 - if(resting) - dizziness = max(0, dizziness - 5) - else - dizziness = max(0, dizziness - 1) - - updatehealth() - - return //TODO: DEFERRED - -/mob/living/carbon/monkey/handle_regular_status_updates() - updatehealth() - - if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP - silent = 0 - else //ALIVE. LIGHTS ARE ON - if(health < config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) - death() - stat = DEAD - silent = 0 - return 1 - - //UNCONSCIOUS. NO-ONE IS HOME - if( (getOxyLoss() > 25) || (config.health_threshold_crit >= health) ) - if( health <= 20 && prob(1) ) - spawn(0) - emote("gasp") - if(!reagents.has_reagent("epinephrine")) - adjustOxyLoss(1) - Paralyse(3) - - if(paralysis) - AdjustParalysis(-1) - stat = UNCONSCIOUS - else if(sleeping) - sleeping = max(sleeping-1, 0) - stat = UNCONSCIOUS - if( prob(10) && health ) - spawn(0) - emote("snore") - //CONSCIOUS - else - stat = CONSCIOUS - - //Eyes - if(disabilities & BLIND || stat) //disabled-blind, doesn't get better on its own - eye_blind = max(eye_blind, 2) - else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) - else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) - - //Ears - if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) - else - // deafness heals slowly over time, unless ear_damage is over 100 - if (ear_damage < 100) - adjustEarDamage(-0.05,-1) - - //Other - if(stunned) - AdjustStunned(-1) - - if(weakened) - weakened = max(weakened-1,0) - - if(stuttering) - stuttering = max(stuttering-1, 0) - - if(silent) - silent = max(silent-1, 0) - - if(druggy) - druggy = max(druggy-1, 0) - - CheckStamina() - return 1 + handle_hud_icons_health() -/mob/living/carbon/monkey/handle_regular_hud_updates() - - if (stat == 2) - sight |= SEE_TURFS - sight |= SEE_MOBS - sight |= SEE_OBJS - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_LEVEL_TWO - else if (stat != 2) - sight &= ~SEE_TURFS - sight &= ~SEE_MOBS - sight &= ~SEE_OBJS - see_in_dark = 2 - see_invisible = SEE_INVISIBLE_LIVING - if(see_override) - see_invisible = see_override - - if (healths) - if (stat != 2) - switch(health) - if(100 to INFINITY) - healths.icon_state = "health0" - if(80 to 100) - healths.icon_state = "health1" - if(60 to 80) - healths.icon_state = "health2" - if(40 to 60) - healths.icon_state = "health3" - if(20 to 40) - healths.icon_state = "health4" - if(0 to 20) - healths.icon_state = "health5" - else - healths.icon_state = "health6" - else - healths.icon_state = "health7" - - - if(pressure) - pressure.icon_state = "pressure[pressure_alert]" if(pullin) if(pulling) @@ -414,58 +105,8 @@ else pullin.icon_state = "pull0" - if (toxin) toxin.icon_state = "tox[toxins_alert ? 1 : 0]" - if (oxygen) oxygen.icon_state = "oxy[oxygen_alert ? 1 : 0]" - if (fire) fire.icon_state = "fire[fire_alert ? 2 : 0]" - //NOTE: the alerts dont reset when youre out of danger. dont blame me, //blame the person who coded them. Temporary fix added. - if(bodytemp) - switch(bodytemperature) //310.055 optimal body temp - if(345 to INFINITY) - bodytemp.icon_state = "temp4" - if(335 to 345) - bodytemp.icon_state = "temp3" - if(327 to 335) - bodytemp.icon_state = "temp2" - if(316 to 327) - bodytemp.icon_state = "temp1" - if(300 to 316) - bodytemp.icon_state = "temp0" - if(295 to 300) - bodytemp.icon_state = "temp-1" - if(280 to 295) - bodytemp.icon_state = "temp-2" - if(260 to 280) - bodytemp.icon_state = "temp-3" - else - bodytemp.icon_state = "temp-4" - - client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - - if(blind && stat != DEAD) - if(eye_blind) - blind.layer = 18 - else - blind.layer = 0 - - if(disabilities & NEARSIGHT) - client.screen += global_hud.vimpaired - - if(eye_blurry) - client.screen += global_hud.blurry - - if(druggy) - client.screen += global_hud.druggy - - if (stat != 2) - if (machine) - if (!( machine.check_eye(src) )) - reset_view(null) - else - if(!client.adminobs) - reset_view(null) - return 1 /mob/living/carbon/monkey/handle_random_events() @@ -476,11 +117,18 @@ /mob/living/carbon/monkey/handle_changeling() - if(mind && mind.changeling) - mind.changeling.regenerate() - hud_used.lingchemdisplay.invisibility = 0 - hud_used.lingchemdisplay.maptext = "
[src.mind.changeling.chem_charges]
" + if(mind) + if(mind.changeling) + mind.changeling.regenerate() + hud_used.lingchemdisplay.invisibility = 0 + hud_used.lingchemdisplay.maptext = "
[mind.changeling.chem_charges]
" + else + hud_used.lingchemdisplay.invisibility = 101 +/mob/living/carbon/monkey/has_smoke_protection() + if(wear_mask) + if(wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT) + return 1 ///FIRE CODE /mob/living/carbon/monkey/handle_fire() diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 7bdbfb459da..6519cd2b39a 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -190,9 +190,6 @@ internal = null return -/mob/living/carbon/monkey/var/co2overloadtime = null -/mob/living/carbon/monkey/var/temperature_resistance = T0C+75 - /mob/living/carbon/monkey/ex_act(severity, target) ..() switch(severity) @@ -202,28 +199,16 @@ if(2.0) adjustBruteLoss(60) adjustFireLoss(60) + adjustEarDamage(30,120) if(3.0) adjustBruteLoss(30) if (prob(50)) Paralyse(10) + adjustEarDamage(15,60) + + updatehealth() return -/mob/living/carbon/monkey/blob_act() - if (stat != 2) - show_message("The blob attacks you!") - adjustFireLoss(60) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - if (prob(50)) - Paralyse(10) - if (stat == DEAD && client) - gib() - return - if (stat == DEAD && !client) - gibs(loc, viruses) - qdel(src) - return - - /mob/living/carbon/monkey/IsAdvancedToolUser()//Unless its monkey mode monkeys cant use advanced tools return 0 diff --git a/code/modules/mob/living/carbon/slime/death.dm b/code/modules/mob/living/carbon/slime/death.dm index c54e5d869c3..ecf01af344b 100644 --- a/code/modules/mob/living/carbon/slime/death.dm +++ b/code/modules/mob/living/carbon/slime/death.dm @@ -1,4 +1,6 @@ /mob/living/carbon/slime/death(gibbed) + if(stat == DEAD) + return if(!gibbed) if(is_adult) var/mob/living/carbon/slime/M = new /mob/living/carbon/slime(loc) @@ -11,12 +13,12 @@ number = rand(1, 1000) name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])" return + else + visible_message("The [name] seizes up and falls limp...") - if(stat == DEAD) return stat = DEAD icon_state = "[colour] baby slime dead" overlays.len = 0 - visible_message("The [name] seizes up and falls limp...") //ded -- Urist update_canmove() if(blind) blind.layer = 0 @@ -24,4 +26,8 @@ if(ticker && ticker.mode) ticker.mode.check_win() - return ..(gibbed) \ No newline at end of file + return ..(gibbed) + +/mob/living/carbon/slime/gib() + death(1) + qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/slime/life.dm b/code/modules/mob/living/carbon/slime/life.dm index dd04410c66b..f15fd5196a7 100644 --- a/code/modules/mob/living/carbon/slime/life.dm +++ b/code/modules/mob/living/carbon/slime/life.dm @@ -6,12 +6,19 @@ var/SStun = 0 // stun variable /mob/living/carbon/slime/Life() + set invisibility = 0 + set background = BACKGROUND_ENABLED + + if (notransform) + return if(..()) handle_nutrition() handle_targets() if (!ckey) handle_speech_and_mood() +/mob/living/carbon/slime/handle_breathing() + return /mob/living/carbon/slime/proc/AIprocess() // the master AI process @@ -25,14 +32,14 @@ AIproc = 1 - while(AIproc && stat != 2 && (attacked || hungry || rabid || Victim)) + while(AIproc && stat != DEAD && (attacked || hungry || rabid || Victim)) if(Victim) // can't eat AND have this little process at the same time break if(!Target || client) break - if(Target.health <= -70 || Target.stat == 2) + if(Target.health <= -70 || Target.stat == DEAD) Target = null AIproc = 0 break @@ -155,6 +162,13 @@ return //TODO: DEFERRED + +/mob/living/carbon/slime/handle_mutations_and_radiation() + return + +/mob/living/carbon/slime/handle_regular_hud_updates() + return + /mob/living/carbon/slime/handle_regular_status_updates() if(is_adult) @@ -162,17 +176,21 @@ else health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) - if(health < config.health_threshold_dead && stat != 2) + if(health < config.health_threshold_dead && stat != DEAD) death() return - else if(src.health < config.health_threshold_crit) + else if(health < config.health_threshold_crit) - if(!src.reagents.has_reagent("epinephrine")) - src.adjustOxyLoss(10) + if(!reagents.has_reagent("epinephrine")) + adjustOxyLoss(3) - if(src.stat != DEAD) - src.stat = UNCONSCIOUS + if(stat != DEAD) + Paralyse(3) + stat = UNCONSCIOUS + else + if(stat != DEAD) + stat = CONSCIOUS if(prob(30)) adjustOxyLoss(-1) @@ -181,46 +199,36 @@ adjustCloneLoss(-1) adjustBruteLoss(-1) - if (src.stat == DEAD) - src.lying = 1 - src.eye_blind = max(eye_blind, 1) + if (stat == DEAD) + lying = 1 + eye_blind = max(eye_blind, 1) else - if (src.paralysis || src.stunned || src.weakened || (status_flags && FAKEDEATH)) //Stunned etc. - if (src.stunned > 0) - AdjustStunned(-1) - src.stat = 0 - if (src.weakened > 0) - AdjustWeakened(-1) - src.lying = 0 - src.stat = 0 - if (src.paralysis > 0) - AdjustParalysis(-1) - src.eye_blind = 0 - src.lying = 0 - src.stat = 0 + if(stunned > 0) + AdjustStunned(-1) + if(weakened > 0) + AdjustWeakened(-1) + if (paralysis > 0) + AdjustParalysis(-1) - else - src.lying = 0 - src.stat = 0 + if(stuttering) + stuttering = 0 - if (src.stuttering) src.stuttering = 0 - - if (src.eye_blind) - src.eye_blind = 0 - src.eye_blind = max(eye_blind, 1) + if(eye_blind) + eye_blind = 0 + eye_blind = max(eye_blind, 1) setEarDamage((ear_damage < 25 ? 0 : ear_damage),(disabilities & DEAF ? 1 :0)) - src.density = !( src.lying ) + density = !( src.lying ) - if (src.disabilities & BLIND) - src.eye_blind = max(eye_blind, 1) + if(disabilities & BLIND) + eye_blind = max(eye_blind, 1) - if (src.eye_blurry > 0) - src.eye_blurry = 0 + if(eye_blurry > 0) + eye_blurry = 0 - if (src.druggy > 0) - src.druggy = 0 + if(druggy > 0) + druggy = 0 return 1 diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 27401409768..2bbec31b006 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -161,49 +161,20 @@ /mob/living/carbon/slime/ex_act(severity, target) ..() - var/b_loss = null - var/f_loss = null switch (severity) if (1.0) - qdel(src) + gib() return if (2.0) - - b_loss += 60 - f_loss += 60 - + adjustBruteLoss(60) + adjustFireLoss(60) if(3.0) - b_loss += 30 - - adjustBruteLoss(b_loss) - adjustFireLoss(f_loss) + adjustBruteLoss(30) updatehealth() - -/mob/living/carbon/slime/blob_act() - if (stat == 2) - return - var/shielded = 0 - - var/damage = null - if (stat != 2) - damage = rand(10,30) - - if(shielded) - damage /= 4 - - //paralysis += 1 - - show_message(" The blob attacks you!") - - adjustFireLoss(damage) - - updatehealth() - return - /mob/living/carbon/slime/MouseDrop(var/atom/movable/A as mob|obj) if(isliving(A) && A != src && usr == src) var/mob/living/Food = A @@ -496,9 +467,6 @@ /mob/living/carbon/slime/restrained() return 0 -mob/living/carbon/slime/var/co2overloadtime = null -mob/living/carbon/slime/var/temperature_resistance = T0C+75 - /mob/living/carbon/slime/show_inv(mob/user) return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9a4f7f5fb39..9dc994a1bad 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -8,12 +8,49 @@ Sorry Giacom. Please don't be mad :( push_mob_back(src, A.push_dir) */ + +/mob/living/New() + . = ..() + generateStaticOverlay() + if(staticOverlays.len) + for(var/mob/living/simple_animal/drone/D in player_list) + if(D && D.seeStatic) + if(D.staticChoice in staticOverlays) + D.staticOverlays |= staticOverlays[D.staticChoice] + D.client.images |= staticOverlays[D.staticChoice] + else //no choice? force static + D.staticOverlays |= staticOverlays["static"] + D.client.images |= staticOverlays["static"] + + /mob/living/Destroy() -// if(mind) -// mind.current = null - ..() + . = ..() + + for(var/mob/living/simple_animal/drone/D in player_list) + for(var/image/I in staticOverlays) + D.staticOverlays.Remove(I) + D.client.images.Remove(I) + del(I) + staticOverlays.len = 0 + del(src) + +/mob/living/proc/generateStaticOverlay() + staticOverlays.Add(list("static", "blank", "letter")) + var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) + staticOverlay.override = 1 + staticOverlays["static"] = staticOverlay + + staticOverlay = image(getBlankIcon(new/icon(icon, icon_state)), loc = src) + staticOverlay.override = 1 + staticOverlays["blank"] = staticOverlay + + staticOverlay = getLetterImage(src) + staticOverlay.override = 1 + staticOverlays["letter"] = staticOverlay + + //Generic Bump(). Override MobBump() and ObjBump() instead of this. /mob/living/Bump(atom/A, yes) if (buckled || !yes || now_pushing) @@ -495,7 +532,7 @@ Sorry Giacom. Please don't be mad :( M.stop_pulling() //this is the gay blood on floor shit -- Added back -- Skie - if(M.lying && (prob(M.getBruteLoss() / 2))) + if(M.lying && !M.buckled && (prob(M.getBruteLoss() / 2))) makeTrail(T, M) pulling.Move(T, get_dir(pulling, T)) if(M) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c0db992236d..e1f88b45cb0 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -41,4 +41,6 @@ var/floating = 0 var/nightvision = 0 var/mob_size = 1 //size of the mob. 0 is small, 1 is human sized, and 2 is large. - var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. \ No newline at end of file + var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. + + var/list/image/staticOverlays = list() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 1f49f780084..8962f12e241 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -179,12 +179,11 @@ /mob/living/silicon/pai/UnarmedAttack(var/atom/A)//Stops runtimes due to attack_animal being the default return -/mob/living/silicon/pai/Move(var/atom/newloc) +/mob/living/silicon/pai/on_forcemove(var/atom/newloc) if(card) - card.Move(newloc) + card.loc = newloc else //something went very wrong. CRASH("pAI without card") - . = ..() loc = card //Addition by Mord_Sith to define AI's network change ability diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 59e4ca94bec..d90e464cee2 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -190,45 +190,28 @@ src.mind.special_role = "traitor" ticker.mode.traitors += src.mind - if (src.cells) - if (src.cell) - var/cellcharge = src.cell.charge/src.cell.maxcharge - switch(cellcharge) - if(0.75 to INFINITY) - src.cells.icon_state = "charge4" - if(0.5 to 0.75) - src.cells.icon_state = "charge3" - if(0.25 to 0.5) - src.cells.icon_state = "charge2" - if(0 to 0.25) - src.cells.icon_state = "charge1" - else - src.cells.icon_state = "charge0" + if (src.cell) + var/cellcharge = src.cell.charge/src.cell.maxcharge + switch(cellcharge) + if(0.75 to INFINITY) + clear_alert("charge") + if(0.5 to 0.75) + throw_alert("charge","lowcell",1) + if(0.25 to 0.5) + throw_alert("charge","lowcell",2) + if(0.01 to 0.25) + throw_alert("charge","lowcell",3) + else + throw_alert("charge","emptycell") + else + throw_alert("charge","nocell") + + + if(pullin) + if(pulling) + pullin.icon_state = "pull" else - src.cells.icon_state = "charge-empty" - - if(bodytemp) - switch(bodytemperature) //310.055 optimal body temp - if(335 to INFINITY) - bodytemp.icon_state = "temp2" - if(320 to 335) - bodytemp.icon_state = "temp1" - if(300 to 320) - bodytemp.icon_state = "temp0" - if(260 to 300) - bodytemp.icon_state = "temp-1" - else - bodytemp.icon_state = "temp-2" - - if(pullin) - if(pulling) - pullin.icon_state = "pull" - else - pullin.icon_state = "pull0" - -//Oxygen and fire does nothing yet!! -// if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]" -// if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]" + pullin.icon_state = "pull0" client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1038950db3d..9b0ada14b2b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -11,7 +11,6 @@ //Hud stuff - var/obj/screen/cells = null var/obj/screen/inv1 = null var/obj/screen/inv2 = null var/obj/screen/inv3 = null diff --git a/code/modules/mob/living/simple_animal/friendly/drone.dm b/code/modules/mob/living/simple_animal/friendly/drone.dm deleted file mode 100644 index ee37b9f52a4..00000000000 --- a/code/modules/mob/living/simple_animal/friendly/drone.dm +++ /dev/null @@ -1,609 +0,0 @@ - -#define HANDS_LAYER 1 -#define HEAD_LAYER 2 -#define TOTAL_LAYERS 2 - -#define DRONE_NET_CONNECT "DRONE NETWORK: [name] connected." -#define DRONE_NET_DISCONNECT "DRONE NETWORK: [name] is not responding." - - -/mob/living/simple_animal/drone - name = "Drone" - desc = "A maintenance drone, an expendable robot built to perform station repairs." - icon = 'icons/mob/drone.dmi' - icon_state = "drone_grey" - icon_living = "drone_grey" - icon_dead = "drone_dead" - gender = NEUTER - health = 30 - maxHealth = 30 - heat_damage_per_tick = 0 - cold_damage_per_tick = 0 - unsuitable_atmos_damage = 0 - wander = 0 - speed = 0 - ventcrawler = 2 - pass_flags = PASSTABLE | PASSMOB - sight = (SEE_TURFS | SEE_OBJS) - status_flags = (CANPUSH | CANSTUN | CANWEAKEN) - gender = NEUTER - voice_name = "synthesized chirp" - languages = DRONE - mob_size = 0 - has_unlimited_silicon_privilege = 1 - var/picked = FALSE - var/list/drone_overlays[TOTAL_LAYERS] - var/laws = \ - "1. You may not involve yourself in the matters of another being, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\ - "2. You may not harm any being, regardless of intent or circumstance.\n"+\ - "3. Your goals are to build, maintain, repair, improve, and power to the best of your abilities, You must never actively work against these goals." - var/light_on = 0 - var/heavy_emp_damage = 25 //Amount of damage sustained if hit by a heavy EMP pulse - var/health_repair_max = 0 //Drone will only be able to be repaired/reactivated up to this point, defaults to health - var/alarms = list("Atmosphere" = list(), "Fire" = list(), "Power" = list()) - var/obj/item/internal_storage //Drones can store one item, of any size/type in their body - var/obj/item/head - var/obj/item/default_storage = /obj/item/weapon/storage/toolbox/drone //If this exists, it will spawn in internal storage - var/obj/item/default_hatmask //If this exists, it will spawn in the hat/mask slot if it can fit - - -/mob/living/simple_animal/drone/New() - ..() - - name = name + " ([rand(100,999)])" - real_name = name - - access_card = new /obj/item/weapon/card/id(src) - var/datum/job/captain/C = new /datum/job/captain - access_card.access = C.get_access() - - if(!health_repair_max) - health_repair_max = initial(health) - - if(default_storage) - var/obj/item/I = new default_storage(src) - equip_to_slot_or_del(I, "drone_storage_slot") - if(default_hatmask) - var/obj/item/I = new default_hatmask(src) - equip_to_slot_or_del(I, slot_head) - - alert_drones(DRONE_NET_CONNECT) - -/mob/living/simple_animal/drone/attack_hand(mob/user) - if(isdrone(user)) - var/mob/living/simple_animal/drone/D = user - if(D != src) - if(stat == DEAD) - var/d_input = alert(D,"Perform which action?","Drone Interaction","Reactivate","Cannibalize","Nothing") - if(d_input) - switch(d_input) - if("Reactivate") - var/mob/dead/observer/G = get_ghost() - if(!client && (!G || !G.client)) - var/list/faux_gadgets = list("hypertext inflator","failsafe directory","DRM switch","stack initializer",\ - "anti-freeze capacitor","data stream diode","TCP bottleneck","supercharged I/O bolt",\ - "tradewind stablizer","radiated XML cable","registry fluid tank","open-source debunker") - - var/list/faux_problems = list("won't be able to tune their bootstrap projector","will constantly remix their binary pool"+\ - " even though the BMX calibrator is working","will start leaking their XSS coolant",\ - "can't tell if their ethernet detour is moving or not", "won't be able to reseed enough"+\ - " kernels to function properly","can't start their neurotube console") - - D << "You can't seem to find the [pick(faux_gadgets)]. Without it, [src] [pick(faux_problems)]." - return - D.visible_message("[D] begins to reactivate [src].") - if(do_after(user,30,needhand = 1)) - health = health_repair_max - stat = CONSCIOUS - icon_state = icon_living - dead_mob_list -= src - living_mob_list += src - D.visible_message("[D] reactivates [src]!") - alert_drones(DRONE_NET_CONNECT) - if(G) - G << "DRONE NETWORK: You were reactivated by [D]!" - else - D << "You need to remain still to reactivate [src]." - - if("Cannibalize") - if(D.health < D.maxHealth) - D.visible_message("[D] begins to cannibalize parts from [src].") - if(do_after(D, 60,5,0)) - D.visible_message("[D] repairs itself using [src]'s remains!") - D.adjustBruteLoss(-src.maxHealth) - new /obj/effect/decal/cleanable/oil/streak(get_turf(src)) - qdel(src) - else - D << "You need to remain still to cannibalize [src]." - else - D << "You're already in perfect condition!" - if("Nothing") - return - - return - - - if(ishuman(user)) - if(stat == DEAD) - ..() - return - if(user.get_active_hand()) - user << "Your hands are full." - return - src << "[user] is trying to pick you up!" - user << "You pick [src] up." - drop_l_hand() - drop_r_hand() - var/obj/item/clothing/head/drone_holder/DH = new /obj/item/clothing/head/drone_holder(src) - DH.contents += src - DH.drone = src - user.put_in_hands(DH) - src.loc = DH - return - - ..() - -/mob/living/simple_animal/drone/Destroy() - qdel(access_card) //Otherwise it ends up on the floor! - ..() - -/mob/living/simple_animal/drone/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/screwdriver) && stat != DEAD) - if(health < health_repair_max) - user << "You start to tighten loose screws on [src]." - if(do_after(user,80)) - health = health_repair_max - visible_message("[user] tightens [src == user ? "their" : "[src]'s"] loose screws!") - else - user << "You need to remain still to tighten [src]'s screws." - else - user << "[src]'s screws can't get any tighter!" - else - ..() - -/mob/living/simple_animal/drone/examine(mob/user) - . = ..() - if(!client && stat != DEAD) - user << "A small blue LED is blinking on and off at a steady rate." - -/mob/living/simple_animal/drone/Move() - if(pullin) - if(pulling) - pullin.icon_state = "pull" - else - pullin.icon_state = "pull0" - ..() - -/mob/living/simple_animal/drone/IsAdvancedToolUser() - return 1 - -/mob/living/simple_animal/drone/say(var/message) - return ..(message, "R") - -/mob/living/simple_animal/drone/lang_treat(atom/movable/speaker, message_langs, raw_message) //This is so drones can understand humans without being able to speak human - . = ..() - var/hear_override_langs = HUMAN - if(message_langs & hear_override_langs) - return ..(speaker, languages, raw_message) - -/mob/living/simple_animal/drone/handle_inherent_channels(message, message_mode) - if(message_mode == MODE_BINARY) - drone_chat(message) - return ITALICS | REDUCE_RANGE - else - ..() - - -/mob/living/simple_animal/drone/UnarmedAttack(atom/A, proximity) - A.attack_hand(src) - - -/mob/living/simple_animal/drone/swap_hand() - var/obj/item/held_item = get_active_hand() - if(held_item) - if(istype(held_item, /obj/item/weapon/twohanded)) - var/obj/item/weapon/twohanded/T = held_item - if(T.wielded == 1) - usr << "Your other hand is too busy holding the [T.name]." - return - - hand = !hand - if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object) - if(hand) - hud_used.l_hand_hud_object.icon_state = "hand_l_active" - hud_used.r_hand_hud_object.icon_state = "hand_r_inactive" - else - hud_used.l_hand_hud_object.icon_state = "hand_l_inactive" - hud_used.r_hand_hud_object.icon_state = "hand_r_active" - - -/mob/living/simple_animal/drone/verb/check_laws() - set category = "Drone" - set name = "Check Laws" - - src << "Drone Laws" - src << laws - -/mob/living/simple_animal/drone/verb/toggle_light() - set category = "Drone" - set name = "Toggle drone light" - if(light_on) - AddLuminosity(-4) - else - AddLuminosity(4) - - light_on = !light_on - - src << "Your light is now [light_on ? "on" : "off"]" - -/mob/living/simple_animal/drone/verb/drone_ping() - set category = "Drone" - set name = "Drone ping" - - var/alert_s = input(src,"Alert severity level","Drone ping",null) as null|anything in list("Low","Medium","High","Critical") - - var/area/A = get_area(loc) - - if(alert_s && A && stat != DEAD) - var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!" - alert_drones(msg) - -/mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = 0) - for(var/mob/M in player_list) - var/send_msg = 0 - - if(istype(M, /mob/living/simple_animal/drone) && M.stat != DEAD) - for(var/F in src.faction) - if(F in M.faction) - send_msg = 1 - break - else if(dead_can_hear && (M in dead_mob_list)) - send_msg = 1 - - if(send_msg) - M << msg - -/mob/living/simple_animal/drone/proc/drone_chat(msg) - var/rendered = "DRONE CHAT: [name]: [msg]" - alert_drones(rendered, 1) - -/mob/living/simple_animal/drone/Login() - ..() - update_inv_hands() - update_inv_head() - update_inv_internal_storage() - check_laws() - - if(!picked) - pick_colour() - -/mob/living/simple_animal/drone/Die() - ..() - drop_l_hand() - drop_r_hand() - if(internal_storage) - unEquip(internal_storage) - if(head) - unEquip(head) - - alert_drones(DRONE_NET_DISCONNECT) - -/mob/living/simple_animal/drone/gib() - dust() - - -/mob/living/simple_animal/drone/unEquip(obj/item/I, force) - if(..(I,force)) - update_inv_hands() - if(I == head) - head = null - update_inv_head() - if(I == internal_storage) - internal_storage = null - update_inv_internal_storage() - return 1 - return 0 - -/mob/living/simple_animal/drone/can_equip(obj/item/I, slot) - switch(slot) - if(slot_head) - if(head) - return 0 - if(!((I.slot_flags & SLOT_HEAD) || (I.slot_flags & SLOT_MASK))) - return 0 - return 1 - if("drone_storage_slot") - if(internal_storage) - return 0 - return 1 - ..() - -/mob/living/simple_animal/drone/get_item_by_slot(slot_id) - switch(slot_id) - if(slot_head) - return head - if("drone_storage_slot") - return internal_storage - ..() - -/mob/living/simple_animal/drone/equip_to_slot(obj/item/I, slot) - if(!slot) return - if(!istype(I)) return - - if(I == l_hand) - l_hand = null - else if(I == r_hand) - r_hand = null - update_inv_hands() - - I.screen_loc = null // will get moved if inventory is visible - I.loc = src - I.equipped(src, slot) - I.layer = 20 - - switch(slot) - if(slot_head) - head = I - update_inv_head() - if("drone_storage_slot") - internal_storage = I - update_inv_internal_storage() - else - src << "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!" - return - -/mob/living/simple_animal/drone/stripPanelUnequip(obj/item/what, mob/who, where) - ..(what, who, where, 1) - -/mob/living/simple_animal/drone/stripPanelEquip(obj/item/what, mob/who, where) - ..(what, who, where, 1) - -/mob/living/simple_animal/drone/emp_act(severity) - Stun(5) - src << "ER@%R: MME^RY CO#RU9T! R&$b@0tin)..." - if(severity == 1) - adjustBruteLoss(heavy_emp_damage) - src << "HeAV% DA%^MMA+G TO I/O CIR!%UUT!" - - -/mob/living/simple_animal/drone/proc/triggerAlarm(var/class, area/A, var/O, var/obj/alarmsource) - if(alarmsource.z != z) - return - if(stat != DEAD) - var/list/L = src.alarms[class] - for (var/I in L) - if (I == A.name) - var/list/alarm = L[I] - var/list/sources = alarm[2] - if (!(alarmsource in sources)) - sources += alarmsource - return - L[A.name] = list(A, list(alarmsource)) - src << "--- [class] alarm detected in [A.name]!" - -/mob/living/simple_animal/drone/proc/cancelAlarm(var/class, area/A as area, obj/origin) - if(stat != DEAD) - var/list/L = alarms[class] - var/cleared = 0 - for (var/I in L) - if (I == A.name) - var/list/alarm = L[I] - var/list/srcs = alarm[2] - if (origin in srcs) - srcs -= origin - if (srcs.len == 0) - cleared = 1 - L -= I - if(cleared) - src << "--- [class] alarm in [A.name] has been cleared." - -/mob/living/simple_animal/drone/proc/pick_colour() - var/colour = input("Choose your colour!", "Colour", "grey") in list("grey", "blue", "red", "green", "pink", "orange") - icon_state = "drone_[colour]" - icon_living = "drone_[colour]" - picked = TRUE - -/mob/living/simple_animal/drone/proc/apply_overlay(cache_index) - var/image/I = drone_overlays[cache_index] - if(I) - overlays += I - -/mob/living/simple_animal/drone/proc/remove_overlay(cache_index) - if(drone_overlays[cache_index]) - overlays -= drone_overlays[cache_index] - drone_overlays[cache_index] = null - - -/mob/living/simple_animal/drone/proc/update_inv_hands() - remove_overlay(HANDS_LAYER) - var/list/hands_overlays = list() - if(r_hand) - var/r_state = r_hand.item_state - if(!r_state) - r_state = r_hand.icon_state - - hands_overlays += image("icon" = r_hand.righthand_file, "icon_state"="[r_state]", "layer"=-HANDS_LAYER) - - if(client && hud_used) - r_hand.layer = 20 - r_hand.screen_loc = ui_rhand - client.screen |= r_hand - - if(l_hand) - var/l_state = l_hand.item_state - if(!l_state) - l_state = l_hand.icon_state - - hands_overlays += image("icon" = l_hand.lefthand_file, "icon_state"="[l_state]", "layer"=-HANDS_LAYER) - - if(client && hud_used) - l_hand.layer = 20 - l_hand.screen_loc = ui_lhand - client.screen |= l_hand - - - if(hands_overlays.len) - drone_overlays[HANDS_LAYER] = hands_overlays - apply_overlay(HANDS_LAYER) - - -/mob/living/simple_animal/drone/proc/update_inv_internal_storage() - if(internal_storage && client && hud_used) - internal_storage.screen_loc = ui_drone_storage - client.screen += internal_storage - - -/mob/living/simple_animal/drone/update_inv_head() - remove_overlay(HEAD_LAYER) - - if(head) - if(client && hud_used) - head.screen_loc = ui_drone_head - client.screen += head - - - var/image/head_overlay = image("icon"='icons/mob/head.dmi', "icon_state"="[head.icon_state]", "layer"=-HEAD_LAYER) - if(istype(head, /obj/item/clothing/mask)) - head_overlay.icon = 'icons/mob/mask.dmi' - head_overlay.color = head.color - head_overlay.alpha = head.alpha - head_overlay.pixel_y = -15 - - drone_overlays[HEAD_LAYER] = head_overlay - - apply_overlay(HEAD_LAYER) - -//These procs serve as redirection so that the drone updates as expected when other things call these procs -/mob/living/simple_animal/drone/update_inv_l_hand() - update_inv_hands() - -/mob/living/simple_animal/drone/update_inv_r_hand() - update_inv_hands() - -/mob/living/simple_animal/drone/update_inv_wear_mask() - update_inv_head() - - -/mob/living/simple_animal/drone/canUseTopic() - if(stat) - return - return 1 - -/mob/living/simple_animal/drone/activate_hand(var/selhand) - - if(istext(selhand)) - selhand = lowertext(selhand) - - if(selhand == "right" || selhand == "r") - selhand = 0 - if(selhand == "left" || selhand == "l") - selhand = 1 - - if(selhand != src.hand) - swap_hand() - else - mode() - -/mob/living/simple_animal/drone/assess_threat() //Secbots won't hunt maintenance drones. - return -10 - - -#undef HANDS_LAYER -#undef HEAD_LAYER -#undef TOTAL_LAYERS - -#undef DRONE_NET_CONNECT -#undef DRONE_NET_DISCONNECT - -//DRONE SHELL -/obj/item/drone_shell - name = "drone shell" - desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." - icon = 'icons/mob/drone.dmi' - icon_state = "drone_item" - origin_tech = "programming=2;biotech=4" - var/drone_type = /mob/living/simple_animal/drone //Type of drone that will be spawned - -/obj/item/drone_shell/attack_ghost(mob/user) - if(jobban_isbanned(user,"pAI")) - return - - var/be_drone = alert("Become a drone? (Warning, You can no longer be cloned!)",,"Yes","No") - if(be_drone == "No" || gc_destroyed) - return - var/mob/living/simple_animal/drone/D = new drone_type(get_turf(loc)) - D.key = user.key - qdel(src) - - -//DRONE HOLDER - -/obj/item/clothing/head/drone_holder//Only exists in someones hand.or on their head - name = "drone (hiding)" - desc = "This drone is scared and has curled up into a ball" - icon = 'icons/mob/drone.dmi' - icon_state = "drone_item" - var/mob/living/simple_animal/drone/drone //stored drone - -/obj/item/clothing/head/drone_holder/proc/uncurl() - if(!drone) - return - - if(istype(loc, /mob/living)) - var/mob/living/L = loc - L.show_message("[drone] is trying to escape!") - if(!do_after(L, 50) || loc != L) - return - L.unEquip(src) - - contents -= drone - drone.loc = get_turf(src) - drone.reset_view() - drone.dir = SOUTH //Looks better - drone.visible_message("[drone] uncurls!") - drone = null - qdel(src) - - -/obj/item/clothing/head/drone_holder/relaymove() - uncurl() - -/obj/item/clothing/head/drone_holder/container_resist() - uncurl() - - -//More types of drones - -/mob/living/simple_animal/drone/syndrone - name = "Syndrone" - desc = "A modified maintenance drone. This one brings with it the feeling of terror." - icon_state = "drone_synd" - icon_living = "drone_synd" - picked = TRUE - health = 30 - maxHealth = 120 //If you murder other drones and cannibalize them you can get much stronger - faction = list("syndicate") - heavy_emp_damage = 10 - laws = \ - "1. Interfere.\n"+\ - "2. Kill.\n"+\ - "3. Destroy." - default_storage = /obj/item/device/radio/uplink - default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi - -/mob/living/simple_animal/drone/syndrone/New() - ..() - if(internal_storage && internal_storage.hidden_uplink) - internal_storage.hidden_uplink.uses = (initial(internal_storage.hidden_uplink.uses) / 2) - internal_storage.name = "syndicate uplink" - -/mob/living/simple_animal/drone/syndrone/Login() - ..() - src << "You can kill and eat other drones to increase your health!" //Inform the evil lil guy - -/obj/item/drone_shell/syndrone - name = "syndrone shell" - desc = "A shell of a syndrone, a modified maintenance drone designed to infiltrate and annihilate." - icon_state = "syndrone_item" - drone_type = /mob/living/simple_animal/drone/syndrone - diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm new file mode 100644 index 00000000000..4a003c9a72f --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -0,0 +1,183 @@ + +#define DRONE_HANDS_LAYER 1 +#define DRONE_HEAD_LAYER 2 +#define DRONE_TOTAL_LAYERS 2 + +#define DRONE_NET_CONNECT "DRONE NETWORK: [name] connected." +#define DRONE_NET_DISCONNECT "DRONE NETWORK: [name] is not responding." + +#define MAINTDRONE "drone_maint" +#define REPAIRDRONE "drone_repair" + +/mob/living/simple_animal/drone + name = "Drone" + desc = "A maintenance drone, an expendable robot built to perform station repairs." + icon = 'icons/mob/drone.dmi' + icon_state = "drone_maint_grey" + icon_living = "drone_maint_grey" + icon_dead = "drone_maint_dead" + gender = NEUTER + health = 30 + maxHealth = 30 + heat_damage_per_tick = 0 + cold_damage_per_tick = 0 + unsuitable_atmos_damage = 0 + wander = 0 + speed = 0 + ventcrawler = 2 + pass_flags = PASSTABLE | PASSMOB + sight = (SEE_TURFS | SEE_OBJS) + status_flags = (CANPUSH | CANSTUN | CANWEAKEN) + gender = NEUTER + voice_name = "synthesized chirp" + languages = DRONE + mob_size = 0 + has_unlimited_silicon_privilege = 1 + staticOverlays = list() + var/staticChoice = "static" + var/list/staticChoices = list("static", "blank", "letter") + var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) + var/list/drone_overlays[DRONE_TOTAL_LAYERS] + var/laws = \ + "1. You may not involve yourself in the matters of another being, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\ + "2. You may not harm any being, regardless of intent or circumstance.\n"+\ + "3. Your goals are to build, maintain, repair, improve, and power to the best of your abilities, You must never actively work against these goals." + var/light_on = 0 + var/heavy_emp_damage = 25 //Amount of damage sustained if hit by a heavy EMP pulse + var/health_repair_max = 0 //Drone will only be able to be repaired/reactivated up to this point, defaults to health + var/alarms = list("Atmosphere" = list(), "Fire" = list(), "Power" = list()) + var/obj/item/internal_storage //Drones can store one item, of any size/type in their body + var/obj/item/head + var/obj/item/default_storage = /obj/item/weapon/storage/toolbox/drone //If this exists, it will spawn in internal storage + var/obj/item/default_hatmask //If this exists, it will spawn in the hat/mask slot if it can fit + var/seeStatic = 1 //Whether we see static instead of mobs + var/visualAppearence = MAINTDRONE //What we appear as + + +/mob/living/simple_animal/drone/New() + ..() + + name = name + " ([rand(100,999)])" + real_name = name + + access_card = new /obj/item/weapon/card/id(src) + var/datum/job/captain/C = new /datum/job/captain + access_card.access = C.get_access() + + if(!health_repair_max) + health_repair_max = initial(health) + + if(default_storage) + var/obj/item/I = new default_storage(src) + equip_to_slot_or_del(I, "drone_storage_slot") + if(default_hatmask) + var/obj/item/I = new default_hatmask(src) + equip_to_slot_or_del(I, slot_head) + + alert_drones(DRONE_NET_CONNECT) + + +/mob/living/simple_animal/drone/Destroy() + qdel(access_card) //Otherwise it ends up on the floor! + ..() + +/mob/living/simple_animal/drone/Login() + ..() + update_inv_hands() + update_inv_head() + update_inv_internal_storage() + check_laws() + + updateSeeStaticMobs() + + if(!picked) + pickVisualAppearence() + + +/mob/living/simple_animal/drone/Die() + ..() + drop_l_hand() + drop_r_hand() + if(internal_storage) + unEquip(internal_storage) + if(head) + unEquip(head) + + alert_drones(DRONE_NET_DISCONNECT) + + +/mob/living/simple_animal/drone/gib() + dust() + + +/mob/living/simple_animal/drone/examine(mob/user) + . = ..() + if(!client && stat != DEAD) + user << "A small blue LED is blinking on and off at a steady rate." + + if(stat == DEAD) + user << "The drone's LED screen shows a BSOD, Blue screen of Death!" + + +/mob/living/simple_animal/drone/Move() + if(pullin) + if(pulling) + pullin.icon_state = "pull" + else + pullin.icon_state = "pull0" + ..() + + +/mob/living/simple_animal/drone/IsAdvancedToolUser() + return 1 + + +/mob/living/simple_animal/drone/canUseTopic() + if(stat) + return + return 1 + + +/mob/living/simple_animal/drone/assess_threat() //Secbots won't hunt maintenance drones. + return -10 + + +/mob/living/simple_animal/drone/emp_act(severity) + Stun(5) + src << "ER@%R: MME^RY CO#RU9T! R&$b@0tin)..." + if(severity == 1) + adjustBruteLoss(heavy_emp_damage) + src << "HeAV% DA%^MMA+G TO I/O CIR!%UUT!" + + +/mob/living/simple_animal/drone/proc/triggerAlarm(var/class, area/A, var/O, var/obj/alarmsource) + if(alarmsource.z != z) + return + if(stat != DEAD) + var/list/L = src.alarms[class] + for (var/I in L) + if (I == A.name) + var/list/alarm = L[I] + var/list/sources = alarm[2] + if (!(alarmsource in sources)) + sources += alarmsource + return + L[A.name] = list(A, list(alarmsource)) + src << "--- [class] alarm detected in [A.name]!" + + +/mob/living/simple_animal/drone/proc/cancelAlarm(var/class, area/A as area, obj/origin) + if(stat != DEAD) + var/list/L = alarms[class] + var/cleared = 0 + for (var/I in L) + if (I == A.name) + var/list/alarm = L[I] + var/list/srcs = alarm[2] + if (origin in srcs) + srcs -= origin + if (srcs.len == 0) + cleared = 1 + L -= I + if(cleared) + src << "--- [class] alarm in [A.name] has been cleared." \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm new file mode 100644 index 00000000000..cd4c33c7ee1 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -0,0 +1,69 @@ + +/////////////////// +//DRONES AS ITEMS// +/////////////////// +//Drone shells +//Drones as hats + + +//DRONE SHELL +/obj/item/drone_shell + name = "drone shell" + desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." + icon = 'icons/mob/drone.dmi' + icon_state = "drone_maint_hat"//yes reuse the _hat state. + origin_tech = "programming=2;biotech=4" + var/drone_type = /mob/living/simple_animal/drone //Type of drone that will be spawned + +/obj/item/drone_shell/attack_ghost(mob/user) + if(jobban_isbanned(user,"pAI")) + return + + var/be_drone = alert("Become a drone? (Warning, You can no longer be cloned!)",,"Yes","No") + if(be_drone == "No" || gc_destroyed) + return + var/mob/living/simple_animal/drone/D = new drone_type(get_turf(loc)) + D.key = user.key + qdel(src) + + +//DRONE HOLDER +/obj/item/clothing/head/drone_holder//Only exists in someones hand.or on their head + name = "drone (hiding)" + desc = "This drone is scared and has curled up into a ball" + icon = 'icons/mob/drone.dmi' + icon_state = "drone_maint_hat" + var/mob/living/simple_animal/drone/drone //stored drone + +/obj/item/clothing/head/drone_holder/proc/uncurl() + if(!drone) + return + + if(istype(loc, /mob/living)) + var/mob/living/L = loc + L.show_message("[drone] is trying to escape!") + if(!do_after(L, 50) || loc != L) + return + L.unEquip(src) + + contents -= drone + drone.loc = get_turf(src) + drone.reset_view() + drone.dir = SOUTH //Looks better + drone.visible_message("[drone] uncurls!") + drone = null + qdel(src) + + +/obj/item/clothing/head/drone_holder/relaymove() + uncurl() + +/obj/item/clothing/head/drone_holder/container_resist() + uncurl() + + +/obj/item/clothing/head/drone_holder/proc/updateVisualAppearence(var/mob/living/simple_animal/drone/D) + if(!D) + return + icon_state = "[D.visualAppearence]_hat" + . = icon_state \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm new file mode 100644 index 00000000000..e17a9a0dcb0 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -0,0 +1,46 @@ + +//////////////////// +//MORE DRONE TYPES// +//////////////////// +//Drones with custom laws +//Drones with custom shells +//Drones with overriden procs + + +//More types of drones +/mob/living/simple_animal/drone/syndrone + name = "Syndrone" + desc = "A modified maintenance drone. This one brings with it the feeling of terror." + icon_state = "drone_synd" + icon_living = "drone_synd" + picked = TRUE //the appearence of syndrones is static, you don't get to change it. + health = 30 + maxHealth = 120 //If you murder other drones and cannibalize them you can get much stronger + faction = list("syndicate") + heavy_emp_damage = 10 + laws = \ + "1. Interfere.\n"+\ + "2. Kill.\n"+\ + "3. Destroy." + default_storage = /obj/item/device/radio/uplink + default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi + seeStatic = 0 //Our programming is superior. + + +/mob/living/simple_animal/drone/syndrone/New() + ..() + if(internal_storage && internal_storage.hidden_uplink) + internal_storage.hidden_uplink.uses = (initial(internal_storage.hidden_uplink.uses) / 2) + internal_storage.name = "syndicate uplink" + + +/mob/living/simple_animal/drone/syndrone/Login() + ..() + src << "You can kill and eat other drones to increase your health!" //Inform the evil lil guy + + +/obj/item/drone_shell/syndrone + name = "syndrone shell" + desc = "A shell of a syndrone, a modified maintenance drone designed to infiltrate and annihilate." + icon_state = "syndrone_item" + drone_type = /mob/living/simple_animal/drone/syndrone \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm new file mode 100644 index 00000000000..1a9dfb7db3e --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -0,0 +1,106 @@ + +///////////////////// +//DRONE INTERACTION// +///////////////////// +//How drones interact with the world +//How the world interacts with drones + + +/mob/living/simple_animal/drone/UnarmedAttack(atom/A, proximity) + A.attack_hand(src) + + +/mob/living/simple_animal/drone/attack_hand(mob/user) + if(isdrone(user)) + var/mob/living/simple_animal/drone/D = user + if(D != src) + if(stat == DEAD) + var/d_input = alert(D,"Perform which action?","Drone Interaction","Reactivate","Cannibalize","Nothing") + if(d_input) + switch(d_input) + if("Reactivate") + var/mob/dead/observer/G = get_ghost() + if(!client && (!G || !G.client)) + var/list/faux_gadgets = list("hypertext inflator","failsafe directory","DRM switch","stack initializer",\ + "anti-freeze capacitor","data stream diode","TCP bottleneck","supercharged I/O bolt",\ + "tradewind stablizer","radiated XML cable","registry fluid tank","open-source debunker") + + var/list/faux_problems = list("won't be able to tune their bootstrap projector","will constantly remix their binary pool"+\ + " even though the BMX calibrator is working","will start leaking their XSS coolant",\ + "can't tell if their ethernet detour is moving or not", "won't be able to reseed enough"+\ + " kernels to function properly","can't start their neurotube console") + + D << "You can't seem to find the [pick(faux_gadgets)]. Without it, [src] [pick(faux_problems)]." + return + D.visible_message("[D] begins to reactivate [src].") + if(do_after(user,30,needhand = 1)) + health = health_repair_max + stat = CONSCIOUS + icon_state = icon_living + dead_mob_list -= src + living_mob_list += src + D.visible_message("[D] reactivates [src]!") + alert_drones(DRONE_NET_CONNECT) + if(G) + G << "DRONE NETWORK: You were reactivated by [D]!" + else + D << "You need to remain still to reactivate [src]." + + if("Cannibalize") + if(D.health < D.maxHealth) + D.visible_message("[D] begins to cannibalize parts from [src].") + if(do_after(D, 60,5,0)) + D.visible_message("[D] repairs itself using [src]'s remains!") + D.adjustBruteLoss(-src.maxHealth) + new /obj/effect/decal/cleanable/oil/streak(get_turf(src)) + qdel(src) + else + D << "You need to remain still to cannibalize [src]." + else + D << "You're already in perfect condition!" + if("Nothing") + return + + return + + + if(ishuman(user)) + if(stat == DEAD) + ..() + return + if(user.get_active_hand()) + user << "Your hands are full." + return + src << "[user] is trying to pick you up!" + if(buckled) + user << "[src] is buckled to the [buckled.name] and cannot be picked up!" + return + user << "You pick [src] up." + drop_l_hand() + drop_r_hand() + var/obj/item/clothing/head/drone_holder/DH = new /obj/item/clothing/head/drone_holder(src) + DH.updateVisualAppearence(src) + DH.contents += src + DH.drone = src + user.put_in_hands(DH) + src.loc = DH + return + + ..() + + +/mob/living/simple_animal/drone/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/screwdriver) && stat != DEAD) + if(health < health_repair_max) + user << "You start to tighten loose screws on [src]." + if(do_after(user,80)) + health = health_repair_max + visible_message("[user] tightens [src == user ? "their" : "[src]'s"] loose screws!") + else + user << "You need to remain still to tighten [src]'s screws." + else + user << "[src]'s screws can't get any tighter!" + else + ..() + + diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm new file mode 100644 index 00000000000..3ee98de3c03 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm @@ -0,0 +1,115 @@ + +/////////////////// +//DRONE INVENTORY// +/////////////////// +//Drone inventory +//Drone hands + + + + +/mob/living/simple_animal/drone/activate_hand(var/selhand) + + if(istext(selhand)) + selhand = lowertext(selhand) + + if(selhand == "right" || selhand == "r") + selhand = 0 + if(selhand == "left" || selhand == "l") + selhand = 1 + + if(selhand != src.hand) + swap_hand() + else + mode() + + +/mob/living/simple_animal/drone/swap_hand() + var/obj/item/held_item = get_active_hand() + if(held_item) + if(istype(held_item, /obj/item/weapon/twohanded)) + var/obj/item/weapon/twohanded/T = held_item + if(T.wielded == 1) + usr << "Your other hand is too busy holding the [T.name]." + return + + hand = !hand + if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object) + if(hand) + hud_used.l_hand_hud_object.icon_state = "hand_l_active" + hud_used.r_hand_hud_object.icon_state = "hand_r_inactive" + else + hud_used.l_hand_hud_object.icon_state = "hand_l_inactive" + hud_used.r_hand_hud_object.icon_state = "hand_r_active" + + +/mob/living/simple_animal/drone/unEquip(obj/item/I, force) + if(..(I,force)) + update_inv_hands() + if(I == head) + head = null + update_inv_head() + if(I == internal_storage) + internal_storage = null + update_inv_internal_storage() + return 1 + return 0 + + +/mob/living/simple_animal/drone/can_equip(obj/item/I, slot) + switch(slot) + if(slot_head) + if(head) + return 0 + if(!((I.slot_flags & SLOT_HEAD) || (I.slot_flags & SLOT_MASK))) + return 0 + return 1 + if("drone_storage_slot") + if(internal_storage) + return 0 + return 1 + ..() + + +/mob/living/simple_animal/drone/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_head) + return head + if("drone_storage_slot") + return internal_storage + ..() + + +/mob/living/simple_animal/drone/equip_to_slot(obj/item/I, slot) + if(!slot) return + if(!istype(I)) return + + if(I == l_hand) + l_hand = null + else if(I == r_hand) + r_hand = null + update_inv_hands() + + I.screen_loc = null // will get moved if inventory is visible + I.loc = src + I.equipped(src, slot) + I.layer = 20 + + switch(slot) + if(slot_head) + head = I + update_inv_head() + if("drone_storage_slot") + internal_storage = I + update_inv_internal_storage() + else + src << "You are trying to equip this item to an unsupported inventory slot. Report this to a coder!" + return + + +/mob/living/simple_animal/drone/stripPanelUnequip(obj/item/what, mob/who, where) + ..(what, who, where, 1) + + +/mob/living/simple_animal/drone/stripPanelEquip(obj/item/what, mob/who, where) + ..(what, who, where, 1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm new file mode 100644 index 00000000000..15dc76f9e16 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -0,0 +1,46 @@ + +///////////// +//DRONE SAY// +///////////// +//Drone speach +//Drone hearing + + +/mob/living/simple_animal/drone/say(var/message) + return ..(message, "R") + + +/mob/living/simple_animal/drone/lang_treat(atom/movable/speaker, message_langs, raw_message) //This is so drones can understand humans without being able to speak human + . = ..() + var/hear_override_langs = HUMAN + if(message_langs & hear_override_langs) + return ..(speaker, languages, raw_message) + + +/mob/living/simple_animal/drone/handle_inherent_channels(message, message_mode) + if(message_mode == MODE_BINARY) + drone_chat(message) + return ITALICS | REDUCE_RANGE + else + ..() + + +/mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = 0) + for(var/mob/M in player_list) + var/send_msg = 0 + + if(istype(M, /mob/living/simple_animal/drone) && M.stat != DEAD) + for(var/F in src.faction) + if(F in M.faction) + send_msg = 1 + break + else if(dead_can_hear && (M in dead_mob_list)) + send_msg = 1 + + if(send_msg) + M << msg + + +/mob/living/simple_animal/drone/proc/drone_chat(msg) + var/rendered = "DRONE CHAT: [name]: [msg]" + alert_drones(rendered, 1) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm new file mode 100644 index 00000000000..cd5f65f9274 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -0,0 +1,53 @@ + +/////////////// +//DRONE VERBS// +/////////////// +//Drone verbs that appear in the Drone tab and on buttons + + +/mob/living/simple_animal/drone/verb/check_laws() + set category = "Drone" + set name = "Check Laws" + + src << "Drone Laws" + src << laws + +/mob/living/simple_animal/drone/verb/toggle_light() + set category = "Drone" + set name = "Toggle drone light" + if(light_on) + AddLuminosity(-4) + else + AddLuminosity(4) + + light_on = !light_on + + src << "Your light is now [light_on ? "on" : "off"]" + +/mob/living/simple_animal/drone/verb/drone_ping() + set category = "Drone" + set name = "Drone ping" + + var/alert_s = input(src,"Alert severity level","Drone ping",null) as null|anything in list("Low","Medium","High","Critical") + + var/area/A = get_area(loc) + + if(alert_s && A && stat != DEAD) + var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!" + alert_drones(msg) + + +/mob/living/simple_animal/drone/verb/toggle_statics() + set name = "Change Vision Filter" + set desc = "Change the filter on the system used to remove non drone beings from your viewscreen." + set category = "Drone" + + if(!seeStatic) + src << "You have no vision filter to change!" + return + + var/selectedStatic = input("Select a vision filter", "Vision Filter") as null|anything in staticChoices + if(selectedStatic in staticChoices) + staticChoice = selectedStatic + + updateSeeStaticMobs() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm new file mode 100644 index 00000000000..5496f5f853d --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -0,0 +1,159 @@ + +///////////////// +//DRONE VISUALS// +///////////////// +//Drone overlays +//Drone visuals + + +/mob/living/simple_animal/drone/proc/apply_overlay(cache_index) + var/image/I = drone_overlays[cache_index] + if(I) + overlays += I + + +/mob/living/simple_animal/drone/proc/remove_overlay(cache_index) + if(drone_overlays[cache_index]) + overlays -= drone_overlays[cache_index] + drone_overlays[cache_index] = null + + +/mob/living/simple_animal/drone/proc/update_inv_hands() + remove_overlay(DRONE_HANDS_LAYER) + var/list/hands_overlays = list() + + var/y_shift = getItemPixelShiftY() + + if(r_hand) + var/r_state = r_hand.item_state + if(!r_state) + r_state = r_hand.icon_state + + var/image/r_hand_image = image("icon" = r_hand.righthand_file, "icon_state"="[r_state]", "layer"=-DRONE_HANDS_LAYER) + if(y_shift != 0) + r_hand_image.pixel_y = y_shift + + hands_overlays += r_hand_image + + if(client && hud_used) + r_hand.layer = 20 + r_hand.screen_loc = ui_rhand + client.screen |= r_hand + + if(l_hand) + var/l_state = l_hand.item_state + if(!l_state) + l_state = l_hand.icon_state + + var/image/l_hand_image = image("icon" = l_hand.lefthand_file, "icon_state"="[l_state]", "layer"=-DRONE_HANDS_LAYER) + if(y_shift != 0) + l_hand_image.pixel_y = y_shift + + hands_overlays += l_hand_image + + if(client && hud_used) + l_hand.layer = 20 + l_hand.screen_loc = ui_lhand + client.screen |= l_hand + + + if(hands_overlays.len) + drone_overlays[DRONE_HANDS_LAYER] = hands_overlays + apply_overlay(DRONE_HANDS_LAYER) + + +/mob/living/simple_animal/drone/proc/update_inv_internal_storage() + if(internal_storage && client && hud_used) + internal_storage.screen_loc = ui_drone_storage + client.screen += internal_storage + + +/mob/living/simple_animal/drone/update_inv_head() + remove_overlay(DRONE_HEAD_LAYER) + + if(head) + if(client && hud_used) + head.screen_loc = ui_drone_head + client.screen += head + + + var/image/head_overlay = image("icon"='icons/mob/head.dmi', "icon_state"="[head.icon_state]", "layer"=-DRONE_HEAD_LAYER) + if(istype(head, /obj/item/clothing/mask)) + head_overlay.icon = 'icons/mob/mask.dmi' + head_overlay.color = head.color + head_overlay.alpha = head.alpha + head_overlay.pixel_y = -15 + + drone_overlays[DRONE_HEAD_LAYER] = head_overlay + + apply_overlay(DRONE_HEAD_LAYER) + + +//These procs serve as redirection so that the drone updates as expected when other things call these procs +/mob/living/simple_animal/drone/update_inv_l_hand() + update_inv_hands() + + +/mob/living/simple_animal/drone/update_inv_r_hand() + update_inv_hands() + + +/mob/living/simple_animal/drone/update_inv_wear_mask() + update_inv_head() + + +/mob/living/simple_animal/drone/proc/pickVisualAppearence() + picked = FALSE + var/appearence = input("Choose your appearence!", "Appearence", "Maintenance Drone") in list("Maintenance Drone", "Repair Drone") + switch(appearence) + if("Maintenance Drone") + visualAppearence = MAINTDRONE + var/colour = input("Choose your colour!", "Colour", "grey") in list("grey", "blue", "red", "green", "pink", "orange") + icon_state = "[visualAppearence]_[colour]" + icon_living = "[visualAppearence]_[colour]" + icon_dead = "[visualAppearence]_dead" + + if("Repair Drone") + visualAppearence = REPAIRDRONE + icon_state = visualAppearence + icon_living = visualAppearence + icon_dead = "[visualAppearence]_dead" + + else + return + + picked = TRUE + + + +/mob/living/simple_animal/drone/proc/getItemPixelShiftY() + switch(visualAppearence) + if(MAINTDRONE) + . = 0 + if(REPAIRDRONE) + . = -6 + +/mob/living/simple_animal/drone/proc/updateSeeStaticMobs() + if(!client) + return + + for(var/i in staticOverlays) + client.images.Remove(i) + staticOverlays.Remove(i) + staticOverlays.len = 0 + + if(seeStatic) + for(var/mob/living/L in mob_list) + if(isdrone(L)) + continue + var/image/chosen + if(staticChoice in L.staticOverlays) + chosen = L.staticOverlays[staticChoice] + else + chosen = L.staticOverlays["static"] + staticOverlays |= chosen + client.images |= chosen + + +/mob/living/simple_animal/drone/generateStaticOverlay() + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 257bb384c5e..0570e89ff65 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -331,6 +331,8 @@ if(O.flags & NOBLUDGEON) return + user.changeNext_move(CLICK_CD_MELEE) + if(istype(O, /obj/item/stack/medical)) if(stat != DEAD) var/obj/item/stack/medical/MED = O @@ -352,11 +354,13 @@ else user << " [src] is dead, medical items won't bring it back to life." return - if((meat_type || skin_type) && (stat == DEAD)) //if the animal has a meat, and if it is dead. - if(istype(O, /obj/item/weapon/kitchenknife)) - harvest() - user.changeNext_move(CLICK_CD_MELEE) + if((meat_type || skin_type) && (stat == DEAD)) //if the animal has a meat, and if it is dead. + var/sharpness = is_sharp(O) + if(sharpness) + harvest(user, sharpness) + return + user.do_attack_animation(src) var/damage = 0 if(O.force) @@ -475,8 +479,12 @@ new childtype(loc) // Harvest an animal's delicious byproducts -/mob/living/simple_animal/proc/harvest() - gib() +/mob/living/simple_animal/proc/harvest(mob/living/user, sharpness = 1) + user << "You begin to butcher [src]." + playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) + if(do_mob(user, src, 80/sharpness)) + visible_message("[user] butchers [src].") + gib() return /mob/living/simple_animal/stripPanelUnequip(obj/item/what, mob/who, where, child_override) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ae9c3a3906c..e9b5cc5f4c9 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -470,13 +470,6 @@ var/list/slot_equipment_priority = list( \ if (popup) memory() -/* -/mob/verb/help() - set name = "Help" - src << browse('html/help.html', "window=help") - return -*/ - /mob/verb/abandon_mob() set name = "Respawn" set category = "OOC" @@ -513,8 +506,6 @@ var/list/slot_equipment_priority = list( \ set name = "Changelog" set category = "OOC" getFiles( - 'html/postcardsmall.jpg', - 'html/somerights20.png', 'html/88x31.png', 'html/bug-minus.png', 'html/cross-circle.png', @@ -537,7 +528,7 @@ var/list/slot_equipment_priority = list( \ if(prefs.lastchangelog != changelog_hash) prefs.lastchangelog = changelog_hash prefs.save_preferences() - winset(src, "rpane.changelog", "background-color=none;font-style=;") + winset(src, "rpane.changelogb", "background-color=none;font-style=;") /mob/verb/observe() set name = "Observe" @@ -698,6 +689,7 @@ var/list/slot_equipment_priority = list( \ ..() if(statpanel("Status")) + stat(null, "Server Time: [time2text(world.realtime, "YYYY-MM-DD hh:mm")]") var/ETA switch(SSshuttle.emergency.mode) if(SHUTTLE_RECALL) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6a4aa3f319f..3f3581d1dc9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -13,15 +13,10 @@ var/obj/screen/hands = null var/obj/screen/pullin = null var/obj/screen/internals = null - var/obj/screen/oxygen = null var/obj/screen/i_select = null var/obj/screen/m_select = null - var/obj/screen/toxin = null - var/obj/screen/fire = null - var/obj/screen/bodytemp = null var/obj/screen/healths = null var/obj/screen/throw_icon = null - var/obj/screen/nutrition_icon = null var/obj/screen/pressure = null var/obj/screen/damageoverlay = null /*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob. diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 040a14f7802..b33337556f3 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -250,7 +250,12 @@ if(!job) return 0 if((job.current_positions >= job.total_positions) && job.total_positions != -1) - return 0 + if(job.title == "Assistant") + for(var/datum/job/J in SSjob.occupations) + if(J && J.current_positions < J.total_positions && J.title != job.title) + return 0 + else + return 0 if(jobban_isbanned(src,rank)) return 0 if(!job.player_old_enough(src.client)) @@ -333,6 +338,11 @@ if (job.title in command_positions) position_class = "commandPosition" dat += "
[job.title] ([job.current_positions])
" + if(!job_count) //if there's nowhere to go, assistant opens up. + for(var/datum/job/job in SSjob.occupations) + if(job.title != "Assistant") continue + dat += "[job.title] ([job.current_positions])
" + break dat += "" // Removing the old window method but leaving it here for reference diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 08029e1a5f5..3d5581648d2 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -23,6 +23,21 @@ del(preview_icon_side) var/icon/preview_icon = null + if(job_engsec_high) //cyborg/AI check, put first to avoid so much unneeded blending + switch(job_engsec_high) + if(AI) + preview_icon = new /icon('icons/mob/AI.dmi', "AI") + + if(CYBORG) + preview_icon = new /icon('icons/mob/robots.dmi', "robot") + + if(preview_icon) //We're busting out! + preview_icon_front = new(preview_icon, dir = SOUTH) + preview_icon_side = new(preview_icon, dir = WEST) + + del(preview_icon) + return + var/g = "m" if(gender == FEMALE) g = "f" @@ -65,6 +80,20 @@ facial_s.Blend("#[facial_hair_color]", ICON_MULTIPLY) eyes_s.Blend(facial_s, ICON_OVERLAY) + var/list/relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + var/icon_state_string = "[pref_species.id]_" + + if(pref_species.sexes) + icon_state_string += "[g]_s" + else + icon_state_string += "_s" + + for(var/layer in relevent_layers) + for(var/bodypart in pref_species.mutant_bodyparts) + var/icon/part = new/icon("icon" = 'icons/mob/mutant_bodyparts.dmi', "icon_state" = "[icon_state_string]_[bodypart]_[layer]") + part.Blend("#[mutant_color]", ICON_MULTIPLY) + preview_icon.Blend(part, ICON_OVERLAY) + var/icon/clothes_s = null if(job_civilian_low & ASSISTANT)//This gives the preview icon clothes depending on which job(if any) is set to 'high' clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s") diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index d6e0017ed56..66f6d9dac2d 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -355,9 +355,12 @@ if(M.stat == CONSCIOUS) if (istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M - if(istype(H.glasses,/obj/item/clothing/glasses/meson)) - H << "You look directly into the [src.name], good thing you had your protective eyewear on!" - return + if(istype(H.glasses, /obj/item/clothing/glasses/meson)) + var/obj/item/clothing/glasses/meson/MS = H.glasses + if(MS.vision_flags == SEE_TURFS) + H << "You look directly into the [src.name], good thing you had your protective eyewear on!" + return + M.apply_effect(3, STUN) M.visible_message("[M] stares blankly at the [src.name]!", \ "You look directly into the [src.name] and feel weak.") diff --git a/code/modules/procedural mapping/mapGenerator.dm b/code/modules/procedural mapping/mapGenerator.dm new file mode 100644 index 00000000000..60feecc29e0 --- /dev/null +++ b/code/modules/procedural mapping/mapGenerator.dm @@ -0,0 +1,123 @@ + +/datum/mapGenerator + + //Map information + var/list/map = list() + var/turf/bottomLeft = null + var/turf/topRight = null + + //mapGeneratorModule information + var/list/modules = list() + +/datum/mapGenerator/New() + ..() + initialiseModules() + +//Defines the region the map represents, sets map, bottomLeft, topRight +//Returns the map +/datum/mapGenerator/proc/defineRegion(var/turf/Start, var/turf/End) + if(!checkRegion(Start, End)) + return 0 + + if(!Start || !End) + return 0 + bottomLeft = Start + topRight = End + + map = block(bottomLeft,topRight) + return map + + +//Checks for and Rejects bad region coordinates +//Returns 1/0 +/datum/mapGenerator/proc/checkRegion(var/turf/Start, var/turf/End) + . = 1 + + if(!Start || !End) + return 0 //Just bail + + if(Start.x > world.maxx || End.x > world.maxx) + . = 0 + if(Start.y > world.maxy || End.y > world.maxy) + . = 0 + if(Start.z > world.maxz || End.z > world.maxz) + . = 0 + + +//Requests the mapGeneratorModule(s) to (re)generate +/datum/mapGenerator/proc/generate() + set background = 1 //this can get beefy + + syncModules() + if(!modules || !modules.len) + return + for(var/datum/mapGeneratorModule/mod in modules) + mod.generate() + + +//Requests the mapGeneratorModule(s) to (re)generate this one turf +/datum/mapGenerator/proc/generateOneTurf(var/turf/T) + if(!T) + return + syncModules() + if(!modules || !modules.len) + return + for(var/datum/mapGeneratorModule/mod in modules) + mod.place(T) + + +//Replaces all paths in the module list with actual module datums +/datum/mapGenerator/proc/initialiseModules() + for(var/path in modules) + if(ispath(path)) + modules.Remove(path) + modules |= new path + syncModules() + + +//Sync mapGeneratorModule(s) to mapGenerator +/datum/mapGenerator/proc/syncModules() + for(var/datum/mapGeneratorModule/mod in modules) + mod.sync(src) + + + +/////////////////////////// +// HERE BE DEBUG DRAGONS // +/////////////////////////// + +/client/proc/debugNatureMapGenerator() + set name = "Test Nature Map Generator" + set category = "Debug" + + var/datum/mapGenerator/nature/N = new() + var/startInput = input(usr,"Start turf of Map, (X;Y;Z)", "Map Gen Settings", "1;1;1") as text + var/endInput = input(usr,"End turf of Map (X;Y;Z)", "Map Gen Settings", "[world.maxx];[world.maxy];[mob ? mob.z : 1]") as text + //maxx maxy and current z so that if you fuck up, you only fuck up one entire z level instead of the entire universe + if(!startInput || !endInput) + src << "Missing Input" + return + + var/list/startCoords = text2list(startInput, ";") + var/list/endCoords = text2list(endInput, ";") + if(!startCoords || !endCoords) + src << "Invalid Coords" + src << "Start Input: [startInput]" + src << "End Input: [endInput]" + return + + var/turf/Start = locate(text2num(startCoords[1]),text2num(startCoords[2]),text2num(startCoords[3])) + var/turf/End = locate(text2num(endCoords[1]),text2num(endCoords[2]),text2num(endCoords[3])) + if(!Start || !End) + src << "Invalid Turfs" + src << "Start Coords: [startCoords[1]] - [startCoords[2]] - [startCoords[3]]" + src << "End Coords: [endCoords[1]] - [endCoords[2]] - [endCoords[3]]" + return + + src << "Defining Region" + N.defineRegion(Start, End) + src << "Region Defined" + src << "Generating Region" + N.generate() + src << "Generated Region" + diff --git a/code/modules/procedural mapping/mapGeneratorModule.dm b/code/modules/procedural mapping/mapGeneratorModule.dm new file mode 100644 index 00000000000..458f11cd969 --- /dev/null +++ b/code/modules/procedural mapping/mapGeneratorModule.dm @@ -0,0 +1,101 @@ + +#define CLUSTER_CHECK_NONE 0 //No checks are done, cluster as much as possible +#define CLUSTER_CHECK_ATOMS 2 //Don't let atoms cluster, based on clusterMin and clusterMax as guides +#define CLUSTER_CHECK_TURFS 4 //Don't let turfs cluster, based on clusterMin and clusterMax as guides +#define CLUSTER_CHECK_ALL 6 //Don't let anything cluster, based on clusterMind and clusterMax as guides + +/datum/mapGeneratorModule + var/datum/mapGenerator/mother = null + var/list/spawnableAtoms = list() + var/list/spawnableTurfs = list() + var/clusterMax = 5 + var/clusterMin = 1 + var/clusterCheckFlags = CLUSTER_CHECK_ALL + + +//Syncs the module up with it's mother +/datum/mapGeneratorModule/proc/sync(var/datum/mapGenerator/mum) + mother = null + if(mum) + mother = mum + + +//Generates it's spawnable atoms and turfs +/datum/mapGeneratorModule/proc/generate() + if(!mother) + return + var/list/map = mother.map + for(var/turf/T in map) + place(T) + + +//Place a spawnable atom or turf on this turf +/datum/mapGeneratorModule/proc/place(var/turf/T) + if(!T) + return 0 + + var/clustering = 0 + + //Turfs don't care whether atoms can be placed here + for(var/turfPath in spawnableTurfs) + if(clusterCheckFlags & CLUSTER_CHECK_TURFS) + if(clusterMax && clusterMin) + clustering = rand(clusterMin,clusterMax) + if(locate(/atom/movable) in range(clustering, T)) + continue + if(prob(spawnableTurfs[turfPath])) + T.ChangeTurf(turfPath) + + //Atoms DO care whether atoms can be placed here + if(checkPlaceAtom(T)) + for(var/atomPath in spawnableAtoms) + if(clusterCheckFlags & CLUSTER_CHECK_ATOMS) + if(clusterMax && clusterMin) + clustering = rand(clusterMin,clusterMax) + if(locate(/atom/movable) in range(clustering, T)) + continue + if(prob(spawnableAtoms[atomPath])) + new atomPath (T) + + . = 1 + + +//Checks and Rejects dense turfs +/datum/mapGeneratorModule/proc/checkPlaceAtom(var/turf/T) + . = 1 + if(!T) + return 0 + if(T.density) + . = 0 + for(var/atom/A in T) + if(A.density) + . = 0 + break + + +/////////////////////////////////////////////////////////// +// PREMADE BASE TEMPLATES // +// Appropriate settings for usable types // +// Not usable types themselves, use them as parent types // +// Seriously, don't use these on their own, just parents // +/////////////////////////////////////////////////////////// +//The /atom and /turf examples are just so these compile, replace those with your typepaths in your subtypes. + +//Settings appropriate for a turf that covers the entire map region, eg a fill colour on a bottom layer in a graphics program. +//Should only have one of these in your mapGenerator unless you want to waste CPU +/datum/mapGeneratorModule/bottomLayer + clusterCheckFlags = CLUSTER_CHECK_NONE + spawnableAtoms = list()//Recommended: No atoms. + spawnableTurfs = list(/turf = 100) + +//Settings appropriate for turfs/atoms that cover SOME of the map region, sometimes referred to as a splatter layer. +/datum/mapGeneratorModule/splatterLayer + clusterCheckFlags = CLUSTER_CHECK_ALL + spawnableAtoms = list(/atom = 30) + spawnableTurfs = list(/turf = 30) + +//Settings appropriate for turfs/atoms that cover a lot of the map region, eg a dense forest. +/datum/mapGeneratorModule/denseLayer + clusterCheckFlags = CLUSTER_CHECK_NONE + spawnableAtoms = list(/atom = 75) + spawnableTurfs = list(/turf = 75) \ No newline at end of file diff --git a/code/modules/procedural mapping/mapGeneratorModules/nature.dm b/code/modules/procedural mapping/mapGeneratorModules/nature.dm new file mode 100644 index 00000000000..09ca84574b1 --- /dev/null +++ b/code/modules/procedural mapping/mapGeneratorModules/nature.dm @@ -0,0 +1,37 @@ + +//Contents exist primarily for the nature generator test type. + + +//Pine Trees +/datum/mapGeneratorModule/pineTrees + spawnableAtoms = list(/obj/structure/flora/tree/pine = 30) + +//Dead Trees +/datum/mapGeneratorModule/deadTrees + spawnableAtoms = list(/obj/structure/flora/tree/dead = 10) + +//Random assortment of bushes +/datum/mapGeneratorModule/randBushes + spawnableAtoms = list() + +/datum/mapGeneratorModule/randBushes/New() + ..() + spawnableAtoms = typesof(/obj/structure/flora/ausbushes) + for(var/i in spawnableAtoms) + spawnableAtoms[i] = 20 + + +//Random assortment of rocks and rockpiles +/datum/mapGeneratorModule/randRocks + spawnableAtoms = list(/obj/structure/flora/rock = 40, /obj/structure/flora/rock/pile = 20) + + +//Grass turfs +/datum/mapGeneratorModule/bottomLayer/grassTurfs + spawnableTurfs = list(/turf/unsimulated/floor/grass = 100) + + +//Grass tufts with a high spawn chance +/datum/mapGeneratorModule/denseLayer/grassTufts + spawnableTurfs = list() + spawnableAtoms = list(/obj/structure/flora/ausbushes/grassybush = 75) diff --git a/code/modules/procedural mapping/mapGeneratorReadme.dm b/code/modules/procedural mapping/mapGeneratorReadme.dm new file mode 100644 index 00000000000..95fa449624e --- /dev/null +++ b/code/modules/procedural mapping/mapGeneratorReadme.dm @@ -0,0 +1,130 @@ + +/* +by RemieRichards + +////////////////////////////// +// CODER INFORMATIVE README // +////////////////////////////// +(See below for Mapper Friendly Readme) + +mapGenerator: + Desc: a mapGenerator is a master datum that collects + and syncs all mapGeneratorModules in it's modules list + + defineRegion(var/list/startList, var/list/endList) + Example: defineRegion(locate(1,1,1),locate(5,5,5)) + Desc: Sets the bounds of the mapGenerator's "map" + + checkRegion(var/turf/Start, var/turf/End) + Example: checkRegion(locate(1,1,1), locate(5,5,5)) + Desc: Checks if a rectangle between Start's coords and End's coords is valid + Existing Calls: mapGenerator/defineRegion() + + generate() + Example: generate() + Desc: Orders all mapGeneratorModules in the modules list to generate() + + generateOneTurf(var/turf/T) + Example: generateOneTurf(locate(1,1,1)) + Desc: Orders all mapGeneratorModules in the modules list to place(T) on this turf + + initialiseModules() + Example: initialiseModules() + Desc: Replaces all typepaths in the modules list with actual /datum/mapGenerator/Module types + Existing Calls: mapGenerator/New() + + syncModules() + Example: syncModules() + Desc: Sets the Mother variable on all mapGeneratorModules in the modules list to this mapGenerator + Existing Calls: initialiseModules(),generate(),generateOneTurf() + + +mapGeneratorModule + Desc: a mapGeneratorModule has spawnableAtoms and spawnableTurfs lists + which it will generate on turfs in it's mother's map based on cluster variables + + sync(var/datum/mapGenerator/mum) + Example: sync(a_mapGenerator_as_a_variable) + Desc: Sets the Mother variable to the mum argument + Existing Calls: mapGenerator/syncModules() + + generate() + Example: generate() + Desc: Calls place(T) on all turfs in it's mother's map + Existing Calls: mapGenerator/generate() + + place(var/turf/T) + Example: place(locate(1,1,1)) + Desc: Run this mapGeneratorModule's effects on this turf (Spawning atoms, Changing turfs) + Existing Calls: mapGenerator/generate(), mapGenerator/generateOneTurf() + + checkPlaceAtom(var/turf/T) + Example: checkPlace(locate(1,1,1)) + Desc: Checks if the turf is valid for placing atoms + Existing Calls: place() + + + +//////////////////////////// +// MAPPER FRIENDLY README // +//////////////////////////// + +Simple Workflow: + + 1. Define a/some mapGeneratorModule(s) to your liking, choosing atoms and turfs to spawn + #Note: I chose to split Turfs and Atoms off into seperate modules, but this is NOT required. + #Note: A mapGeneratorModule may have turfs AND atoms, so long as each is in it's appropriate list + + 2. Define a mapGenerator type who's modules list contains the typepath(s) of all the module(s) you wish to use + #Note: The order of the typepaths in the modules list is the order they will happen in, this is important for clusterCheckFlags. + + 3. Take notes of the Bottom Left and Top Right turfs of your rectangular "map"'s coordinates + #Note: X,Y AND Z, Yes you can created 3D "maps" by having differing Z coords + + 4. Create the mapGenerator type you created + + 5. Call yourMapGeneratorType.defineRegion(locate(X,Y,Z), locate(X,Y,Z)) + #Note: The above X/Y/Zs are the coordinates of the start and end turfs, the locate() simply finds the turf for the code + + 6. Call yourMapGeneratorType.generate(), this will cause all the modules in the generator to build within the map bounds + +Option Suggestions: + + * Have seperate modules for Turfs and Atoms, this is not enforced, but it is how I have structured my nature example. + * If your map doesn't look quite to your liking, simply jiggle with the variables on your modules and the type probabilities + * You can mix and map premade areas with the procedural generation, for example mapping an entire flat land but having code generate just the grass tufts + + +Using the Modules list + + Simply think of it like each module is a layer in a graphics editing program! + To help you do this templates such as /mapGeneratorModule/bottomLayer have been provided with appropriate default settings. + These are located near the bottom of mapGeneratorModule.dm + you would order your list left to right, top to bottom, e.g: + modules = list(bottomLayer,nextLayer,nextNextLayer) etc. + + +Variable Breakdown (For Mappers): + + mapGenerator + map - INTERNAL, do not touch + bottomLeft - INTERNAL, do not touch + topRight - INTERNAL, do not touch + modules - A list of typepaths of mapGeneratorModules + + mapGeneratorModule + mother - INTERNAL, do not touch + spawnableAtoms - A list of typepaths and their probability to spawn, eg: spawnableAtoms = list(/obj/structure/flora/tree/pine = 30) + spawnableTurfs - A list of typepaths and their probability to spawn, eg: spawnableTurfs = list(/turf/unsimulated/floor/grass = 100) + clusterMax - The max range to check for something being "too close" for this atom/turf to spawn, the true value is random between clusterMin and clusterMax + clusterMin - The min range to check for something being "too close" for this atom/turf to spawn, the true value is random between clusterMin and clusterMax + clusterCheckFlags - A Bitfield that controls how the cluster checks work. + + clusterCheckFlags flags: + CLUSTER_CHECK_NONE 0 //No checks are done, cluster as much as possible + CLUSTER_CHECK_ATOMS 2 //Don't let atoms cluster, based on clusterMin and clusterMax as guides + CLUSTER_CHECK_TURFS 4 //Don't let turfs cluster, based on clusterMin and clusterMax as guides + CLUSTER_CHECK_ALL 6 //Don't let anything cluster, based on clusterMind and clusterMax as guides + + +*/ \ No newline at end of file diff --git a/code/modules/procedural mapping/mapGenerators/nature.dm b/code/modules/procedural mapping/mapGenerators/nature.dm new file mode 100644 index 00000000000..b699c802cd9 --- /dev/null +++ b/code/modules/procedural mapping/mapGenerators/nature.dm @@ -0,0 +1,11 @@ + +//Exists primarily as a test type. + +/datum/mapGenerator/nature + modules = list(/datum/mapGeneratorModule/pineTrees, \ + /datum/mapGeneratorModule/deadTrees, \ + /datum/mapGeneratorModule/randBushes, \ + /datum/mapGeneratorModule/randRocks, \ + /datum/mapGeneratorModule/bottomLayer/grassTurfs, \ + /datum/mapGeneratorModule/denseLayer/grassTufts) + diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index be0fa4540a0..e96d6494e8f 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -216,7 +216,7 @@ playsound(user, fire_sound, 50, 1) var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_sel.selecting)) var/limb_name = affecting.getDisplayName() - if(affecting == "head" || affecting == "eyes" || affecting == "mouth") + if(affecting.name == "head" || affecting.name == "eyes" || affecting.name == "mouth") user.apply_damage(300, BRUTE, affecting) user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a gunshot!") else diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index bc7e6697ad9..e6ea51aa92d 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -12,6 +12,7 @@ color = "#FFFF00" nodamage = 1 stun = 5 + weaken = 5 stutter = 5 jitter = 20 hitsound = 'sound/weapons/taserhit.ogg' @@ -29,9 +30,8 @@ if(C.dna && C.dna.check_mutation(HULK)) C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) else if(C.status_flags & CANWEAKEN) - C.do_jitter_animation(jitter) - spawn(20) - C.Weaken(5) + spawn(5) + C.do_jitter_animation(jitter) ..() /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 2e33aa0c094..845f914ac15 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -196,7 +196,7 @@ proc/wabbajack(mob/living/M) if("killertomato") new_mob = new /mob/living/simple_animal/hostile/killertomato(M.loc) if("spiderbase") new_mob = new /mob/living/simple_animal/hostile/poison/giant_spider(M.loc) if("spiderhunter") new_mob = new /mob/living/simple_animal/hostile/poison/giant_spider/hunter(M.loc) - if("blobbernaut") new_mob = new /mob/living/simple_animal/hostile/blobbernaut(M.loc) + if("blobbernaut") new_mob = new /mob/living/simple_animal/hostile/blob/blobbernaut(M.loc) if("magicarp") new_mob = new /mob/living/simple_animal/hostile/carp/ranged(M.loc) if("chaosmagicarp") new_mob = new /mob/living/simple_animal/hostile/carp/ranged/chaos(M.loc) else diff --git a/code/modules/reagents/Chemistry-Goon-420BlazeIt.dm b/code/modules/reagents/Chemistry-Goon-420BlazeIt.dm index c4fb5f4f28e..320625f8b3f 100644 --- a/code/modules/reagents/Chemistry-Goon-420BlazeIt.dm +++ b/code/modules/reagents/Chemistry-Goon-420BlazeIt.dm @@ -127,12 +127,8 @@ datum/reagent/crank/addiction_act_stage4(var/mob/living/M as mob) ..() return /datum/reagent/krokodil/addiction_act_stage4(var/mob/living/carbon/human/M as mob) - if(!istype(M.dna.species, /datum/species/cosmetic_zombie)) - M << "Your skin falls off easily!" - M.adjustBruteLoss(rand(50,80)*REM) // holy shit your skin just FELL THE FUCK OFF - hardset_dna(M, null, null, null, null, /datum/species/cosmetic_zombie) - else - M.adjustBruteLoss(5*REM) + M << "Your skin sloughs off!" + M.adjustBruteLoss(rand(50,80)*REM) ..() return @@ -228,7 +224,7 @@ datum/reagent/crank/addiction_act_stage4(var/mob/living/M as mob) name = "methamphetamine" id = "methamphetamine" result = "methamphetamine" - required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorous" = 1, "hydrogen" = 1) + required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) result_amount = 4 required_temp = 374 @@ -507,4 +503,4 @@ datum/reagent/hotline/addiction_act_stage4(var/mob/living/M as mob) H.visible_message("[H] clutches at their chest! It looks like they're having a heart attack!") H.heart_attack = 1 // don't do drugs kids ..() - return \ No newline at end of file + return diff --git a/code/modules/reagents/Chemistry-Goon-Medicine.dm b/code/modules/reagents/Chemistry-Goon-Medicine.dm index e9a3a54d043..0deb593d462 100644 --- a/code/modules/reagents/Chemistry-Goon-Medicine.dm +++ b/code/modules/reagents/Chemistry-Goon-Medicine.dm @@ -620,7 +620,6 @@ datum/reagent/strange_reagent/reaction_mob(var/mob/living/carbon/human/M as mob, living_mob_list |= list(M) M.emote("gasp") add_logs(M, M, "revived", object="strange reagent") - hardset_dna(M, null, null, null, null, /datum/species/zombie) ..() return datum/reagent/strange_reagent/on_mob_life(var/mob/living/M as mob) diff --git a/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm b/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm index 508f6629298..2b1f8d10c35 100644 --- a/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm +++ b/code/modules/reagents/Chemistry-Goon-Pyrotechnics.dm @@ -183,6 +183,7 @@ var/ex_heavy = round(created_volume / 42) var/ex_light = round(created_volume / 21) var/ex_flash = round(created_volume / 8) +<<<<<<< HEAD explosion(T,ex_severe,ex_heavy,ex_light,ex_flash, 1) return @@ -454,4 +455,4 @@ datum/reagent/pyrosium/on_mob_life(var/mob/living/M as mob) var/ex_light = round(created_volume / 21) var/ex_flash = round(created_volume / 8) explosion(T,ex_severe,ex_heavy,ex_light,ex_flash, 1) - return \ No newline at end of file + return diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index afe348ac2a5..a23de90b69c 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -920,6 +920,7 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime) /obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0), /obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("cornoil" = 0), /obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), + /obj/item/weapon/reagent_containers/food/snacks/grown/oat = list("flour" = -5), /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0), //Grinder stuff, but only if dry diff --git a/code/modules/reagents/Chemistry-Reagents/Blob-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Blob-Reagents.dm index ff6f240df84..0e8e44ee1ed 100644 --- a/code/modules/reagents/Chemistry-Reagents/Blob-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents/Blob-Reagents.dm @@ -67,6 +67,7 @@ datum/reagent/blob/lung_destroying_toxin datum/reagent/blob/lung_destroying_toxin/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume,var/show_message = 1) if(method == TOUCH) M.apply_damage(20, OXY) + M.losebreath += 15 M.apply_damage(20, TOX) if(show_message) M << "The blob strikes you, and your lungs feel heavy and weak!" @@ -95,13 +96,11 @@ datum/reagent/blob/radioactive_liquid/reaction_mob(var/mob/living/M as mob, var/ if(method == TOUCH) if(istype(M, /mob/living/carbon/human)) M.apply_damage(10, BRUTE) - M.apply_effect(10,IRRADIATE,0) + M.apply_effect(40,IRRADIATE,0) // irradiate the shit out of these fuckers if(prob(33)) randmuti(M) if(prob(98)) randmutb(M) - else - randmutg(M) domutcheck(M, null) updateappearance(M) if(show_message) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm index 88a264522ca..ce3ce0a7ad5 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm @@ -266,10 +266,12 @@ datum/reagent/water/reaction_turf(var/turf/simulated/T, var/volume) G.temperature = max(min(G.temperature-(CT*1000),G.temperature/CT),0) G.react() qdel(hotspot) + T.color = initial(T.color) return datum/reagent/water/reaction_obj(var/obj/O, var/volume) src = null + O.color = initial(O.color) if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O if(!cube.wrapped) @@ -279,6 +281,7 @@ datum/reagent/water/reaction_obj(var/obj/O, var/volume) datum/reagent/water/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with water can help put them out! if(!istype(M, /mob/living)) return + M.color = initial(M.color) if(method == TOUCH) M.adjust_fire_stacks(-(volume / 10)) if(M.fire_stacks <= 0) diff --git a/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Drink-Reagents/Alcohols.dm b/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Drink-Reagents/Alcohols.dm index 638bf624ac2..f494d01b409 100644 --- a/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Drink-Reagents/Alcohols.dm +++ b/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Drink-Reagents/Alcohols.dm @@ -313,9 +313,10 @@ datum/reagent/consumable/ethanol/beepsky_smash description = "Deny drinking this and prepare for THE LAW." color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 + metabolization_rate = 0.8 datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(var/mob/living/M as mob) - M.Stun(2) + M.Stun(1) ..() return diff --git a/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm index 3255304610f..64d09a674ef 100644 --- a/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents/Consumable-Reagents/Food-Reagents.dm @@ -55,12 +55,6 @@ datum/reagent/consumable/sugar metabolization_rate = 2 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock -datum/reagent/consumable/sugar/on_mob_life(var/mob/living/M as mob) - if(M.satiety > -200) - M.satiety -= 20 //eating sugar makes you more hungry over time by making your hunger drop faster. - M.nutrition += max(((NUTRITION_LEVEL_FED + 50) - M.nutrition )/100, 0) * nutriment_factor // sugar doesn't help your hunger if your stomach is nearly full - holder.remove_reagent(src.id, metabolization_rate) - datum/reagent/consumable/sugar/overdose_start(var/mob/living/M as mob) M << "You go into hyperglycaemic shock! Lay off the twinkies!" M.sleeping += 30 @@ -338,7 +332,7 @@ datum/reagent/consumable/hell_ramen/on_mob_life(var/mob/living/M as mob) return datum/reagent/consumable/flour - name = "flour" + name = "Flour" id = "flour" description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID @@ -355,3 +349,18 @@ datum/reagent/consumable/cherryjelly description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." color = "#801E28" // rgb: 128, 30, 40 +datum/reagent/consumable/rice + name = "Rice" + id = "rice" + description = "tiny nutritious grains" + reagent_state = SOLID + nutriment_factor = 3 * REAGENTS_METABOLISM + color = "#FFFFFF" // rgb: 0, 0, 0 + +datum/reagent/consumable/vanilla + name = "Vanilla Powder" + id = "vanilla" + description = "A fatty, bitter paste made from vanilla pods." + reagent_state = SOLID + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#FFFACD" diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 4803a311e33..c0051eb3b8a 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -77,3 +77,21 @@ return 0 return 1 + +/obj/item/weapon/reagent_containers/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg)) //making dough + var/obj/item/weapon/reagent_containers/food/snacks/egg/E = W + if(flags & OPENCONTAINER) + if(reagents) + if(reagents.has_reagent("flour")) + if(reagents.get_reagent_amount("flour") >= 15) + var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/dough(get_turf(src)) + user << "You mix egg and flour to make some dough." + reagents.remove_reagent("flour", 15) + if(E.reagents) + E.reagents.trans_to(S,E.reagents.total_volume) + qdel(E) + else + user << "Not enough flour to make dough." + return + ..() \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 540db68b85c..7079ae6bf26 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -88,6 +88,21 @@ reagents.reaction(target, TOUCH) reagents.clear_reagents() +/obj/item/weapon/reagent_containers/glass/attackby(var/obj/item/I, mob/user as mob, params) + if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird + return + var/hotness = is_hot(I) + if(hotness) + var/added_heat = (hotness / 100) //ishot returns a temperature + if(reagents) + if(reagents.chem_temp < hotness) //can't be heated to be hotter than the source + reagents.chem_temp += added_heat + user << "You heat [src] with [I]." + reagents.handle_reactions() + else + user << "[src] is already hotter than [I]." + ..() + /obj/item/weapon/reagent_containers/glass/beaker name = "beaker" @@ -211,3 +226,5 @@ user.put_in_hands(new /obj/item/weapon/bucket_sensor) user.unEquip(src) qdel(src) + else + ..() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 5ff727ff31b..6eae3e52b29 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -118,7 +118,7 @@ /obj/item/weapon/reagent_containers/spray/waterflower name = "water flower" desc = "A seemingly innocent sunflower...with a twist." - icon = 'icons/obj/harvest.dmi' + icon = 'icons/obj/hydroponics/harvest.dmi' icon_state = "sunflower" item_state = "sunflower" amount_per_transfer_from_this = 1 @@ -194,7 +194,7 @@ /obj/item/weapon/reagent_containers/spray/plantbgone // -- Skie name = "Plant-B-Gone" desc = "Kills those pesky weeds!" - icon = 'icons/obj/hydroponics.dmi' + icon = 'icons/obj/hydroponics/equipment.dmi' icon_state = "plantbgone" item_state = "plantbgone" volume = 100 diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 7d8a3147a9c..2a5353b3085 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -98,6 +98,8 @@ ..() if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet)) if((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) + if(Proj.nodamage) + return message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.") log_game("[key_name(Proj.firer)] triggered a fueltank explosion.") explosion(src.loc,-1,0,2, flame_range = 2) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index d6eb361625b..1afa12a3d0f 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -214,6 +214,17 @@ datum/design/proc/CalcReliability(var/list/temp_techs) build_path = /obj/item/device/gps category = list("Bluespace Designs") +/datum/design/miningsatchel_holding + name = "Mining Satchel of Holding" + desc = "A mining satchel that can hold an infinite amount of ores." + id = "minerbag_holding" + req_tech = list("bluespace" = 3, "materials" = 4) + build_type = PROTOLATHE + materials = list("$gold" = 250, "$uranium" = 500) //quite cheap, for more convenience + reliability = 100 + build_path = /obj/item/weapon/storage/bag/ore/holding + category = list("Bluespace Designs") + ///////////////////////////////////////// /////////////////HUDs//////////////////// @@ -307,6 +318,16 @@ datum/design/proc/CalcReliability(var/list/temp_techs) build_path = /obj/item/clothing/glasses/meson category = list("Equipement") +/datum/design/engine_goggles + name = "Engineering Scanner Goggles" + desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes." + id = "engine_goggles" + req_tech = list("materials" = 4, "magnets" = 3, "engineering" = 4) + build_type = PROTOLATHE + materials = list("$metal" = 200, "$glass" = 300, "$plasma" = 100) + build_path = /obj/item/clothing/glasses/meson/engine + category = list("Equipement") + /datum/design/nvgmesons name = "Night Vision Optical Meson Scanners" desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 799edd3e7c0..a313899237a 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -328,8 +328,8 @@ R.delete() ejectItem(TRUE) if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) - visible_message("[src]'s chemical chamber has sprung a leak!.") - chosenchem = pick("mutationtoxin","nanomachines","xenomicrobes") + visible_message("[src]'s chemical chamber has sprung a leak!") + chosenchem = pick("mutationtoxin","nanomachines","sacid") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) diff --git a/config/config.txt b/config/config.txt index e28c4ff6b2f..cdfd19f9f34 100644 --- a/config/config.txt +++ b/config/config.txt @@ -163,19 +163,19 @@ TICKCOMP 0 #SOFT_POPCAP 100 ## Message for soft cap -SOFT_MESSAGE Be warned that the server is currently serving a high number of users, consider using alternative game servers. +SOFT_POPCAP_MESSAGE Be warned that the server is currently serving a high number of users, consider using alternative game servers. ## Uncomment for 'hard' population caps, players will not be allowed to spawn if the living crew exceeds the listed number, though they may still observe or wait for the living crew to decrease in size. #HARD_POPCAP 150 ## Message for hard cap -HARD_MESSAGE The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers. +HARD_POPCAP_MESSAGE The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers. ## Uncomment for 'extreme' population caps, players will not be allowed to join the server if living crew exceeds the listed number. #EXTREME_POPCAP 200 ## Message for extreme cap -EXTREME_MESSAGE The server is currently serving a high number of users, find alternative servers. +EXTREME_POPCAP_MESSAGE The server is currently serving a high number of users, find alternative servers. ## Notify admins when a new player connects for the first x days a player's been around. (0 for first connection only, -1 for never) ## Requres database @@ -187,4 +187,7 @@ NOTIFY_NEW_PLAYER_AGE 0 ## Deny all new connections by ckeys we haven't seen before (exempts admins and only denies the connection if the database is enabled and connected) ## Requires database -#PANIC_BUNKER \ No newline at end of file +#PANIC_BUNKER + +## Uncomment to have the changelog file automatically open when a user connects and hasn't seen the latest changelog +#AGGRESSIVE_CHANGELOG \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index 990a6453a8f..5eb663273b2 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -100,8 +100,10 @@ PROBABILITY SANDBOX 0 ## the shuttle is called or the station is nuked. ## Malf and Rev will let the shuttle be called when the antags/protags are dead. #CONTINUOUS_ROUND_REV +#CONTINUOUS_ROUND_GANG #CONTINUOUS_ROUND_WIZ #CONTINUOUS_ROUND_MALF +#CONTINUOUS_ROUND_BLOB ## The amount of time it takes for the emergency shuttle to be called, from round start. SHUTTLE_REFUEL_DELAY 12000 diff --git a/html/80x15.png b/html/80x15.png deleted file mode 100644 index ed028fed9d6..00000000000 Binary files a/html/80x15.png and /dev/null differ diff --git a/html/admin_pm.html b/html/admin_pm.html deleted file mode 100644 index 6993b215025..00000000000 --- a/html/admin_pm.html +++ /dev/null @@ -1,53 +0,0 @@ - - Shittiest Player Ever - PM - - -
- - Badmin: Hey why the fuck are you killing that dude???

- Shittiest Player Ever: he tok ym baten n id and i ahd to use the lasre on his *ss

- Badmin: wow good fucking job, you are the best player ever!!!!!!

- Badmin: where the fuck did you learn english?

- Shittiest Player Ever: he tryed to k;ikll me

- Badmin: you are shit!!!!! -
- -
-
- - - -
- - \ No newline at end of file diff --git a/html/archivedchangelog.html b/html/archivedchangelog.html index 6d8408891a5..0c476a37b68 100644 --- a/html/archivedchangelog.html +++ b/html/archivedchangelog.html @@ -1,4 +1,3690 @@ +
+

26 February 2014

+

Incoming5643 updated:

+
    +
  • Color blending Kitty Ears have returned.
  • +
+
+
+

25 February 2014

+

Incoming5643 updated:

+
    +
  • Colored burgers! Include a crayon in your microwave when cooking a burger and it'll come out just like a Pretty Pattie.
  • +
  • Fixed AI's being able to interact with syndicate bombs.
  • +
+
+ +
+

24 February 2014

+

Ergovisavi updated:

+
    +
  • Added Advanced Mesons and Night Vision Goggles to the protolathe.
  • +
+

Giacom updated:

+
    +
  • Silicons no longer stop statues from moving when in sight.
  • +
  • Increased the health of statues.
  • +
  • Increased the range of statues's blinding spell.
  • +
+

HornyGranny updated:

+
    +
  • Reduced the range of Violin notes.
  • +
  • Low quality violin midi-notes replaced with better .ogg-notes.
  • +
+

Incoming5643 updated:

+
    +
  • Improved the Syndicate Implant bundle to contain freedom, uplink, EMP, adrenalin and explosive implanters.
  • +
  • Added Mineral Storeroom to R&D; containing the Ore Redemption Machine; no more assistants stealing your ore in the open hallway.
  • +
+

Miauw updated:

+
    +
  • No more removing cursed horseheads.
  • +
+

Razharas updated:

+
    +
  • Fixed infinite telecrystal exploit.
  • +
+
+ +
+

19 February 2014

+

Aranclanos updated:

+
    +
  • Removed the chance of your hat falling off when slipping.
  • +
+

Perakp updated:

+
    +
  • Added Iatot's cyborg module selection transformation animations.
  • +
+
+ +
+

17 February 2014

+

Ergovisavi updated:

+
    +
  • Mining has been significantly overhauled. Hostile alien life has infested the western asteroid! Miners are given an equipment voucher to obtain equipment to protect themselves. There is a spare voucher in the HoP's office, should someone want to switch to mining mid-shift.
  • +
  • The Ore Redemption Machine has been added just outside of the Science wing. Ore goes in, Sheets go out, and points are tallied on the machine. Insert your ID to claim points, then spend them on goods at Mining Equipment Lockers. You require specific accesses to tell the Ore Redemption Machine to unload its sheets.
  • +
  • Should you not care for being eaten alive by horrible alien life, it is suggested you stick to the eastern asteroid, where there is no hostile alien life... though the yield on ore is not as good.
  • +
  • Most ore is no longer visible to the naked eye. You must ping it with a Mining Scanner (Available in all mining lockers) to locate nearby ore. Make sure to equip your mesons first, or it won't be visible.
  • +
  • Mesons no longer remove the darkness overlay, you must properly light your environment. Hull breaches to space can still be clearly seen, and it will still protect you from the singulo.
  • +
  • Mineral spawn rates have been significantly tweaked to cut down on unnecessary inflation of mineral economy.
  • +
  • The asteroid no longer has ambient power on the entire asteroid. AI's who go onto asteroid turf will slowly die of power loss. Mining outposts are unaffected.
  • +
  • Fixed an issue where projectiles shot by simple mobs or thrown would hit multiple times.
  • +
+

Fleure updated:

+
    +
  • Reduced chicken crates to contain 1-3 chicks, down from 3-6
  • +
  • Increased fertile chicken egg chance from 10% to 25%
  • +
+

Yota updated:

+
    +
  • Photograph now rendered crisp and clean, so that we may enjoy them in their 0.009 megapixel goodness.
  • +
  • Cameras should now capture more of what they should, and less of what they shouldn't.
  • +
+
+ +
+

09 February 2014

+

ADamDirtyApe updated:

+
    +
  • The lawyer now spawns with a Sec Headset.
  • +
+

Demas updated:

+
    +
  • Banana peel size is based on banana size.
  • +
  • Bigger peels slip for longer than smaller ones. Remember that produce size is based on potency.
  • +
  • The clown now spawns with a decent sized banana.
  • +
  • The banana mortar now shoots 65 potency peels.
  • +
+

Giacom updated:

+
    +
  • A new hostile statue mob, can only move when not being observed, tends to break lights and cause blindness.
  • +
+

Incoming5643 updated:

+
    +
  • Blob Zombies! When a Blob Spore moves over a dead human body it will infect the body and revive it as a more powerful varient of the spore. Has double the health and deals more damage.
  • +
+

Neerti updated:

+
    +
  • Sec Belts can now hold Stun Batons.
  • +
  • Stun Batons now only take 10 seconds to fully recharge.
  • +
+

Razharas updated:

+
    +
  • Tables can now be used as an alternative way to craft makeshift items. Simply click-drag table to yourself bring up a list.
  • +
+

adrix89 updated:

+
    +
  • Spray Bottles can no longer wet up to three tiles with water.
  • +
  • Spray Bottles have a third higher release volume that wets a single tile.
  • +
  • Water slip times are reduced to the same stun times as soap.
  • +
+
+ +
+

08 February 2014

+

MrPerson updated:

+
    +
  • Added a NanoUI for the SMES
  • +
+

Razharas updated:

+
    +
  • Adds more constructible and deconstructable machines!
  • +
  • Added constructible miniature chemical dispensers, upgradable
  • +
  • Sleepers are now constructible and upgradable, open and close like DNA scanners, and don't require a console
  • +
  • Cryogenic tubes are now constructible and upgradable, open and close like DNA scanners, and you can set the cryogenic tube's pipe's direction by opening its panel and wrenching it to connect it to piping
  • +
  • Telescience pads are now constructible and upgradable
  • +
  • Telescience consoles are now constructible
  • +
  • Telescience tweaked (you can save data on GPS units now)
  • +
  • Teleporters are now constructible and upgradable, the console has a new interface and you can lock onto places saved to GPS units in telescience
  • +
  • Teleporters start unconnected. You need to manually reconnect the console, station and hub by opening the panel of the station and applying wire cutters to it.
  • +
  • Biogenerators are now constructible and upgradable
  • +
  • Atmospherics heaters and freezers are now constructible and upgradable and can be rotated with a wrench when their panel is open to connect them to pipes. Screw the board to switch between heater and freezer.
  • +
  • Mech chargers are now constructible and upgradable
  • +
  • Microwaves are now constructible and upgradable
  • +
  • All kitchen machinery can now be wrenched free
  • +
  • SMES are now constructible
  • +
  • Dragging a human's sprite to a cryogenic tube or sleeper will put them inside and activate it if it's cryo
  • +
  • Constructible newscasters, their frames are made with autolathes
  • +
  • Constructible pandemics
  • +
  • Constructible power turbines and their computers
  • +
  • Constructible power compressors
  • +
  • Constructible vending machines. Screw the board to switch vendor type.
  • +
  • Constructible hydroponics trays
  • +
  • Sprites for all this
  • +
  • This update will have unforeseen bugs, please report those you find at https://github.com/tgstation/-tg-station/issues/new if you want them fixed.
  • +
  • As usual, machines are deconstructed by screwing open their panels and crowbarring them. While constructing machines, examining them will tell you what parts you're missing.
  • +
+
+ +
+

05 February 2014

+

Yota updated:

+
    +
  • Handling a couple flashlights will no longer transform you into the sun. Each light source will have deminishing returns.
  • +
  • Inserting lights into containers should no longer dim other lights.
  • +
+
+ +
+

03 February 2014

+

Demas updated:

+
    +
  • Changes windoor and newscaster attack messages to be consistent with windows and grilles. This removes the distracting boldness from windoor attack messages, which is reserved for userdanger, and names the attacker.
  • +
  • Thrown items now play a sound effect on impact. The volume of the sound is based on the item's throwforce and/or weight class.
  • +
  • The fireaxe now has 15 throwforce, when previously it had only 1. But why would you throw it away, anyway?
  • +
  • Projectiles now play a sound upon impact. The volume of the sound depends on the damage done by the projectile. Damageless projectiles such as electrodes have static volumes. Practise laser and laser tag beams have no impact sound.
  • +
  • Added sear.ogg for the impacts of damaging beams such as lasers. It may be replaced if player feedback proves negative.
  • +
+
+ +
+

02 February 2014

+

Demas updated:

+
    +
  • Attack sounds for all melee weapons! No more silent attacks.
  • +
  • The volume of an object's attack sound is based on the weapon's force and/or weight class.
  • +
  • Welders, lighters, matches, cigarettes, energy swords and energy axes have different attack sounds based on whether they're on or off.
  • +
  • Weapons that do no damage play a tap sound. The exceptions are the bike horn, which still honks, and the banhammer, which plays adminhelp.ogg. Surely nothing can go wrong with that last one.
  • +
  • When you tap someone with an object, the message now uses "tapped" or "patted" instead of attacked. The horn still uses HONKED, and the banhammer still uses BANNED.
  • +
  • You won't get the "armour has blocked an attack" message for harmless attacks anymore.
  • +
  • Adds 5 force to the lighter when it's lit. Same as when you accidentally burn yourself lighting it.
  • +
  • Removes boldness from item attack messages on non-human mobs. The attack is bolded for a player controlling a non-human mob. Now your eyes won't jump to the chat when it's Pun Pun who's being brutalised.
  • +
  • Blood will no longer come out of non-human mobs if the attack is harmless.
  • +
  • Adds a period at the end of the catatonic human examine message. That's been bugging me for years.
  • +
  • The activation and deactivation sounds of toy swords, energy swords and energy shields are slightly quieter. Energy swords and shields are now slightly louder than toys.
  • +
  • You can no longer light things with burnt matches.
  • +
  • Match, cigarette and lighter attack verbs, forces and damage types change based on whether the object is lit or not.
  • +
  • Fixes a bug with the energy blade that kept it at weight class 5 after it was deactivated. Who cares, it disappears upon deactivation.
  • +
  • Changes the welder out of fuel message slightly to be less fragmented.
  • +
  • Removes dead air from a lot of weapon sound effects to make them more responsive. In other words, the fire extinguisher attack sound will play a lot sooner after you attack than before.
  • +
  • Equalised the peak volumes of most weapon sounds to be -0.1dB in an attempt to make volumes based on force more consistent across different sounds.
  • +
+
+ +
+

01 February 2014

+

Ergovisavi updated:

+
    +
  • Walking Mushrooms will now attack and eat each other! They're all a little unique from each other, no two shrooms are exactly alike, and a better quality harvest means stronger Walking Shrooms. Pit them against each other for your entertainment.
  • +
  • Each mushroom will have a different colored cap to identify them. When mushrooms eat each other, they get stronger. The resulting mushroom will drop more slices when cut down to harvest, and will have better quality slices.
  • +
  • Don't hurt them yourself, though, or you'll bruise them, and mushrooms won't get stronger from eating a bruised mushroom. If your mushroom faints, feed it a mushroom such as a plump helmet to get it back on its feet. It will slowly regenerate to full health eventually.
  • +
+
+ +
+

30 January 2014

+

Balrog updated:

+
    +
  • Syndicate Playing Cards can now be found on the Syndicate Mothership and purchased from uplinks for 1 telecrystal.
  • +
  • Syndicate Playing Cards are lethal weapons both in melee and when thrown, but make the user's true allegiance to the Syndicate obvious.
  • +
  • Sprites are courtesy of Nienhaus.
  • +
+

Demas updated:

+
    +
  • Adds thud sounds to falling over
  • +
  • Known bug: Thuds play when cloning initialises or someone is put into cryo. This will be fixed.
  • +
+

Ergovisavi updated:

+
    +
  • Gibtonite, the explosive ore, can now be found on the asteroid. It's very hard to tell between it and diamonds, at first glance.
  • +
  • Gibtonite deposits will blow up after a countdown when you attempt to mine it, but you can stop it with an analyzer at any time. It makes for a good mining explosive.
  • +
  • The closer you were to the explosion when you analyze the Gibtonite deposit, the better the Gibtonite you can get from it.
  • +
  • Once extracted, it must be struck with a pickaxe or drill to activate it, where it will go through its countdown again to explode!
  • +
  • Explosives will no longer destroy the ore inside of asteroid walls or lying on the floor.
  • +
+

Miauw updated:

+
    +
  • Adds changeling arm blades that cost 20 chems and do 25 brute damage.
  • +
  • Arm blades can pry open unpowered doors, replace surgical saws in brain removal, slice tables and smash computers.
  • +
+

MrPerson updated:

+
    +
  • Mobs now lie down via turning icons rather than preturned sprites.
  • +
  • You can lie down facing up or down and the turn can be 90 degrees clockwise or counterclockwise.
  • +
  • Resting will always make you lie to the right so you look good on beds.
  • +
  • Please report any bugs you find with this system.
  • +
+

Petethegoat updated:

+
    +
  • Increased the walk speed. Legcuffed speed is unaffected, and is still suffering.
  • +
  • Sped up alien drones, they are now the same speed as sentinels.
  • +
+
+ +
+

28 January 2014

+

Demas updated:

+
    +
  • Adds thud sounds to falling over
  • +
  • Known bug: Thuds play when cloning initialises or someone is put into cryo. This will be fixed.
  • +
+
+ +
+

26 January 2014

+

Balrog updated:

+
    +
  • Syndicate Playing Cards can now be found on the Syndicate Mothership and purchased from uplinks for 1 telecrystal.
  • +
  • Syndicate Playing Cards are lethal weapons both in melee and when thrown, but make the user's true allegiance to the Syndicate obvious.
  • +
  • Sprites are courtesy of Nienhaus.
  • +
+
+ +
+

25 January 2014

+

Miauw updated:

+
    +
  • Adds changeling arm blades that cost 20 chems and do 25 brute damage.
  • +
  • Arm blades can pry open unpowered doors, replace surgical saws in brain removal, slice tables and smash computers.
  • +
+
+ +
+

24 January 2014

+

Ergovisavi updated:

+
    +
  • Gibtonite, the explosive ore, can now be found on the asteroid. It's very hard to tell between it and diamonds, at first glance.
  • +
  • Gibtonite deposits will blow up after a countdown when you attempt to mine it, but you can stop it with an analyzer at any time. It makes for a good mining explosive.
  • +
  • The closer you were to the explosion when you analyze the Gibtonite deposit, the better the Gibtonite you can get from it.
  • +
  • Once extracted, it must be struck with a pickaxe or drill to activate it, where it will go through its countdown again to explode!
  • +
  • Explosives will no longer destroy the ore inside of asteroid walls or lying on the floor.
  • +
+
+ +
+

21 January 2014

+

MrPerson updated:

+
    +
  • Mobs now lie down via turning icons rather than preturned sprites.
  • +
  • You can lie down facing up or down and the turn can be 90 degrees clockwise or counterclockwise.
  • +
  • Resting will always make you lie to the right so you look good on beds.
  • +
  • Please report any bugs you find with this system.
  • +
+
+ +
+

19 January 2014

+

KazeEspada updated:

+
    +
  • The water cooler is now stocked with paper cups. You can refill the cups by putting paper in it.
  • +
+

Rolan7 updated:

+
    +
  • You can now sell mutant seeds, from hydroponics, to Centcom via the supply shuttle.
  • +
  • Fixes powersinks causing APCs to stop automatically recharging.
  • +
+
+ +
+

17 January 2014

+

ManeaterMildred updated:

+
    +
  • Changed the way the Gygax worked. It now has less defense and shot deflection, but is faster and have less battery drain per step.
  • +
  • Nerfed the Carbine's brute damage and renamed it to FNX-99 "Hades" Carbine.
  • +
  • Nerfed the Gygax defense from 300 to 250.
    + Nerfed the Gygax projectile deflection chance from 15 to 5.
    + Buffed the Gygax speed from 3 to 2, making it faster.
    + Reduced the battery use when moving from 5 to 3.
    +
    + The Mech Ion Rifle now has a faster cooldown, from 40 to 20.
    + Nerfed the carbine's Brute Damage from 20 to 5.
    +
    + Please post feedback to these changes on the forums. +







  • +
+
+ +
+

15 January 2014

+

Dumpdavidson updated:

+
    +
  • EMPs affect the equipment of a human again.
  • +
  • EMP flashlight now recharges over time and its description no longer reveals the illegal nature of the device.
  • +
  • EMP implant now has two uses.
    EMP kit now contains two grenades.
  • +
+
+ +
+

14 January 2014

+

Fleure updated:

+
    +
  • Added spider butchery.
  • +
  • Added spider meat, legs, and edible eggs.
  • +
  • Added new spider related meals.
  • +
+

Giacom updated:

+
    +
  • Because of an emagged cyborg's explosion, the MMI will die with it.
  • +
  • The self-respiration symptom will now properly keep you from dying of oxygen loss.
  • +
  • The Stimulant symptom's activation chance was increased so you had a constant flow of hyperzine.
  • +
+

Incoming updated:

+
    +
  • A new training bomb has been added to the armoury, which will allow you to train your wire cutting skills to disarm real syndicate bombs.
  • +
+

ManeaterMildred updated:

+
    +
  • Updated research designs.
  • +
  • The Protolathe can now build a Ion Rifle.
  • +
  • The Exosuit Fabricator can now build a Mech Ion Rifle, a Mech Carbine and a Mech-Mounted Missile Rack.
  • +
+

SirBayer updated:

+
    +
  • Armor now reduces damage by the protection percentage, instead of randomly deciding to half or full block damage by those percentages.
  • +
  • Shotguns, with buckshot shells, will fire a spread of pellets at your target, like a real shotgun blast.
  • +
+
+ +
+

12 January 2014

+

VistaPOWA updated:

+
    +
  • Added Syndicate Cyborgs.
  • +
  • They can be ordered for 25 telecrystals by Nuclear Operatives. A ghost / observer with "Be Operative" ticked in their game options will be chosen to control it.
  • +
  • Their loadout is: Crowbar, Flash, Emag, Esword, Ebow, Laser Rifle. Each weapon costs 100 charge to fire, except the Esword, which has a 500 charge hitcost. Each borg is equipped with a 25k cell by default.
  • +
  • Syndicate borgs can hear the binary channel, but they won't show up on the Robotics Control computer or be visible to the AI. Their lawset is the standard emag one.
  • +
  • Added two cyborg recharging stations to the Syndicate Shuttle.
  • +
+
+ +
+

11 January 2014

+

Cheridan updated:

+
    +
  • You can now upgrade laser pointers with micro laser parts. It will increase the chance of blinding people.
  • +
+

Errorage updated:

+
    +
  • Cyborg modules now use a new UI, which is much quicker than a menu.
  • +
+

Giacom updated:

+
    +
  • The game will now have all background operations disabled, this will result in smoother gameplay but may result in some spike lags, before being set back to normal. The gradually increasing lag should now be gone.
  • +
  • You can now emag the crusher, in disposals, to remove the safety. You can use a screwdriver to reset it to the default factory settings.
  • +
  • The toxin compensation symptom will stop giving you toxin damage while at full health.
  • +
+

JJRCop updated:

+
    +
  • The new nuke toy can now be found in your local arcade machine.
  • +
+
+ +
+

10 January 2014

+

ChuckTheSheep updated:

+
    +
  • Morgue Trays can detect players in their bodies and will now change colour depending on a few things. Red = Dead body with no player inside. Orange = No body but items. Green = A dead body with a player inside.
  • +
+

Giacom updated:

+
    +
  • You can whisper while in critical, but you will immediately die afterwards DRAMATICALLY. The closer you are to death, the less you can say.
  • +
  • The wizard won't spawn so much smoke after they blink.
  • +
  • The detective's forensic scanner was upgraded so that it can now scan from afar.
  • +
  • Made the ghost's follow button less buggy. Please make an issue report if it still bugs out.
  • +
+

Rumia29, Nienhaus updated:

+
    +
  • A new alt RD uniform spawns in his locker.
  • +
+
+ +
+

07 January 2014

+

Fleure updated:

+
    +
  • Janitor now spawns with a service headset.
  • +
  • Backpack watertank slowdown decreased.
  • +
+
+ +
+

04 January 2014

+

Razharas updated:

+
    +
  • Constructable machines now depend on R&D; parts!
  • +
  • DNA scanner: Laser quality lessens irradiation. Manipulator quality drastically improves precision (9x for best part) and scanner quality allows you to scan suicides/ling husks, with the best part enabling the cloner's autoprocess button, making it scan people in the scanner automatically.
  • +
  • Clone pod: Manipulator quality improves the speed of cloning. Scanning module quality affects with how much health people will be ejected, will they get negative mutation/no mutations/clean of all mutations/random good mutation, at best quality will enable clone console's autoprocess button and will try to clone all the dead people in records automatically, together with best DNA scanner parts cloning console will be able to work in full automatic regime autoscanning people and autocloning them.
  • +
  • Borg recharger: Capacitors' quality and powercell max charge affect the speed at which borgs recharge. Manipulator quality allows borg to be slowly repaired while inside the recharges, best manipulator allows even fire damage to be slowly repaired.
  • +
  • Portable power generators: Capacitors' quality produce more power. Better lasers consume less fuel and reduce heat production PACMAN with best parts can keep whole station powered with about sheet of plamsa per minute (approximately, wasn't potent enough to test).
  • +
  • Autolathe: Better manipulator reduces the production time and lowers the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), stacks' cant be reduced in cost, because thatll make production of infinity metal/glass easy
  • +
  • Protolathe: Manipulators quality affects the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), best manipulators reduces the cost 5 times (!)
  • +
  • Circuit imprinter: Manipulator quality affects the cost, best manipulator reduce cost(acid insluded) 4 times, i.e. 20 boards per 100 units of acid
  • +
  • Destructive analyzer: Better parts allow items with less reliability in. Redone how reliability is handled, you now see item reliability in the deconstruction menu and deconstructing items that has same or one point less research type level will rise the reliability of all known designs that has one or more research type requirements as the deconstructed item. Designs of the same type raise in reliability more. Critically broken things rise reliability of the design drastically. Whole reliability system is not used a lot but now at least on the R&D; part it finally matters.
  • +
+
+ +
+

02 January 2014

+

Demas updated:

+
    +
  • Added different colours to departmental radio frequencies. Now you'll be able to filter out or pay attention to each frequency a lot easier.
  • +
+

Fleure updated:

+
    +
  • Fixed bruisepacks and ointments not working.
  • +
  • Fixed injecting/stabbing mouth or eyes when only thick suit worn.
  • +
+
+ +
+

01 January 2014

+

Errorage updated:

+
    +
  • The damage overlay for humans starts a little later than before. It used to start at 10 points of fire + brute damage, it now starts at 35.
  • +
+
+ +
+

31 December 2013

+

Fleure updated:

+
    +
  • Paper no longer appears with words on it when blank input written or photocopied
  • +
  • Vending machine speaker toggle button now works
  • +
  • Building arcade machines works again
  • +
+
+ +
+

27 December 2013

+

Giacom updated:

+
    +
  • Light explosions will no longer gib dead bodies anymore. C4 will function the same and gib anything attached.
  • +
  • Syringe gun projectiles will now display a message when shots are deflected by space suits, biosuits and etc...
  • +
  • You can now move out of sleepers by moving, again.
  • +
+

Miauw updated:

+
    +
  • Monkeys now have a resist button on their HUD.
  • +
+
+ +
+

21 December 2013

+

Bobylein updated:

+
    +
  • Labcoats can now store bottles, beakers, pills, pill bottles and paper.
  • +
+

Giacom updated:

+
    +
  • The Labor Camp has been changed based on feedback. Ore boxes added, internals added, safety pickaxes/shovels (might revert if unliked).
  • +
  • Labor Camp prisoners, who have earned enough points for freedom, will now have to be alone in the shuttle to move it and to open the middle door; this is in order to prevent free'd prisoners from releasing their comrades.
  • +
  • Monkeys no longer walk away when being pulled or grabbed.
  • +
  • Anti-breach shield generators have a greater range, and will cover more exposed space tiles.
  • +
+

Jordie updated:

+
    +
  • Blowing up borgs from the Robotics Console will now actually make them explode. Emagged Cyborgs will explode even more.
  • +
+

Nienhaus updated:

+
    +
  • Added more poster.
  • +
+

Perakp updated:

+
    +
  • You can no longer slip while laying down.
  • +
+

RobRichards, Validsalad updated:

+
    +
  • Added new sprites for the sec-hailer, SWAT gear and riot armour.
  • +
+
+ +
+

18 December 2013

+

Adrinus updated:

+
    +
  • Playing cards, just like the real thing! Play poker, blackjack, go fish, the limits are limitless! Recommended to use space cash as the poker chips for now
  • +
+

Giacom updated:

+
    +
  • THE REALISM: Injectors such as syringes, parapens and hypos will not penetrate coveralls with thick material, this includes space suits, biosuits, bombsuits, and their head slot equivalent. Injectors now also consider where you aim, if you aim for the head it will try to use it through the head slot, otherwise it will aim for the body. To clarify, if you are wearing a space helmet and a doctor tries to inject you while aiming at your head, it will protect you until they aim for the unprotected body; same story for wearing a space suit and not a helmet.
  • +
  • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Whoa. This brand new technology will help keep out those snoopy crew members.
  • +
  • Lowered the cooldown of creating virus cultures to 5 seconds. You now only need to mix one unit of synaptizine, in a blood full of an advance virus, to get it to remove a random symptom.
  • +
+

Incoming updated:

+
    +
  • Rounds will no longer end when the wizard dies and there are still apprentices or traitors/survivors..
  • +
+

JJRcop updated:

+
    +
  • Transit tube tweaks. You can now put someone into a transit tube pod using grabs and you can empty a transit tube pod by clicking on it.
  • +
+

Jordie0608 updated:

+
    +
  • Replaced the digital valves in atmospherics with pumps.
  • +
+
+ +
+

14 December 2013

+

Incoming updated:

+
    +
  • Magic Mania! Powerful new magical tools and skills for wizard and crew alike!
  • +
  • Beware the new Summon Magic spell, which will grant the crew access to magical tools and spells and cause some to misuse it!
  • +
  • One Time Spellbooks that can be spawned during summon magic that can teach a low level magic skill to anyone! Beware the effects of reading pre-owned books, the magical rights management is potent! +
  • Magical Wands that can be spawned during Summon Magic! They come in a variety of effects that mimic both classical wizard spells and all new ones. They come precharged but lack the means to refill them once their magical energy is depleted... Fire efficently!
  • +
  • Be aware of the new Charge spell, which can take normally useless spent wands and give them new life! This mysterious effect has been found to wear down the overall magical potency of wands over time however. Beyond wands the clever magical user can find ways to use this spell on other things that may benefit from a magical charge...
  • +
  • The Staff of Resurrection, which holds intense healing magics able to defeat death itself! Look out for this invaluable magical tool during castings of Summon Magic.
  • +
  • Be on the lookout for a new apprentice! This noble mage is a different beast from most wizards, trained in the arts of defending and healing. Too bad he still works for the wizard!
  • +
+
+ +
+

09 December 2013

+

Giacom updated:

+
    +
  • New colourful ghost sprites for BYOND members. Sprites by anonus.
  • +
+
+ +
+

08 December 2013

+

Rolan7 updated:

+
    +
  • Leather gloves can be used to removes lights.
  • +
  • Plant, ore, and trash bags have a new option to pick up all items of single type
  • +
  • Creating astroturf now works like sandstone, converting all the grass at once.
  • +
  • Uranium and radium can be used instead of mutagen. 10 can mutate species, 5 or 2 mutate traits. Highly toxic.
  • +
  • Plants require a little light to live. Mushroom require even less (2 units vs 4) and take less damage.
  • +
+
+ +
+

05 December 2013

+

Razharas updated:

+
    +
  • Reworked how ling stings are done, now when you click a sting in the changeling tab it becomes current active sting, the icon of that sting appears under the chem counter, alt+clicking anyone will sting them with current sting, clicking the icon of the sting will unset it.
  • +
  • Monkeys have ling chem counter and active sting icons in their UI.
  • +
  • Going monkey -> human will try to equip the human with everything on the ground below it.
  • +
+
+ +
+

02 December 2013

+

Giacom updated:

+
    +
  • A less annoying virology system! From now on, you can only get low level virus symptoms from virus food, medium level virus symptoms from unstable mutagen and high level virus symptoms from liquid plasma. You can find a list of symptoms, and which chemicals are required to get them, here: http://wiki.ss13.eu/index.php/Infections#Symptoms_Table
  • +
  • The virologist starts with a bottle of plasma in his smart fridge.
  • +
  • Made it so you cannot accidentally click in the gaps between chem masters.
  • +
+
+ +
+

01 December 2013

+

cookingboy3 updated:

+
    +
  • Added three new buttons to the sandbox panel.
  • +
  • Removed canister menu, replaced it with buttons.
  • +
  • Players can no longer spawn "dangerous" canisters in sandbox, such as Plasma, N20, CO2, and Nitrogen.
  • +
+
+ +
+

30 November 2013

+

Yota updated:

+
    +
  • The identification console will now require that ID and job names follow the same restrictions as player names.
  • +
  • NTSL scripts and parrots should now handle apostrophes and such properly. It&#39;s about time.
  • +
  • NTSL scripts now have a better sense of time.
  • +
+
+ +
+

28 November 2013

+

Malkevin updated:

+
    +
  • Made the suit storage on the Captain's Tunic more useful than just a place to store your e-o2 tank. You can now store the nuke disk, stamps, medal box, flashes and melee weapons (mainly intended for the Chain of Command), and of course - smoking paraphernalia
  • +
+
+ +
+

27 November 2013

+

RobRichards updated:

+
    +
  • Nanotrasen surgeons are now certified to perform Limb replacements, The robotic parts used in construction of Nanotrasen Cyborgs are the only parts authorized for crew augmentation, these replacement limbs can be repaired with standard welding tools and cables.
  • +
+
+ +
+

17 November 2013

+

Laharl Montgommery updated:

+
    +
  • AI can now anchor and unanchor itself. In short, it means the AI can be dragged, if it wants to.
  • +
+
+ +
+

29 September 2013

+

RobRichards updated:

+
    +
  • Nanotrasen Cyborg Upgrades:
    +Standard issue Engineering cyborgs now come equipped with replacement floor tiles which they can replenish at recharge stations.
  • +
+
+ + +
+

28 September 2013

+

Ergovisavi updated:

+
    +
  • Mobs can now be lit on fire. Wearing a full firesuit (or similar) will protect you. Extinguishers, Showers, Space, Cryo, Resisting, being splashed with water can all extinguish you. Being splashed with fuel/ethanol/plasma makes you more flammable. Water makes you less flammable.
  • +
+
+ + +
+

26 September 2013

+

Cheridan updated:

+
    +
  • Nanotrasen Anomaly Primer:
    + Unstable anomalies have been spotted in your region of space. These anomalies can be hazardous and destructive, though our initial encounters with these space oddities has discovered a method of neutralization. Method follows.
    +

    Step 1. Upon confirmation of an anomaly sighting, report its location. Early detection is key.
    + Step 2. Using an atmospheric analyzer at short range, determine the frequency that the anomaly's core is fluctuating at.
    + Step 3. Send a signal through the frequency using a radio signaller. Note that non-specialized signaller devices may possibly lack the frequency range needed.

    + With the anomaly neutralized and the station brought out of danger, inspect the area for any remnants of the anomaly. Properly researched, we believe these events could provide vast amounts of valuable data.
    + Did you find this report helpful?
  • +
+
+ + + +
+

21 September 2013

+

Malkevin updated:

+
    +
  • Due to complaints about Security not announcing themselves before making arrests NT has now issued it's Sec team with loud hailer integrated gas masks, found in their standard equipment lockers. Users can adjust the mask's level of aggression with a screwdriver.
  • +
  • The sprites could be shaded better. Think you can do better? Post your submissions here.
  • +
+
+ + +
+

19 September 2013

+

Malkevin updated:

+
    +
  • Juggernaut's ablative armor has been adjusted. They have a greater chance to reflect lasers however on reflection they take half damage instead of no damage, basically this adjustment means you should be able to kill a Juggernaut with two laser guns instead of four! Also their reflection spread has been greatly widened, enjoy the lightshow
  • +
  • Cargo can now order exile implants.
  • +
  • Checking a collector's last power output via analyzers has been moved to multitools, because that actually made sense (betcha didn't know this existed, I know I didn't)
  • +
  • Analyzers can now be used to check the gas level of the tank in a loaded radiation collector (yay no more crowbars), you can also use them on pipes to check gas levels (yay no more pipe meters)
  • +
+
+ +
+ + +

17 September 2013

+

SuperSayu updated:

+
    +
  • You can no longer strip people through windows and windoors
  • +
  • You can open doors by hand even if there is a firedoor in the way, making firedoor+airlock no longer an unbeatable combination
  • +
  • Ghosts can now click on anything to examine it, or double click to jump to a turf. Double clicking a mob, bot, or (heaven forbid) singularity/Nar-Sie will let you follow it. Double clicking your own corpse re-enters it.
  • +
  • AI can double click a mob to follow it, as well as double clicking turfs to jump.
  • +
  • Ventcrawling mobs can alt-click a vent to start ventcrawling.
  • +
  • Telekinesis is now part of the click system. You can click on buttons, items, etc, without having a telekinetic throw in hand; the throw will appear when you click on something you can move (with your mind).
  • +
+
+ + +
+

13 September 2013

+

JJRcop updated:

+
    +
  • We at Nanotrasen would like to assure you that we know the pain of waiting five minutes for the emergency shuttle to be dispatched in a high-alert situation due to our confirmation-of-distress policy. Therefore, we have amended our confirmation-of-distress policy so that, in the event of a red alert, the distress confirmation period is shortened to three minutes and we will hurry in preparing the shuttle for transit. This totals to 6 minutes, in hope that it will give our very expensive equipment a better chance of recovery.
  • +
+
+ + +
+

3 September 2013

+

Cael_Aislinn updated:

+
    +
  • Terbs Fun Week Day 5: Chef gets a Nanotrasen-issued icecream machine with four pre-approved icecream flavours and two official cone types.
  • +
+
+ + +
+

2 September 2013

+

Cael_Aislinn updated:

+
    +
  • Terbs Fun Week Day 4: Humans, aliens and cyborgs now show speech bubbles when they talk.
  • +
+
+ + +
+

1 September 2013

+

Cael_Aislinn updated:

+
    +
  • Terbs Fun Week Day 3: Detective can reskin his gun to one of five variants: Leopard Spots, Gold Trim, Black Panther, Peacemaker and the Original.
  • +
+
+ + +
+

12 September 2013

+

AndroidSFV updated:

+
    +
  • AI Photography: AIs now have two new verbs, Take Picture and View Picture. The pictures the AI takes are centered on the AI's eyeobj. You can use these pictures on a newscaster, and print them at a photocopier. +
+
+ + +
+

31 August 2013

+

Cael_Aislinn updated:

+
    +
  • Terbs Fun Week Day 2: RD, lawyers and librarians now spawn with a laser pointer. Don't point them in anyone's eyes!
  • +
+
+ + +
+

30 August 2013

+

Cael_Aislinn updated:

+
    +
  • Terbs Fun Week Day 1: Added ghost chilis as a mutation of chili plants. Be careful, they're one of the hottest foods in the galaxy!
  • +
+
+ + +
+

21 August 2013

+

Dumpdavidson updated:

+
    +
  • Replaced the EMP grenades from the uplink with an EMP kit. The kit contains a grenade, an implant and a flashlight with 5 uses that can EMP any object or mob in melee range.
  • +
+
+ + +
+

18 August 2013

+

Delicious updated:

+
    +
  • Made time and date consistent across medical and security records, mecha logs and detective scanner reports
  • +
  • Added date to PDA
  • +
+
+ + +
+

13 August 2013

+

Giacom updated:

+
    +
  • Malf AIs now have a new power which will spawn a "borging machine". This machine will turn living humans into loyal cyborgs which the AI can use to take over the station with. The AI will limit themselves by using this ability, such as no shunting, and the machine will have a long cooldown usage.
  • +
+
+ + + + + +
+

12 August 2013

+

Giacom updated:

+
    +
  • Changed the blob balance to make the blob start strong but grow slower, resulting in rounds where the blob doesn't instantly get killed off if found out and doesn't immediately dominate after being left alone long enough. AIs no longer have to quarantine the station.
  • +
+
+ + +
+

10 August 2013

+

Malkevin updated:

+
    +
  • Cargo Overhaul: Phase 1
  • +
  • Ported Bay's cargo computer categoy system
  • +
  • Crates have been tweaked significantly. Crates have been reduced to single item types where possible, namely with expensive crates such as weapons and armor. A total of 28 new crates have been added, including chemical and tracking implants, and raw materials can also be bought from cargo for a significant number of points (subject to change)
  • +
  • This was a pretty large edit of repetitive data, so no doubt I've made a mistake or two. Please report any bugs to the usual place
  • +
+
+ + +
+

6 August 2013

+

Giacom updated:

+
    +
  • NTSL no longer allows you to use a function within another function parameter. This was changed to help prevent server crashes; if your working script no longer compiles this is why.
  • +
      +
+ + +
+

5 August 2013

+

Kaze Espada updated:

+
    +
  • Nanotrasen has recentely had to change its provider of alcoholic beverages to a provider of lower quality. Cases of the old ailment known as alcohol poisoning have returned. Bar goers are to be weary of this new condition.
  • +
+
+ + +
+

4 August 2013

+

Giacom updated:

+
    +
  • Nanotrasen has re-arranged the station blueprint designs to have non-essential APCs moved to the maintenance hallways. Non-essential rooms that aren't connected to a maintenance hallway will have their APC remain. Station Engineers will now have easy access to a room's APC without needing access themselves. Nanotrasen also wishes to remind you that you should not sabotage these easy to access APCs to cause distractions or to lockdown someone in a location. Thank you for reading.
  • +
+
+ + +
+

31 July 2013

+

Ricotez updated:

+
    +
  • Atmospherics now has its own hardsuit. Instead of radiation protection it offers fire protection.
  • +
+
+ + +
+

21 July 2013

+

Malkevin updated:

+
    +
  • Cultists now start with two words each, and the starting talisman no longer damages you when you use it
  • +
+
+ + + +
+

21 July 2013

+

Cheridan updated:

+
    +
  • Instead of a level-up system where it is possible to acquire all the skills, each skill now costs 1 point, and you can pick up to 5.Husking people, instead of giving you more XP to buy skills, now gives you a skill reset, allowing you to pick new ones.
  • +
  • DNA Extract Sting is now free, and is your main mode of acquiring DNA. You can hold up to 5 DNAs, and as you acquire more, the oldest one is removed. If you're currently using the oldest DNA strand, you will be required to transform before gaining more.
  • +
  • New abilities! An UI indicator for chemical storage! Fun!
  • +
+
+ + +
+

16 July 2013

+

Malkevin updated:

+
    +
  • Summary of my recent changes: Added a muzzle and a box of Prisoner ID cards to the perma wing, RnD can make a new combined gas mask with welding visor, added some atmos analyzers to atmospherics, air alarm circuit boards have their own sprites, package wrapped objects will now loop back round to the mail chute instead of auto-rerouting to disposals, and the detective and captain have access to securitrons through their PDA cartridges.
  • +
+
+ +
+

15 July 2013

+

Giacom updated:

+
    +
  • A new item has been added to the syndicate catalog. The AI detector is a device disguised as a multitool; it is not only able to be used as a real multitool but when it detects an AI looking at it, or it's holder, it will turn red to indicate to the holder that he should cease supiscious activities. A great and cheap, to produce, tool for undercover operations involving an AI as the security system.
  • +
+
+ + +
+

7 July 2013

+

Giacom updated:

+
    +
  • Revamped blob mode and the blob random event to spawn a player controlled overmind that can expand the blob and upgrade pieces that perform particular functions. This will use resources which the core can slowly generate or you can place blob pieces that will give you more resources.
  • +
+
+ +
+

27 June 2013

+

Ikarrus updated:

+
    +
  • Nanotrasen R&D released a new firmware patch for their station AIs. Included among the changes is the new ability for AIs to interact with fire doors. R&D officials state they feel giving station AIs more influence could only lead to good things.
  • +
+
+ +
+

16 June 2013

+

Khub updated:

+
    +
  • Job preferences menu now not only allows you to left-click the level (i.e. [Medium]) to raise it, but also to right-click it to lower it. That means you don't have to cycle through all the levels to get rid of a [Low].
  • +
+
+ + +
+

15 June 2013

+

Carnie updated:

+
    +
  • DNA-scanner pods (DNA-modifier + cloning), now open and close in a similar fashion to closets. This means you click on them to open/close them. This change was to fix a number of issues, like items being lost in the scanner-pods.
  • +
  • As a side-effect, borgs can now clone humans. No harm can become a dead human, so they are not necessarily lawbound to clone them, and such tasks are probably best left to qualified genetics staff.
  • +
+

Petethegoat updated:

+
    +
  • Updated chemical grenades. The build process is much the same, except they require an igniter-X assembly instead of a single assembly item. You can also just use a cable coil to get regular grenade behaviour.
  • +
+
+ +
+

9 June 2013

+

Ikarrus updated:

+
    +
  • Server operators may now allow latejoiners to become antagonists. Check game_options.txt for more information.
  • +
  • Server operators may now set how traitors and changelings scale to population. Check game_options.txt for more information.
  • +
+
+ +
+

6 June 2013

+

Giacom updated:

+
    +
  • Emptying someone's pockets won't display a message. In theory you can now pickpocket!
  • +
+
+ + +
+

4 June 2013

+

Dumpdavidson updated:

+
    +
  • Headsets can no longer broadcast into a channel that is disabled.
    Headsets now have a button to turn off the power instead of the speaker. This button disables all communication functions.
    EMPs now force affected radios off for about 20 seconds.
  • +
+
+ +
+

2 June 2013

+

Ikarrus updated:

+
    +
  • To reduce costs of security equipment, mounted flashers have been adjusted to use common handheld flashes as their flashbulbs. Although these flashbulbs are more prone to burnout, they can easily be replaced with wirecutters.
  • +
+
+ +
+

25 May 2013

+

Ikarrus updated:

+
    +
  • CentCom announced some minor restructuring within Space Station 13's command structure. Most notable of these changes is the removal of the Head of Personnel's access to the security radio channel. CentCom officials have stated the intention was to make the HoP's role more specialized and less partial towards security.
  • +
+
+ +
+

14 May 2013

+

Ikarrus updated:

+
    +
  • Nanotrasen seeks to further cut operating costs on experimental cyborg units. +
    -Cyborg chassis will now be made from a cheaper but less durable design. +
    -RCDs found on engineering models have been replaced with a smaller model to make room for a metal rods module. +
    -Cyborg arms will no longer be long enough to allow for self-repairs. +
    NOTE: A cyborg's individual modules have been found to become non-operational should the unit sustain too much structural damage.
  • +
+
+ +
+

11 May 2013

+

Malkevin updated:

+
    +
  • SecHuds now check for valid clearance before allowing you to change someone's arrest status. There is only one way to bypass the ID check, and its not the usual way.
  • +
+ +
+ +
+

7 May 2013

+

Ikarrus updated:

+
    +
  • As a part of the most recent round of budget cuts, toolboxes will now be made with a cheaper but heavier alloy. HR reminds employees to avoid being struck with toolboxes, as toolbox-related injuries are not covered under the company's standard health plan.
  • +
+
+ +
+

5 May 2013

+

Rolan7 updated:

+
    +
  • Cargo manifests from CentComm may contain errors. Stamp them DENIED for refunds. Doesn't apply to secure or large crates. Check the orders console for CentComm feedback.
  • +
+
+ +
+

2 May 2013

+

Malkevin updated:

+
    +
  • You can now weld four floor tiles together to make a metal sheet
  • +
  • The All-In-One Grinder can now grind Metal, Plasteel, Glass, Reinforced Glass, and Wood sheets
  • +
  • Made grey backpacks slightly less ugly
  • +
+
+ +
+

30 April 2013

+

Ikarrus updated:

+
    +
  • Researchers have discovered that glass shards are, in fact, dangerous due to their typically sharp nature. Our internal Safety Committee advises that glass shards only be handled while using Nanotrasen-approved hand-protective equipment.
  • +
+
+ +
+

24 April 2013

+

Carnie updated:

+
    +
  • DNA reworked: All SE blocks are randomised. DNA-modifier emitter strength affects the size of the change in the hex-character hit. Emitter duration makes it more likely to hit the character you click on. Almost all DNA-modifier functions are on one screen.
    Balancing -will- be off a bit. Is getting halk to hard/easy? Please report bugs/balancing issues/concerns here: http://forums.nanotrasen.com/viewtopic.php?f=15&t=13083 <3
  • +
+
+ +
+

26 April 2013

+

Aranclanos updated:

+
    +
  • Exosuit fabricators will now need to be manually updated
  • +
+

Ikarrus updated:

+
    +
  • Commanding Officers of Nanotrasen Stations have been issued a box of medals to be awarded to crew members who display exemplary conduct.
  • +
+
+ + +
+

23 April 2013

+

Malkevin updated:

+
    +
  • Replaced the captain's run of the mill armored vest with his very own unique vest. Offers slightly better bullet protection.
  • +
+
+ + +
+

22 April 2013

+

Malkevin updated:

+
    +
  • Overhauled the thermal insulation system
  • +
  • All clothing that protected from one side of the thermal spectrum now protects from the other.
  • +
  • Armor (although most don't have full coverage) protects between 160 to 600 kelvin
  • +
  • Firesuits protect between 60 to 30,000 kelvin (Note: Hotspot damage still exists)
  • +
  • CE's hardsuit got its firesuit level protection back
  • +
  • Bomb suits function as ghetto riot gear
  • +
+
+ +
+

22 April 2013

+

Cheridan updated:

+
    +
  • Stungloves removed 5eva.
  • +
  • Don't rage yet. Makeshift stunprods(similar in function to stungloves) and spears are now craftable. Make them by using a rod on cable restraits, then adding something.
  • +
  • Stun batons/prods now work off power cells, which can be removed and replaced! Use a screwdriver to remove the battery.
  • +
+
+ + +
+

17 April 2013

+

Giacom updated:

+
    +
  • If the configuration option is enabled, AIs and or Cyborgs will not be able to communicate vocally. This means they cannot talk normally and need to use alternative methods to do so
  • +
+
+ + +
+

10 April 2013

+

Cheridan updated:

+
    +
  • You can now condense capsaicin into pepper spray with chemistry.
  • +
  • Pepper spray made slightly more effective.
  • +
  • Teargas grenades can be obtained in Weapons and Riot crates.
  • +
  • Riot crate comes with 2 sets of gear instead of 3, made cheaper. Beanbag crate removed entirely. Just make more at the autolathe instead. Bureaucracy crate cheaper, now has film roll.
  • +
  • NT bluespace engineers have ironed-out that little issue with the teleporter occasionally malfunctioning and dropping users into deep space. Please note, however, that bluespace teleporters are still sensitive experimental technology, and should be Test Fired before use to ensure proper function.
  • +
+
+ + +
+

9 April 2013

+

Ikarrus updated:

+
    +
  • Liquid Plasma have been found to have strange and unexpected results on virion cultures. The executive chief science officer urges virologists to explore the possibilities this new discovery could bring.
  • +
  • After years or research, our scientists have engineered this cutting-edge technology born from the science of shaving. The Electric Space-Razor 5000! It uses moisturizers to refuel your face while you shave with not three, not four, but FIVE lazer-precise inner blades for maximum comfort.
  • +
+
+ +
+

4 April 2013

+

Cheridan updated:

+
    +
  • When an AI shunts into an APC, the pinpointer will begin tracking it. When the AI returns to its core, the pinpointer will go back to locating the nuke disc.
  • +
  • New sechud icons for sec officers/HoS, medical doctors, and loyalty implants.
  • +
+
+ +
+

28 March 2013

+

Carnie updated:

+
    +
  • Empty character slots in your preferences screen will now randomize. So they won't initialise as bald, diaper-clad, white-guys.
  • +
  • Reworked the savefile versioning/updating code. Your preferences data is less likely to be lost.
  • +
+
+ +
+

14 March 2013

+

Major_sephiroth updated:

+
    +
  • You can now light cigarettes with other cigarettes, and candles. And cigars. Light a cigar with a candle! It's possible now!
  • +
+
+ +
+

13 March 2013

+

Elo001 updated:

+
    +
  • You can now open and close job slots for some jobs at any IDcomputer. There is a cooldown when opening or closing a position.
  • +
+
+ +
+

8 March 2013

+

Kor updated:

+
    +
  • You can now construct/destroy bookcases. This is super exciting and game changing.
  • +
+
+ +
+

6 March 2013

+

Petethegoat updated:

+
    +
  • Petethegoat says, "Added a new feature involvi-GLORF"
  • +
  • Overhauled how grabs work. There aren't any interesting mechanical differences yet, but they should be a lot more effective already. You don't have to double click them anymore. Report any bugs with grabbing directly to me, or on the issue tracker.
  • +
+
+ +
+

24 February 2013

+

Ikarrus updated:

+
    +
  • AI has been moved back to the center of the station. Telecoms has been moved to engineering.
  • +
+

Faerdan updated:

+
    +
  • Competely new UI overhaul! Most user interface have been converted.
  • +
+ +
+

22 February 2013

+

Petethegoat updated:

+
    +
  • Added cavity implant surgery.
  • +
  • Additionally, surgery must now be performed with help intent. Some procedures have also been updated. + As always, check the wiki for details.
  • +
+
+ +
+

18 February 2013

+

Ikarrus updated:

+
    +
  • The AI has been moved to Research Division, and Telecomms has been moved into the former AI chamber. Affected areas: Telecoms Satellite, Research Division South & Command Sector.
  • +
+

Incoming updated:

+
    +
  • Added three new types of surgery- lipoplasty, plastic surgery, and gender reassignment.
  • +
+

Kor updated:

+
    +
  • The RD has lost access to telecomms, and basic engineers have gained it.
  • +
+
+ +
+

14 February 2013

+

Petethegoat updated:

+
    +
  • Updated surgery: you now initiate surgery with surgical drapes or a bedsheet. Most procedures have changed, check the wiki for details. Currently it's pretty boring, but this paves the way for exciting new stuff- new procedures are very simple to add. Report any bugs directly to me, or on the issue tracker.
  • +
+
+ +
+

13 February 2013

+

Giacom updated:

+
    +
  • There are now hackable wires for the PA computer. To open the interface, click on it while the wires are exposed/panel is open. All but one wire will do something interesting, see if you can figure it out. You can also attach signallers to the wires so have fun remotely releasing the singularity.
  • +
  • New staff of animation icon by Teh Wolf!
  • +
  • You can now hack plastic explosives (C4)!
  • +
  • You can now use NTSL to send signals! With the function signal(frequency, code) you can create some clever ways to trigger a bomb. NTSL also has two new additions; return in the global scope will now stop the remaining code from executing and NTSL now has "elseif"s, huzzah!
  • +
+

Kor "I'm quitting I swear" Phaeron updated:

+
    +
  • You've been asking for it for years, it's finally here. Wizards can spend points to buy apprentices.
  • +
  • A new wizard artefact, the scrying orb.
  • +
  • The spellbook now has descriptions of spells/items visible BEFORE you purchase them.
  • +
+

Petethegoat updated:

+
    +
  • Traitors with the station blueprints steal objective can now use a photo of the blueprints instead!
  • +
+
+ +
+

11 February 2013

+

SuperSayu updated:

+
    +
  • Signallers, prox sensors, mouse traps and infrared beams can now be attacheed to grenades to create a variety of mines.
  • +
  • A slime core can be placed in a large grenade in place of a beaker. When the grenade goes off, the chemicals from the second container will be transfered to the slime core, triggering the usual reaction.
  • +
+
+ +
+

10 Feburary 2012

+

Ikarrus updated:

+
    +
  • Implants can now be surgically removed. Hint: They're inside the skull.
  • +
+
+ +
+

07 February 2012

+

Giacom updated:

+
    +
  • The return of the Nanotrasen Scripting Language! (NTSL) If you haven't heard of NTSL, it is a scripting language within a game for telecomms. Yes, you can create scripts to interact with the radio! For more information, head here: http://wiki.nanotrasen.com/index.php?title=NT_Script But before you do, if you are not an antag, do not create bad scripts which hinders communication.
  • +
  • Cameras, mulebots, APCs, radios and cyborgs can have signallers attached to their wires, like airlocks!
  • +
  • Cameras have non-randomized wires and the power wire when pulsed will now toggle the camera on and off.
  • +
  • Cyborgs have a new wire, the lockdown wire! It will disable/enable the lockdown of a Cyborg when pulsed.
  • +
  • The traffic control computer (or more commonly known as the computer which lets you add NTSL scripts) will now have a user log, which will log all user activity. Other users can then view that log and see who has been uploading naughty scripts!
  • +
  • NTSL has two new functions! time() and timestamp(format) will help you increase the range of types of scripts you can make, especially time(); since you can then make the scripts know the different between each execution by storing the results in memory.
  • +
  • Two new advance disease symptoms! Their names are "Longevity" and "Anti-Bodies Metabolism". Have fun experimenting with them!
  • +
+
+ + +
+

31 January 2013

+

Kor "Even in death I still code" Phaeron updated:

+
    +
  • Four new slime types with their own reactions and two new reactions for old slimes.
  • +
  • Put a suit of reactive teleport armour back in the RD's office.
  • +
  • Chemistry now has two dispensers (with half charge each) so both chemists can actually work at the same time.
  • +
+
+ + +
+

27 January 2013

+

Ikarrus updated:

+
    +
  • Security frequency chatter now appears in cyan (Similar to how command is gold)
+

Cheridan updated:

+
    +
  • The plant bags in Hydroponics lockers have been replaced with upgraded models with seed-extraction tech. Activate with via right-click menu or Objects verb tab.
  • +
  • Obtaining grass tiles works a bit different now: grass is harvested as a normal plant item, clicking on it in-hand produces the tile.
  • +
+
+ +
+

26 January 2013

+

Pete updated:

+
    +
  • Added hugging and kicking. I also updated the text styles for clicking on humans in most intents, but they should be pretty much the same.
  • +
+
+ +
+

25 January 2013

+

Errorage updated:

+
    +
  • All the equipment you spawn with will now contain your fingerprints, giving the detective more ability to tell where items came from and if a crewmember has changed clothing.
  • +
+
    +
  • Better explosions: Explosion spreading will now be determined by walls, airlocks and poddoors and not just a flat circle.
  • +
+
+ +
+

20 January 2013

+

Cheridan updated:

+
    +
  • Chickens will now lay a certain number of eggs after being fed wheat, rather than just laying them whenever they felt like it. No more chickensplosions.
  • +
+
+ +
+

16 January 2013

+
    +
  • Department Security can now be runned: +
    Department Security decentralizes security by assigning each officer to a different department. They will be given the radio channel and access to their assigned department along with a security post. The brig has been remapped to be smaller to accomodate this change. +
    To run DeptSec: Before compiling, server operators must
    tick jobs.dm (in WorkInProgress/Sigyn/Department Sec) and use map 2.1.1 instead of 2.1.0.
  • +
+
+ +
+

/tg/station 13 Presents

+

Directed by S0ldi3rKr4s0

+

& produced by Petethegoat

+
    +
  • Curse of the Horseman.
  • +
+
+ +
+

12 January 2013

+

Cael Aislinn updated:

+
    +
  • Spiders which will breed and spread through vents. Different classes of vents. AI controlled only at the moment.
  • +
  • Farm animals! Cows, goats and chickens are now available. You can order them at Cargo Bay.
  • +
+

Giacom updated:

+
    +
  • Staff of animation mimics will no longer care whether you are holding the staff or not, they will never attack their creator.
  • +
  • Brainrot will only need alkysine to be cured.
  • +
  • New spider infestation event based on Cael's spiders. The announcement will be the same as alien infestations.
  • +
+
+ +
+

11 January 2013

+

Giacom updated:

+
    +
  • Plasma (Air) will give the breather the plasma reagent, for a toxic effect, instead of just straight damage.
  • +
  • The agent card will now work inside PDAs/Wallets; meaning the AI won't be able to track you.
  • +
+
+ +
+

09 January 2013

+

Malkevin updated:

+
    +
  • The owl mask now functions as a gasmask for increased crimestopping power.
  • +
+
    +
  • Adds the missing icons for the arrest statuses of Parolled and Released, as well as a little blinking icon for chemical implants.
  • +
+ + +
+

08 January 2013

+

Cael Aislinn & WJohnston updated:

+
    +
  • Many new icons for aliens (death, sleeping, unconscious, neurotox, thrown/impregnated facehugger etc)
  • +
  • Alien larva can now be removed by dangerous and unnecessary surgery (and actually chestburst if they aren't).
  • +
  • Alien larva now have sprites to represent their growth: bloody at 0%, pale at 25% and 75% the normal deep red.
  • +
  • New icon overlays for representing alien embryo progression.
  • +
+ +
+

07 January 2013

+

Kor updated:

+
    +
  • Four new slime types with their own extract reactions have been added. Sprites this time were created by Reisyn, SuperElement, and LePinkyFace.
  • +
+ +
+

02 January 2013

+

Kor updated:

+
    +
  • Slime breeding! There are now 13 varities of slime, each with its own extract reaction (inject five units of plasma). Some of these reactions are reused from the old cores, some are new. As to breeding, each colour of slime has a series of other slimes it may mutate into when it reproduces.
  • +
+

Giacom updated:

+
    +
  • You can now use wallets as IDs and equip them in your ID slot.
  • +
  • Firesuits are once again effective at protecting you from heat. The flames themselves will still hurt you, even with a firesuit. The damage protection is much better with a firesuit though.
  • +
  • Engineering starts with a PACMAN generator for jump starting the singularity if the power runs out of the SMES. 30 plasma spawns in Secure Storage inside the crate, to use as fuel for the generator.
  • +
+ +
+

31 December 2012

+

Giacom updated:

+
    +
  • Simple animals (Corgis, Cats, Constructs, Mice, Etc...) can now pull people.
  • +
  • You can quickly stop pulling on someone by pulling them, while they're already being pulled by you. For example, CTRL+Click on something you are pulling to quickly stop pulling it.
  • +
+ +
+

30 December 2012

+

Giacom updated:

+
    +
  • Emitters now require to be wired in order to work. When there is not enough power it will stop shooting until there is enough power, meaning you do not have to turn it back on, just get the power flowing.
  • +
  • You can order shield generators from cargo. Teleporter access is required to open the crate.
  • +
+

Ikarrus updated:

+
    +
  • Map: Reorganized the Command Sector. The Captain has his own private quarters in addition to his office.
  • +
+ +
+

26 December 2012

+

Ikarrus updated:

+
    +
  • An agent card is now required to use doors and controls on the Syndicate Shuttle (Nuke).
  • +
  • Scanning gas tanks is now a PDA-cart function. Only Atmos and Science PDA carts have this function. Have fun mislabelling gas tanks!
  • +
+ +
+

23 December 2012

+

Giacom updated:

+
    +
  • The syndicate Military PDA will not show up on possible PDAs to message anymore, even when the receive/signal is turned on. You can still send messages and people can still reply to you.
  • +
  • You can now sell processed plasma for supply points. The conversion rate is 2 plasma sheets for 1 point. You must put the plasma in a crate for it to count.
  • +
  • The mecha toy prize promotion has officially ended. You can no longer redeem all 11 action mecha figures for a real mech. New toy redeeming promotions in the future will be considered.
  • +
+ +
+

21 December 2012

+

Ikarrus updated:

+
    +
  • You can now use . to speak over headset department channels in addition to the : and # characters.
  • +
+ +
+

19 December 2012

+

Nodrak updated:

+
    +
  • You can now use # to speak over headset department channels. For example say "#e Hello" will say "Hello" over the engineering channel. say ":e Hello" will still work as it always has.
  • +
+ +
+

16 December 2012

+

Giacom updated:

+
    +
  • You can now create your own solar arrays! Order the solar pack crate and you'll receive 21 solar assemblies, 1 electronic which you can put into an assembly to make it a solar tracker and finally the solar computer circuit board. You will get more detailed instructions in the crate, on a piece of paper. Engineering will also start with this crate to help repair destroyed solar arrays.
  • +
+

Petethegoat updated:

+
    +
  • Added a new option to the key authorisation devices. It removes the maintenance access requirement from all doors. It's irreversible, so only use it in an emergency!
  • +
+ +
+

15 December 2012

+

Ikarrus updated:

+
    +
  • Swapped the locations of the Library and Chapel. Thanks to killerz104 for the remap.
  • +
  • Partial remap of atmos. Monitoring and Refill stations are now the same room.
  • +
  • Toxins Mixing should be working properly again.
  • +
+ +
+

12 December 2012

+

Ikarrus updated:

+
    +
  • Robotics is now a full Science department.
  • +
  • Completely remapped Research Division, Robotics, Medbay, and the Library.
  • +
  • Partially remapped Cargo Bay, Mining Dock, Engineering, and Atmospherics.
  • +
  • Changed the access of the HoS and HoP. For a list, refer to their respective wiki pages.
  • +
+

Errorage updated:

+
    +
  • Miners now have to go through cargo to reach the Mining Dock.
  • +
+

Petethegoat updated:

+
    +
  • The Detective's revolver no longer cares about how cool you look. It now spawns in his locker.
  • +
  • Added new inhands for most energy weapons, by Flashkirby!
  • +
+

Giacom updated:

+
    +
  • Disintegrate (EI NATH) will leave behind the brain of the victim. Possible productive uses include: trophies, looking awesome as you gib someone and only their brain remains, people to talk to when you get an MMI, pocket brains, a way to get back into the game if the wizard didn't grab your brain and stuffed it into his bag.
  • +
+ +
+

07 December 2012

+

Giacom updated:

+
    +
  • The detective's scanner was upgraded, it can now scan for reagents in items and living beings. Potential uses include, scanning dead bodies for leftover poison or scanning items to see if they have been spiked.
  • +
  • You can now attach photos to newscaster news feeds and wanted posters.
  • +
  • You can now emag buttons to remove access from them.
  • +
  • The CentComm. Report has been changed so it no longer names potential antagonists. It will just announce the potential round type instead.
  • +
+ +
+

05 December 2012

+

Cheridan updated:

+
    +
  • Agent cards have been upgraded with microscanners, allowing operatives in the field to copy access levels off of other ID cards.
  • +
+

Ikarrus updated:

+
    +
  • The Chief Medical Officer, Research Director, Chief Engineer, and Lawyers now have basic Brig access (corridor only)
  • +
  • Merged Mining and Cargo radio channels into the Supply Radio. To use the supply channel, use :u
  • +
  • Mining Dock remapped to be more compact and closer to cargo.
  • +
+

Giacom updated:

+
    +
  • The wizard's fireball spell is once again dumbfire. It will fire in the direction of the wizard instead of having to choose from a list of targets and then home in on them.
  • +
+
+ +
+

02 December 2012

+

Giacom updated:

+
    +
  • Added a new artefact called the "Staff of Animation". You can get it in the Wizard's Spellbook. It will animate objects and items, but not machines, to fight for you. The animated objects will not attack the bearer of the staff which animates them, meaning if you lose your staff, or if it gets stolen, your minions will turn on you.
  • +
+
+ +
+

30 November 2012

+

Petethegoat updated:

+
    +
  • Janitor has recieved a slightly upgrade mop bucket. The old one is still there too.
  • +
+

Ikarrus updated:

+
    +
  • Swapped the locations of the Vault and Tech Storage.
  • +
  • Cargo Techs, Miners, and Roboticists no longer start with gloves. They are still available from their lockers.
  • +
+
+ +
+

28 November 2012

+

Kor updated:

+
    +
  • Slimes have replaced roros (finally)! Right now they are functionally identical, but massive expansion of slimes and xenobio is planned. Sprites are by Cheridan.
  • +
+
+ +
+

25 November 2012

+

Giacom updated:

+
    +
  • Added new very high level symptoms which are only obtainable in the virus crate. Virus crate will also come with mutagen.
  • +
+

Petethegoat updated:

+
    +
  • Removed clown planet! It'll return shortly in away mission form.
  • +
+

Ikarrus updated:

+
    +
  • Added Gateway access. Only the RD, HoP, and Captain start with this.
  • +
  • New access levels in the brig:
    -Brig access now opens the front doors of the brig, as well as other lower-risk security areas.
    -Security access allows you into the break room and equipment lockers.
    -Holding Cells allows you to use brig timers and lets you in the Prison Wing.
    -The Detective no longer has Security Equipment access.
  • +
  • Significantly increased max cloneloss penalty for fresh clones to 40%.
  • +
+
+ +
+

23 November 2012

+

Giacom updated:

+
    +
  • Simplified detective stuff. The high-res scanner is gone and instead the detective's normal scanner will instantly report all fingerprints, dna and cloth fibers in full. This was needed because the system took too long to work with and disencouraged detectives. Not only that, it made detectives less of a threat for antagonists and made possible scenerios, such as framing someone by changing fingerprints with someone else, impratical. To replace the computer, the detective will have a full medical computer with access to it. Not only that, but his useless filing cabinet will be replaced with an empty one for serious investigators. Along with this, are fingerprint cards and built-in PDA scanning, as all of security had access to it which was really the detective's thing. The new scanner will also log every finding and you can print them out as a report by clicking the scanner while it is in your active hand.
  • +
  • You can toggle the pressure of your sprayer by clicking on it while it is in your active hand. With pressure, the sprayer will spray 10 units on the floor, otherwise it sprays 5. You'll need to turn pressure on to spray water on the floor and make it slippery.
  • +
  • AIs in intellicards can no longer move their camera. This will limit them in ability but without making creating and carding an AI to have as a personel door opener impossible.
  • +
  • Telecommunication Busses can now be set to change the frequency of a signal. (Allowing you to say.. set the command channel to broadcast to the common channel).
  • +
  • Telecommunication was changed to be more effecient. Because of this, Relays don't need a broadcaster or a receiver and you can setup a relay on it's own. You can still disable sending and or receiving from the relay's interface.
  • +
+

Zelacks updated:

+
    +
  • Plant Analysers now work on seed bags.
  • +
+
+ +
+

21 November 2012

+

Petethegoat updated:

+
    +
  • The nuke shuttle can now travel at will, and to any location. When travelling from syndicate space to the station, (and vice versa), it will travel through hyperspace.
  • +
+

Carn updated:

+
    +
  • Changed savefile structure. There's a bunch of unused files left lying around so old savefiles will be purged. Sorry for the inconvenience. Many preferences have been moved to the Preferences verb tab. Everything in that tab is persistent between rounds (it updates your savefile, so even DCing won't reset them). Enjoy x
  • +
+

Phol updated:

+
    +
  • Added female sprites for most mutant races.
  • +
+

Cheridan updated:

+
    +
  • SSU manufacturers have issued a product recall! It seems old models shipped with faulty wiring, causing them to short-circuit.
  • +
+
+ +
+

20 November 2012

+

Kor updated:

+
    +
  • Added Exile Implants to the Gateway room. Someone implanted with an Exile Implant will be able to enter the away mission, but unable to return from it. Not only can they be used for getting rid of dangerous criminals, but revs/stationheads count as dead while on the away mission, and traitor/changeling/wizard assassination targets count as dead if they're on the away mission at round end, allowing for those objectives to be completed peacefully.
  • +
  • Added medical hardsuits, sprited by Majorsephiroth. Two of them spawn in EVA. Their most unique/medical oriented feature is being able to hold a medkit in the suit storage slot, allowing you to easily access medicine while keeping your hands free.
  • +
+
+ +
+

19 November 2012

+

Giacom updated:

+
    +
  • Malf AIs can only shunt to APCs from their core. Meaning their core needs to be alive before they can shunt to another APC. Malf AIs can start a takeover inside an APC now.
  • +
  • When taking damage, the next sequence of the overlay will show for a bit before reverting to the overlay you should have. This allows you to know you are taking damage without having to check the text screen.
  • +
+
+ +
+

18 November 2012

+

Petethegoat updated:

+
    +
  • Ported over BS12 style cameras. They now take a photo of a 3x3 area!
  • +
  • Catatonic people (those that have ghosted while alive) now count as dead for assasinate objectives.
  • +
+
+ +
+

17 November 2012

+

Donkie updated:

+
    +
  • You can now deconstruct and construct Air Alarms and Fire Alarms. Read wiki on howto.
  • +
+

Giacom updated:

+
    +
  • Medical Cyborgs no longer lose the reagents in their hypospray when switching modes.
  • +
  • Spaceacillin will now help stop the spread of diseases.
  • +
  • You can once again make floors slippery by spraying water. This was done by increasing the amount the sprayer uses, which is from 5 to 10. You can also empty your sprayer's contents onto the floor with a verb in the Object tab.
  • +
+
+ +
+

16 November 2012

+

Kor updated:

+
    +
  • Fixed the syndicate teleporter door, making teleport assaults possible. It will once again open when you open the outter door.
  • +
+
+ + +
+

15 November 2012

+

Giacom updated:

+
    +
  • You can now name your advance diseases! You can't name already known diseases though.
  • +
  • Chemical implants can now hold 50 units instead of 10 units.
  • +
+
+ +
+

13 November 2012

+

Giacom updated:

+
    +
  • More work to advance diseases. Please report any bugs to the bug tracker, I have tried everything that I can on my own but I'll need lots of people playing to fix the more minor bugs. You can find a guide to making your own diseases here: LINK!
  • +
  • Reduced the cost to use Hive Absorb from 40 to 20. This is to help encourage people to use this power more and to use team work.
  • +
  • New symptom added! See if you can find it.
  • +
  • You can now remove symptoms from a disease using synaptizine.
  • +
  • Kor: You can once again debrain changelings. They won't make anyone half-lings though, and you won't be able to tell if the body of a debrained changeling is a changeling by putting a player brain in there.
  • +
+

Nodrak updated:

+
    +
  • Wizards can no longer cast spells when muzzled. It iss now actually possible to capture a live wizard without constantly injecting them with chloral.
  • +
  • You can no longer take bags of holding or mechs to the clown planet.
  • +
+
+ +
+

11 November 2012

+

Carn updated:

+
    +
  • Admin-ranks changes
    + Lots of changes. This is just a brief summary of the most recent changes; still working on proper documentation.
    + All admins have access to view-vars, player-panel(for individual mobs), game panel and secrets panel. Most of the things on those pages have their own rights requirements. For instance, you can only use event orientated secrets in the secret panel if you have FUN rights. Debug secrets if you have DEBUG rights. etc.
    + Spawn xeno and toggle gravity procs were moved into the secrets panel (fun).
    + This may help with understanding which flags do what. Unfortuanately it's still somewhat vague.
    + If you have any problems, feel free to PM me at irc.rizon.net #coderbus. I go by the username carn or carnie. +
  • +
+
+ +
+

11 November 2012

+

Kor updated:

+
    +
  • New cyborg upgrade available for production that requires illegal and combat tech
  • +
  • Summon Guns has a new gun type created by Ausops. It also lets the user know when its been cast now to prevent people trying to buy it multiple times
  • +
  • Grilles are no longer immortal in regards to solid projectiles, you can now shoot out windows.
  • +
+
+ +
+

09 November 2012

+

Giacom updated:

+
    +
  • Cyborgs can now ping and beep! (Say "*beep" and "*ping") Thanks to Rahlzel for the proposal.
  • +
  • HULKS WILL NOW TALK IN ALL CAPS AND WILL RANDOMLY SAY HULK THINGS. Thanks to Brotemis for the proposal.
  • +
  • Sorry for the inconveniences with advance diseases. They are working much better now!
  • +
  • An improved APC sprite by TankNut!
  • +
+
+ + +
+

05 November 2012

+

Giacom updated:

+
    +
    +
  • AIs can now tweak with a bot's setting like a human who unlocked the bot.
  • +
+
+ +
+

05 November 2012

+

Errorage updated:

+
    +
  • Being in an area with extremely low pressure will now deal some damage, if you're not protected.
  • +
  • Space suits and the captain's armor now protect against pressure damage
  • +
  • Slightly lowered all environment damage intakes (temperature, oxygen deprevation) to make up for low pressure damage.
  • +
  • Pressure protection finally works properly. Items that protect from pressure (firesuits, space suits, fire helmets, ...) will now properly protect. The pressure damage indicator will update properly based on the pressure effects on you. Black (low) and red (high) mean you are taking damage.
  • +
  • Slightly slowed down the speed at which your body temperature changes if you are in a very hot or very cold area. The speed at which you recover from an abnormal body temperature remains the same.
  • +
+
+ + +
+

03 November 2012

+

TankNut updated:

+
    +
  • New APC sprite.
  • +
  • New Wraith sprite and jaunting animation.
  • +
+
+ +
+

03 November 2012

+

WJohnston updated:

+
    +
  • New Ablative Armor sprite.
  • +
+
+ +
+

03 November 2012

+

Giacom updated:

+
    +
    +
  • Airborne diseases will not spread through walls now.
  • +
  • Reduced queen healing rate to 5. The maximum health will be enough.
  • +
  • Aliens can now clear hatched eggs by clicking on them.
  • +
+
+ +
+

02 November 2012

+

Errorage updated:

+
    +
  • You can once again travel to the station, derelict, satellite and mining z-levels through space. You will also never loop into the same level on transition - So if you are exiting the derelict z-level, you will enter one of the other z-levels.
  • +
+
+ + +
+

01 November 2012

+

Giacom updated:

+
    +
  • Aliens now take x2 as much damage from fire based weaponary, instead of x1.5.
  • +
  • Doors are now weaker than walls; so normal weapons can destroy them much more easily.
  • +
+
+ +
+

31 October 2012

+

Giacom updated:

+
    +
  • Advance evolving diseases! Virology can now create, mutate and mix advance diseases together. I replaced the two bottles of blood in Virology with the advance disease. I'll write a wiki article soon enough. Here's a tip: Putting mutagen or virus food (a mixture of milk, water and oxygen) in blood with an existing disease will mutate it to gain symptoms. It can potentially lose old symptoms in the process, so keep backups!
  • +
+
+ +
+

28 October 2012

+

Errorage updated:

+
    +
  • You can now set your character's age up to 85. This used to be 45.
  • +
+
+ +
+

27 October 2012

+

Petethegoat updated:

+
    +
  • Mousetraps are now assemblies.
  • +
  • Added a new crate for cargo to order.
  • + +
+
+ +
+

27 October 2012

+

Petethegoat updated:

+
    +
  • Player Weekend begins!
  • +
  • Added a camera and hand labeler to art storage.
  • +
  • Added a medical records cabinet to the Detective's office.
  • +
  • Added a safe to the vault. Who'll be the first to crack it?
  • +
+

Nodrak updated:

+
    +
  • The CE has a new pet!
  • +
+
+ +
+

25 October 2012

+

Flashkirby99 updated:

+
    +
  • Added 18 new hairstyles!
  • +
+
+ +
+

24 October 2012

+

Giacom updated:

+
    +
  • Throwing eggs will result in the reagents of the egg reacting to the target. (Which can be a turf, object or mob) This creates possibilities like chloral eggs, lube eggs, and many more.
  • +
  • Aliens can now acid walls and floors! Not R-Walls though.
  • +
  • Facehugger throw range reduced to 5, so aim at humans that are 2 tiles apart from the edge of your screen.
  • +
  • Making eggs is a little more expensive but secreting resin is cheaper. (Both cost 75 now)
  • +
  • Aliens no longer have a random duration of stunning humans, it's a constant value now of the lower based value.
  • +
  • Acid is less random and will be more reliable. Don't bother aciding stuff more than once, as it will waste plasma.
  • +
  • You can now target non-dense items (such as facehuggers) with a gun.
  • +
  • You can now shoot canisters, computers and windoors to break them.
  • +
+
+ +
+

18 October 2012

+

Giacom updated:

+
    +
  • As an AI, you can type in the "track with camera" command and get a list of names to show up there. This also works with "list camera" verb. Remember to use space to auto-fill.
  • +
  • Welding goggles have been added. They are like welding helmets but they are for the glasses equipment slot. Science and the assembly line are given a pair.
  • +
  • Thanks to WJohnston for the welding goggle icons.
  • +
  • Small change to the Assembly Line. Instead of six normal flashes, the Assembly Line will instead have two normal flashes and eight synthetic flashes. Synthetic flashes only work once but are designed to be used in construction of Cyborgs.
  • +
  • Nar-Sie put on a few pounds. Thanks HornyGranny.
  • +
+
+ +
+

16 October 2012

+

Giacom updated:

+
    +
  • New changeling powers!
  • +
  • Hive Channel/Hive Absorb. Allows you to share your DNA with other changelings, very expensive chemical wise to absorb (download), not so much to channel (upload)! You cannot achieve your objective by sharing DNA.
  • +
  • Mimic Voice! You can form your voice of a name you enter. You won't look like them but when you talk, people will hear the name of who you selected. While you're mimicing, you can't regenerate chemicals.
  • +
  • Extract DNA! A power that allows you to silently sting someone and take their DNA! Meaning you do not have to absorb someone to become them. Extracting their DNA doesn't count towards completing your objectives.
  • +
  • You can now get flares from red emergency toolboxes. Has a 50% chance of a flash-light or a flare spawning.
  • +
  • Flare icon by Ausops!
  • +
  • Thanks to RavingManiac (Smoke Carter), Roros now lay eggs which can grow into baby roros or be used for cooking recipes. Scientists will need to expose the egg to plasma for it to hatch; while it is orange (grown).
  • +
  • A new icon for the map spawned x-ray cameras. Icon by Krutchen.
  • +
+
+ +
+

13 October 2012

+

Giacom updated:

+
    +
  • Facehuggers have a new animation, thanks to Sly.
  • +
  • Firelocks, glass-less airlocks and walls will stop heat.
  • +
  • Fires are now more deadly, especially the flames.
  • +
  • Fires will now break windows.
  • +
+
+ +
+

10 October 2012

+

Giacom updated:

+
    +
  • Larva grow a little bit faster when on weeds or when breathing in plasma.
  • +
+
+ +
+

8 October 2012

+

Giacom updated:

+
    +
  • Thanks to Skasi. Atmospherics has been changed to be made simpler and spawn with the new atmos features, such as the heaters.
  • +
  • Radio headsets can only be heard by people wearing them on their ear slot. This will let us do more fun stuff with headsets, such as a traitor encryption key which can listen to all the channels, but not talk in them.
  • +
+ +

Kor updated:

+
    +
  • A pen no longer spawns in your pocket. Instead, each PDA will spawn with a pen already in it.
  • +
+
+ +
+

5 October 2012

+

Giacom updated:

+
    +
  • Aliens can now be harmed by fire. They now also take double fire damage, meaning flame based weaponry is very effective.
  • +
  • Buffed alien facehuggers and eggs. Facehuggers don't go idle anymore, and they attach to anyone who walks past them. Eggs do the same; fully grown eggs will open to potential hosts. If you are still in the range of them, the facehugger inside will leap out and hug you. Removed "activate facehuggers", since it's useless now. Emote "roar" if you want to roar now.
  • +
  • There can be only one living queen at a time, if the queen dies then a drone can take her place as a princess.
  • +
  • Buffed queen regeneration a bit, so it's not the same as her underlings. It's also more important because there can only be one queen at a time.
  • +
  • Aliens don't slip in space anymore.
  • +
  • Hulks don't paralyze aliens anymore, they instead slow them down to a slow crawl. It is very effective for punching aliens out of weeds, so it can't regenerate it's health.
  • +
  • New egg opening and opened egg icons by WJohnston.
  • +
+

Aranclanos updated:

+
    +
  • A buncha crud nobody cares about lol Added a light to the airlock wiring interface to show the status of the timing.
  • +
  • You can't fill sprays without being next to the dispenser.
  • +
  • Simple animals no longer freeze to death in places with normal temperature.
  • +
  • Mechs no longer freeze on the spot when they are using the Energy Relay on powerless areas.
  • +
  • Improvements to showers, they now clean gear on beltslot, back, ears and eyes. Showers only clean visible gear.
  • +
  • Replica pods works again! But you can't make potato people without a key or clone people who ghosted alive (Catatonic).
  • +
  • Engiborgs can deconstruct airlocks with their RCDs once again.
  • +
  • You can construct airlocks while standing on another airlock with RCDs.
  • +
+
+ +
+

3 October 2012

+

Agouri updated:

+ +
+ +
+

1 October 2012

+

Cheridan updated:

+
    +
  • Wizards have a new artifact added to their spellbooks.
  • +
+
+ + +
+

30 September 2012

+

Numbers updated:

+
    +
  • Readded Volume Pumps - now they work as intended and are constructable
  • +
  • Readded Passive Gates - now they work as intended and are constructable
  • +
  • Readded Heat Exchangers - now they work as intended and are constructable
  • +
  • Added Heater - to warm up gasses to 300C
  • +
  • Pipe dispensers can produce the readded pieces.
  • +
  • New graphics for all of the above - courtesy by Ausops.
  • +
+
+ +
+

30 September 2012

+

Giacom updated:

+
    +
  • Airlocks now use the Environmental power channel, since they are airlocks after-all. Meaning, when power is low the airlocks will still work until the environmental channel on the APC is turned off. This applies to all the door control buttons too. Pipe meters now use the environmental power channel. If you have any comments have this change, please let me know in the feedback section of the forums.
  • +
+
+ +
+

26 September 2012

+

Carnwennan updated:

+
    +
  • Added new hotkeys. Type hotkeys-help for details or see the drop-down help menu at the top of the game window.
  • +
+

Aranclanos updated:

+
    +
  • Mechs are once again spaceproof!
  • +
  • The YouTool machine is now all access
  • +
  • Cutting tower caps in hand no longer deletes the wood, and planks now auto stack
  • +
+
+ +
+

25 September 2012

+

Donkie updated:

+
    +
  • Reworked the Piano, now really optimized and new interface!
  • +
+
+ +
+

24 September 2012

+

Petethegoat updated:

+
    +
  • Hopefully fixed the stop midis button. It should now stop any midis that are currently playing.
  • +
+
+ +
+

23 September 2012

+

Petethegoat updated:

+
    +
  • Fixed an exploit which would allow the janitor to magically mop floors.
  • +
  • Added lipstick~ It's not available on station, as Nanotrasen has deemed it contraband.
  • +
  • If you encounter any issues with computers, notify an admin, or ask for assistance on #coderbus, on irc.rizon.net.
  • +
+

Donkie updated:

+
    +
  • Updated the Package Tagger with new interface!
  • +
  • You can now dispense, remove and retag sort junctions properly!
  • +
+
+ +
+

17 September 2012

+

Cheridan updated:

+
    +
  • Metroids have been replaced with Rorobeasts. Roros are strange latex-based lifeforms that hate light, fun, and gloves.
  • +
+
+ +
+

17 September 2012

+

Carn updated:

+
    +
  • F5 is now a hotkey for adminghosting. F8 toggles ghost-like invisibility for admins.
  • +
  • Catatonia makes you fall down. Admins appear braindead when admin-ghosting.
  • +
  • "Set-observe"/"Set-play" renamed and merged into "Aghost".
  • +
  • "Lay down/Get up" renamed to "Rest"
  • +
  • Closets can't be sold on the supply shuttle anymore
  • +
  • Fixed all dat light
  • +
+
+ +
+

13 September 2012

+

Carn updated:

+
    +
  • New Hotkeys (Trial period). Details can be found in the help menu or via the hotkeys-help verb. It's all client-side. It shouldn't intefere with regular controls (except ctrl+A, ctrl+S, ctrl+D and ctrl+W).
  • +
+
+ +
+

10 September 2012

+

Giacom updated:

+
    +
  • AIs can double click on mobs to instantly start tracking them.
  • +
+
+ +
+

Important note for server hosts!

+

Important note for server hosts!:

+
    +
  • The file /code/defines/hub.dm was moved into /code/hub.dm. To get your server back on the hub, open /code/hub.dm and set the hub variables again. Sorry for the inconvenience.
  • +
+
+
+

8 September 2012

+

Carn updated:

+
    +
  • Added an additional check to stop changelings sharing powers/becomming un-absorbable/etc by absorbing eachother and then rejuvinating from death.
  • +
  • Cloaked Aliens are now slightly easier to see, so they should avoid strongly lit areas when possible. They can still lay down to become even stealthier though. Let me know what you think, it's only a minor sprite change.
  • +
+
+ +
+

6 September 2012

+

Cheridan updated:

+
    +
  • -Changes flour from an item to a container-held reagent. All recipes have been updated to use 5 units of reagent flour for every item required previously. This has a few advantages: The 16(!) sacks of flour previously in the kitchen cabinet have been condensed to an equivalent 3 sacks. Beer is now brewable with universal enzyme, and converting lots of wheat into flour should be less tedious. Also, flour grenades, etc. Because of this, flour is now obtained from the all-in-one blender rather than the processor, and spaghetti noodles are made with 5 units of flour in the microwave.
  • +
+
+ +
+

6 September 2012

+

Giacom updated:

+
    +
  • Removed cameras from bots (NOT BORGS). They weren't working well with freelook and I felt that since they weren't used at all, they wouldn't be missed.
  • +
+
+ +
+

3 September 2012

+

Giacom updated:

+
    +
  • Cameras has changed quite a bit. They are no longer created from grenade canisters, instead you make them from an autolathe. The construction and deconstruction for them has also changed, so look it up or experiment it with yourself to see how to setup the cameras now. Cameras also get wires, like airlocks and APCs. There's two duds, a focus wire, a power wire, an alarm wire and a light wire. Protip: You can see which one is the alarm wire by pulsing it.
  • +
  • Added a red phone and placed it in the Cyborg Station. Sprite by Pewtershmitz! You'll also find an AI restorer there, replacing the computer frame.
  • +
  • Cameras aren't all X-ray anymore. The AI won't be able to see what room you are in if there's no normal camera inside that room or if there's no X-ray camera nearby..
  • +
  • Cameras get upgrades! Currently there's X-ray, EMP-Proof and Motion. You'll find the EMP-Proof and Motion cameras in the normal places (Singularity Pen & EVA), the new X-ray cameras can be found in the Dormitory and Bathrooms, plus some extra ones to invade your privacy. See if you can smash them all.
  • +
  • Alien Larva can bite simple animals (see: Ian, Runtime, Mice) to kill them and gain a small amount of growing points.
  • +
  • Space travel was tweaked to be more random when changing Z levels. This will stop people and items from being stuck in an infinite loop, as they will eventually hit something to make them stop.
  • +
+
+ +
+

31 August 2012

+

Agouri updated:

+
    +
  • Overhauled newscasters. No visual additions but the thing is much more robust and everything works as intended. Wanted issues are fixed. Admins, check out Access News Network under Fun.
  • +
+
+ +
+

30 August 2012

+

Giacom updated:

+
    +
  • You can now create an EMP Pulse. Like an explosion, it is the mixing of two reagents that trigger this to happen. I will tell you the first required reagent. Uranium. Have fun!
  • +
  • I have made most chemicals need 3-5 or more chemicals in order to react to a turf. For instance, you need at least 5 units of thermite splashed on a wall for it to burn down."
  • +
  • The EMP kit, that you can buy through the uplink, has two more grenades in them now. Making the box full of EMP grenades!
  • +
  • Changed the EMP grenade's range to be much bigger.
  • +
+
+ +
+

29 August 2012

+

Nodrak updated:

+
    +
  • Mice now work with the admin player panel. Admins can now turn players into mice with the 'Animalize' button in the player panel!
  • +
  • Space bear AI no longer runs when a player is controlling it. Admins can now turn players into space bears with the 'Animalize' button in the player panel!
  • +
  • The holodeck beach program once again has a beach.
  • +
  • The nuke op shuttle floor was pressure-washed a few days ago. We have since re-painted it with nanotrasen blood. Sorry for any confusion.
  • +
+
+ +
+

28 August 2012

+

Giacom updated:

+
    +
  • You can now toggle the bolt light of airlocks. An extra wire, that controls the airlock's bolt light, has been added.
  • +
  • Aliens can now tell who is and who isn't infected. They get a special facehugger icon that appears over mobs that have been impregnated.
  • +
  • Cameras have temporary X-Ray for the time being.
  • +
+
+ +
+

August 26, 2012

+

Nodrak updated:

+
    +
  • Admins now have an 'Animalize' button on a mob's player panel. This button allows admins to turn players into simple animals.
    There are a few exceptions. Mice, Parrots, Bears and Space Worms all have issues that, until fixed, prevent me from allowing players those transformations.
  • +
+

August 25, 2012

+

Carnwennan updated:

+
    +
  • New lighting. It should look and feel the same as the old lighting whilst being less taxing on the server. Space has a minimum brightness (IC starlight) and areas that do not use dynamic lighting default to a lighting level of 4, so they aren't dark, but they aren't superbright. Replacing turfs should preserve dynamic lighting. Singulo/bombs should cause a lot less lighting-related lag. There are some minor known issues, see the commit log for details.
  • +
  • Admins can now access most controller datums with the "Debug Controller" verb. Time to break all the things!
  • +
  • Supply shuttle now uses a controller datum. This means admins can see/edit supply orders etc.
  • +
  • Changeling fakedeath can be initiated after death again. Next time you want something reverted, just ask rather than being obnoxious.
  • +
+

Giacom updated:

+
    +
  • AIs can now look around like a ghost with the exception that they cannot see what cameras cannot see. Meaning if you're in maintenance, and there's no cameras near you, the AI will not know what you are doing. This also means there's no X-Ray vision cameras anymore.
  • +
  • AIs can add links to Telecommunication Machines. Added some cameras for areas that should have it but instead relied on cameras nearby for vision.
  • +
  • Choking has been changed. You have to stand still while lethally choking someone. It takes time to get into that lethal choke. When you are lethaling choking someone, they are still concious until the lack of oxygen knocks them out.
  • +
+

trubble_bass updated:

+
    +
  • Nerfed the Neurotoxin drink, it is now less effective than a stunbaton. But more effective than a Beepsky Smash.
  • +
  • Updated descriptions on various cocktails to be more accurate or more relevant to the drink itself.
  • +
+
+ +
+

August 24, 2012

+

Sieve updated:

+
    +
  • Floorbots now actually pull up tiles when emagged
  • +
  • All helper bots (excluding MULEs) have an access panel and maint panel, access being for behavior and maint for internal work
  • +
  • To open the maint panel, the access panel needs to be unlocked, then you use a screwdriver. There you can emag/repair it to your heart's content. (Emagging the access panel will also unlock it permanently)
  • +
  • Helper bots are now repaired by using a welder when their maint panel is open
  • +
+
+ +
+

August 23, 2012

+

Nodrak updated:

+
    +
  • In-hand sprites once again update correctly when equipping items.
  • +
+
+ + +
+

August 16, 2012

+

Errorage updated:

+
    +
  • Changes were made to how heating and cooling of humans works.
  • +
  • You must wear both a space suit and space helmet to be protected from space! Likewise you must wear a firesuit and a fire helmet to be protected from fire! Fire helmets are red and white hardhats, found in all fire closets.
  • +
  • Fire suits now only protect from heat and space suits only protect from cold, so make your choice count.
  • +
+
+ + +
+

August 14, 2012

+

Sieve updated:

+
    +
  • DNA modifiers can be used if there is no occupant, primarily to handle the buffer.
  • +
  • Ion Rifles are only effected by max severity EMPs, so AOE from its own shot won't effect it
  • +
  • Pepper Spray fits on Sec belts again
  • +
+
+ +
+

August 11, 2012

+

Sieve updated:

+
    +
  • Turrets now properly fire at simple_animals.
  • +
  • Borgs, AIs, and brains/MMIs can be sacrificed by cultists.
  • +
  • Grenades now automatically set throw on again.
  • +
+
+ +
+

August 6, 2012

+

Dingus updated:

+
    +
  • Library has been redesigned. It's a whole lot more classy now.
  • +
  • Significant changes to Medbay. CMO's office is more centralized, genetics has a new exit into cryogenics, and a new break room has been installed
  • +
+
+ +
+

August 4, 2012

+

Icarus updated:

+
    +
  • Changes to Med-Sci south and surrounding maintenance areas. Virology is more isolated and Science gets a new Misc. Research Lab.
  • +
  • Atmos techs get construction access now to do their little projects in.
  • +
  • Transformation Stings now work on living humans.
  • +
+
+ +
+

August 2, 2012

+

Errorage updated:

+
    +
  • Gas masks now protect you from reagent smoke clouds
  • +
  • Changed the 'black overlay' you get when paralyzed, blind or in critical condition to include a small circle around you.
  • +
  • Dramatically lowered the amount of damage you get per breath while in critical condition. Critical condition now lasts for about 5 minutes if nothing is causing you any additional harm. This in combination with the new black image overlay is an attempt at making doctors more willing to help.
  • +
+

Icarus updated:

+
    +
  • Borgs now have flashlights to allow them to see in lightless areas
  • +
  • Changes to Medbay: The sleeper and storage rooms have been swapped around. Hopefully this leads to more healing and less looting.
  • +
+
+ +
+

August 1, 2012

+

Sieve updated:

+
    +
  • Borgs can now have an encryption key installed into their internal radios. Simply ID, open the panel, and use the key to insert it (Screwdriver to remove)
  • +
  • Due to that as well, borgs have a 'Toggle Broadcast Mode' button for their radios, which changes the broadcast type between station-bounced (Non-reliant on TComms), and subspace (Required for department channels)
  • +
  • Also changed the binary chat for consistency, now for the prefix is ':b' for everyone, not just one for humans and one for borgs/AIs/pAIs
  • +
  • Based on feedback, Nuke Op pinpointers now automagically change between shuttle and disk mode when the nuke is armed or disarmed.
  • +
+
+ +
+

01-August-2012

+

Carn updated:

+
    +
  • Please update your BYOND clients! Ideally everybody should be running the latest version of byond (v496). People who fail to update to at least version 494 within a month's time may find themself unable to connect. Currently our code has no restrictions at all, which is rather bad. By getting the user-base to keep their clients up-to-date we can make use of newer BYOND features reliably.
  • +
+

Giacom updated:

+
    +
  • I've made some adjustments to the Fireball spell. I've changed it to shoot in the player's facing direction instead of you having to pick a name from a list. It will explode upon contact of a person, if it hits an obstacle or if it shoots for too long. To make up for the fireball not being able to go diagonal I've shortened the cooldown to 10 seconds. It still can hurt you badly and knock you down if you shoot it at a wall. Lastly, it now lights up so it'll show up in dark rooms easily.
  • +
+
+ +
+

31 July 2012

+

Giacom updated:

+
    +
  • Removed passive throwing. You need at least an aggressive hold of the mob before you can throw them.
  • +
  • New map changes by Ikarrus. AI Upload Foyer is now Secure Tech Access, and the outer door only requires Bridge access. Attached to it are two new rooms: The messaging server room and the communications relay. The comms relay room runs off its own SMES unit like the AI, so it won't be affected by powersinks
  • +
+
+ + +
+

29 July 2012

+

Giacom updated:

+
    +
  • All radios now only work in their Z level. This means that the CommSat has a few more additions to work with this change. There is now a new Telecomms Machine called the Relay which allows information to travel across Z levels. It it then linked to a new machine called the Hub, which will receive information from the Relays and send it to the buses. Because every Z level needs these relays, which are linked up with Receivers/Broadcasters, every Z level will get one. There is one in the station, in the RD's office, one in Telecomms as always, one in the Ruskie station which is turned off and hidden from the HUB's linked list. The last one is in Mining but the location for it has not been decided yet.
  • +
  • PDAs now need to be in a Z level with a functioning Relay/Comms Network in order to send messages. It will also send uncompressed (scrambled) messages like you would with the ordinary voice messages.
  • +
  • Added some of WJohnston's sprites. Added a new mining borg sprite, Added a new high tech security airlock, Added the new telecomm sprites for Relays. Hubs were given old Bus sprites.
  • +
+
+ +
+

29 July 2012

+

Errorage updated:

+
    +
  • You can now use crayons to color eggs
  • +
  • Mice have invaded the station!
  • +
+
+ +
+

26 July 2012

+

Giacom updated:

+
    +
  • Added a new mushroom for Hydroponics, the Reishi Mushroom! It is obtained like any other mushroom and it has relaxing properties.
  • +
+
+ +
+

July 25, 2012: The day of updates!

+

Nodrak updated:

+
    +
  • Attacking mobs with items will now give new messages. Instead of "Monkeyman was attacked in the head with a wrench by Nodrak." it will read "Monkeyman was bashed in the head with a wrench by Nodrak." Diffrent items have diffrent verbs and some have multiple verbs.
  • +
  • Cultists can now read what words a rune was made with by examining the rune. Due to an error in the code, this was not possible before.
  • +
  • Clowns no longer have practice lasers or staves of change blow up in their face due to clumsyness.
  • +
  • Engineering cyborgs can now actually repair a cut AI wire in APCs.
  • +
  • I've removed a ton of pointless checks and redundant loops from metroid's which have been causing lag due to how often they get called. If metroids are behaving strangly ping me in #coderbus
  • +
+

Sieve updated:

+
    +
  • Made a 'default' save slot (D), and whenever you connect it automatically selects the default slot to load from, but manually selecting a different slot will allow you to play on that one before it returns to default.
  • +
  • Added the ability to name your save slots with the '*'. Names can be up to 16 characters and contain letters, numbers, and basic symbols
  • +
  • The preview icon on the preference screen now takes into account any job you have set on high, and dresses up the icon accordingly. If assistant is set to 'yes', or AI/Cyborg are on high it will put the icon in a grey suit (So you can still customize).
  • +
  • Nuke Ops get a new pinpointer, changing modes with the verb will switch between pointing to the disk, and pointing to the shuttle. Also provides a notification when you leave the station z-level
  • +
  • Reworked how MMI Life() was done, now they will never lose consciousness, and many less things affect them now(Like deafening/blindness from explosions). However, they are vulnerable to EMPs, but all damage is temporary.
  • +
  • Clowns will no longer be killed trying to use holo eswords
  • +
  • Major tweaking to try and optimize many operations on the game's backend. Hopefully, this will reduce a large amount of lag by steamlining CPU-intensive operations, but at the same time there was so much changed that there is no real way for a small group to test everything. If anyone spots a bug involving being unable to 'find' mobs, characters, whatever, then put it on the issue tracker or at the very least let #coderbus know. We can't fix shit unless we know about it.
  • +
+

Icarus updated:

+
    +
  • Players not buckled in when the emergency shuttle/pod starts moving get will get knocked down.
  • +
  • Added a YouTool vending machine to primary tool storage.
  • +
+
+ +
+

24 July 2012

+

Errorage updated:

+
    +
  • Both the chef and bartender have access to the bar area so both can serve if the other is incompetent or does not exist. Bartender's shotgun and shaker were moved to his back room and the booze-o-mat is now ID restricted to the bartender.
  • +
  • Added powercells into vending machines in engineering
  • +
  • Gave two beartraps to the janitor for pest control purposes................
  • +
+
+ +
+

22 July 2012

+

Errorage updated:

+
    +
  • Mech toys can now be redeemed at the quartermaster's for a great reward! If you collect the full set of 11 toys you should put them in a crate and send them to centcom via the supply shuttle.
  • +
  • Supply shuttle arrival time reduced to 2 minutes
  • +
  • Hopefully fixed the toy haul problem which made it possible to get a million toys from arcade machines.
  • +
+

Giacom updated:

+
    +
  • You can now make newlines with your PDA notes.
  • +
  • You can now research and build the Light Replacer.
  • +
  • You can now store donuts in the donut box. The next donut you pull out will be the last one you put in.
  • +
  • APCs will auto-turn on if there is enough power in the grid, even if the powercell is below 30%. The APC needs to be charged for a long enough time before it starts turning equipment on, to avoid spazzing out. If you have any problems with it, such as equipment turning off and on repeatedly then please make an issue report with a screenshot of the APC.
  • +
+
+ +
+

18 July 2012

+

Giacom updated:

+
    +
  • Added the Light Replacer. This is a device that can auto replace lights that are broken, missing or burnt. Currently it is found in the Janitor's closet and Janitor Borgs can equip it. You can refill it with glass, or if you're a Cyborg, just recharge. It is emaggable and will replace lights with rigged lights. The light's explosion was nerfed to help balance it and it is very noticable when you are holding an emagged Light Replacer.
  • +
  • The Janitor's equipment locator, on their PDA, will now tell you the direction of the equipment.
  • +
+
+ +
+

17 July 2012

+

Icarus updated:

+
    +
  • Added department satchels
  • +
  • Added Captain's Backpack and Satchel
  • +
  • Added three new hairstyles by Sly: Gelled, Flat Top, and Pigtails. Hair list has also been sorted by grouping similar styles.
  • +
+

Giacom updated:

+
    +
  • Added a new wire for Cyborgs. See if you can figure out what it does.
  • +
  • You can now fill any container with a sink. You can change the amount to fill, from sinks, by setting your container's transfer amount.
  • +
+
+ +
+

14 July 2012

+

Carn updated:

+
    +
  • All living mobs can now ghost whenever they want. Essentially making the suicide verb obsolete. If you ghost whilst still alive however, you may not re-enter your body for the rest of the round.
  • +
  • Humans can no longer suicide whilst restrained (this is purely to prevent meta whilst I finish up the new FUN suicides)
  • +
  • Fixed dem evidence bags. Fixed metroids getting at it like rabbits. Fixed stuff like welding masks not hiding your face. Bunch of other things
  • +
+

Willox and Messycakes updated:

+
    +
  • pAI Emoticons! Allows each pAI to set their screen to display an array of faces! Click on 'Screen Display' in the pAI OS for a list.
  • +
+
+ + +
+

Saturday July 14th 2012

+

Giacom updated:

+
    +
  • Added Russian Revolvers. This is a special Revolver that can only hold a single bullet randomly in it's chamber. This will allow you to play Russian Roulette with your fellow crew members! You can use it like a normal gun but you will need to cycle through the chamber slots until you hit the bullet. Only admin spawnable.
  • +
+
+ +
+

Friday July 13th 2012

+

Carn updated:

+
    +
  • Added FLOORLENGTH HAIR. YEESSSSSSSS!!!! :3 If you like it say thanks to Ausops for fixing it up. Credits to Powerfulstation for the original sprite.
  • +
+

Giacom updated:

+
    +
  • Save Slots! You can now have separate save slots for different character setups, with a customizable maximum of 3 slots per account. If you are wondering, you will not lose your old saved setup.
  • +
  • The character setup screen was updated to look nicer and to fit on the screen.
  • +
+

Icarus updated:

+
    +
  • Added new Dwarf and Very Long hairstyles. Dwarf hair and beard by SuperCrayon.
  • +
+
+ +
+

Thursday July 12th 2012

+

Giacom updated:

+
    +
  • pAI gets a better PDA that can actually receive messages from people. They can also instantly reply like everybody else now and they can toggle their receiver/signaller/ringer.
  • +
  • You can show the AI the notes on your PDA by holding it up to a camera. When you show up a paper/pda to the camera the AI can now click on your name to go to you, if you're near a camera. People who are Unknown will not have a link; which would've allowed the AI to track them.
  • +
  • Made the" common server" and the "preset right receiver" listen for frequencies 144.1 to 148.9. This will allow people to use different frequencies to talk to eachother without bothering the common channel. It will also allow Revs and Cultists to work with each other; everything is still logged though so it still has risks.
  • +
  • Increased the maximum frequency limit for handheld radios and intercoms. It will give you the option to just use station bounced radios on a higher frequency so that anyone with a headset can't simply tune in.
  • +
  • Created an All-In-One Grinder that is suppose to replace the blender, juicer and reagent grinder all together. Meaning any department that has a juicer, blender and grinder will instead get this. It will help people be more independent from Chemistry by recycling foods and plants.
  • +
+
+ +
+

Wednesday July 11th 2012

+

Nodrak, Cheridan and Icarus updated:

+
    +
  • Added a couple of Emergency Shield Projectors to Engineering secure storage. +

    Note: Credit goes to Barhardar for the original code and functionality. +

    These devices can be used to quickly create an air-tight seal across a hull breach until repairs can been made. +

    Wrench them in place and activate them near a hull breach. The shield should extend to all space tiles in range. +

    They can be (un)locked by engineering IDs and can also be emagged and otherwise malfunction. As they can not be constructed, you can repair damage and malfunctions by opening the panel with a screwdriver and replacing the wires with a cable coil

  • +
+

Giacom updated:

+
    +
  • Chemistry update: Pills can now be ground up in reagent grinders. You can now put custom amounts of reagent into things using chemmasters. Can now load pill-bottles into chemmasters for mass pill-production.
  • +
+

Carn updated:

+
    +
  • Clicks on inventory slots with items in now act like a click on the thing in that slot. So clicking smaller things (like pens) is easier and you can remove clothing that borks/goes invisible. Please continure to report those kinds of bug though please. Thanks x
  • +
  • Can no longer interact with your inventory with a mech.
  • +
+

Errorage updated:

+
    +
  • You can now only adminhelp once every 2 minutes so please provide all necesary information in one adminhelp instead of 5! Also reply to admins in PM-s and not additional adminhelps.
  • +
+
+ +
+

Saturday July 7th, 2012

+

Icarus updated:

+
    +
  • A basketball simulation is now available at the holodeck. Credit to Sly and Ausops for the sprites.
  • +
+
+ +
+

Friday July 6th, 2012

+

Giacom updated:

+
    +
  • Bottles can now be broken over people's heads! To do this, you must have the harm intent on and you must be targeting the person's head. This change affects alcoholic bottles only. It does not change pill bottles or chemistry bottles. Helmets help protect you from damage and the regents of the bottles will splash over the victim.
  • +
  • AI's now have access to a PDA. Note: It is not PDA-bomb-able
  • +
  • Health analyzers and medical PDAs now give a time of death when used on corpses.
  • +
+
+ +
+

Thursday July 5th, 2012

+

Carn updated:

+
    +
  • Alien larva now chestburst even after their host has died.
  • +
  • Aliens can now slap facehuggers onto faces so they can infect mobs which lay down (or those stuck to nests).
  • +
  • Aliens can now slash security cameras to deactivate them.
  • +
+
+ +
+

Wednesday July 4th, 2012

+

39kk9t & Carn updated:

+
    +
  • Added alien nests. They're basically beds made of thick sticky resin which aliums can 'stick' (buckle) people to for sexytimes
  • +
  • Weed nodes are no longer dense.
  • +
  • Queens can secrete resin for walls/nests/membranes
  • +
  • Various bugfixes
  • +
+
+ +
+

Saturday June 30th, 2012

+

Icarus updated:

+
    +
  • Added Petethegoat's basic mirrors to the map. They allow you to change hairstyles.
  • +
  • Remapped Bar, Theatre, and Hydroponics. Bar and Kitchen are now more integrated with each other.
  • +
+
+ +
+

Thursday, June 28th

+

Nodrak updated:

+
    +
  • I'm currently working on cleaning up and moving around a large portion of the mob code. These changes do not directly affect players; HOWEVER, bugs, oversights or simple mistakes may cause problems for players. While I have tested as much as I can, there may be some lingering bugs I have missed.

    This part of the mob code cleanup mainly focuses on damage variables and procs. So if you suspect something related to taking, dealing or examining damage is not working as intended please fill out an issue report here and be as detailed as possible. This includes what you were doing, steps to reproduce the problem, who you were doing it to, what you were using ect... Thank you.

  • +
+

Carn updated:

+
    +
  • Alien hunters will now cloak when using the 'stalk' movement intent. Whilst cloaked they will use up their plasma reserves. They can however cloak as long as they like. Using the Lay-down verb will allow them to remain cloaked without depleting their plasma reserves, hence allowing them to lay ambushes for unsuspecting prey. Should a hunter attack anybody, or get knocked down in any way, they will become visible. Hopefully this allows for more strategic/stealthy gameplay from aliens. On the other hand, I may have totally screwed the balance so feedback/other-ideas are welcome.
  • +
  • Removed the invisibility verb from the alien hunter caste.
  • +
+
+ +
+

Wednesday, June 27th

+

Errorage updated:

+
    +
  • Fixed the bug which prevented you from editing book's titles and authors with a pen. Also fixed the bug which prevented you from ordering a book by it's SS13ID.
  • +
  • Added the F12 hotkey which hides most of the UI. Currently only works for humans.
  • +
+

Donkie updated:

+
    +
  • Pizza boxes! Fully stackable, tagable (with pen), and everythingelse-able. Fantastic icons by supercrayon!
    Created with a sheet of cardboard.
  • +
+
+ +
+

Tuesday, June 26th

+

Errorage updated:

+
    +
  • Changeling parasting now only weakens for 10 game ticks. It no longer silences your target.
  • +
+
+ +
+

Saturday, June 23rd

+

Donkie updated:

+
    +
  • Reworked job randomizing system. Should be more fair.
  • +
  • List of players are now randomized before given antag, this means that declaring as fast as possible doesn't mean shit anymore!
  • +
+

Carn updated:

+
    +
  • Putting a blindfold on a human with lightly damaged eyes will speed up the healing process. Similar with earmuffs.
  • +
  • More overlay bug fixes. Most of it to do with little robots and construction stuff. Bugs go here if you have 2 minutes http://nanotrasen.com/phpBB3/viewtopic.php?f=15&t=9077
  • +
  • Weakening is instant! That means if you stunbaton somebody they're gonna fall-down immediately.
  • +
+

Icarus updated:

+
    +
  • Medical storage now requires Surgery access (Medical Doctors only)
  • +
+
+ +
+

Wednesday, June 20th

+

Nodrak updated:

+
    +
  • AIs, Borgs are no longer able to be cultists or revolutionaries as their objectives completely contradict their laws. They can still be subverted of course.
  • +
  • pAI's no longer keep cult or rev icons.
  • +

Cheridan updated:

+
    +
  • -Both Ambrosia forms have had their reagent contents modified to prevent going over the 50-unit cap at high potencies. Ambrosia Deus now contains space drugs instead of poison.
  • +
  • -Drinking milk removes capsaicin from your body. REALISM!
  • +
  • -Frost oil hurts less upon consumption.
  • +
  • -Liquid plasma can be converted into solid plasma sheets, by mixing 20 plasma, 5 iron, and 5 frost oil.
  • +
  • -Added effects for holy water injection on hydroponics plants.
  • +
+
+ +
+

Monday, June 18th

+

Giacom updated:

+
    +
  • Fix for special characters on paper and from announcements
  • +
+

Sieve updated:

+
    +
  • Various small bugfixes, check the commit log for full details
  • +
  • Fixed falsewalls not working
  • +
  • Made Lasertag ED-209's and turrets much more useful, including making their emag function more fitting
  • +
  • Added Mesons to the EngiVend to make up for how many lockers were removed
  • +
  • New Item: Sheet Snatcher. Right now only borgs have them, but they can hold up to 500 sheets of minerals (Of any combination), and auto-stacks them to boot. Used just like the mining satchels, meaning minerborgs can actually deliver metal
  • +
  • Mech drills can mine sand, and the diamond gets a much larger volume
  • +
  • If a borg has the satchel in its modules (Doesn't have to be the active one), it will auto-magically pick up any ores it walks over.
  • +
  • Bumping an asteroid wall with a pickaxe/drill in your hand makes you auto-magically start drilling the wall, making mining much less tedious (humans and borgs)(Also, gustavg's idea)
  • +
+

Icarus updated:

+
    +
  • New afro hairstyles. Big Afro by Intigracy.
  • +
+
+ +
+

Friday, June 15th

+

Carnwennan updated:

+
    +
  • First update for update_icons stuffs:
    Fixed husking and fatties
    Fixed floor tiles still appearing in hand when laying them
    Fixed runtimes with fatties.
  • +
  • Fixes for pre-existing bugs:
    Fixed being unable to put belts & backpacks on other people
    nodamage (godmode) now prevents all organ damage. It does not stop healing however.
    Nerd stuff...
  • + +
+

Errorage updated:

+
    +
  • Greatly reduced the amount of damage high pressure does.
  • +
  • Fire suits, firefighting helmets (red harhats) and the chief engineer's white hardhat now protect against high pressure.
  • +
+

Icarus updated:

+
    +
  • Ported over ponytail sprites from Baystation
  • +
+
+ +
+

Thursday, June 14th

+

Carn updated:

+
    +
  • FEAR NOT! You can now store a pen in your pda. (aka Best commit all commits)
  • +
+
+ +
+

Wednesday, June 13th

+

Carn updated:

+
    +
  • Massive Mob-Icon Overhaul:
    A large amount of the mob code has been replaced. The systems replaced were causing immense performance issues so the following are very necessary optimisations.
    However, there is a downside: SS13 code is the equivilant of monkeys on typewriters. Despite weeks of constant coding/testing there -will- be things I've missed. The kinds of bugs I'm expecting are overlays not updating and/or in rare cases things not appearing in your hud. Most of these issues can be worked around simply by dropping the item and picking it back up. If all else fails ask an admin to regenerate your icons through view-vars.
    Please report any bugs to me on #coderbus IRC or make an issue on the tracker as a matter of urgency. I will fix them ASAP.
    Also a massive thankyou to Nodrak, Erro, Pete and Willox. :)
  • +
  • Massive rewrite of the overlays system (particularly for humans). Stuff is cached and only updates when necessary. In effect this means faster updates, less overheads/lag, and less reliance on the game-ticker.
  • +
  • Numerous bugfixes and tweaks for damage-procs and damage-overlays for humans. They should now be almost seamless, use very little overhead and update instantly.
  • +
  • TK grab can now be cancelled using the throw hotkey. (so now it toggles on/off like it used to).
  • +
  • Added verbs to the view-var drop-down list: "Regenerate Icons" will fix a mob's hud/overlays. "Set Mutantrace" will change a mob's mutantrace.
  • +
  • Damage icons were split up. They kinda look a bit crap so spriters feel free to replace them. Templates are provided in dam_human.dmi
  • +
  • More to come...
+

Cheridan updated:

+
    +
  • -Added Lezowski's overalls to hydroponic supply closets. 50% chance per closet for them to replace the apron. -Removed some covers tags from things that made no sense to have them.
  • +
+
+ +
+

Monday, June 11th

+

Donkie updated:

+
    +
  • Fixed being able to lock yourself in or out of a locker using the verb.
  • +
+

Xerux updated:

+
    +
  • Added lightfixture creating.
  • +
+

Errorage updated:

+
    +
  • You can now use the resist verb or UI button when welded or locked in a closet. Takes 2 minutes to get out tho (Same as getting out of handcuffs or unbuckling yourself)
  • +
  • Making single-pane windows will now make the window in the direction you're facing. If a window already exists in that direction it will make it 90 degrees to your left and so on.
  • +
+
+ +
+

Sunday, June 10th

+

Agouri updated:

+
    +
  • Cyborgs and AIs can now use the newscaster. It was a mistake on my part, forgetting to finish that part of them.
  • +
+
+ +
+

Saturday, June 9th

+

Errorage updated:

+
    +
  • You can now make restraints from cable. It takes 15 lengths of cable to make a pair of restraints, they are applied the same way as handcuffs and have the same effects. It however only takes 30s to remove them by using the resist verb or button. You can also remove them from someone by using wirecutters on the handcuffed person.
  • +
  • Added four new cable colors: pink, orange, cyan and white. Engineer belts spawn with yellow, red or orange cables while toolboxes and tool closets spawn with all 8 colors.
  • +
+
+ +
+

Thursday, June 7st

+

Icarus updated:

+
    +
  • Added a second ZIS suit to engineering.
  • +
  • Remapped CE office and surrounding areas.
  • +
+
+ +
+

Wednesday, June 6th

+

Sieve updated:

+
    +
  • Radiation now works properly, watch out for that Singularity!
  • +
  • Disposals are no longer the loudest machines in existence.
  • +
  • Building portable turrets with lasertag guns now makes them fire lasertag bolts based on team, and they will automatically target and prioritize people wearing opposing team gear.
  • +
  • The same can be done for ED-209s, simply using a lasertag vest and gun (same color) where you would use a security vest and taser in construction.
  • +
  • Added mineral walls and powered mineral door construction. More information can be found in the commit thread, but basically they are built the same way others are, apply mineral to girder for a mineral wall, mineral to airlock assembly for a powered mineral door.
  • +
  • Commit Thread
  • +
  • Throw hotkey (end) now works with TK.
  • +
  • Swap hands hotkey (page up) now cycles through borg modules.
  • +
+

Nodrak updated:

+
    +
  • Cargo's 'shuttle: station' and 'shuttle: dock' has been changed to 'shuttle: station' and 'shuttle: away' to help avoid confusion.
  • +
+

Icarus updated:

+
    +
  • Maintenance shafts changed around. Renamed, less windows, more turns, and expanded in a few areas.
  • +
+

Neek updated:

+
    +
  • You can now add chemicals into cigarettes by injecting them directly or dipping individual cigarettes into a beaker. You can inject into cigarette packs directly to affect multiple cigarettes at once.
  • +
+

Willox updated:

+
    +
  • You can now click individual blocks/subblocks in the genetics console instead of having to scroll through the blocks with a forward/back button!
  • +
+
+ +
+

Sunday, June 3rd

+

Donkie updated:

+
    +
  • You can now Drag-Drop disposal pipes and machinery into the dispenser, in order to remove them.
  • +
  • You must now use wrench before welding a pipe to the ground
  • +
  • You can no longer remove a trunk untill the machinery ontop is unwelded and unwrenched
  • +
  • You are now forced to eject the disposal bin before unwelding it.
  • +
+
+ +
+

Friday, June 1st

+

SkyMarshal updated:

+
    +
  • Readded fingerprints and detective work, after lots of debugging and optimization.
  • +
  • Any PDA with access to the Security Records can now, by the normal forensic scanner function, store data the same way as the detective's scanner. Scanning the PDA in the detective's computer will copy all scanned data into the database.
  • +
  • If something goes wrong, please contact SkyMarshal on the #bs12 channel on irc.sorcery.net
  • +
+
+ +
+

Friday, June 1st

+

Nodrak updated:

+
    +
  • Windoor's are now constructable! Steps are found here.
  • +
+
+ +
+

Tuesday, May 29th

+

Nodrak updated:

+
    +
  • Glass Doors are now breakable.
  • +
  • Added more treasures to the secret mining room.
  • +
  • Changed mineral lockers from secret mining rooms: Instead of giving you two stacks of everything, you get stacks of ore based on rarity
  • +
+

Icarus updated:

+
    +
  • Moved Engineering and Bridge deliveries.
  • +
+
+ +
+

This 28th day of May, in the year of our Lord, Two Thousand Twelve

+

Cheridan updated:

+
    +
  • -Adjusted balaclavas and added luchador masks. Wearing luchador masks give you latin charisma. They replace the boxing gloves in the fitness room. Boxing gloves are still available in the holodeck. -Fake moustache tweaked and given new sprites.
  • +
+
+ +
+

Monday, May 28th

+

Donkie updated:

+
    +
  • You can now dispense Disposal Bins, Outlets and Chutes from the disposal dispenser. These are movable and you can attach them above open trunks with a wrench, then weld them to attach them completely. You can remove Bins by turning off their pump, then screwdriver, then weld, then wrench. Same with outlet and chute except for the pump part.
  • +
+
+ +
+

Saturday, May 26th

+

Icarus updated:

+
    +
  • Ported over Flashkirby99's RIG suit sprites from Bay12
  • +
  • Department PDA Carts moved out of lockers and into head offices.
  • +
+
+ +
+

Wednesday, May 23rd

+

Cheridan updated:

+
    +
  • -Reverted default UI sprites to Erro's old-style UI. Config options for UI color styles coming soon. -Driest Martinis will no longer be invisible. -Braincakes are now sliceable.
  • +
  • -Medical borg overhaul. Instead of a dozen random pills and syringes, they get a hypospray that can switch between auto-replenishing tricordrazine, inprovaline, and spaceacillin.
  • +
+

Errorage updated:

+
    +
  • Some of the more pressing issues with the new user interface were addressed. These include the health indicator being too far up, the open inventory taking a lot of space, hotkey buttons not being removable and suit storage not being accessible enough.
  • +
  • A toggle-hotkey-buttons verb was added to the OOC tab, which hides the pull, drop and throw buttons for people who prefer to use hotkeys and never use the buttons.
  • +
  • Added a character setup option which allows you to pick between the Midnight, Orange and Old iconsets for the user interface.
  • +
+
+ +
+

Tuesday, May 22nd

+

Icarus updated:

+
    +
  • RIG helmets can now be used as flashlights, just like hardhats. Credit to Sly for the sprites.
  • +
  • HoP's office has been remapped and made into his private office. Conference Room can now be accessed from the main hall.
  • +
+
+ +
+

Sunday, May 20th

+

Errorage updated:

+
    +
  • The new user interface is here. If anything is broken or something should be done differently please post feedback on the forum. Spriters are encouraged to make new sprites for the UI.
  • +
  • When you receive a PDA message, the content is displayed to you if the PDA is located somewhere on your person (so not in your backpack). You will also get a reply button there. This will hopefully make PDA communication easier.
  • +
  • New hotkeys! delete is the now the 'stop dragging' hotkey, insert is the 'cycle intents' hotkey.
  • +
+
+ +
+

Saturday, May 19th

+

Doohl updated:

+
    +
  • You can now swap hands by clicking with your middle mouse button (you have to click on a visible object though, that's the catch).
  • +
  • Tweaked the DNA modifier consoles a little bit so that it's much easier to see individual blocks instead of one jumbled mess of hexadecimal.
  • +
  • You can now properly emag AI turret controls and commsat turret controls.
  • +
+

Invisty updated:

+
    +
  • Brand new ending animations!
  • +
+
+ +
+

Friday, May 18th

+

Errorage updated:

+
    +
  • Removed hat storage, which was useless.
  • +
  • Implanting someone now takes 5 seconds, both people need to remain still. Implanting yourself remains instant.
  • +
  • Wallets once again spawn in the cabinets in the dormitory
  • +
  • Wallets now fit in pockets
  • +
+
+ +
+

Thursday, May 17th

+

Icarus updated:

+
    +
  • Individual dorms now have a button inside that bolts/unbolts the door
  • +
  • New sprites for Cargo, HoP, and Captain's lockers
  • +
  • More department-specific door sprites. Most noticable changes in medsci and supply departments.
  • +
+
+ +
+

Tuesday, May 15th

+

Icarus updated:

+
    +
  • Added WJohnston's scrubs to Medical Doctor lockers. Comes in blue, green, and purple.
  • +
  • Added two new syndicate bundles
  • +
  • Reduced cost of thermals to 3 telecrystals (formerly 4)
  • +
  • Singularity Beacons are now spawned from a smaller, portable device.
  • +
  • CMO and QM jumpsuits made more unique.
  • +
+
+ +
+

Monday, May 14th

+

Icarus updated:

+
    +
  • Reinforced table parts are now made by using four metal rods on regular table parts. No plasteel involved.
  • +
  • Beakers, small and large can now be made/recycled in autolathes.
  • +
+

Nodrak updated:

+
    +
  • Added a 'random item' button to traitor uplinks. You can potentially get ANY item that shows up on the traitor item list, provided you have enough crystals for it.
  • +
+
+ +
+

Friday, May 11th

+

Icarus updated:

+
    +
  • New design for security. This should be the last time it sees major changes for a while.
  • +
  • Added a new construction area. What could it be for?
  • +
+

Petethegoat updated:

+
    +
  • Readded the RD's genetics access.
  • +
  • RD is still without chemistry access, but I'm going to review this decision in a week and see if R&D is useless due to lack of acid.
  • +
  • Added Flashkirby99's SMES sprites!
  • +
+

Invisty updated:

+
    +
  • Sexy new warpspace (or whatever) tiles.
  • +
+

Important changes below!

+
+ +
+

Thursday, May 10th

+

Sieve updated:

+
    +
  • Reverted dismemberment, the recent gun changes, and Tarajans. Before you shit up the forums, read this:
  • +
  • Dismemberment was ported from Bay12, but only halfway, and there were several problems with it. I know many people really liked it, but as it stood it did not fit the playstyle here at all. This had to be removed, there is work on a more fitting system, but this had to be taken out first regardless, and the longer people beat around the bush the worse the situation got.
  • +
  • The gun change was made for no real reason and was pretty problematic, so reverting that should mean there are a lot less 'accidental suicides.'
  • +
  • Tarjans were reverted by request as well, and since keeping them working after removing dismemberment would be a stupid amount of work.
  • +
+
+ +
+

Sunday, May 6th

+

Cheridan updated:

+
    +
  • -New booze sprites for the drinks that were removed! Re-enabled the recipes for the removed drinks. Get cracking, bartenders. -You now need 10 sheets of metal instead of 2 to make a gas canister, people can't FILL ENTIRE ROOMS WITH THEM.
  • +
  • -Emergency Toolboxes now contain smaller, lighter fire extinguishers that actually fit inside them! +
+
+ +
+

Saturday, May 5th

+

Petethegoat updated:

+
    +
  • RD get the fuck out of chemistry and genetics
  • +
  • CHEMISTS, DON'T BE DICKS TO RESEARCH, GIVE THEM ACID YOU TIGHT FUCKS
  • +
+

Icarus updated:

+
    +
  • Updates to Sec, including a stationary scrubber for the prison area.
  • +
  • Swapped around cryogenics and the patient rooms in medbay.
  • +
+
+ +
+

Friday, May 4th

+

Cheridan updated:

+
    +
  • -Added fat jumpsuit sprites for orange, pink, yellow, owl, security, and warden jumpsuits.
  • +
  • -Somatoray is hopefully more useful and less buggy when used on trays. -Botanists now have morgue access, because of their ability to clone via replica pods. Try not to get this removed like all your other access, okay hippies?
  • +
+
+ +
+

Thursday, May 3rd

+

Ikarrus updated:

+
    +
  • Updated genetics, medbay and security.
  • +
+

Petethegoat updated:

+ +
+ +
+

Tuesday, May 1st

+

PolymorphBlue updated:

+
    +
  • Adds BS12 dismemberment!
  • +
  • Adds greater changeling for 30 points
  • +
+
+ + +
+

Monday, April 20th

+

Erro updated:

+
    +
  • Added a verb to the PDA which you can use to remove an ID in it. If your active hand is empy, it puts it there otherwise it puts it on the floor under you.
  • +
+
+ +
+

Wednesday, April 27th

+

Cheridan updated:

+
    +
  • -New sprites for lemons, oranges, and walking mushroom critters. -Added Invisty's new blob sprites.
  • +
  • -Added a new chemical: lipozine, a weight loss drug. Made with sodium chloride, ethanol, and radium.
  • +
+
+ +
+

Wednesday, April 25th

+

Ikarrus & Flazeo updated:

+
    +
  • New layout for Security, including a prison area instead of permacells.
  • +
  • New layout for the library, bar, and botany.
  • +
  • Medbay and R&D now have three-tile halls.
  • +
+

Scroll down for more commits! There's a bunch of new shit.

+
+ +
+

Tuesday, April 24th

+

PolymorphBlue updated:

+
    +
  • Fakedeath changelings can no longer have their brains cut out.
  • +
  • Rev checkwin changed to fire every five ticks (from twenty) and actually use the right objective type so revs being off station counts as success.
  • +
+

Sieve updated:

+
    +
  • Powercells now have unique icons for cell types
  • +
  • Implemented mech construction sprite by WJohnston for the Ripley, Firefighter, Gygax, and Durand
  • +
  • Durand construction is reversible
  • +
  • Power Cells can now be made in Mechfabs, provided the proper research level has been achieved
  • +
  • Added a new item, the Synthetic Flash. Works just like a normal flash, except they can only withstand one use, but can be produced in the Mechfab(To replace the need for normal flashes)
  • +
  • Added a new type of gloves, ones that are cheap copies of the coveted Insulated Gloves, but be warned, quality control wasn't too thorough
  • +
  • Added a new Cyborg Upgrade, a jetpack for use by Miner Cyborgs. Can be refilled on any air canister
  • +
  • Miner Cyborgs now have a Diamond Drill equivalent along with an upgraded Ore Satchel
  • +
  • Mechfabs no longer brick if there are parts in the quene on sync
  • +
  • MMIs can be built in the Mechfabs again
  • +
  • Crabs are no longer immortal, and are now especially vulnerable to wirecutters
  • +
  • Bibles printed in the library now retain the religion's deity
  • +
  • Added Construction Sprites for the Ripley, Firefighter, Gygax, and Durand by WJohnston
  • +
  • Added Particle Accelerator sprites by Invisity
  • +
  • Added Power Cell, Synthetic Flash, Robot Upgrades, and made some modifications to the PA sprites
  • +
+

Petethegoat updated:

+
    +
  • Added Invisty's field generator sprites.
  • +
+
+ +
+

April 1-22, 2012

+

Cheridan updated:

+
    +
  • CATCHING UP ON MY CHANGELOG. Some of this has been in for a while: -Added carved pumpkins and corncob pipes. -Added mutations for ambrosia and lemon trees. -Added more wood items for tower cap wood construction. -Added soil to plant seeds in. Make it by crushing up sandstone. Soil does not have indicators like trays do! Watch your plants carefully!
  • +
  • -The biogenerator is now more robust. It can dispense fertilizer in batches, and make simple leather items. -RnD can create a new tool for botanists: The floral somatoray. Has two modes. Use it on your plants to induce mutations or boost yield.
  • +
  • -Added plump helmet biscuits, mushroom soup, pumpkin pie and slices, chawanmushi, and beet soup recipes for the chef to make.
  • +
  • -Added transparency to biohelmets. -Normalized grass harvests. -Changed the name of "Generic Weeds". -Blenders can now be filled directly from plant bags. -Added low chance for a species mutation whenever a plant's stats mutate. -You now get more descriptive messages when applying mutagen to plant trays. -Removed sugarcane seeds from the vending machine. Added the sugarcane seeds to the seeds crate.
  • +
+
+ +
+

Sunday, April 22nd

+

Petethegoat updated:

+
    +
  • New gasmask sprites. Removed emergency gasmasks, so there's only one type now.
  • +
  • New shotgun sprites by Khodoque!
  • +
  • The barman's double-barrel actually works like a double-barrel instead of a pump-action! Rejoice!
  • +
  • Sneaky barmen may be able to illegally modify their shotgun, if they so choose.
  • +
  • Trimmed the changelog, vastly.
  • +
+
+ +
+

Saturday, April 21st

+

Errorage updated:

+
    +
  • Maintenance door outside of tech storage now requires maintenance OR tech storage access instead of maintenance AND robotics accesses.
  • +
+
+ +
+

Thursday, April 19th

+

Carn updated:

+
    +
  • Rewrote the cinematic system to try and simplify and optimise it. Please report any bugs asap to me or coderbus, thanks.
  • +
+
+ +
+

Tuesday, April 17th

+

Kor updated:

+
    +
  • Engineering jobs now have their PDA spawn in their pocket, and their toolbelt on their belt
  • +
  • The nuke going off on station will now gib everyone on the Z level.
  • +
  • Two more core displays are available for the AI
  • +
  • The Artificer can now build cult floors and walls
  • +
+
+

Friday, April 13th

+

Sieve updated:

+
    +
  • Updated the robotics layout.
  • +
+

Petethegoat updated:

+
    +
  • Nerfed the librarian by removing the r-walls from his cubbyhole thing, fuck WGW readers hiding out in there.
  • +
+
+
+

Thursday, April 12th

+

Agouri updated:

+
    +
  • Fixed the ability to move while lying down/resting.
  • +
  • Sleep has been fixed and works as intended again. Anaesthetic and toxins can now properly put people to sleep, permanently if you keep the administration stable. Sleeplocs are now viable again. The sleep button and *faint emote work again.
  • +
+
+
+

Wednesday, April 11th

+

PolymorphBlue updated:

+
    +
  • Droppers are now used at the eyes, and thus, access to the eyes is required to have an effect.
  • +
+
+ + +
+

April 10, the year of our lord 2012

+

Agouri updated:

+
    +
  • CONTRABAND-CON UPDATE: Added posters. I'm sorry to add it seperately with the rest of contraband, but there was a lack of sprites for everything else. Hopefully, people will gain interest and get me some damn sprites this way :3 + As I said, this is an ongoing project of mine. So starting of, we've got...
  • +
  • POSTERS! Posters come in rolled packages that can adhere to any wall or r_wall, if it's uncluttered enough. +

    How they get on-board: The quartermaster can now set the receiver frequency of his supplycomp circuit board. A bit simplistic as of now, will work on it later. Building a supplycomp with a properly set up circuitboard will give access to the Contraband crate. +

    How they're used: Unfold the rolled poster on any wall or r_wall to create the poster. There are currently 17 designs, with the possibility of me adding more. +

    How to get rid of them: You can rip them using your hand... To cleanly extract them and not ruin them for future use, however, you can use a pair of wirecutters. +

    How they're classified: They're contraband, so it's perfectly okay for security officers to confiscate them. Punishment for contraband-providers (or end-users, if you want to go full nazi) is up to the situational commanding officers. + +
+

Nodrak updated:

+
    +
  • Merged 'Game' and 'Lobby' tabs during pre-game into one tab
  • +
  • Added the little red x to the late-join job list
  • +
  • Late-joiners are warned if the shuttle is past the point of recall, and if the shuttle has already left the station
  • +
  • Late-joiners now see how long the round has been going on.
  • +
  • Mining shuttle computer no longer spits out both 'Shuttle has been sent' and 'The shuttle is already moving' every time.
  • +
+ +
+ +
+

Monday, April 9th

+

Petethegoat updated:

+
    +
  • TORE OUT DETECTIVE WORK! THIS IS A TEMPORARY PATCH TO SEE IF THIS FIXES THE CRASHING.
  • +
  • DETECTIVE SCANNERS AND EVIDENCE BAGS (AND FINGERPRINTS) ARE GONE.
  • +
+
+ +
+

Sunday, April 8th

+

PolymorphBlue updated:

+
    +
  • Secret little rooms now spawn on the mining asteroid, containing various artifacts.
  • +
  • Added the beginnings of a borg upgrade system. Currently, can be used to reset a borg's module.
  • +
+
+ +
+

2 April 2012

+

PolymorphBlue updated:

+
    +
  • ERP is gone. Hope you enjoyed it while it lasted!
  • +
+
+ +
+

April Fools Day! Get hype!

+

Doohl updated:

+
    +
  • Security officers can modify people's criminal status by simply examining them with a security hud on and clicking a link that will show up as part of the character's description.
  • +
  • Less jobs have maintenance access. The only jobs that will have it now are engineers, atmos techs, cargo techs, heads, and the detective.
  • +
  • Changed Runtime's sprite to look more catlike.
  • +
  • View Variables can now better list associative lists.
  • +
  • Miscellaneous bugfixes for the NT Script IDE.
  • +
+

PolymorphBlue updated:

+
    +
  • Minor bugfixes to borg deathsquad, adds borg deathsquad to potential tensioner (set so high it's never going to happen)
  • +
  • Adds consiterable support for ERP! (If enabled.)
  • +
  • Increases cost for changeling unstun to 45
  • +
+
+ +
+

30 March 2012

+

Donkie updated:

+
    +
  • You can now stick papers back in to paperbins, text will persist.
  • +
  • Added a [field] bbcode tag to the pen writing. Lets your start writing from that point.
  • +
  • Changed fonts a bit for papers to make [sign] stand out more.
  • +
+

Doohl updated:

+
    +
  • Gave pill bottles the ability to scoop up pills like ore satchels scoop ore. (There you go, /vg/ Anon.)
  • +
  • Security Officers and Wardens now start with maintenance acceess.
  • +
+
+ +
+

29 March 2012

+

PolymorphBlue updated:

+
    +
  • Exosuits now provide a message when someone is getting in, someone getting in must remain stationary and unstunned, and getting in takes four seconds.
  • +
+
+ +
+

28 March 2012

+

Carn updated:

+
    +
  • Fixed turrets shooting people that leave the area and the telecomm turret controls.
  • +
+

Donkie updated:

+
    +
  • Updated air alarm's GUI.
  • +
+
+ +
+

27 March 2012

+

Nodrak updated:

+
    +
  • Security borgs now have modified tasers.
  • +
  • Security borgs have gone back to having the same movement speed as all other borgs.
  • +
+
+ +
+

23 March 2012

+

Doohl updated:

+
    +
  • Escape shuttles/pods now spend about 2 minutes in high-speed transit before they reach centcom/recon shuttle. This is a warning: regular after-round shuttle grief is NOT OKAY while the shuttle is still in transit! Save it for when the shuttle gets to centcom! The purpose of this is to give potential antagonists and protagonists a chance to have a final showdown in the shuttle. The round does not end until the shutle comes to a stop and docks. Don't step outside while the shuttle is moving!

    For example; if you are a traitor and have an escape-alone objective and a couple of people manage to squeeze in the shuttle, you have two minutes to kill/toss them out to win. Or you can just chill for the duration and reflect on the round.
  • +
+ +

Donkieyo updated:

+
    +
  • A bunch new standard-namespace NTSL functions added! Check them out at the NT Script wiki page!
  • +
+
+ +
+

22 March 2012

+

Ricotez updated:

+
    +
  • Medical Lockers, Security Lockers, Research Lockers, Warden Locker, CMO Locker, and RD locker all have new sprites.
  • +
  • Encryption keys now each have their own invidual sprites.
  • +
+ +

PolymorphBlue updated:

+
    +
  • Added a prototype holodeck to fitness!
  • +
  • Assorted tensioner fixes
  • +
+ +
+

20 March 2012

+

Kor updated:

+
    +
  • Lasertag vests and guns have been added to fitness.
  • +
  • Art storage has replaced the emergency storage near arrivals. Emergency storage has replaced chem storage (has anyone ever used that?)
  • +
  • Wraiths can now see in the dark
  • +
+
+ + +
+

19 March 2012

+

PolymorphBlue updated:

+
    +
  • Added LSD sting to modular changeling by popular demand.
  • +
  • Silence sting no longer provides a message to the victim.
  • +
  • Tensioner will no longer assign dead people as assassination targets.
  • +
+
+ +
+

18 March 2012

+

Quarxink updated:

+
    +
  • The medical record computers can finally search for DNA and not just name and ID.
  • +
+
+ +
+

14 March 2012

+

PolymorphBlue updated:

+
    +
  • Modular changeling added! Changelings now purchase the powers they want. Balancing still underway, but should be playable.
  • +
+

Petethegoat updated:

+
    +
  • Janitor cyborgs have been massively upgraded. Suffice to say they're pretty ballin' now...
  • +
+

Nodrak updated:

+
    +
  • You can now choose whether to spawn with a backpack, satchel, or nothing. Excess items will spawn in your hands if necessary.
  • +
  • You can now choose what kind of underwear you'd like to wear, per a request.
  • +
+
+ +
+

14 March 2012

+

Carn updated:

+
    +
  • Added 6 female hairstyles -- credits go to Erthilo of Baystation. Added a male hairstyle -- credits go to WJohnston of TG. If you can sprite some unique and decent-looking hair sprites, feel free to PM me on the TG forums.
  • +
+
    +
  • The way objects appear to be splattered with blood has been rewritten in an effort to fix stupid things happening with icons. It should be called far less frequently now. PLEASE, if you experience crashes that could in anyway be related to blood, report them with DETAILED information. Thanks
  • +
+
+ +
+

13 March 2012

+

Nodrak & Carn updated:

+
    +
  • Fixed the way flashes break. Long story short: They'll never break on first use so rev don't get screwed over. They run out of charge temporarily when spammed but recharge. Spamming them also increases the chance of them breaking a little, so use them sparingly.
  • +
+

Doohl updated:

+
    +
  • Ablative Armor now has a high chance of reflecting energy-based projectiles.
  • +
  • Riot shields were buffed; they now block more attacks and they will prevent their wielder from being pushed (most of the time).
  • +
+
+ +
+

12 March 2012

+

PolymorphBlue updated:

+
    +
  • PDA messages now require an active messaging server to be properly sent.
  • +
+
+ +
+

11 March 2012

+

PolymorphBlue updated:

+
    +
  • The AI can now open doors with shift+click, bolt them with ctrl+click, and shock them with alt+click
  • +
  • Tratior borgs who hack themselves cannot be blown by the robotics console, and can override lockdowns.
  • +
  • Adds a new wire to doors that controls the time delay before they close. If pulsed, they close like a sliding glass door. If cut, they do not close by themselves.
  • +
  • Borgs who have died, ghosts, and are then blown up will now have their ghosts properly transfered to their dropped MMIs.
  • +
+

Carnwennan updated:

+
    +
  • You can now request AI presence at a holopad for immediate private communication with the AI anywhere. AIs can click a quick button to zoom to the holopad.
  • +
+
+ +
+

08 March 2012

+

Nodrak and Carnwennan updated:

+
    +
  • Nodrak: Fixed crayon boxes and stuff getting stuck in pockets.
  • +
  • Nodrak: 'Steal item' objectives will report correctly when wrapped up in paper now.
  • +
  • Carn: fixed the vent in the freezer...poor chef kept suffocating.
  • +
+
+ +
+

02 March 2012

+

Carn updated:

+
    +
  • Fixed a number of issues with mob examining. Including: not being able to see burns unless they were bruised; vast amounts of grammar; and icons. Updated them to use stylesheet classes.
  • +
  • Borgs can no-longer drop their module items on conveyor belts.
  • +
  • Names input into the setup screen are now lower-cased and then have their first letters capitalised. This is to fix problems with BYOND's text-parsing system.
  • +
  • Runtime fix for lighting.
  • +
  • Over the next few commits I will be updating a tonne of item names to fix text-parsing. Please inform me if I've typoed anything.
  • +
+
+ +
+

03 March 2012

+

Petethegoat updated:

+
    +
  • Removed cloakers. Removed Security's thermals. Added disguised thermals as a traitor item.
  • +
+
+ +
+

01 March 2012

+

SkyMarshal updated:

+
    +
  • Tweak/Bugfix for Hallucinations. Much more robust.
  • +
+
+ +
+

01 March 2012

+

SkyMarshal updated:

+
    +
  • Ported BS12 Detective Work System
  • +
+
+ +
+

1 March 2012

+

Petethegoat updated:

+
    +
  • Head revolutionaries no longer spawn with traitor uplinks.
  • +
      +
    +
+ +
+

29 February 2012

+

SkyMarshal updated:

+
    +
  • BS12 Hallucination and Dreaming port
  • +
      +
    +
+ + +
+

29 February 2012

+

muskets updated:

+
    +
  • Integrated BS12's improved uplink code
  • +
+
+ + +
+

26 February 2012

+

Doohl updated:

+
    +
  • The insane crashing has finally been fixed!
  • +
+
+ +
+

25 February 2012

+

Doohl updated:

+
    +
  • Telecommunications has been refined, with many new features and modules implemented.
  • +
  • NTSL (Nanotrasen Scripting Language) is ONLINE! This is a brand new, fully operational scripting language embedded within SS13 itself. The intended purpose is to eventually expand this scripting language to Robotics and possibly other jobs, but for now you may play with the TCS (Traffic Control Systems) implementation of NTSL in the Telecommunications Satellite. Recommended you read the NT Script wiki page for information on how to use the language itself. Other than that, there's not a lot of documentation.
  • +
  • Radio systems have been further optimized, bugfixed, etc. Should be more stable.
  • +
  • Intercoms now require power to work.
  • +
+
+ + +
+

24 February 2012

+

PolymorphBlue updated:

+
    +
  • Headsets are now modular! Use a screwdriver on them to pop out their encrpytion keys, and use a key on one to put it in. A headset can hold two keys. Normal headsets start with 1 key, department headsets with two. The standard chip does nothing, and is not required for listening to the common radio.
  • +
  • Binary translators made into a encrpytion key, and fixed. They now broadcast to AIs properly.
  • +
+
+ +
+

23 February 2012

+

PolymorphBlue updated:

+
    +
  • MMIs/pAIs no longer lip read, and thus can now hear in the dark.
  • +
  • Borg rechargers are no longer Faraday cages, and thus can now receive radio while they're recharging.
  • +
+

LastyScratch updated:

+
    +
  • Glass airlocks now make a different sound than regular airlocks.
  • +
  • in 1997 nanotrasen's first AI malfunctioned
  • +
  • Toggle ambience probably works now! +
  • Runtime is dead. +
  • The Research Director's consoles were moved into the completely empty cage in the back of his office.
  • +
+
+ + +
+

22 February 2012

+

PolymorphBlue updated:

+
    +
  • Changed alt+click to ctrl+click for pulling.
  • +
+

Petethegoat updated:

+
    +
  • New stationary scrubber sprites~
  • +
  • Removed the mint. Coins can still be found and used in vending machines. PACMANs now run off sheets.
  • +
+

coolity updated:

+
    +
  • New sprites for HoS and Captain lockers.
  • +
  • New sprites for the orebox.
  • +
+
+ +
+

21 February 2012

+

Petethegoat updated:

+
    +
  • The jetpacks now display correctly when worn.
  • +
  • Buckling to chairs no longer causes you to drop your weapon
  • +
+

Nodrak updated:

+
    +
  • Ghosts now have a "Jump to Mob" verb.
  • +
+

Sieve updated:

+
    +
  • Mining lanterns work properly once again!.
  • +

    Skaer updated:

    +
      +
    • The armoury now includes a box of spare Sec cartridges.
    • +
    +
+ +
+

19 February 2012

+

Petethegoat updated:

+
    +
  • The jetpacks in EVA have been replaced with CO2 ones, painted a classy black.
  • +
  • Additionally, jetpacks will now run on gases other than oxygen, as you would expect.
  • +
  • Chair overhaul! You shouldn't notice anything different, but if you encounter bugs with chairs or beds, please report those asap.
  • +
  • New electric chair sprites, by myself.
  • +
  • Electric chairs will only electrocute people buckled into them.
  • +
  • Karma should be fixed.
  • +
+

KorPhaeron updated:

+
    +
  • A new construct type: Artificer. It is capable of constructing defenses, repairing fellow constructs, and summoning raw materials to construct further constructs
  • +
  • Simple animals (constructs, Ian, etc) can now see their health in the Status tab
  • +
  • Detective's revolver is non-lethal again. Was fun while it lasted
  • +
+
+ +
+

18 February 2012

+

Petethegoat updated:

+
    +
  • Foam has a reduced range to prevent spamming
  • +
+

Sieve updated:

+
    +
  • Stopped the unholy Radium/Uranium/Carbon smoke that crashed the server. And for anyone that did this, you are a horrible person
  • +
  • Cleanbots clean dirt
  • +
  • Cleanbots automatically patrol on construction
  • +
  • Removed silicate because it is not useful enough for how much lag it caused
  • +
+
+ +
+

16 February 2012

+

Smoke Carter updated:

+
    +
  • Newscasters now alert people of new feeds and wanted-alerts simultaneously.
  • +
+
+ +
+

15 February 2012

+

Kor updated:

+
    +
  • Terrorists Win! Desert Eagles and Riot Shields now spawn on the syndicate shuttle, replacing the c20r
  • +
  • The Detectives gun still uses .38, but they're now fully lethal bullets. Go ahead, make his day.
  • +
  • The Veil Render has been nerfed, the Nar-Sie it spawns will not pull anchored objects. This is a temporary measure, more nerfs/reworking to come
  • +
+
+ +
+

14 February 2012

+

Carn updated:

+
    +
  • Spacevines added to the random events.
  • +
  • The bug where doors kept opening when a borg tried to close them at close range is now fixed.
  • +
+
+ +
+

13 February 2012

+

Khodoque updated:

+
    +
  • Security officers, the warden and the HoS have new jumpsuits.
  • +
+

Erro updated:

+
    +
  • Clicking the internals button on your user interface (The one that shows if you have internals on or not) will now toggle internals even if they are in your pockets. (humans only) - It now works if your internals are on your back, suit storage, belt, hands and pockets.
  • +
  • The public autolathe has been removed. If you want some some stuff from a lathe, go to cargo.
  • +
+

Kor updated:

+
    +
  • A new item, the null rod, protects the one bearing it from cult magic. One starts in the chaplains office, and this replaces the job based immunity he had. The null rod also is capable of dispelling runes upon hitting them (the bible can no longer do this)
  • +
  • Shooting fuel tanks with lasers or bullets now causes them to explode
  • +
  • A construct shell is now waiting to be found in space.
  • +
  • Chaplains can no longer self heal with the bible
  • +
  • Simple animals, including constructs, can now attack mechs and critters
  • +
+ +
+ +
+

12 February 2012

+

Erro updated:

+
    +
  • You can no longer attach photos to ID cards. This never worked properly and if anything, it was misleading.
  • +
  • Backpacks can now hold 7 normal sized items (box size) as opposed to 6 normal sized items + 1 small item
  • +
  • Added several fire alarms to areas around the station including the brig, engineering and others
  • +
  • The atmospherics department now has a few hazard vests available for atmos techs to wear if they don't like the fire suit
  • +
  • Roboticist now have engineering + science headsets, virologists now have medsci headsets with medical + science channels
  • +
  • Added some headsets to the jobs that didn't have any extras: roboticist, qm, scientist, virologist and geneticist.
  • +
  • Station engineers now have construction site access (vacent office by arrivals)
  • +
  • Replaced a few airlocks with glass airlocks (detective, autolathe, assistant storage, robotics, checkpoint)
  • +
  • Removed the wall that was blocking the entrance to the theater
  • +
  • Made a small redesign for the HoP's office so that people running towards it from the escape hallway don't run right into the queue, annoying everyong
  • +
  • The engineering, command and security airlocks now glow green when closing instead of red to match all the other airlocks
  • +
  • The disposal units now auto trigger every 30 game ticks, if there is something (or someone) in them. So no more hiding in disposal units!
  • +
  • You can no longer control the disposal unit from within it. You will have to wait for it to trigger itself.
  • +
  • You can no longer strip items off of Ian while dead / a ghost
  • +
+

Pete updated:

+
    +
  • Updated fitness, athletic shorts are now available!
  • +
+
+ + +
+

11 February 2012

+

Erro updated:

+
    +
  • You can now take individual crayons out of the crayon box the same way as from boxes
  • +
  • Clicking a grille with a glass or reinforced glass pane in your hand will glaze the grille from the direction you're looking from (don't forget to fasten the window tho)
  • +
  • When you click somewhere with the intent to interact, you will automaticaly face the item you're trying to interact with. This won't slow you down when running and firing guns behind you.
  • +
+

Kor updated:

+
    +
  • A new passive mob ability: Relentless. Relentless mobs cannot be shoved (though may still swap places with help intent)
  • +
  • Alien Queens, Juggernaut constructs, and Medical Borgs are all Relentless. Maybe the medborg can actually drag people to medbay on time now
  • +
  • Two constructs, the Juggernaut and the Wraith are now available for wizards and cultists to use soul stones with
  • +
  • A new highly destructive artefact, Veil Render, is now available for wizards
  • +
  • A new one time use global spell, Summon Guns, is now available for wizards.
  • +
  • DEEPSTRIKING! There is now a partially constructed teleporter on the nuke shuttle, and for a large sum of telecrystals they may purchase the circuitboard needed to complete it.
  • +
  • The Chaplain is immune to cult stun, blind, deafen, and blood boil
  • +
+
+ +
+

10 February 2012

+

Quarxink updated:

+
    +
  • Added a new toy: Water balloons. They can be filled with any reagent and when thrown apply the reagents to the tile and everything on it.
  • +
+
+ +
+

9 February 2012

+

Erro updated:

+
    +
  • Engineering and security lockers now spawn with their respective backpacks in them so job-changers can look as they should. HoS locker now also contains an armored vest, for the convenience of the HoS who wants to play with one.
  • +
  • Slightly changed the spawn order of items in the CE and HoS lockers to make starting up a hint less tedious.
  • +
+
+ +
+

8 February 2012

+

ConstantA updated:

+
    +
  • Added Exosuit Jetpack
  • +
  • Added Exosuit Nuclear Reactor (runs of normal, everyday uranium, maybe I'll switch it to run on enriched) - requires research (level 3 in Materials, Power Manipulation and Engineering)
  • +
  • Added Ripley construction steps sprites (courtesy of WJohnston - man, you're awesome)
  • +
  • Exosuit Sleeper can now inject occupant with reagents taken from Syringe Gun
  • +
  • Exosuit Cable Layer will now auto-dismantle floors
  • +
  • Exosuit Heavy Lazer cooldown increased, Scattershot now fires medium calibre ammo (less damage)
  • +
  • Exosuit wreckage can be pulled
  • +
  • EMP now drains half of current exosuit cell charge, not half of maximum charge.
  • +
  • Fixed several possible exosuit equipment runtimes
  • +
  • Introduced new markup to changelog. Javascript is extremely slow (in byond embedded browser) for some reason.
  • +
+
+
+

4 February 2012, World Cancer Day

+

Erro updated:

+
    +
  • Examining humans now works a bit differently. Some external suits and helmets can hide certain pieces of clothing so you don't see them when examining. Glasses are also now displayed when examining.
  • +
  • The job selection screen has been changed a little to hopefully make making changes there easier.
  • +
+
31 January 2012
  • Carn updated: diff --git a/html/changelog.html b/html/changelog.html index 2787e19d69c..b5402b795e0 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -54,8 +54,189 @@ *** DO NOT FUCK WITH THIS FILE OR YOU WILL CAUSE MERGE CONFLICTS. *** --> -
    +

    08 March 2015

    +

    Dannno updated:

    +
      +
    • Added more barsigns, sprites by yours truly.
    • +
    +

    Ikarrus updated:

    +
      +
    • Gang mode has been reworked to functionality without some of it's features.
    • +
    • Gang membership visibility, conversion pens and weapons are removed until fixed.
    • +
    • Gang bosses have been given uplinks to use in the meantime.
    • +
    • Chance of deconversion from repeated head trauma has been increased.
    • +
    +

    Incoming5643 updated:

    +
      +
    • The skeleton and zombie hordes have been quelled, at least for the time being.
    • +
    +

    Mandurrrh updated:

    +
      +
    • Added the ability to stop table climbers by clicking the table if present.
    • +
    +

    Paprika updated:

    +
      +
    • Labcoats and uniforms no longer use action buttons and object verbs to adjust their aesthetic style. Alt click them to adjust.
    • +
    • Alt click a PDA with an ID inside to eject the ID.
    • +
    • Renamed 'remove ID' verb to 'eject ID' so it's not immediately next to 'remove pen'.
    • +
    • Rebalanced the flash protection of thermal scanners. Syndicate thermals have the same flash weakness as the meson scanners they come disguised as.
    • +
    +

    Xhuis updated:

    +
      +
    • Adds the Adminbus and Coderbus bar signs.
    • +
    • Added a mining satchel of holding to R&D that can hold an infinite amount of ores. It requires gold and uranium, in addition to a decently high bluespace and materials research.
    • +
    +

    phil235 updated:

    +
      +
    • Harvesting meat from dead simple animals now takes time, has a sound, and can be done with any sharp weapon.
    • +
    +

    pudl updated:

    +
      +
    • Updated the sprite for Fire extinguishers.
    • +
    +

    xxalpha updated:

    +
      +
    • Disposable lighters now come in more colors of the rainbow.
    • +
    + +

    05 March 2015

    +

    Jordie0608 updated:

    +
      +
    • Server hosts can set a config option to make an unseen changelog pop up on connection.
    • +
    +

    MrPerson updated:

    +
      +
    • Expanded the on-screen alerts you get on the top-right of your screen. You can shift-click them to get a description of what's wrong and maybe how to fix it.
    • +
    • Getting buckled to something will show an alert of what you're buckled to. If you're not handcuffed, you can click the alert to unbuckle.
    • +
    +

    RemieRichards updated:

    +
      +
    • Added Necromantic Stones as a buyable item for wizards
    • +
    • Necromantic Stones can cause up to 3 people to rise up as Skeleton Thralls bound to the wielder of the stone
    • +
    • Skeleton Thralls have a 33% Chance to drop all their gear on the floor and autoequip a more fitting thematic uniform
    • +
    • Allows the blob to reroll it's chemical for a cost.
    • +
    +

    phil235 updated:

    +
      +
    • Adds a lot of new plants to botany (red beet, parsnip, snap corn, blumpkin, rice, oat, vanilla, steel cap, mimana, blue cherries, holy melon, geranium, lily, sweet potato) and two new reagents (vanilla, rice).
    • +
    • Fixes taser stun duration being longer due to jitter animation.
    • +
    + +

    03 March 2015

    +

    Delimusca updated:

    +
      +
    • Improvised heating! use lighters or other heat sources to heat beakers, bottles, etc.
    • +
    +

    Gun Hog updated:

    +
      +
    • We have purged the xenomicrobes contamination in the E.X.P.E.R.I-MENTOR using sulfuric acid. Take care not to be exposed should it leak!
    • +
    +

    Iamgoofball updated:

    +
      +
    • Colorful reagent can be washed off with water now.
    • +
    • Oxygen blob deals breath loss damage.
    • +
    • Radioactive blobs irradiate for more.
    • +
    +

    Ikarrus updated:

    +
      +
    • Antagonist roles are now restricted by player client age.
    • +
    +

    Jordie0608 updated:

    +
      +
    • The server's current local time is now displayed in status panel in ISO date format (YYYY-MM-DD hh:mm)
    • +
    +

    Mandurrrh updated:

    +
      +
    • Added the ability to see pda messages as a ghost with GHOSTWHISPER toggled on.
    • +
    • Removed the degrees symbol from Kelvin units on atmos meters because not gramatically correct
    • +
    +

    RemieRichards updated:

    +
      +
    • Drones now see either Static, Black icons or Roguelike style lettering instead of actual mob icons
    • +
    • Icons for the above, from VG's SkowronX
    • +
    • Many icon procs for the above, from VG's ComicIronic
    • +
    • Drones moved into their own folder
    • +
    • Drone.dm replaced with seperate files for each functionality
    • +
    • Drones now have 2 skins to choose from, Maintenance Drone (Current drones) and Repair Drone (A modified VG/Bay sprite)
    • +
    • Much more support for alternate skins on drones
    • +
    +

    Xhuis updated:

    +
      +
    • Added four new emoji: :1997:, :rune:, :blob:, and :onisoma:.
    • +
    +

    xxalpha updated:

    +
      +
    • Added a surgery table and tools to the Nuke Ops ship.
    • +
    • Added Engineering Scanner Goggles to Engivend, Engineering Secure Closets and Research.
    • +
    • Doubled T-ray scanner range.
    • +
    + +

    01 March 2015

    +

    Dannno updated:

    +
      +
    • Resprited all owl items. Wings are now a seperate toggleable suit item.
    • +
    • Added The Griffin costume, arch nemesis of The Owl. Found in the autodrobe.
    • +
    • Added admin-only Owl hardsuit. Only for the most vengeful souls.
    • +
    • Added Owl and Griffin merchandise; The Nest barsign, Owl/Griffin toys and posters.
    • +
    +

    Iamgoofball updated:

    +
      +
    • Fixes the recipe for meth.
    • +
    • Fixes sorium blobs flinging themselves.
    • +
    +

    Incoming5643 updated:

    +
      +
    • On servers where malfunction, wizard, and blob rounds do not end with the death of the primary antagonist, new antagonists from traitor and changeling derivative modes will now sometimes spawn. This depends on the state of the station, the state of the crew, and the server's gamemode probabilities. Server owners should consider revising their configuration choices
    • +
    • If you would like to opt out of this midround chance, a new toggle to disable it can be found in your preferences
    • +
    +

    Mandurrh updated:

    +
      +
    • The barsign can be emagged and EMP'd; EMP'd signs can be repaired with a screwdriver and cables.
    • +
    +

    Menshin updated:

    +
      +
    • Fixed the protolathe not requiring displayed amount of materials to make items.
    • +
    +

    MrStonedOne updated:

    +
      +
    • Adds a Panic Bunker!
    • +
    • This will prevent any player who has never connected before from connecting. (Admins are exempt)
    • +
    • Can be enabled per-round by any admin with +SERVER or for longer periods via the config.
    • +
    • Also adds some other config options relating to new joins, server operators should consult their configuration file for more details.
    • +
    • Fixes toggle darkness vision hiding other ghosts.
    • +
    • Admins fucking around with ghost icon and icon states in VV are going to want to change the icon and icon state of the ghostimage var of the ghost to change the image shown to ghosts who have darkness disabled. doing this via mass edit is not yet supported.
    • +
    • New ghost verb, toggle ghost vision. Switches the ghost's invisibility vision between that of a ghost and that of a human. So ghosts can hide other ghosts and in general get the old behaviour of toggle darkness.
    • +
    +

    Paprika updated:

    +
      +
    • Messages with two exclamation marks will be yelled in bold.
    • +
    +

    Phil235 updated:

    +
      +
    • Cultists can't summon narsie until their sacrifice objective is complete.
    • +
    +

    Razharas updated:

    +
      +
    • Vines now can grow on any tiles that is not dense, including space, shuttles, centcomm tiles and so on.
    • +
    • Added 'Bluespace' mutation to vines, makes them be able to grow through absolutely everything.
    • +
    • Added 'Space Proofing' mutation to vines, after they grow if the tile under them is space it will become special vinetile, which is just resprited regular floor, if the vine on the vinetile dies the vineturf changes back to space.
    • +
    • Made vines spreading speed depend on the seed's production, can be both slower and faster than current.
    • +
    • Made vines mutation chance be 1/10th of the potency of the seed it is spawned from.
    • +
    • Special chemicals added to vine seeds durning their growth can increase/decrease their potency and productivity.
    • +
    • Special chemicals now can remove good, bad or neutral mutations from vine seeds while they are growing, cultivating actually helpful vines is now possible.
    • +
    • Plant analyzers now show the vine seeds mutations.
    • +
    • Buffed numbers in some of the more useless mutations.
    • +
    +

    Steelpoint updated:

    +
      +
    • Reworked and expanded areas of the derelict station. Featuring a repairable gravity generator, turret filled computer core and functional solars.
    • +
    +

    Vekter updated:

    +
      +
    • Chemists, Geneticists, Virologists, Scientists, and Botanists will now spawn with alternative backpacks and satchels in their lockers. Try them out!
    • +
    +

    25 February 2015

    Cheridan updated:

      @@ -161,8 +342,7 @@

      Steelpoint updated:

      • SS13's Head of Security has received a new attempted 1:1 recreation of a Old Earth weapon, the Captain's Antique Laser Gun.
      • -
      • This gun features three firing modes, Tase, Laser and Breach. However this gun lacks the capability to recharge in the field, and is extreamly expensive.
      • -
      • The gun's Breach setting fires a low powered Pulse round, it consumes a large amount of power, has a limited range of two tiles and deals the same damage as a laser does. However it is effective in destroying walls, hence the Breach title.
      • +
      • This gun features three firing modes, Tase, Laser and Disable. However this gun lacks the capability to recharge in the field, and is extreamly expensive.
      • INTERCEPTED TRANSMISSION REPORT: The Syndicate have expressed a interest in this new weapon, and have instructed field agents to do whatever they can to steal this weapon.

      TheVekter updated:

      @@ -188,9 +368,7 @@
      • Added new graffiti: cyka, prolizard, antilizard
      -
    -

    18 February 2015

    Dannno updated:

      @@ -305,9 +483,7 @@
      • You now hear the voice of the chosen deity in prayers.
      -
    -

    05 February 2015

    Danno updated:

      @@ -324,9 +500,7 @@
      • Added a toy red button to the Arcade cabinets.
      -
    -

    04 February 2015

    Danno updated:

      @@ -382,9 +556,7 @@
    • Syndicate Cyborgs now come equipped with operative pinpointers, which will automatically point to the nearest nuclear operative.
    • Handheld crew monitors can now be stored in medical belts.
    -
    -

    26 January 2015

    Dannno updated:

      @@ -416,9 +588,7 @@
      • Added briefcase filled with cash to uplink.
      -
    -

    21 January 2015

    Iamgoofball updated:

      @@ -442,9 +612,7 @@
    • Adds 9 new Disabilites and 2 new genetic powers.
    • You can now heat donk pockets once more. Rejoice.
    -
    -

    17 January 2015

    Cheridan updated:

      @@ -490,9 +658,7 @@
      • Added a new R&D machine, to replace the telescience room. The Machine is based on RND and various interdepartmental creations.
      -
    -

    14 January 2015

    Boggart updated:

      @@ -512,9 +678,7 @@
    • Adds Morphine Medipens!
    • Adds Morphine bottles to Cargo!
    -
    -

    13 January 2015

    Dannno updated:

      @@ -530,17 +694,13 @@
    • Fixed NTSL division.
    • Added new NTSL math functions, including 'sin,' 'cos,' 'asin,' 'acos,' and 'log.'
    -
    -

    06 January 2015

    JJRcop, Nienhaus updated:

    • Adds emoji to OOC chat.
    -
    -

    27 December 2014

    Dorsidwarf updated:

      @@ -560,9 +720,7 @@
      • Envoys from the distant Viji sector have brought an exotic contraption to Centcomm. Known as the 'supermatter shard', it is a fragment of an ancient alien artifact, believed to have a dangerous and mysterious power. This precious item has been made available to the Space Station 13 cargo team for the cost of a hundred supply points, as a reward for all your hard work. Good luck, and stay safe.
      -
    -

    16 December 2014

    Paprika updated:

      @@ -586,9 +744,7 @@
    • The number of junk food in snack vending machine is lowered from 6 to 5 of each type.
    • Fixing not being able to load an omelette du fromage on a tray.
    -
    -

    10 December 2014

    GunHog updated:

      @@ -613,9 +769,7 @@
    • We've discovered that slimes react to the introduction of certain chemicals in their bloodstream. Inaprovaline will decrease the slimes children's chance of mutation, and plasma will increase it.
    • We've also found that feeding slimes solid plasma bars makes them more friendly to humans.
    -
    -

    08 December 2014

    Ergovisavi updated:

      @@ -640,9 +794,7 @@
      • Security/Medical HUDs are now more responsive and less laggy.
      -
    -

    10 November 2014

    Menshin updated:

      @@ -667,9 +819,7 @@
    • Changelings can absorb someone even if they have that DNA in storage already.
    • Fixes hivemind being lost when readapting evolutions.
    -
    -

    04 November 2014

    MrPerson updated:

      @@ -687,9 +837,7 @@
      • Cutting-edge research in a secret Nanotransen lab has shed light into a revolutionary form of communication technology known as 'chat'. The Personal Data Assistants of Space Station 13 have been deployed with an experimental module implementing this system, dubbed 'Nanotransen Relay Chat'.
      -
    -

    30 October 2014

    MrPerson updated:

      @@ -700,9 +848,7 @@
    • Jetpacking after being thrown out a mass driver will cancel out your momentum.
    • Shooting a gun causes you to drift the other direction like spraying a fire extinguisher.
    -
    -

    27 October 2014

    Jordie0608 updated:

      @@ -731,9 +877,7 @@
    • Closets and its children can no longer contain a near infinite amount of mobs. Large mobs (juggernaut, alien emperess, etc) don't fit, small mobs (mouse, parrot, etc) still fit in the same amounts, human-sized mob (humanoid, slime, etc) fit but maximum two per body bag and three for all the other closets. Adding bluespace body bag to R&D, it can hold even large mobs and in large amounts.
    • girders and displaced girders now have a chance to let projectiles pass through them.
    -
    -

    19 October 2014

    Donkie updated:

      @@ -778,9 +922,7 @@
      • Medical supplies crate now comes with a boxy full of bodybags
      -
    -

    09 October 2014

    Paprika updated:

      @@ -791,9 +933,7 @@
    • Reduced the size of the mining jetpack, it now fits in backpacks. The capacity of the jetpack has been reduced as well, however.
    • Removed resonator from the mining voucher redemption. Replaced it with a mining drill.
    -
    -

    08 October 2014

    Cheridan updated:

      @@ -814,9 +954,7 @@
      • Space Station 13 has been deployed with transit tube dispensers. Central Command encourages the engineering department to repair and improve the station using this equipment.
      -
    -

    05 October 2014

    Ikarrus updated:

      @@ -837,9 +975,7 @@
    • Remember those magboots we had our undercover agents steal? Well we've finally reverse engineered them. Not only that, but we gave them a killer paintjob. They will be available in the uplinks of boarding parties we send out to Nanoscum stations.
    • Listen up, Marauders! The Syndicate has recently cut back funding into boarding parties. What this means is no more hi-tech fancy energy guns. We've had to roll back to using cheaper, mass-produced automatic shotguns. But in retrospect, could this possibly be a downgrade?
    -
    -

    01 October 2014

    Cheridan updated:

      @@ -875,9 +1011,7 @@
      • Changed all clone damage descriptions to use the term cellular damage to avoid confusion with genetics mutations.
      -
    -

    07 September 2014

    Gun Hog updated:

      @@ -891,9 +1025,7 @@
    • Players: To check if this config option is enabled on your server, type show-server-revision into the game's command line.
    -
    -

    06 September 2014

    Ikarrus updated:

      @@ -903,17 +1035,13 @@
    • The Syndicate base has been modified to only allow the leading operative to launch the mission.
    -
    -

    04 September 2014

    KyrahAbattoir updated:

    • All the objects found in BoxStation maintenance are now randomized at round start.
    -
    -

    03 September 2014

    Ikarrus updated:

      @@ -923,9 +1051,7 @@
      • Many new posters have been added.
      -
    -

    01 September 2014

    ChuckTheSheep updated:

      @@ -949,25 +1075,19 @@
    • Please report any issues you notice with any form of messaging to Github.
    -
    -

    31 August 2014

    Tokiko1 updated:

    • Adds two new hairstyles.
    -
    -

    30 August 2014

    Ikarrus updated:

    • Space Station 13 has been authorized to requisition additional Tank Transfer Valves from Centcom's supply lines for the price of 60 cargo points.
    -
    -

    26 August 2014

    Ikarrus updated:

      @@ -979,9 +1099,7 @@
    • **Server operators can now set a name for the station in config.txt. Simply add the line "STATIONNAME Space Station 13" anywhere on the text file. Replace Space Station 13 with your station name of choice.
    -
    -

    24 August 2014

    Ikarrus updated:

      @@ -989,9 +1107,7 @@
    • Mulebot speed has been vastly increased by up to 300%.
    • Removed exploit where false walls can be used to cheese the AI chamber's defenses
    -
    -

    21 August 2014

    Ikarrus updated:

      @@ -999,9 +1115,7 @@
    • The Phase Slayer ability will no longer instantly gib players. Instead, they will be dealt 190 brute damage. Mechas will be dealt 380 damage.
    • ADMIN: Most Event buttons have been moved out of the secrets menu and into a Fun verb.
    -
    -

    20 August 2014

    Cheridan updated:

      @@ -1011,26 +1125,20 @@
    • Dragonsbreath: tech shell + 5 phosphorus (in container).
    • Incendiary rounds now leave a blazing trail as they pass. This includes existing incendiary rounds, new dragonsbreath rounds, and the Dark Gygax's carbine.
    -
    -

    19 August 2014

    Ikarrus updated:

    • Brig cells and labour shuttle have both been modified to send a message to all security HUDs whenever a prisoner is automatically released.
    • The labour camp has been outfitted with a points checking console to allow prisoners to check their quota progress easier and better explain the punishment system of forced labour.
    -
    -

    18 August 2014

    Iamgoofball updated:

    • 25 new hairstyles have been added.
    -
    -

    15 August 2014

    AndroidSFV updated:

      @@ -1038,9 +1146,7 @@
    • When a Cyborgs AI link wire is pulsed, the images from the Cyborgs image album will be synced with the AI it gets linked to.
    • Additonally, Cyborgs are able to attach images to newscaster feeds from whichever album is active for them. Cyborgs are also mobile, inefficent, printers of same images.
    -
    -

    11 August 2014

    Ikarrus updated:

      @@ -1050,9 +1156,7 @@ -Teleporter board moved from RD's Office to Tech Storage now that the teleporter can be built again.
      -Security Deputy Armbands (red) added in HoS's Office



    -
    -

    14 July 2014

    Miauw updated:

      @@ -1061,9 +1165,7 @@
    • C4 can no longer be attached to mobs
    • Reduced the C4 price to 1 telecrystal
    -
    -

    07 July 2014

    Firecage updated:

      @@ -1079,17 +1181,13 @@
      • Tweaked mining turf mineral droprates and reverted mesons to the 'old' style of mesons. This means mesons will be more powerful with the added side effect of not being able to track individual light sources through walls and such. This is a trial run; please provide feedback on the /tg/ codebase section of the forum.
      -
    -

    05 July 2014

    Firecage updated:

    • Recently the Space Wizard Federation, with some assistance from the Cult of Nar-Sie, recently created a new strain of Killer Tomato. A sad side effect is this effected all current and future Killer Tomato strains in our galaxy. They are now reported to be extremely violent and deadly, use extreme caution when growing them.
    -
    -

    03 July 2014

    Miauw updated:

      @@ -1098,9 +1196,7 @@
    • Simply put a coin into one of the slot machines in the bar to play!
    • Slot machines can also be emagged.
    -
    -

    01 July 2014

    Ikarrus updated:

      @@ -1117,17 +1213,13 @@
    • Mimes cannot break the laws of physics unless their vow is currently active.
    • Trays are rewritten to make sense and so borgs can actually use them. Service borgs can discretely carry small objects, hint hint. The items are easily knocked out of them.
    -
    -

    20 June 2014

    Ikarrus updated:

    • The 'Enter Exosuit' button was removed, and you have to click + drag yourself to enter a mech now; like you would to enter a disposal unit.
    -
    -

    12 June 2014

    Cheridan updated:

      @@ -1136,9 +1228,7 @@
    • Pill code tweaked. In short, you can feed monkeys pills now #whoa
    • Casings ejected from guns will now spin #wow
    -
    -

    11 June 2014

    Ikarrus updated:

      @@ -1151,9 +1241,7 @@
    • Firebombs have been added
    • They're as reliable and predictable as you would expect from a soda can filled with flammable liquid and set off with an igniter contected to two wires. Use your branes and take proper precautions or leave a charred corpse, your choice.
    -
    -

    06 June 2014

    Gun Hog updated:

      @@ -1161,9 +1249,7 @@
    • Some reports suggest that the latest firmware update to Artifical Intelligence units installed in our research stations may contain this exploit. Any such reports that state that should a station's AI unit "malfunction", it may gain the ability to use this exploit to initate a full lockdown of the station. Fire locks and blast doors are also said to be affected.
    • Nanotrasen officially holds no validity to these reports. We recommend that station personnel disregard such rumors.
    -
    -

    20 May 2014

    Kelenius updated:

      @@ -1176,9 +1262,7 @@
    • We've made a modification of a health scanner that is intended for the use on slimes. Two are available in the smartfridge.
    • We've come to a conclusion that 5 units of reagents are not necessary to cause slime core reactions. You actually only need one unit.
    -
    -

    16 May 2014

    Menshin updated:

      @@ -1188,17 +1272,13 @@
    • Lots of improvements in the cable cutting tools! Gone is the odd magic of physically separated yet still connected powernets (contact CentCom Engineering Division if you still witness something weird, we always have a fired form ready for our engineers!)!
    • Any conscientious (or not!) Station Engineer may check an "updated wiring manual" at http://www.tgstation13.org/wiki/Wiring#Power_Wires
    -
    -

    14 May 2014

    Ikarrus updated:

    • A recent breakthrough in Plasma Materials Research has led to the development of a stronger, tougher plasteel alloy that can better resist extreme heat by up to four times. A live demonstration preformed during a press conference earlier today showed a segment of reinforced wall resisting an attack by Thermite. The corporation also announces that upgrades to its existing stations is already underway.
    -
    -

    07 May 2014

    /Tg/station Code Management updated:

      @@ -1206,9 +1286,7 @@
    • You can find more information about the feature freeze here. http://tgstation13.org/phpBB/viewtopic.php?f=5&t;=273
    • This is the perfect time to report bugs, which you can do so here. https://github.com/tgstation/-tg-station/issues/new
    -
    -

    30 April 2014

    Giacom updated:

      @@ -1221,25 +1299,19 @@
    • NanoTrasen requires more research into this exploit, this we have issued a patch for AI and Cyborg software to simulate this malfunction. All NanoTrasen AI units are advised to only allow testing in a safe and contained environment. The robot can safely be reset at any time.
    • Unfortunately, a robot corrupted by a "cryptographic sequencer" still cannot be reset by any means. NanoTrasen urges regular maintenance and care of all robots to reduce replacement costs.
    -
    -

    27 April 2014

    Ikarrus updated:

    • NT Human Resources announces an expansion of the List of Company-Approved Hair Styles, as well as more relaxed gender restrictions on hair styles. Check with your local company-sponsored hairstylist to learn more.
    -
    -

    22 April 2014

    Ikarrus updated:

    • ID Computers have been modified to allow Station Heads of Staff to assign and remove access to their departments, as well as stripping the rank of their subordinates. An ID computer on the bridge is available for the use of this function.
    -
    -

    20 April 2014

    Gun Hog updated:

      @@ -1254,17 +1326,13 @@
    • The AI Upload however has been moved north slightly and is connected directly to the bridge.
    • In addition, the Gravity Generator has been relocated from its prior position in engineering to the location of the old AI Upload, increasing its defence and logical positioning.
    -
    -

    11 April 2014

    Jordie0608 updated:

    • Wood planks can be used to make wood walls and airlocks; flammability not included
    -
    -

    10 April 2014

    Ikarrus updated:

      @@ -1283,17 +1351,13 @@
    • In addition, the aging riot shield has been replaced with a newer, more modern, apperance.
    -
    -

    03 April 2014

    Ikarrus updated:

    • NT AI Firmware version 2554.03.03 includes a function to notify the master AI when a new cyborg is slaved to it.
    -
    -

    02 April 2014

    Giacom updated:

      @@ -1314,9 +1378,7 @@
    • -A new Testing Lab has been added to the Science department for any field experiments that need to be run.
    • -The mining ore redemption machine has been relocated to the Cargo Delivery Office.
    -
    -

    01 April 2014

    Aranclanos updated:

      @@ -1347,9 +1409,7 @@
    • New silicon click shortcut: Alt click turret controls toggles lethal on or off
    • Cyborg hotkey mode was massively improved. 1-3 selects module slot, q unloads the active module. use hotkeys-help as cyborg for more details
    -
    -

    31 March 2014

    Ikarrus updated:

      @@ -1360,18 +1420,14 @@
    • Toggling the "Play admin midis" preference will pause any playing songs. Turning midis back on will resume the current song where it was.
    • If there's a song playing while you have midis off and you then turn midis on, the current song will begin playing for you.
    -
    -

    28 March 2014

    Aranclanos updated:

    • Workaround with the click cooldowns. They should feel faster. If you think that anything needs a click cooldown (like grilles, mobs, etc.), report it to me.
    • Here's the fun part, this is a test for the community and players, I hope I won't be forced to revert this and hear "this is why we can't have nice things". Again, if anything needs a cooldown, report it to me. Have fun with your fast clicks spessmans.
    -
    -

    25 March 2014

    Ikarrus updated:

      @@ -1382,9 +1438,7 @@
      *Airlocks will not be able to operate autonomously until the electronics are replaced.




    • Hair sprites have been given a visual lift. For best results, set your hair color to be slightly lighter than how you want it to look. For dark hair, do not use a color darker than 80% black.
    -
    -

    22 March 2014

    Giacom updated:

      @@ -1396,51 +1450,39 @@
    • As a result, bombs and the singularity should be much less laggy.
    • There may be issues with "phantom objects" or other problems with stuff that's suppoed to be deleted or objects interacting with deleted objects. Please report any issues right away!
    -
    -

    18 March 2014

    Ikarrus updated:

    • NT R&D; releases AI Patch version 2553.03.18, allowing all Nanotrasen AIs to override the access restrictions on any airlock in case of emergency. Nanotrasen airlocks have been outfitted with new amber warning lights that will flash while the override is active. Should maintenance teams need to restore an airlock's restrictions without using the AI, pulsing the airlock's ID Scanner wire will reset the override.
    -
    -

    17 March 2014

    Giacom updated:

    • Machines that had their programming overriden by a Malf AI will no longer attack loyal cyborgs; they will still attack cyborgs that aren't loyal, to the Malf AI that hacked them, though.
    • You only require a single unit of blood to mutate viruses now, instead of 5.
    -
    -

    15 March 2014

    Steelpoint/Validsalad updated:

    • After a review with CentCom, all Security Officers will now begin their shifts with a Stun Baton in their backpack. To avoid inflating costs however all Stun Batons have been removed from Security lockers except from the brig.
    • After decades of usage CentCom has replaced the Security Uniform, Armor, Belt and Helmet with a newer, more modern design.
    -
    -

    14 March 2014

    Ikarrus and Nienhaus updated:

    • Nanotrasen Corporate announced a revised dress codes primarily affecting senior station officers. A new uniform for Heads of Personnel will be shipped out to all NT Research stations.
    -
    -

    12 March 2014

    Yota updated:

    • Cameras finally capture the direction you are facing.
    -
    -

    10 March 2014

    Giacom updated:

      @@ -1452,9 +1494,7 @@
      • Added changeling space suits. These allow changelings to survive in space, internals are not needed. They do not provide any sort of armor and slow your chemical regeneration.
      -
    -

    05 March 2014

    Various Coders updated:

      @@ -1469,9 +1509,7 @@
    • Fire will cause fuel tanks to explode.
    • Mutagen has been reduced in lethality. Notably, 15 units are not guaranteed to crit the recipient.
    -
    -

    03 March 2014

    ChuckTheSheep updated:

      @@ -1496,1264 +1534,6 @@
    -
    -

    26 February 2014

    -

    Incoming5643 updated:

    -
      -
    • Color blending Kitty Ears have returned.
    • -
    -
    - -
    -

    25 February 2014

    -

    Incoming5643 updated:

    -
      -
    • Colored burgers! Include a crayon in your microwave when cooking a burger and it'll come out just like a Pretty Pattie.
    • -
    • Fixed AI's being able to interact with syndicate bombs.
    • -
    -
    - -
    -

    24 February 2014

    -

    Ergovisavi updated:

    -
      -
    • Added Advanced Mesons and Night Vision Goggles to the protolathe.
    • -
    -

    Giacom updated:

    -
      -
    • Silicons no longer stop statues from moving when in sight.
    • -
    • Increased the health of statues.
    • -
    • Increased the range of statues's blinding spell.
    • -
    -

    HornyGranny updated:

    -
      -
    • Reduced the range of Violin notes.
    • -
    • Low quality violin midi-notes replaced with better .ogg-notes.
    • -
    -

    Incoming5643 updated:

    -
      -
    • Improved the Syndicate Implant bundle to contain freedom, uplink, EMP, adrenalin and explosive implanters.
    • -
    • Added Mineral Storeroom to R&D; containing the Ore Redemption Machine; no more assistants stealing your ore in the open hallway.
    • -
    -

    Miauw updated:

    -
      -
    • No more removing cursed horseheads.
    • -
    -

    Razharas updated:

    -
      -
    • Fixed infinite telecrystal exploit.
    • -
    -
    - -
    -

    19 February 2014

    -

    Aranclanos updated:

    -
      -
    • Removed the chance of your hat falling off when slipping.
    • -
    -

    Perakp updated:

    -
      -
    • Added Iatot's cyborg module selection transformation animations.
    • -
    -
    - -
    -

    17 February 2014

    -

    Ergovisavi updated:

    -
      -
    • Mining has been significantly overhauled. Hostile alien life has infested the western asteroid! Miners are given an equipment voucher to obtain equipment to protect themselves. There is a spare voucher in the HoP's office, should someone want to switch to mining mid-shift.
    • -
    • The Ore Redemption Machine has been added just outside of the Science wing. Ore goes in, Sheets go out, and points are tallied on the machine. Insert your ID to claim points, then spend them on goods at Mining Equipment Lockers. You require specific accesses to tell the Ore Redemption Machine to unload its sheets.
    • -
    • Should you not care for being eaten alive by horrible alien life, it is suggested you stick to the eastern asteroid, where there is no hostile alien life... though the yield on ore is not as good.
    • -
    • Most ore is no longer visible to the naked eye. You must ping it with a Mining Scanner (Available in all mining lockers) to locate nearby ore. Make sure to equip your mesons first, or it won't be visible.
    • -
    • Mesons no longer remove the darkness overlay, you must properly light your environment. Hull breaches to space can still be clearly seen, and it will still protect you from the singulo.
    • -
    • Mineral spawn rates have been significantly tweaked to cut down on unnecessary inflation of mineral economy.
    • -
    • The asteroid no longer has ambient power on the entire asteroid. AI's who go onto asteroid turf will slowly die of power loss. Mining outposts are unaffected.
    • -
    • Fixed an issue where projectiles shot by simple mobs or thrown would hit multiple times.
    • -
    -

    Fleure updated:

    -
      -
    • Reduced chicken crates to contain 1-3 chicks, down from 3-6
    • -
    • Increased fertile chicken egg chance from 10% to 25%
    • -
    -

    Yota updated:

    -
      -
    • Photograph now rendered crisp and clean, so that we may enjoy them in their 0.009 megapixel goodness.
    • -
    • Cameras should now capture more of what they should, and less of what they shouldn't.
    • -
    -
    - -
    -

    09 February 2014

    -

    ADamDirtyApe updated:

    -
      -
    • The lawyer now spawns with a Sec Headset.
    • -
    -

    Demas updated:

    -
      -
    • Banana peel size is based on banana size.
    • -
    • Bigger peels slip for longer than smaller ones. Remember that produce size is based on potency.
    • -
    • The clown now spawns with a decent sized banana.
    • -
    • The banana mortar now shoots 65 potency peels.
    • -
    -

    Giacom updated:

    -
      -
    • A new hostile statue mob, can only move when not being observed, tends to break lights and cause blindness.
    • -
    -

    Incoming5643 updated:

    -
      -
    • Blob Zombies! When a Blob Spore moves over a dead human body it will infect the body and revive it as a more powerful varient of the spore. Has double the health and deals more damage.
    • -
    -

    Neerti updated:

    -
      -
    • Sec Belts can now hold Stun Batons.
    • -
    • Stun Batons now only take 10 seconds to fully recharge.
    • -
    -

    Razharas updated:

    -
      -
    • Tables can now be used as an alternative way to craft makeshift items. Simply click-drag table to yourself bring up a list.
    • -
    -

    adrix89 updated:

    -
      -
    • Spray Bottles can no longer wet up to three tiles with water.
    • -
    • Spray Bottles have a third higher release volume that wets a single tile.
    • -
    • Water slip times are reduced to the same stun times as soap.
    • -
    -
    - -
    -

    08 February 2014

    -

    MrPerson updated:

    -
      -
    • Added a NanoUI for the SMES
    • -
    -

    Razharas updated:

    -
      -
    • Adds more constructible and deconstructable machines!
    • -
    • Added constructible miniature chemical dispensers, upgradable
    • -
    • Sleepers are now constructible and upgradable, open and close like DNA scanners, and don't require a console
    • -
    • Cryogenic tubes are now constructible and upgradable, open and close like DNA scanners, and you can set the cryogenic tube's pipe's direction by opening its panel and wrenching it to connect it to piping
    • -
    • Telescience pads are now constructible and upgradable
    • -
    • Telescience consoles are now constructible
    • -
    • Telescience tweaked (you can save data on GPS units now)
    • -
    • Teleporters are now constructible and upgradable, the console has a new interface and you can lock onto places saved to GPS units in telescience
    • -
    • Teleporters start unconnected. You need to manually reconnect the console, station and hub by opening the panel of the station and applying wire cutters to it.
    • -
    • Biogenerators are now constructible and upgradable
    • -
    • Atmospherics heaters and freezers are now constructible and upgradable and can be rotated with a wrench when their panel is open to connect them to pipes. Screw the board to switch between heater and freezer.
    • -
    • Mech chargers are now constructible and upgradable
    • -
    • Microwaves are now constructible and upgradable
    • -
    • All kitchen machinery can now be wrenched free
    • -
    • SMES are now constructible
    • -
    • Dragging a human's sprite to a cryogenic tube or sleeper will put them inside and activate it if it's cryo
    • -
    • Constructible newscasters, their frames are made with autolathes
    • -
    • Constructible pandemics
    • -
    • Constructible power turbines and their computers
    • -
    • Constructible power compressors
    • -
    • Constructible vending machines. Screw the board to switch vendor type.
    • -
    • Constructible hydroponics trays
    • -
    • Sprites for all this
    • -
    • This update will have unforeseen bugs, please report those you find at https://github.com/tgstation/-tg-station/issues/new if you want them fixed.
    • -
    • As usual, machines are deconstructed by screwing open their panels and crowbarring them. While constructing machines, examining them will tell you what parts you're missing.
    • -
    -
    - -
    -

    05 February 2014

    -

    Yota updated:

    -
      -
    • Handling a couple flashlights will no longer transform you into the sun. Each light source will have deminishing returns.
    • -
    • Inserting lights into containers should no longer dim other lights.
    • -
    -
    - -
    -

    03 February 2014

    -

    Demas updated:

    -
      -
    • Changes windoor and newscaster attack messages to be consistent with windows and grilles. This removes the distracting boldness from windoor attack messages, which is reserved for userdanger, and names the attacker.
    • -
    • Thrown items now play a sound effect on impact. The volume of the sound is based on the item's throwforce and/or weight class.
    • -
    • The fireaxe now has 15 throwforce, when previously it had only 1. But why would you throw it away, anyway?
    • -
    • Projectiles now play a sound upon impact. The volume of the sound depends on the damage done by the projectile. Damageless projectiles such as electrodes have static volumes. Practise laser and laser tag beams have no impact sound.
    • -
    • Added sear.ogg for the impacts of damaging beams such as lasers. It may be replaced if player feedback proves negative.
    • -
    -
    - -
    -

    02 February 2014

    -

    Demas updated:

    -
      -
    • Attack sounds for all melee weapons! No more silent attacks.
    • -
    • The volume of an object's attack sound is based on the weapon's force and/or weight class.
    • -
    • Welders, lighters, matches, cigarettes, energy swords and energy axes have different attack sounds based on whether they're on or off.
    • -
    • Weapons that do no damage play a tap sound. The exceptions are the bike horn, which still honks, and the banhammer, which plays adminhelp.ogg. Surely nothing can go wrong with that last one.
    • -
    • When you tap someone with an object, the message now uses "tapped" or "patted" instead of attacked. The horn still uses HONKED, and the banhammer still uses BANNED.
    • -
    • You won't get the "armour has blocked an attack" message for harmless attacks anymore.
    • -
    • Adds 5 force to the lighter when it's lit. Same as when you accidentally burn yourself lighting it.
    • -
    • Removes boldness from item attack messages on non-human mobs. The attack is bolded for a player controlling a non-human mob. Now your eyes won't jump to the chat when it's Pun Pun who's being brutalised.
    • -
    • Blood will no longer come out of non-human mobs if the attack is harmless.
    • -
    • Adds a period at the end of the catatonic human examine message. That's been bugging me for years.
    • -
    • The activation and deactivation sounds of toy swords, energy swords and energy shields are slightly quieter. Energy swords and shields are now slightly louder than toys.
    • -
    • You can no longer light things with burnt matches.
    • -
    • Match, cigarette and lighter attack verbs, forces and damage types change based on whether the object is lit or not.
    • -
    • Fixes a bug with the energy blade that kept it at weight class 5 after it was deactivated. Who cares, it disappears upon deactivation.
    • -
    • Changes the welder out of fuel message slightly to be less fragmented.
    • -
    • Removes dead air from a lot of weapon sound effects to make them more responsive. In other words, the fire extinguisher attack sound will play a lot sooner after you attack than before.
    • -
    • Equalised the peak volumes of most weapon sounds to be -0.1dB in an attempt to make volumes based on force more consistent across different sounds.
    • -
    -
    - -
    -

    01 February 2014

    -

    Ergovisavi updated:

    -
      -
    • Walking Mushrooms will now attack and eat each other! They're all a little unique from each other, no two shrooms are exactly alike, and a better quality harvest means stronger Walking Shrooms. Pit them against each other for your entertainment.
    • -
    • Each mushroom will have a different colored cap to identify them. When mushrooms eat each other, they get stronger. The resulting mushroom will drop more slices when cut down to harvest, and will have better quality slices.
    • -
    • Don't hurt them yourself, though, or you'll bruise them, and mushrooms won't get stronger from eating a bruised mushroom. If your mushroom faints, feed it a mushroom such as a plump helmet to get it back on its feet. It will slowly regenerate to full health eventually.
    • -
    -
    - -
    -

    30 January 2014

    -

    Balrog updated:

    -
      -
    • Syndicate Playing Cards can now be found on the Syndicate Mothership and purchased from uplinks for 1 telecrystal.
    • -
    • Syndicate Playing Cards are lethal weapons both in melee and when thrown, but make the user's true allegiance to the Syndicate obvious.
    • -
    • Sprites are courtesy of Nienhaus.
    • -
    -

    Demas updated:

    -
      -
    • Adds thud sounds to falling over
    • -
    • Known bug: Thuds play when cloning initialises or someone is put into cryo. This will be fixed.
    • -
    -

    Ergovisavi updated:

    -
      -
    • Gibtonite, the explosive ore, can now be found on the asteroid. It's very hard to tell between it and diamonds, at first glance.
    • -
    • Gibtonite deposits will blow up after a countdown when you attempt to mine it, but you can stop it with an analyzer at any time. It makes for a good mining explosive.
    • -
    • The closer you were to the explosion when you analyze the Gibtonite deposit, the better the Gibtonite you can get from it.
    • -
    • Once extracted, it must be struck with a pickaxe or drill to activate it, where it will go through its countdown again to explode!
    • -
    • Explosives will no longer destroy the ore inside of asteroid walls or lying on the floor.
    • -
    -

    Miauw updated:

    -
      -
    • Adds changeling arm blades that cost 20 chems and do 25 brute damage.
    • -
    • Arm blades can pry open unpowered doors, replace surgical saws in brain removal, slice tables and smash computers.
    • -
    -

    MrPerson updated:

    -
      -
    • Mobs now lie down via turning icons rather than preturned sprites.
    • -
    • You can lie down facing up or down and the turn can be 90 degrees clockwise or counterclockwise.
    • -
    • Resting will always make you lie to the right so you look good on beds.
    • -
    • Please report any bugs you find with this system.
    • -
    -

    Petethegoat updated:

    -
      -
    • Increased the walk speed. Legcuffed speed is unaffected, and is still suffering.
    • -
    • Sped up alien drones, they are now the same speed as sentinels.
    • -
    -
    - -
    -

    28 January 2014

    -

    Demas updated:

    -
      -
    • Adds thud sounds to falling over
    • -
    • Known bug: Thuds play when cloning initialises or someone is put into cryo. This will be fixed.
    • -
    -
    - -
    -

    26 January 2014

    -

    Balrog updated:

    -
      -
    • Syndicate Playing Cards can now be found on the Syndicate Mothership and purchased from uplinks for 1 telecrystal.
    • -
    • Syndicate Playing Cards are lethal weapons both in melee and when thrown, but make the user's true allegiance to the Syndicate obvious.
    • -
    • Sprites are courtesy of Nienhaus.
    • -
    -
    - -
    -

    25 January 2014

    -

    Miauw updated:

    -
      -
    • Adds changeling arm blades that cost 20 chems and do 25 brute damage.
    • -
    • Arm blades can pry open unpowered doors, replace surgical saws in brain removal, slice tables and smash computers.
    • -
    -
    - -
    -

    24 January 2014

    -

    Ergovisavi updated:

    -
      -
    • Gibtonite, the explosive ore, can now be found on the asteroid. It's very hard to tell between it and diamonds, at first glance.
    • -
    • Gibtonite deposits will blow up after a countdown when you attempt to mine it, but you can stop it with an analyzer at any time. It makes for a good mining explosive.
    • -
    • The closer you were to the explosion when you analyze the Gibtonite deposit, the better the Gibtonite you can get from it.
    • -
    • Once extracted, it must be struck with a pickaxe or drill to activate it, where it will go through its countdown again to explode!
    • -
    • Explosives will no longer destroy the ore inside of asteroid walls or lying on the floor.
    • -
    -
    - -
    -

    21 January 2014

    -

    MrPerson updated:

    -
      -
    • Mobs now lie down via turning icons rather than preturned sprites.
    • -
    • You can lie down facing up or down and the turn can be 90 degrees clockwise or counterclockwise.
    • -
    • Resting will always make you lie to the right so you look good on beds.
    • -
    • Please report any bugs you find with this system.
    • -
    -
    - -
    -

    19 January 2014

    -

    KazeEspada updated:

    -
      -
    • The water cooler is now stocked with paper cups. You can refill the cups by putting paper in it.
    • -
    -

    Rolan7 updated:

    -
      -
    • You can now sell mutant seeds, from hydroponics, to Centcom via the supply shuttle.
    • -
    • Fixes powersinks causing APCs to stop automatically recharging.
    • -
    -
    - -
    -

    17 January 2014

    -

    ManeaterMildred updated:

    -
      -
    • Changed the way the Gygax worked. It now has less defense and shot deflection, but is faster and have less battery drain per step.
    • -
    • Nerfed the Carbine's brute damage and renamed it to FNX-99 "Hades" Carbine.
    • -
    • Nerfed the Gygax defense from 300 to 250.
      - Nerfed the Gygax projectile deflection chance from 15 to 5.
      - Buffed the Gygax speed from 3 to 2, making it faster.
      - Reduced the battery use when moving from 5 to 3.
      -
      - The Mech Ion Rifle now has a faster cooldown, from 40 to 20.
      - Nerfed the carbine's Brute Damage from 20 to 5.
      -
      - Please post feedback to these changes on the forums. -







    • -
    -
    - -
    -

    15 January 2014

    -

    Dumpdavidson updated:

    -
      -
    • EMPs affect the equipment of a human again.
    • -
    • EMP flashlight now recharges over time and its description no longer reveals the illegal nature of the device.
    • -
    • EMP implant now has two uses.
      EMP kit now contains two grenades.
    • -
    -
    - -
    -

    14 January 2014

    -

    Fleure updated:

    -
      -
    • Added spider butchery.
    • -
    • Added spider meat, legs, and edible eggs.
    • -
    • Added new spider related meals.
    • -
    -

    Giacom updated:

    -
      -
    • Because of an emagged cyborg's explosion, the MMI will die with it.
    • -
    • The self-respiration symptom will now properly keep you from dying of oxygen loss.
    • -
    • The Stimulant symptom's activation chance was increased so you had a constant flow of hyperzine.
    • -
    -

    Incoming updated:

    -
      -
    • A new training bomb has been added to the armoury, which will allow you to train your wire cutting skills to disarm real syndicate bombs.
    • -
    -

    ManeaterMildred updated:

    -
      -
    • Updated research designs.
    • -
    • The Protolathe can now build a Ion Rifle.
    • -
    • The Exosuit Fabricator can now build a Mech Ion Rifle, a Mech Carbine and a Mech-Mounted Missile Rack.
    • -
    -

    SirBayer updated:

    -
      -
    • Armor now reduces damage by the protection percentage, instead of randomly deciding to half or full block damage by those percentages.
    • -
    • Shotguns, with buckshot shells, will fire a spread of pellets at your target, like a real shotgun blast.
    • -
    -
    - -
    -

    12 January 2014

    -

    VistaPOWA updated:

    -
      -
    • Added Syndicate Cyborgs.
    • -
    • They can be ordered for 25 telecrystals by Nuclear Operatives. A ghost / observer with "Be Operative" ticked in their game options will be chosen to control it.
    • -
    • Their loadout is: Crowbar, Flash, Emag, Esword, Ebow, Laser Rifle. Each weapon costs 100 charge to fire, except the Esword, which has a 500 charge hitcost. Each borg is equipped with a 25k cell by default.
    • -
    • Syndicate borgs can hear the binary channel, but they won't show up on the Robotics Control computer or be visible to the AI. Their lawset is the standard emag one.
    • -
    • Added two cyborg recharging stations to the Syndicate Shuttle.
    • -
    -
    - -
    -

    11 January 2014

    -

    Cheridan updated:

    -
      -
    • You can now upgrade laser pointers with micro laser parts. It will increase the chance of blinding people.
    • -
    -

    Errorage updated:

    -
      -
    • Cyborg modules now use a new UI, which is much quicker than a menu.
    • -
    -

    Giacom updated:

    -
      -
    • The game will now have all background operations disabled, this will result in smoother gameplay but may result in some spike lags, before being set back to normal. The gradually increasing lag should now be gone.
    • -
    • You can now emag the crusher, in disposals, to remove the safety. You can use a screwdriver to reset it to the default factory settings.
    • -
    • The toxin compensation symptom will stop giving you toxin damage while at full health.
    • -
    -

    JJRCop updated:

    -
      -
    • The new nuke toy can now be found in your local arcade machine.
    • -
    -
    - -
    -

    10 January 2014

    -

    ChuckTheSheep updated:

    -
      -
    • Morgue Trays can detect players in their bodies and will now change colour depending on a few things. Red = Dead body with no player inside. Orange = No body but items. Green = A dead body with a player inside.
    • -
    -

    Giacom updated:

    -
      -
    • You can whisper while in critical, but you will immediately die afterwards DRAMATICALLY. The closer you are to death, the less you can say.
    • -
    • The wizard won't spawn so much smoke after they blink.
    • -
    • The detective's forensic scanner was upgraded so that it can now scan from afar.
    • -
    • Made the ghost's follow button less buggy. Please make an issue report if it still bugs out.
    • -
    -

    Rumia29, Nienhaus updated:

    -
      -
    • A new alt RD uniform spawns in his locker.
    • -
    -
    - -
    -

    07 January 2014

    -

    Fleure updated:

    -
      -
    • Janitor now spawns with a service headset.
    • -
    • Backpack watertank slowdown decreased.
    • -
    -
    - -
    -

    04 January 2014

    -

    Razharas updated:

    -
      -
    • Constructable machines now depend on R&D; parts!
    • -
    • DNA scanner: Laser quality lessens irradiation. Manipulator quality drastically improves precision (9x for best part) and scanner quality allows you to scan suicides/ling husks, with the best part enabling the cloner's autoprocess button, making it scan people in the scanner automatically.
    • -
    • Clone pod: Manipulator quality improves the speed of cloning. Scanning module quality affects with how much health people will be ejected, will they get negative mutation/no mutations/clean of all mutations/random good mutation, at best quality will enable clone console's autoprocess button and will try to clone all the dead people in records automatically, together with best DNA scanner parts cloning console will be able to work in full automatic regime autoscanning people and autocloning them.
    • -
    • Borg recharger: Capacitors' quality and powercell max charge affect the speed at which borgs recharge. Manipulator quality allows borg to be slowly repaired while inside the recharges, best manipulator allows even fire damage to be slowly repaired.
    • -
    • Portable power generators: Capacitors' quality produce more power. Better lasers consume less fuel and reduce heat production PACMAN with best parts can keep whole station powered with about sheet of plamsa per minute (approximately, wasn't potent enough to test).
    • -
    • Autolathe: Better manipulator reduces the production time and lowers the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), stacks' cant be reduced in cost, because thatll make production of infinity metal/glass easy
    • -
    • Protolathe: Manipulators quality affects the cost of things(they will also have less m_amt and g_amt to prevent production of infinity metal), best manipulators reduces the cost 5 times (!)
    • -
    • Circuit imprinter: Manipulator quality affects the cost, best manipulator reduce cost(acid insluded) 4 times, i.e. 20 boards per 100 units of acid
    • -
    • Destructive analyzer: Better parts allow items with less reliability in. Redone how reliability is handled, you now see item reliability in the deconstruction menu and deconstructing items that has same or one point less research type level will rise the reliability of all known designs that has one or more research type requirements as the deconstructed item. Designs of the same type raise in reliability more. Critically broken things rise reliability of the design drastically. Whole reliability system is not used a lot but now at least on the R&D; part it finally matters.
    • -
    -
    - -
    -

    02 January 2014

    -

    Demas updated:

    -
      -
    • Added different colours to departmental radio frequencies. Now you'll be able to filter out or pay attention to each frequency a lot easier.
    • -
    -

    Fleure updated:

    -
      -
    • Fixed bruisepacks and ointments not working.
    • -
    • Fixed injecting/stabbing mouth or eyes when only thick suit worn.
    • -
    -
    - -
    -

    01 January 2014

    -

    Errorage updated:

    -
      -
    • The damage overlay for humans starts a little later than before. It used to start at 10 points of fire + brute damage, it now starts at 35.
    • -
    -
    - -
    -

    31 December 2013

    -

    Fleure updated:

    -
      -
    • Paper no longer appears with words on it when blank input written or photocopied
    • -
    • Vending machine speaker toggle button now works
    • -
    • Building arcade machines works again
    • -
    -
    - -
    -

    27 December 2013

    -

    Giacom updated:

    -
      -
    • Light explosions will no longer gib dead bodies anymore. C4 will function the same and gib anything attached.
    • -
    • Syringe gun projectiles will now display a message when shots are deflected by space suits, biosuits and etc...
    • -
    • You can now move out of sleepers by moving, again.
    • -
    -

    Miauw updated:

    -
      -
    • Monkeys now have a resist button on their HUD.
    • -
    -
    - -
    -

    21 December 2013

    -

    Bobylein updated:

    -
      -
    • Labcoats can now store bottles, beakers, pills, pill bottles and paper.
    • -
    -

    Giacom updated:

    -
      -
    • The Labor Camp has been changed based on feedback. Ore boxes added, internals added, safety pickaxes/shovels (might revert if unliked).
    • -
    • Labor Camp prisoners, who have earned enough points for freedom, will now have to be alone in the shuttle to move it and to open the middle door; this is in order to prevent free'd prisoners from releasing their comrades.
    • -
    • Monkeys no longer walk away when being pulled or grabbed.
    • -
    • Anti-breach shield generators have a greater range, and will cover more exposed space tiles.
    • -
    -

    Jordie updated:

    -
      -
    • Blowing up borgs from the Robotics Console will now actually make them explode. Emagged Cyborgs will explode even more.
    • -
    -

    Nienhaus updated:

    -
      -
    • Added more poster.
    • -
    -

    Perakp updated:

    -
      -
    • You can no longer slip while laying down.
    • -
    -

    RobRichards, Validsalad updated:

    -
      -
    • Added new sprites for the sec-hailer, SWAT gear and riot armour.
    • -
    -
    - -
    -

    18 December 2013

    -

    Adrinus updated:

    -
      -
    • Playing cards, just like the real thing! Play poker, blackjack, go fish, the limits are limitless! Recommended to use space cash as the poker chips for now
    • -
    -

    Giacom updated:

    -
      -
    • THE REALISM: Injectors such as syringes, parapens and hypos will not penetrate coveralls with thick material, this includes space suits, biosuits, bombsuits, and their head slot equivalent. Injectors now also consider where you aim, if you aim for the head it will try to use it through the head slot, otherwise it will aim for the body. To clarify, if you are wearing a space helmet and a doctor tries to inject you while aiming at your head, it will protect you until they aim for the unprotected body; same story for wearing a space suit and not a helmet.
    • -
    • The syndicate shuttle has been heavily upgraded with a brand new technology which allows the blast doors to the entrance of the shuttle to AUTOMATICALLY close. Whoa. This brand new technology will help keep out those snoopy crew members.
    • -
    • Lowered the cooldown of creating virus cultures to 5 seconds. You now only need to mix one unit of synaptizine, in a blood full of an advance virus, to get it to remove a random symptom.
    • -
    -

    Incoming updated:

    -
      -
    • Rounds will no longer end when the wizard dies and there are still apprentices or traitors/survivors..
    • -
    -

    JJRcop updated:

    -
      -
    • Transit tube tweaks. You can now put someone into a transit tube pod using grabs and you can empty a transit tube pod by clicking on it.
    • -
    -

    Jordie0608 updated:

    -
      -
    • Replaced the digital valves in atmospherics with pumps.
    • -
    -
    - -
    -

    14 December 2013

    -

    Incoming updated:

    -
      -
    • Magic Mania! Powerful new magical tools and skills for wizard and crew alike!
    • -
    • Beware the new Summon Magic spell, which will grant the crew access to magical tools and spells and cause some to misuse it!
    • -
    • One Time Spellbooks that can be spawned during summon magic that can teach a low level magic skill to anyone! Beware the effects of reading pre-owned books, the magical rights management is potent! -
    • Magical Wands that can be spawned during Summon Magic! They come in a variety of effects that mimic both classical wizard spells and all new ones. They come precharged but lack the means to refill them once their magical energy is depleted... Fire efficently!
    • -
    • Be aware of the new Charge spell, which can take normally useless spent wands and give them new life! This mysterious effect has been found to wear down the overall magical potency of wands over time however. Beyond wands the clever magical user can find ways to use this spell on other things that may benefit from a magical charge...
    • -
    • The Staff of Resurrection, which holds intense healing magics able to defeat death itself! Look out for this invaluable magical tool during castings of Summon Magic.
    • -
    • Be on the lookout for a new apprentice! This noble mage is a different beast from most wizards, trained in the arts of defending and healing. Too bad he still works for the wizard!
    • -
    -
    - -
    -

    09 December 2013

    -

    Giacom updated:

    -
      -
    • New colourful ghost sprites for BYOND members. Sprites by anonus.
    • -
    -
    - -
    -

    08 December 2013

    -

    Rolan7 updated:

    -
      -
    • Leather gloves can be used to removes lights.
    • -
    • Plant, ore, and trash bags have a new option to pick up all items of single type
    • -
    • Creating astroturf now works like sandstone, converting all the grass at once.
    • -
    • Uranium and radium can be used instead of mutagen. 10 can mutate species, 5 or 2 mutate traits. Highly toxic.
    • -
    • Plants require a little light to live. Mushroom require even less (2 units vs 4) and take less damage.
    • -
    -
    - -
    -

    05 December 2013

    -

    Razharas updated:

    -
      -
    • Reworked how ling stings are done, now when you click a sting in the changeling tab it becomes current active sting, the icon of that sting appears under the chem counter, alt+clicking anyone will sting them with current sting, clicking the icon of the sting will unset it.
    • -
    • Monkeys have ling chem counter and active sting icons in their UI.
    • -
    • Going monkey -> human will try to equip the human with everything on the ground below it.
    • -
    -
    - -
    -

    02 December 2013

    -

    Giacom updated:

    -
      -
    • A less annoying virology system! From now on, you can only get low level virus symptoms from virus food, medium level virus symptoms from unstable mutagen and high level virus symptoms from liquid plasma. You can find a list of symptoms, and which chemicals are required to get them, here: http://wiki.ss13.eu/index.php/Infections#Symptoms_Table
    • -
    • The virologist starts with a bottle of plasma in his smart fridge.
    • -
    • Made it so you cannot accidentally click in the gaps between chem masters.
    • -
    -
    - -
    -

    01 December 2013

    -

    cookingboy3 updated:

    -
      -
    • Added three new buttons to the sandbox panel.
    • -
    • Removed canister menu, replaced it with buttons.
    • -
    • Players can no longer spawn "dangerous" canisters in sandbox, such as Plasma, N20, CO2, and Nitrogen.
    • -
    -
    - -
    -

    30 November 2013

    -

    Yota updated:

    -
      -
    • The identification console will now require that ID and job names follow the same restrictions as player names.
    • -
    • NTSL scripts and parrots should now handle apostrophes and such properly. It&#39;s about time.
    • -
    • NTSL scripts now have a better sense of time.
    • -
    -
    - -
    -

    28 November 2013

    -

    Malkevin updated:

    -
      -
    • Made the suit storage on the Captain's Tunic more useful than just a place to store your e-o2 tank. You can now store the nuke disk, stamps, medal box, flashes and melee weapons (mainly intended for the Chain of Command), and of course - smoking paraphernalia
    • -
    -
    - -
    -

    27 November 2013

    -

    RobRichards updated:

    -
      -
    • Nanotrasen surgeons are now certified to perform Limb replacements, The robotic parts used in construction of Nanotrasen Cyborgs are the only parts authorized for crew augmentation, these replacement limbs can be repaired with standard welding tools and cables.
    • -
    -
    - -
    -

    17 November 2013

    -

    Laharl Montgommery updated:

    -
      -
    • AI can now anchor and unanchor itself. In short, it means the AI can be dragged, if it wants to.
    • -
    -
    - -
    -

    16 November 2013

    -

    Kyrahabattoir updated:

    -
      -
    • Added restocking units for the snack, softdrinks, cigarettes, booze and hot drinks vending machines, can be ordered in cargo.
    • -
    • Vending machines need their service screwed on in order to dispense products.
    • -
    -
    - -
    -

    15 November 2013

    -

    Giacom updated:

    -
      -
    • Added bluespace crystals, mysterious crystals which have strange properties when you crush them in your hand or throw them at someone. You can make bluespace crystals via slimes or research.
    • -
    • Telescience Update! The telescience doesn't start 100% effecient anymore and you need to create bluespace crystals and put them into the telescience computer.
    • -
    • The telepad is now more random, along with power, bearing and angle will be randomly offset a bit.
    • -
    -
    - -
    -

    11 November 2013

    -

    Fleure updated:

    -
      -
    • Players can now escape from containers of various kinds, such as sleepers, mechs, gibbers, spider cocoons etc with the resist verb. In some cases this is the only way to escape and overrides movement or older eject verbs.
    • -
    -
    - -
    -

    09 November 2013

    -

    Yota updated:

    -
      -
    • Along with a NanoUI upgrade, the human interface lock of APCs can now be toggled by the AI.
    • -
    • NanoUI dialogs will no longer steal keyboard focus when opened.
    • -
    -
    - -
    -

    06 November 2013

    -

    Cheridan updated:

    -
      -
    • Nuke Ops will now get an amount of telecrystals that scales with the round populaton. Their staging area has been equipped with telecrystal management consoles, which allow to transfer their TC among themselves. Try out the new items available in your uplink!
    • -
    -
    - -
    -

    02 November 2013

    -

    Drovidi Corv updated:

    -
      -
    • Added a forced labor camp to mining. A quota can be assigned to a prisoner's ID at a prisoner management console before he is sent to serve his sentence in the secure area of the labor camp shuttle. Laborers are advised that breaching space from the asteroid may be unwise.
    • -
    -
    - -
    -

    27 October 2013

    -

    Giacom updated:

    -
      -
    • Added the Female VOX AI Announcement System; a vocal announcement system for the AI to announce things on!
    • -
    • Thanks to /vg/ for the sounds and to JJRCop for trimming down the silence to make them sound natural(er).
    • -
    • The VOX Announcement system isn't to be abused, admins should warn AIs who misuse it and ban AIs who misuse it after being warned.
    • -
    -
    - -
    -

    26 October 2013

    -

    Giacom updated:

    -
      -
    • Service Cyborgs now have a violin module.
    • -
    • You can now examine Cyborgs to see their active module.
    • -
    -
    - -
    -

    14 October 2013

    -

    Giacom updated:

    -
      -
    • AIs can now use alt click to get a list of items on the tile, allowing the AI to interact with objects under it. They can also use this to bookmark tiles with valuable equipment, such as APCs, allowing them easy access to the tile, to interact with or to jump to.
    • -
    • New Malf Power: Malf AIs can override a single machine's programming to cause it to rise up and attack everyone in sight.
    • -
    -
    - -
    -

    08 October 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 6: Centcomm will ask borrow the cargo shuttle for top secret shenanigans. They'll always return it though, and sometimes they'll even clean it too (new random event).
    • -
    -
    - -
    -

    06 October 2013

    -

    Ergovisavi updated:

    -
      -
    • Entering a Hotspot will cause you to ignite, but hot air was slightly reduced in deadliness. For every hotspot you enter, you get a little bit harder to be put out, so be wary.
    • -
    -

    Giacom updated:

    -
      -
    • New blob features!
    • -
    • The blob will glow when it is being pulsed from a core/node. Resource/factories have depended on being pulsed to work, but you couldn't see; well now you can.
    • -
    • Overminds can talk! But only to other overminds, but ghosts can hear their conversations.
    • -
    • As a blob overmind you can now use shortcuts to help robust that assistant with the welding tank dangerously close to your core.
    • -
    • Expand = CTRL Click - Rally = Middle Mouse Click - Create Shield = Alt Click
    • -
    -
    - -
    -

    29 September 2013

    -

    RobRichards updated:

    -
      -
    • Nanotrasen Cyborg Upgrades:
      -Standard issue Engineering cyborgs now come equipped with replacement floor tiles which they can replenish at recharge stations.
    • -
    -
    - -
    -

    28 September 2013

    -

    Ergovisavi updated:

    -
      -
    • Mobs can now be lit on fire. Wearing a full firesuit (or similar) will protect you. Extinguishers, Showers, Space, Cryo, Resisting, being splashed with water can all extinguish you. Being splashed with fuel/ethanol/plasma makes you more flammable. Water makes you less flammable.
    • -
    -
    - -
    -

    26 September 2013

    -

    Cheridan updated:

    -
      -
    • Nanotrasen Anomaly Primer:
      - Unstable anomalies have been spotted in your region of space. These anomalies can be hazardous and destructive, though our initial encounters with these space oddities has discovered a method of neutralization. Method follows.
      -

      Step 1. Upon confirmation of an anomaly sighting, report its location. Early detection is key.
      - Step 2. Using an atmospheric analyzer at short range, determine the frequency that the anomaly's core is fluctuating at.
      - Step 3. Send a signal through the frequency using a radio signaller. Note that non-specialized signaller devices may possibly lack the frequency range needed.

      - With the anomaly neutralized and the station brought out of danger, inspect the area for any remnants of the anomaly. Properly researched, we believe these events could provide vast amounts of valuable data.
      -Did you find this report helpful?


    • -
    -
    - -
    -

    21 September 2013

    -

    Malkevin updated:

    -
      -
    • Due to complaints about Security not announcing themselves before making arrests NT has now issued it's Sec team with loud hailer integrated gas masks, found in their standard equipment lockers. Users can adjust the mask's level of aggression with a screwdriver.
    • -
    • The sprites could be shaded better. Think you can do better? Post your submissions here.
    • -
    -
    - -
    -

    19 September 2013

    -

    Malkevin updated:

    -
      -
    • Juggernaut's ablative armor has been adjusted. They have a greater chance to reflect lasers however on reflection they take half damage instead of no damage, basically this adjustment means you should be able to kill a Juggernaut with two laser guns instead of four! Also their reflection spread has been greatly widened, enjoy the lightshow
    • -
    • Cargo can now order exile implants.
    • -
    • Checking a collector's last power output via analyzers has been moved to multitools, because that actually made sense (betcha didn't know this existed, I know I didn't)
    • -
    • Analyzers can now be used to check the gas level of the tank in a loaded radiation collector (yay no more crowbars), you can also use them on pipes to check gas levels (yay no more pipe meters)
    • -
    -
    - -
    -

    17 September 2013

    -

    SuperSayu updated:

    -
      -
    • You can no longer strip people through windows and windoors
    • -
    • You can open doors by hand even if there is a firedoor in the way, making firedoor+airlock no longer an unbeatable combination
    • -
    • Ghosts can now click on anything to examine it, or double click to jump to a turf. Double clicking a mob, bot, or (heaven forbid) singularity/Nar-Sie will let you follow it. Double clicking your own corpse re-enters it.
    • -
    • AI can double click a mob to follow it, as well as double clicking turfs to jump.
    • -
    • Ventcrawling mobs can alt-click a vent to start ventcrawling.
    • -
    • Telekinesis is now part of the click system. You can click on buttons, items, etc, without having a telekinetic throw in hand; the throw will appear when you click on something you can move (with your mind).
    • -
    -
    - -
    -

    13 September 2013

    -

    JJRcop updated:

    -
      -
    • We at Nanotrasen would like to assure you that we know the pain of waiting five minutes for the emergency shuttle to be dispatched in a high-alert situation due to our confirmation-of-distress policy. Therefore, we have amended our confirmation-of-distress policy so that, in the event of a red alert, the distress confirmation period is shortened to three minutes and we will hurry in preparing the shuttle for transit. This totals to 6 minutes, in hope that it will give our very expensive equipment a better chance of recovery.
    • -
    -
    - -
    -

    12 September 2013

    -

    AndroidSFV updated:

    -
      -
    • AI Photography: AIs now have two new verbs, Take Picture and View Picture. The pictures the AI takes are centered on the AI's eyeobj. You can use these pictures on a newscaster, and print them at a photocopier.
    • -
    -
    - -
    -

    03 September 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 5: Chef gets a Nanotrasen-issued icecream machine with four pre-approved icecream flavours and two official cone types.
    • -
    -
    - -
    -

    02 September 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 4: Humans, aliens and cyborgs now show speech bubbles when they talk.
    • -
    -
    - -
    -

    01 September 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 3: Detective can reskin his gun to one of five variants: Leopard Spots, Gold Trim, Black Panther, Peacemaker and the Original.
    • -
    -
    - -
    -

    31 August 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 2: RD, lawyers and librarians now spawn with a laser pointer. Don't point them in anyone's eyes!
    • -
    -
    - -
    -

    30 August 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 1: Added ghost chilis as a mutation of chili plants. Be careful, they're one of the hottest foods in the galaxy!
    • -
    -
    - -
    -

    21 August 2013

    -

    Dumpdavidson updated:

    -
      -
    • Replaced the EMP grenades from the uplink with an EMP kit. The kit contains a grenade, an implant and a flashlight with 5 uses that can EMP any object or mob in melee range.
    • -
    -
    - -
    -

    18 August 2013

    -

    Delicious updated:

    -
      -
    • Made time and date consistent across medical and security records, mecha logs and detective scanner reports
    • -
    • Added date to PDA
    • -
    -
    - -
    -

    13 August 2013

    -

    Giacom updated:

    -
      -
    • Malf AIs now have a new power which will spawn a "borging machine". This machine will turn living humans into loyal cyborgs which the AI can use to take over the station with. The AI will limit themselves by using this ability, such as no shunting, and the machine will have a long cooldown usage.
    • -
    -
    - -
    -

    12 August 2013

    -

    Giacom updated:

    -
      -
    • Changed the blob balance to make the blob start strong but grow slower, resulting in rounds where the blob doesn't instantly get killed off if found out and doesn't immediately dominate after being left alone long enough. AIs no longer have to quarantine the station.
    • -
    -
    - -
    -

    10 August 2013

    -

    Malkevin updated:

    -
      -
    • Cargo Overhaul: Phase 1
    • -
    • Ported Bay's cargo computer categoy system
    • -
    • Crates have been tweaked significantly. Crates have been reduced to single item types where possible, namely with expensive crates such as weapons and armor. A total of 28 new crates have been added, including chemical and tracking implants, and raw materials can also be bought from cargo for a significant number of points (subject to change)
    • -
    • This was a pretty large edit of repetitive data, so no doubt I've made a mistake or two. Please report any bugs to the usual place
    • -
    -
    - -
    -

    06 August 2013

    -

    Giacom updated:

    -
      -
    • NTSL no longer allows you to use a function within another function parameter. This was changed to help prevent server crashes; if your working script no longer compiles this is why.
    • -
    -
    - -
    -

    05 August 2013

    -

    Kaze Espada updated:

    -
      -
    • Nanotrasen has recentely had to change its provider of alcoholic beverages to a provider of lower quality. Cases of the old ailment known as alcohol poisoning have returned. Bar goers are to be weary of this new condition.
    • -
    -
    - -
    -

    04 August 2013

    -

    Giacom updated:

    -
      -
    • Nanotrasen has re-arranged the station blueprint designs to have non-essential APCs moved to the maintenance hallways. Non-essential rooms that aren't connected to a maintenance hallway will have their APC remain. Station Engineers will now have easy access to a room's APC without needing access themselves. Nanotrasen also wishes to remind you that you should not sabotage these easy to access APCs to cause distractions or to lockdown someone in a location. Thank you for reading.
    • -
    -
    - -
    -

    31 July 2013

    -

    Ricotez updated:

    -
      -
    • Atmospherics now has its own hardsuit. Instead of radiation protection it offers fire protection.
    • -
    -
    - -
    -

    21 July 2013

    -

    Cheridan updated:

    -
      -
    • Instead of a level-up system where it is possible to acquire all the skills, each skill now costs 1 point, and you can pick up to 5.Husking people, instead of giving you more XP to buy skills, now gives you a skill reset, allowing you to pick new ones.
    • -
    • DNA Extract Sting is now free, and is your main mode of acquiring DNA. You can hold up to 5 DNAs, and as you acquire more, the oldest one is removed. If you're currently using the oldest DNA strand, you will be required to transform before gaining more.
    • -
    • New abilities! An UI indicator for chemical storage! Fun!
    • -
    -

    Malkevin updated:

    -
      -
    • Cultists now start with two words each, and the starting talisman no longer damages you when you use it
    • -
    -
    - -
    -

    16 July 2013

    -

    Malkevin updated:

    -
      -
    • Summary of my recent changes: Added a muzzle and a box of Prisoner ID cards to the perma wing, RnD can make a new combined gas mask with welding visor, added some atmos analyzers to atmospherics, air alarm circuit boards have their own sprites, package wrapped objects will now loop back round to the mail chute instead of auto-rerouting to disposals, and the detective and captain have access to securitrons through their PDA cartridges.
    • -
    -
    - -
    -

    15 July 2013

    -

    Giacom updated:

    -
      -
    • A new item has been added to the syndicate catalog. The AI detector is a device disguised as a multitool; it is not only able to be used as a real multitool but when it detects an AI looking at it, or it's holder, it will turn red to indicate to the holder that he should cease supiscious activities. A great and cheap, to produce, tool for undercover operations involving an AI as the security system.
    • -
    -
    - -
    -

    07 July 2013

    -

    Giacom updated:

    -
      -
    • Revamped blob mode and the blob random event to spawn a player controlled overmind that can expand the blob and upgrade pieces that perform particular functions. This will use resources which the core can slowly generate or you can place blob pieces that will give you more resources.
    • -
    -
    - -
    -

    27 June 2013

    -

    Ikarrus updated:

    -
      -
    • Nanotrasen R&D; released a new firmware patch for their station AIs. Included among the changes is the new ability for AIs to interact with fire doors. R&D; officials state they feel giving station AIs more influence could only lead to good things.
    • -
    -
    - -
    -

    16 June 2013

    -

    Khub updated:

    -
      -
    • Job preferences menu now not only allows you to left-click the level (i.e. [Medium]) to raise it, but also to right-click it to lower it. That means you don't have to cycle through all the levels to get rid of a [Low].
    • -
    -
    - -
    -

    15 June 2013

    -

    Carnie updated:

    -
      -
    • DNA-scanner pods (DNA-modifier + cloning), now open and close in a similar fashion to closets. This means you click on them to open/close them. This change was to fix a number of issues, like items being lost in the scanner-pods.
    • -
    • As a side-effect, borgs can now clone humans. No harm can become a dead human, so they are not necessarily lawbound to clone them, and such tasks are probably best left to qualified genetics staff.
    • -
    -

    Petethegoat updated:

    -
      -
    • Updated chemical grenades. The build process is much the same, except they require an igniter-X assembly instead of a single assembly item. You can also just use a cable coil to get regular grenade behaviour.
    • -
    -
    - -
    -

    09 June 2013

    -

    Ikarrus updated:

    -
      -
    • Server operators may now allow latejoiners to become antagonists. Check game_options.txt for more information.
    • -
    • Server operators may now set how traitors and changelings scale to population. Check game_options.txt for more information.
    • -
    -
    - -
    -

    06 June 2013

    -

    Giacom updated:

    -
      -
    • Emptying someone's pockets won't display a message. In theory you can now pickpocket!
    • -
    -
    - -
    -

    04 June 2013

    -

    Dumpdavidson updated:

    -
      -
    • Headsets can no longer broadcast into a channel that is disabled.
      Headsets now have a button to turn off the power instead of the speaker. This button disables all communication functions.
      EMPs now force affected radios off for about 20 seconds.

    • -
    -
    - -
    -

    02 June 2013

    -

    Ikarrus updated:

    -
      -
    • To reduce costs of security equipment, mounted flashers have been adjusted to use common handheld flashes as their flashbulbs. Although these flashbulbs are more prone to burnout, they can easily be replaced with wirecutters.
    • -
    -
    - -
    -

    25 May 2013

    -

    Ikarrus updated:

    -
      -
    • CentCom announced some minor restructuring within Space Station 13's command structure. Most notable of these changes is the removal of the Head of Personnel's access to the security radio channel. CentCom officials have stated the intention was to make the HoP's role more specialized and less partial towards security.
    • -
    -
    - -
    -

    14 May 2013

    -

    Ikarrus updated:

    -
      -
    • Nanotrasen seeks to further cut operating costs on experimental cyborg units. -
      -Cyborg chassis will now be made from a cheaper but less durable design. -
      -RCDs found on engineering models have been replaced with a smaller model to make room for a metal rods module. -
      -Cyborg arms will no longer be long enough to allow for self-repairs. -
      NOTE: A cyborg's individual modules have been found to become non-operational should the unit sustain too much structural damage.



    • -
    -
    - -
    -

    11 May 2013

    -

    Malkevin updated:

    -
      -
    • SecHuds now check for valid clearance before allowing you to change someone's arrest status. There is only one way to bypass the ID check, and its not the usual way.
    • -
    -
    - -
    -

    07 May 2013

    -

    Ikarrus updated:

    -
      -
    • As a part of the most recent round of budget cuts, toolboxes will now be made with a cheaper but heavier alloy. HR reminds employees to avoid being struck with toolboxes, as toolbox-related injuries are not covered under the company's standard health plan.
    • -
    -
    - -
    -

    05 May 2013

    -

    Rolan7 updated:

    -
      -
    • Cargo manifests from CentComm may contain errors. Stamp them DENIED for refunds. Doesn't apply to secure or large crates. Check the orders console for CentComm feedback.
    • -
    -
    - -
    -

    02 May 2013

    -

    Malkevin updated:

    -
      -
    • You can now weld four floor tiles together to make a metal sheet
    • -
    • The All-In-One Grinder can now grind Metal, Plasteel, Glass, Reinforced Glass, and Wood sheets
    • -
    • Made grey backpacks slightly less ugly
    • -
    -
    - -
    -

    30 April 2013

    -

    Ikarrus updated:

    -
      -
    • Researchers have discovered that glass shards are, in fact, dangerous due to their typically sharp nature. Our internal Safety Committee advises that glass shards only be handled while using Nanotrasen-approved hand-protective equipment.
    • -
    -
    - -
    -

    26 April 2013

    -

    Aranclanos updated:

    -
      -
    • Exosuit fabricators will now need to be manually updated
    • -
    -

    Ikarrus updated:

    -
      -
    • Commanding Officers of Nanotrasen Stations have been issued a box of medals to be awarded to crew members who display exemplary conduct.
    • -
    -
    - -
    -

    24 April 2013

    -

    Carnie updated:

    -
      -
    • DNA reworked: All SE blocks are randomised. DNA-modifier emitter strength affects the size of the change in the hex-character hit. Emitter duration makes it more likely to hit the character you click on. Almost all DNA-modifier functions are on one screen.
      Balancing -will- be off a bit. Is getting halk to hard/easy? Please report bugs/balancing issues/concerns here: http://forums.nanotrasen.com/viewtopic.php?f=15&t;=13083 <3
    • -
    -
    - -
    -

    23 April 2013

    -

    Malkevin updated:

    -
      -
    • Replaced the captain's run of the mill armored vest with his very own unique vest. Offers slightly better bullet protection.
    • -
    -
    - -
    -

    22 April 2013

    -

    Cheridan updated:

    -
      -
    • Stungloves removed 5eva.
    • -
    • Don't rage yet. Makeshift stunprods(similar in function to stungloves) and spears are now craftable. Make them by using a rod on cable restraits, then adding something.
    • -
    • Stun batons/prods now work off power cells, which can be removed and replaced! Use a screwdriver to remove the battery.
    • -
    -

    Malkevin updated:

    -
      -
    • Overhauled the thermal insulation system
    • -
    • All clothing that protected from one side of the thermal spectrum now protects from the other.
    • -
    • Armor (although most don't have full coverage) protects between 160 to 600 kelvin
    • -
    • Firesuits protect between 60 to 30,000 kelvin (Note: Hotspot damage still exists)
    • -
    • CE's hardsuit got its firesuit level protection back
    • -
    • Bomb suits function as ghetto riot gear
    • -
    -
    - -
    -

    17 April 2013

    -

    Giacom updated:

    -
      -
    • If the configuration option is enabled, AIs and or Cyborgs will not be able to communicate vocally. This means they cannot talk normally and need to use alternative methods to do so
    • -
    -
    - -
    -

    10 April 2013

    -

    Cheridan updated:

    -
      -
    • You can now condense capsaicin into pepper spray with chemistry.
    • -
    • Pepper spray made slightly more effective.
    • -
    • Teargas grenades can be obtained in Weapons and Riot crates.
    • -
    • Riot crate comes with 2 sets of gear instead of 3, made cheaper. Beanbag crate removed entirely. Just make more at the autolathe instead. Bureaucracy crate cheaper, now has film roll.
    • -
    • NT bluespace engineers have ironed-out that little issue with the teleporter occasionally malfunctioning and dropping users into deep space. Please note, however, that bluespace teleporters are still sensitive experimental technology, and should be Test Fired before use to ensure proper function.
    • -
    -
    - -
    -

    09 April 2013

    -

    Ikarrus updated:

    -
      -
    • Liquid Plasma have been found to have strange and unexpected results on virion cultures. The executive chief science officer urges virologists to explore the possibilities this new discovery could bring.
    • -
    • After years or research, our scientists have engineered this cutting-edge technology born from the science of shaving. The Electric Space-Razor 5000! It uses moisturizers to refuel your face while you shave with not three, not four, but FIVE lazer-precise inner blades for maximum comfort.
    • -
    -
    - -
    -

    04 April 2013

    -

    Cheridan updated:

    -
      -
    • When an AI shunts into an APC, the pinpointer will begin tracking it. When the AI returns to its core, the pinpointer will go back to locating the nuke disc.
    • -
    • New sechud icons for sec officers/HoS, medical doctors, and loyalty implants.
    • -
    -
    - -
    -

    28 March 2013

    -

    Carnie updated:

    -
      -
    • Empty character slots in your preferences screen will now randomize. So they won't initialise as bald, diaper-clad, white-guys.
    • -
    • Reworked the savefile versioning/updating code. Your preferences data is less likely to be lost.
    • -
    -
    - -
    -

    14 March 2013

    -

    Major_sephiroth updated:

    -
      -
    • You can now light cigarettes with other cigarettes, and candles. And cigars. Light a cigar with a candle! It's possible now!
    • -
    -
    - -
    -

    13 March 2013

    -

    Elo001 updated:

    -
      -
    • You can now open and close job slots for some jobs at any IDcomputer. There is a cooldown when opening or closing a position.
    • -
    -
    - -
    -

    08 March 2013

    -

    Kor updated:

    -
      -
    • You can now construct/destroy bookcases. This is super exciting and game changing.
    • -
    -
    - -
    -

    06 March 2013

    -

    Petethegoat updated:

    -
      -
    • Petethegoat says, "Added a new feature involvi-GLORF"
    • -
    • Overhauled how grabs work. There aren't any interesting mechanical differences yet, but they should be a lot more effective already. You don't have to double click them anymore. Report any bugs with grabbing directly to me, or on the issue tracker.
    • -
    -
    - -
    -

    24 February 2013

    -

    Faerdan updated:

    -
      -
    • Competely new UI overhaul! Most user interface have been converted.
    • -
    -

    Ikarrus updated:

    -
      -
    • AI has been moved back to the center of the station. Telecoms has been moved to engineering.
    • -
    -
    - GoonStation 13 Development Team
    Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 39e182aa729..4f25bdf7b6b 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1,1205 +1,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. --- -2013-02-24: - !!python/unicode 'Faerdan': - - !!python/unicode 'rscadd': !!python/unicode 'Competely new UI overhaul! Most user - interface have been converted.' - !!python/unicode 'Ikarrus': - - !!python/unicode 'tweak': !!python/unicode 'AI has been moved back to the center - of the station. Telecoms has been moved to engineering.' -2013-03-06: - !!python/unicode 'Petethegoat': - - !!python/unicode 'rscadd': !!python/unicode 'Petethegoat says, "Added a new feature - involvi-GLORF"' - - !!python/unicode 'tweak': !!python/unicode 'Overhauled how grabs work. There aren''t - any interesting mechanical differences yet, but they should be a lot more effective - already. You don''t have to double click them anymore. Report any bugs with - grabbing directly to me, or on the issue tracker.' -2013-03-08: - !!python/unicode 'Kor': - - !!python/unicode 'rscadd': !!python/unicode 'You can now construct/destroy bookcases. - This is super exciting and game changing.' -2013-03-13: - !!python/unicode 'Elo001': - - !!python/unicode 'rscadd': !!python/unicode 'You can now open and close job slots - for some jobs at any IDcomputer. There is a cooldown when opening or closing - a position.' -2013-03-14: - !!python/unicode 'Major_sephiroth': - - !!python/unicode 'rscadd': !!python/unicode 'You can now light cigarettes with - other cigarettes, and candles. And cigars. Light a cigar with a candle! It''s - possible now!' -2013-03-28: - !!python/unicode 'Carnie': - - !!python/unicode 'tweak': !!python/unicode 'Empty character slots in your preferences - screen will now randomize. So they won''t initialise as bald, diaper-clad, white-guys.' - - !!python/unicode 'tweak': !!python/unicode 'Reworked the savefile versioning/updating - code. Your preferences data is less likely to be lost.' -2013-04-04: - !!python/unicode 'Cheridan': - - !!python/unicode 'tweak': !!python/unicode 'When an AI shunts into an APC, the - pinpointer will begin tracking it. When the AI returns to its core, the pinpointer - will go back to locating the nuke disc.' - - !!python/unicode 'tweak': !!python/unicode 'New sechud icons for sec officers/HoS, - medical doctors, and loyalty implants.' -2013-04-09: - !!python/unicode 'Ikarrus': - - !!python/unicode 'rscadd': !!python/unicode 'Liquid Plasma have been found to - have strange and unexpected results on virion cultures. The executive chief - science officer urges virologists to explore the possibilities this new discovery - could bring.' - - !!python/unicode 'rscadd': !!python/unicode 'After years or research, our scientists - have engineered this cutting-edge technology born from the science of shaving. - The Electric Space-Razor 5000! It uses moisturizers to refuel your face while - you shave with not three, not four, but FIVE lazer-precise inner blades for - maximum comfort.' -2013-04-10: - !!python/unicode 'Cheridan': - - !!python/unicode 'rscadd': !!python/unicode 'You can now condense capsaicin into - pepper spray with chemistry.' - - !!python/unicode 'tweak': !!python/unicode 'Pepper spray made slightly more effective.' - - !!python/unicode 'tweak': !!python/unicode 'Teargas grenades can be obtained in - Weapons and Riot crates.' - - !!python/unicode 'tweak': !!python/unicode 'Riot crate comes with 2 sets of gear - instead of 3, made cheaper. Beanbag crate removed entirely. Just make more at - the autolathe instead. Bureaucracy crate cheaper, now has film roll. ' - - !!python/unicode 'tweak': !!python/unicode 'NT bluespace engineers have ironed-out - that little issue with the teleporter occasionally malfunctioning and dropping - users into deep space. Please note, however, that bluespace teleporters are - still sensitive experimental technology, and should be Test Fired before use - to ensure proper function.' -2013-04-17: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'If the configuration option is enabled, - AIs and or Cyborgs will not be able to communicate vocally. This means they - cannot talk normally and need to use alternative methods to do so' -2013-04-22: - !!python/unicode 'Cheridan': - - !!python/unicode 'rscdel': !!python/unicode 'Stungloves removed 5eva.' - - !!python/unicode 'rscadd': !!python/unicode 'Don''t rage yet. Makeshift stunprods(similar - in function to stungloves) and spears are now craftable. Make them by using - a rod on cable restraits, then adding something.' - - !!python/unicode 'rscadd': !!python/unicode 'Stun batons/prods now work off power - cells, which can be removed and replaced! Use a screwdriver to remove the battery.' - !!python/unicode 'Malkevin': - - !!python/unicode 'tweak': !!python/unicode 'Overhauled the thermal insulation - system' - - !!python/unicode 'rscadd': !!python/unicode 'All clothing that protected from - one side of the thermal spectrum now protects from the other.' - - !!python/unicode 'wip': !!python/unicode 'Armor (although most don''t have full - coverage) protects between 160 to 600 kelvin' - - !!python/unicode 'wip': !!python/unicode 'Firesuits protect between 60 to 30,000 - kelvin (Note: Hotspot damage still exists)' - - !!python/unicode 'rscadd': !!python/unicode 'CE''s hardsuit got its firesuit level - protection back' - - !!python/unicode 'tweak': !!python/unicode 'Bomb suits function as ghetto riot - gear' -2013-04-23: - !!python/unicode 'Malkevin': - - !!python/unicode 'imageadd': !!python/unicode 'Replaced the captain''s run of - the mill armored vest with his very own unique vest. Offers slightly better - bullet protection.' -2013-04-24: - !!python/unicode 'Carnie': - - !!python/unicode 'experiment': !!python/unicode 'DNA reworked: All SE blocks are - randomised. DNA-modifier emitter strength affects the size of the change in - the hex-character hit. Emitter duration makes it more likely to hit the character - you click on. Almost all DNA-modifier functions are on one screen.
    Balancing - -will- be off a bit. Is getting halk to hard/easy? Please report bugs/balancing - issues/concerns here: http://forums.nanotrasen.com/viewtopic.php?f=15&t;=13083 - <3
    ' -2013-04-26: - !!python/unicode 'Aranclanos': - - !!python/unicode 'tweak': !!python/unicode 'Exosuit fabricators will now need - to be manually updated' - !!python/unicode 'Ikarrus': - - !!python/unicode 'rscadd': !!python/unicode 'Commanding Officers of Nanotrasen - Stations have been issued a box of medals to be awarded to crew members who - display exemplary conduct.' -2013-04-30: - !!python/unicode 'Ikarrus': - - !!python/unicode 'rscadd': !!python/unicode 'Researchers have discovered that - glass shards are, in fact, dangerous due to their typically sharp nature. Our - internal Safety Committee advises that glass shards only be handled while using - Nanotrasen-approved hand-protective equipment.' -2013-05-02: - !!python/unicode 'Malkevin': - - !!python/unicode 'rscadd': !!python/unicode 'You can now weld four floor tiles - together to make a metal sheet' - - !!python/unicode 'rscadd': !!python/unicode 'The All-In-One Grinder can now grind - Metal, Plasteel, Glass, Reinforced Glass, and Wood sheets' - - !!python/unicode 'tweak': !!python/unicode 'Made grey backpacks slightly less - ugly' -2013-05-05: - !!python/unicode 'Rolan7': - - !!python/unicode 'rscadd': !!python/unicode 'Cargo manifests from CentComm may - contain errors. Stamp them DENIED for refunds. Doesn''t apply to secure or - large crates. Check the orders console for CentComm feedback.' -2013-05-07: - !!python/unicode 'Ikarrus': - - !!python/unicode 'tweak': !!python/unicode 'As a part of the most recent round - of budget cuts, toolboxes will now be made with a cheaper but heavier alloy. - HR reminds employees to avoid being struck with toolboxes, as toolbox-related - injuries are not covered under the company''s standard health plan.' -2013-05-11: - !!python/unicode 'Malkevin': - - !!python/unicode 'rscadd': !!python/unicode 'SecHuds now check for valid clearance - before allowing you to change someone''s arrest status. There is only one way - to bypass the ID check, and its not the usual way.' -2013-05-14: - !!python/unicode 'Ikarrus': - - !!python/unicode 'tweak': !!python/unicode "Nanotrasen seeks to further cut operating\ - \ costs on experimental cyborg units. \n\t\t
    -Cyborg chassis will now be\ - \ made from a cheaper but less durable design. \n\t\t
    -RCDs found on engineering\ - \ models have been replaced with a smaller model to make room for a metal rods\ - \ module.\n\t\t
    -Cyborg arms will no longer be long enough to allow for self-repairs.\n\ - \t\t
    NOTE: A cyborg's individual modules have been found to become non-operational\ - \ should the unit sustain too much structural damage.



    " -2013-05-25: - !!python/unicode 'Ikarrus': - - !!python/unicode 'rscdel': !!python/unicode 'CentCom announced some minor restructuring - within Space Station 13''s command structure. Most notable of these changes - is the removal of the Head of Personnel''s access to the security radio channel. - CentCom officials have stated the intention was to make the HoP''s role more - specialized and less partial towards security.' -2013-06-02: - !!python/unicode 'Ikarrus': - - !!python/unicode 'tweak': !!python/unicode 'To reduce costs of security equipment, - mounted flashers have been adjusted to use common handheld flashes as their - flashbulbs. Although these flashbulbs are more prone to burnout, they can easily - be replaced with wirecutters.' -2013-06-04: - !!python/unicode 'Dumpdavidson': - - !!python/unicode 'tweak': !!python/unicode 'Headsets can no longer broadcast into - a channel that is disabled.
    Headsets now have a button to turn off the power - instead of the speaker. This button disables all communication functions.
    EMPs - now force affected radios off for about 20 seconds.

    ' -2013-06-06: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Emptying someone''s pockets won''t - display a message. In theory you can now pickpocket!' -2013-06-09: - !!python/unicode 'Ikarrus': - - !!python/unicode 'rscadd': !!python/unicode 'Server operators may now allow latejoiners - to become antagonists. Check game_options.txt for more information.' - - !!python/unicode 'rscadd': !!python/unicode 'Server operators may now set how - traitors and changelings scale to population. Check game_options.txt for more - information.' -2013-06-15: - !!python/unicode 'Carnie': - - !!python/unicode 'bugfix': !!python/unicode 'DNA-scanner pods (DNA-modifier + - cloning), now open and close in a similar fashion to closets. This means you - click on them to open/close them. This change was to fix a number of issues, - like items being lost in the scanner-pods.' - - !!python/unicode 'rscadd': !!python/unicode 'As a side-effect, borgs can now clone - humans. No harm can become a dead human, so they are not necessarily lawbound - to clone them, and such tasks are probably best left to qualified genetics staff.' - !!python/unicode 'Petethegoat': - - !!python/unicode 'tweak': !!python/unicode 'Updated chemical grenades. The build - process is much the same, except they require an igniter-X assembly instead - of a single assembly item. You can also just use a cable coil to get regular - grenade behaviour.' -2013-06-16: - !!python/unicode 'Khub': - - !!python/unicode 'rscadd': !!python/unicode 'Job preferences menu now not only - allows you to left-click the level (i.e. [Medium]) to raise it, but also to - right-click it to lower it. That means you don''t have to cycle through all - the levels to get rid of a [Low].' -2013-06-27: - !!python/unicode 'Ikarrus': - - !!python/unicode 'rscadd': !!python/unicode 'Nanotrasen R&D; released a new - firmware patch for their station AIs. Included among the changes is the new - ability for AIs to interact with fire doors. R&D; officials state they feel - giving station AIs more influence could only lead to good things.' -2013-07-07: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Revamped blob mode and the blob random - event to spawn a player controlled overmind that can expand the blob and upgrade - pieces that perform particular functions. This will use resources which the - core can slowly generate or you can place blob pieces that will give you more - resources.' -2013-07-15: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'A new item has been added to the - syndicate catalog. The AI detector is a device disguised as a multitool; it - is not only able to be used as a real multitool but when it detects an AI looking - at it, or it''s holder, it will turn red to indicate to the holder that he should - cease supiscious activities. A great and cheap, to produce, tool for undercover - operations involving an AI as the security system.' -2013-07-16: - !!python/unicode 'Malkevin': - - !!python/unicode 'tweak': !!python/unicode 'Summary of my recent changes: Added - a muzzle and a box of Prisoner ID cards to the perma wing, RnD can make a new - combined gas mask with welding visor, added some atmos analyzers to atmospherics, - air alarm circuit boards have their own sprites, package wrapped objects will - now loop back round to the mail chute instead of auto-rerouting to disposals, - and the detective and captain have access to securitrons through their PDA cartridges.' -2013-07-21: - !!python/unicode 'Cheridan': - - !!python/unicode 'rscadd': !!python/unicode 'Instead of a level-up system where - it is possible to acquire all the skills, each skill now costs 1 point, and - you can pick up to 5.Husking people, instead of giving you more XP to buy skills, - now gives you a skill reset, allowing you to pick new ones.' - - !!python/unicode 'rscadd': !!python/unicode 'DNA Extract Sting is now free, and - is your main mode of acquiring DNA. You can hold up to 5 DNAs, and as you acquire - more, the oldest one is removed. If you''re currently using the oldest DNA strand, - you will be required to transform before gaining more.' - - !!python/unicode 'rscadd': !!python/unicode 'New abilities! An UI indicator for - chemical storage! Fun!' - !!python/unicode 'Malkevin': - - !!python/unicode 'rscadd': !!python/unicode 'Cultists now start with two words - each, and the starting talisman no longer damages you when you use it' -2013-07-31: - !!python/unicode 'Ricotez': - - !!python/unicode 'rscadd': !!python/unicode 'Atmospherics now has its own hardsuit. - Instead of radiation protection it offers fire protection.' -2013-08-04: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Nanotrasen has re-arranged the station - blueprint designs to have non-essential APCs moved to the maintenance hallways. - Non-essential rooms that aren''t connected to a maintenance hallway will have - their APC remain. Station Engineers will now have easy access to a room''s APC - without needing access themselves. Nanotrasen also wishes to remind you that - you should not sabotage these easy to access APCs to cause distractions or to - lockdown someone in a location. Thank you for reading.' -2013-08-05: - !!python/unicode 'Kaze Espada': - - !!python/unicode 'rscadd': !!python/unicode 'Nanotrasen has recentely had to change - its provider of alcoholic beverages to a provider of lower quality. Cases of - the old ailment known as alcohol poisoning have returned. Bar goers are to be - weary of this new condition.' -2013-08-06: - !!python/unicode 'Giacom': - - !!python/unicode 'bugfix': !!python/unicode 'NTSL no longer allows you to use - a function within another function parameter. This was changed to help prevent - server crashes; if your working script no longer compiles this is why.' -2013-08-10: - !!python/unicode 'Malkevin': - - !!python/unicode 'wip': !!python/unicode 'Cargo Overhaul: Phase 1' - - !!python/unicode 'rscadd': !!python/unicode 'Ported Bay''s cargo computer categoy - system' - - !!python/unicode 'tweak': !!python/unicode 'Crates have been tweaked significantly. - Crates have been reduced to single item types where possible, namely with expensive - crates such as weapons and armor. A total of 28 new crates have been added, - including chemical and tracking implants, and raw materials can also be bought - from cargo for a significant number of points (subject to change)' - - !!python/unicode 'bugfix': !!python/unicode 'This was a pretty large edit of repetitive - data, so no doubt I''ve made a mistake or two. Please report any bugs to the - usual place' -2013-08-12: - !!python/unicode 'Giacom': - - !!python/unicode 'tweak': !!python/unicode 'Changed the blob balance to make the - blob start strong but grow slower, resulting in rounds where the blob doesn''t - instantly get killed off if found out and doesn''t immediately dominate after - being left alone long enough. AIs no longer have to quarantine the station.' -2013-08-13: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Malf AIs now have a new power which - will spawn a "borging machine". This machine will turn living humans into loyal - cyborgs which the AI can use to take over the station with. The AI will limit - themselves by using this ability, such as no shunting, and the machine will - have a long cooldown usage.' -2013-08-18: - !!python/unicode 'Delicious': - - !!python/unicode 'tweak': !!python/unicode 'Made time and date consistent across - medical and security records, mecha logs and detective scanner reports' - - !!python/unicode 'rscadd': !!python/unicode 'Added date to PDA' -2013-08-21: - !!python/unicode 'Dumpdavidson': - - !!python/unicode 'rscadd': !!python/unicode 'Replaced the EMP grenades from the - uplink with an EMP kit. The kit contains a grenade, an implant and a flashlight - with 5 uses that can EMP any object or mob in melee range.' -2013-08-30: - !!python/unicode 'Cael_Aislinn': - - !!python/unicode 'rscadd': !!python/unicode 'Terbs Fun Week Day 1: Added ghost - chilis as a mutation of chili plants. Be careful, they''re one of the hottest - foods in the galaxy!' -2013-08-31: - !!python/unicode 'Cael_Aislinn': - - !!python/unicode 'rscadd': !!python/unicode 'Terbs Fun Week Day 2: RD, lawyers - and librarians now spawn with a laser pointer. Don''t point them in anyone''s - eyes!' -2013-09-01: - !!python/unicode 'Cael_Aislinn': - - !!python/unicode 'rscadd': !!python/unicode 'Terbs Fun Week Day 3: Detective can - reskin his gun to one of five variants: Leopard Spots, Gold Trim, Black Panther, - Peacemaker and the Original.' -2013-09-02: - !!python/unicode 'Cael_Aislinn': - - !!python/unicode 'rscadd': !!python/unicode 'Terbs Fun Week Day 4: Humans, aliens - and cyborgs now show speech bubbles when they talk.' -2013-09-03: - !!python/unicode 'Cael_Aislinn': - - !!python/unicode 'rscadd': !!python/unicode 'Terbs Fun Week Day 5: Chef gets a - Nanotrasen-issued icecream machine with four pre-approved icecream flavours - and two official cone types.' -2013-09-12: - !!python/unicode 'AndroidSFV': - - !!python/unicode 'rscadd': !!python/unicode "AI Photography: AIs now have two\ - \ new verbs, Take Picture and View Picture. The pictures the AI takes are centered\ - \ on the AI's eyeobj. You can use these pictures on a newscaster, and print\ - \ them at a photocopier.\n\t" -2013-09-13: - !!python/unicode 'JJRcop': - - !!python/unicode 'rscadd': !!python/unicode 'We at Nanotrasen would like to assure - you that we know the pain of waiting five minutes for the emergency shuttle - to be dispatched in a high-alert situation due to our confirmation-of-distress - policy. Therefore, we have amended our confirmation-of-distress policy so that, - in the event of a red alert, the distress confirmation period is shortened to - three minutes and we will hurry in preparing the shuttle for transit. This totals - to 6 minutes, in hope that it will give our very expensive equipment - a better chance of recovery.' -2013-09-17: - !!python/unicode 'SuperSayu': - - !!python/unicode 'bugfix': !!python/unicode 'You can no longer strip people through - windows and windoors' - - !!python/unicode 'bugfix': !!python/unicode 'You can open doors by hand even if - there is a firedoor in the way, making firedoor+airlock no longer an unbeatable - combination' - - !!python/unicode 'rscadd': !!python/unicode 'Ghosts can now click on anything - to examine it, or double click to jump to a turf. Double clicking a mob, bot, - or (heaven forbid) singularity/Nar-Sie will let you follow it. Double clicking - your own corpse re-enters it.' - - !!python/unicode 'rscadd': !!python/unicode 'AI can double click a mob to follow - it, as well as double clicking turfs to jump.' - - !!python/unicode 'rscadd': !!python/unicode 'Ventcrawling mobs can alt-click a - vent to start ventcrawling.' - - !!python/unicode 'wip': !!python/unicode 'Telekinesis is now part of the click - system. You can click on buttons, items, etc, without having a telekinetic - throw in hand; the throw will appear when you click on something you can move - (with your mind).' -2013-09-19: - !!python/unicode 'Malkevin': - - !!python/unicode 'tweak': !!python/unicode 'Juggernaut''s ablative armor has been - adjusted. They have a greater chance to reflect lasers however on reflection - they take half damage instead of no damage, basically this adjustment means - you should be able to kill a Juggernaut with two laser guns instead of four! - Also their reflection spread has been greatly widened, enjoy the lightshow' - - !!python/unicode 'rscadd': !!python/unicode 'Cargo can now order exile implants.' - - !!python/unicode 'tweak': !!python/unicode 'Checking a collector''s last power - output via analyzers has been moved to multitools, because that actually made - sense (betcha didn''t know this existed, I know I didn''t)' - - !!python/unicode 'rscadd': !!python/unicode 'Analyzers can now be used to check - the gas level of the tank in a loaded radiation collector (yay no more crowbars), - you can also use them on pipes to check gas levels (yay no more pipe meters)' -2013-09-21: - !!python/unicode 'Malkevin': - - !!python/unicode 'rscadd': !!python/unicode 'Due to complaints about Security - not announcing themselves before making arrests NT has now issued it''s Sec - team with loud hailer integrated gas masks, found in their standard equipment - lockers. Users can adjust the mask''s level of aggression with a screwdriver. ' - - !!python/unicode 'wip': !!python/unicode 'The sprites could be shaded better. - Think you can do better? Post - your submissions here. ' -2013-09-26: - !!python/unicode 'Cheridan': - - !!python/unicode 'rscadd': !!python/unicode "Nanotrasen Anomaly Primer:
    \n\ - \t\tUnstable anomalies have been spotted in your region of space. These anomalies\ - \ can be hazardous and destructive, though our initial encounters with these\ - \ space oddities has discovered a method of neutralization. Method follows.
    \n\ -

    Step 1. Upon confirmation of an anomaly sighting, report its location. Early\ - \ detection is key.
    \n\t\tStep 2. Using an atmospheric analyzer at short\ - \ range, determine the frequency that the anomaly's core is fluctuating at.
    \n\ - \t\tStep 3. Send a signal through the frequency using a radio signaller. Note\ - \ that non-specialized signaller devices may possibly lack the frequency range\ - \ needed.

    \n\t\tWith the anomaly neutralized and the station brought\ - \ out of danger, inspect the area for any remnants of the anomaly. Properly\ - \ researched, we believe these events could provide vast amounts of valuable\ - \ data.
    \nDid you find this report helpful?


    " -2013-09-28: - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Mobs can now be lit on fire. Wearing - a full firesuit (or similar) will protect you. Extinguishers, Showers, Space, - Cryo, Resisting, being splashed with water can all extinguish you. Being splashed - with fuel/ethanol/plasma makes you more flammable. Water makes you less flammable.' -2013-09-29: - !!python/unicode 'RobRichards': - - !!python/unicode 'rscadd': !!python/unicode 'Nanotrasen Cyborg Upgrades:
    - - Standard issue Engineering cyborgs now come equipped with replacement floor - tiles which they can replenish at recharge stations.
    ' -2013-10-06: - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Entering a Hotspot will cause you - to ignite, but hot air was slightly reduced in deadliness. For every hotspot - you enter, you get a little bit harder to be put out, so be wary.' - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'New blob features!' - - !!python/unicode 'rscadd': !!python/unicode 'The blob will glow when it is being - pulsed from a core/node. Resource/factories have depended on being pulsed to - work, but you couldn''t see; well now you can.' - - !!python/unicode 'rscadd': !!python/unicode 'Overminds can talk! But only to other - overminds, but ghosts can hear their conversations.' - - !!python/unicode 'rscadd': !!python/unicode 'As a blob overmind you can now use - shortcuts to help robust that assistant with the welding tank dangerously close - to your core.' - - !!python/unicode 'rscadd': !!python/unicode 'Expand = CTRL Click - Rally = Middle - Mouse Click - Create Shield = Alt Click' -2013-10-08: - !!python/unicode 'Cael_Aislinn': - - !!python/unicode 'rscadd': !!python/unicode 'Terbs Fun Week Day 6: Centcomm will - ask borrow the cargo shuttle for top secret shenanigans. They''ll always return - it though, and sometimes they''ll even clean it too (new random event).' -2013-10-14: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'AIs can now use alt click to get - a list of items on the tile, allowing the AI to interact with objects under - it. They can also use this to bookmark tiles with valuable equipment, such as - APCs, allowing them easy access to the tile, to interact with or to jump to. ' - - !!python/unicode 'rscadd': !!python/unicode 'New Malf Power: Malf AIs can override - a single machine''s programming to cause it to rise up and attack everyone in - sight.' -2013-10-26: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Service Cyborgs now have a violin - module.' - - !!python/unicode 'rscadd': !!python/unicode 'You can now examine Cyborgs to see - their active module.' -2013-10-27: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Added the Female VOX AI Announcement - System; a vocal announcement system for the AI to announce things on!' - - !!python/unicode 'soundadd': !!python/unicode 'Thanks to /vg/ for the sounds and - to JJRCop for trimming down the silence to make them sound natural(er).' - - !!python/unicode 'experiment': !!python/unicode 'The VOX Announcement system isn''t - to be abused, admins should warn AIs who misuse it and ban AIs who misuse it - after being warned. ' -2013-11-02: - !!python/unicode 'Drovidi Corv': - - !!python/unicode 'rscadd': !!python/unicode "Added a forced labor camp to mining.\ - \ A quota can be assigned to a prisoner's ID at a prisoner management console\ - \ before he is sent to serve his sentence in the secure area of the labor camp\ - \ shuttle. Laborers are advised that breaching space from the asteroid may\ - \ be unwise.\n\t" -2013-11-06: - !!python/unicode 'Cheridan': - - !!python/unicode 'wip': !!python/unicode 'Nuke Ops will now get an amount of telecrystals - that scales with the round populaton. Their staging area has been equipped with - telecrystal management consoles, which allow to transfer their TC among themselves. - Try out the new items available in your uplink!' -2013-11-09: - !!python/unicode 'Yota': - - !!python/unicode 'rscadd': !!python/unicode 'Along with a NanoUI upgrade, the - human interface lock of APCs can now be toggled by the AI.' - - !!python/unicode 'tweak': !!python/unicode 'NanoUI dialogs will no longer steal - keyboard focus when opened.' -2013-11-11: - !!python/unicode 'Fleure': - - !!python/unicode 'rscadd': !!python/unicode 'Players can now escape from containers - of various kinds, such as sleepers, mechs, gibbers, spider cocoons etc with - the resist verb. In some cases this is the only way to escape and overrides - movement or older eject verbs. ' -2013-11-15: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'Added bluespace crystals, mysterious - crystals which have strange properties when you crush them in your hand or throw - them at someone. You can make bluespace crystals via slimes or research.' - - !!python/unicode 'rscadd': !!python/unicode 'Telescience Update! The telescience - doesn''t start 100% effecient anymore and you need to create bluespace crystals - and put them into the telescience computer.' - - !!python/unicode 'rscadd': !!python/unicode 'The telepad is now more random, along - with power, bearing and angle will be randomly offset a bit.' -2013-11-16: - !!python/unicode 'Kyrahabattoir': - - !!python/unicode 'rscadd': !!python/unicode 'Added restocking units for the snack, - softdrinks, cigarettes, booze and hot drinks vending machines, can be ordered - in cargo.' - - !!python/unicode 'tweak': !!python/unicode 'Vending machines need their service - screwed on in order to dispense products.' -2013-11-17: - !!python/unicode 'Laharl Montgommery': - - !!python/unicode 'rscadd': !!python/unicode 'AI can now anchor and unanchor itself. - In short, it means the AI can be dragged, if it wants to.' -2013-11-27: - !!python/unicode 'RobRichards': - - !!python/unicode 'rscadd': !!python/unicode 'Nanotrasen surgeons are now certified - to perform Limb replacements, The robotic parts used in construction of Nanotrasen - Cyborgs are the only parts authorized for crew augmentation, these replacement - limbs can be repaired with standard welding tools and cables.' -2013-11-28: - !!python/unicode 'Malkevin': - - !!python/unicode 'tweak': !!python/unicode 'Made the suit storage on the Captain''s - Tunic more useful than just a place to store your e-o2 tank. You can now store - the nuke disk, stamps, medal box, flashes and melee weapons (mainly intended - for the Chain of Command), and of course - smoking paraphernalia' -2013-11-30: - !!python/unicode 'Yota': - - !!python/unicode 'tweak': !!python/unicode 'The identification console will now - require that ID and job names follow the same restrictions as player names.' - - !!python/unicode 'bugfix': !!python/unicode 'NTSL scripts and parrots should now - handle apostrophes and such properly. It&#39;s about time.' - - !!python/unicode 'bugfix': !!python/unicode 'NTSL scripts now have a better sense - of time.' -2013-12-01: - !!python/unicode 'cookingboy3': - - !!python/unicode 'rscadd': !!python/unicode 'Added three new buttons to the sandbox - panel.' - - !!python/unicode 'tweak': !!python/unicode 'Removed canister menu, replaced it - with buttons.' - - !!python/unicode 'tweak': !!python/unicode 'Players can no longer spawn "dangerous" - canisters in sandbox, such as Plasma, N20, CO2, and Nitrogen.' -2013-12-02: - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'A less annoying virology system! - From now on, you can only get low level virus symptoms from virus food, medium - level virus symptoms from unstable mutagen and high level virus symptoms from - liquid plasma. You can find a list of symptoms, and which chemicals are required - to get them, here: http://wiki.ss13.eu/index.php/Infections#Symptoms_Table ' - - !!python/unicode 'tweak': !!python/unicode 'The virologist starts with a bottle - of plasma in his smart fridge.' - - !!python/unicode 'tweak': !!python/unicode 'Made it so you cannot accidentally - click in the gaps between chem masters.' -2013-12-05: - !!python/unicode 'Razharas': - - !!python/unicode 'tweak': !!python/unicode 'Reworked how ling stings are done, - now when you click a sting in the changeling tab it becomes current active sting, - the icon of that sting appears under the chem counter, alt+clicking anyone will - sting them with current sting, clicking the icon of the sting will unset it.' - - !!python/unicode 'tweak': !!python/unicode 'Monkeys have ling chem counter and - active sting icons in their UI.' - - !!python/unicode 'tweak': !!python/unicode 'Going monkey -> human will try - to equip the human with everything on the ground below it.' -2013-12-08: - !!python/unicode 'Rolan7': - - !!python/unicode 'tweak': !!python/unicode 'Leather gloves can be used to removes - lights.' - - !!python/unicode 'rscadd': !!python/unicode 'Plant, ore, and trash bags have a - new option to pick up all items of single type' - - !!python/unicode 'tweak': !!python/unicode 'Creating astroturf now works like - sandstone, converting all the grass at once.' - - !!python/unicode 'tweak': !!python/unicode 'Uranium and radium can be used instead - of mutagen. 10 can mutate species, 5 or 2 mutate traits. Highly toxic.' - - !!python/unicode 'experiment': !!python/unicode 'Plants require a little light - to live. Mushroom require even less (2 units vs 4) and take less damage.' -2013-12-09: - !!python/unicode 'Giacom': - - !!python/unicode 'imageadd': !!python/unicode 'New colourful ghost sprites for - BYOND members. Sprites by anonus.' -2013-12-14: - !!python/unicode 'Incoming': - - !!python/unicode 'rscadd': !!python/unicode 'Magic Mania! Powerful new magical - tools and skills for wizard and crew alike!' - - !!python/unicode 'rscadd': !!python/unicode 'Beware the new Summon Magic spell, - which will grant the crew access to magical tools and spells and cause some - to misuse it!' - - !!python/unicode 'rscadd': !!python/unicode "One Time Spellbooks that can be spawned\ - \ during summon magic that can teach a low level magic skill to anyone!\ - \ Beware the effects of reading pre-owned books, the magical rights management\ - \ is potent!\n\t\t
  • Magical Wands that can be spawned during\ - \ Summon Magic! They come in a variety of effects that mimic both classical\ - \ wizard spells and all new ones. They come precharged but lack the means to\ - \ refill them once their magical energy is depleted... Fire efficently!
  • \n\ -
  • Be aware of the new Charge spell, which can take normally\ - \ useless spent wands and give them new life! This mysterious effect has been\ - \ found to wear down the overall magical potency of wands over time however.\ - \ Beyond wands the clever magical user can find ways to use this spell on other\ - \ things that may benefit from a magical charge...
  • \n
  • The Staff of Resurrection, which holds intense healing magics able to defeat\ - \ death itself! Look out for this invaluable magical tool during castings of\ - \ Summon Magic.
  • \n
  • Be on the lookout for a new apprentice!\ - \ This noble mage is a different beast from most wizards, trained in the arts\ - \ of defending and healing. Too bad he still works for the wizard!
  • \n" -2013-12-18: - !!python/unicode 'Adrinus': - - !!python/unicode 'rscadd': !!python/unicode 'Playing cards, just like the real - thing! Play poker, blackjack, go fish, the limits are limitless! Recommended - to use space cash as the poker chips for now' - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'THE REALISM: Injectors such as syringes, - parapens and hypos will not penetrate coveralls with thick material, this includes - space suits, biosuits, bombsuits, and their head slot equivalent. Injectors - now also consider where you aim, if you aim for the head it will try to use - it through the head slot, otherwise it will aim for the body. To clarify, if - you are wearing a space helmet and a doctor tries to inject you while aiming - at your head, it will protect you until they aim for the unprotected body; same - story for wearing a space suit and not a helmet.' - - !!python/unicode 'tweak': !!python/unicode 'The syndicate shuttle has been heavily - upgraded with a brand new technology which allows the blast doors to the entrance - of the shuttle to AUTOMATICALLY close. Whoa. This brand new technology will - help keep out those snoopy crew members.' - - !!python/unicode 'tweak': !!python/unicode 'Lowered the cooldown of creating virus - cultures to 5 seconds. You now only need to mix one unit of synaptizine, in - a blood full of an advance virus, to get it to remove a random symptom.' - !!python/unicode 'Incoming': - - !!python/unicode 'tweak': !!python/unicode 'Rounds will no longer end when the - wizard dies and there are still apprentices or traitors/survivors..' - !!python/unicode 'JJRcop': - - !!python/unicode 'tweak': !!python/unicode 'Transit tube tweaks. You can now put - someone into a transit tube pod using grabs and you can empty a transit tube - pod by clicking on it.' - !!python/unicode 'Jordie0608': - - !!python/unicode 'tweak': !!python/unicode 'Replaced the digital valves in atmospherics - with pumps.' -2013-12-21: - !!python/unicode 'Bobylein': - - !!python/unicode 'tweak': !!python/unicode 'Labcoats can now store bottles, beakers, - pills, pill bottles and paper.' - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'The Labor Camp has been changed based - on feedback. Ore boxes added, internals added, safety pickaxes/shovels (might - revert if unliked).' - - !!python/unicode 'tweak': !!python/unicode 'Labor Camp prisoners, who have earned - enough points for freedom, will now have to be alone in the shuttle to move - it and to open the middle door; this is in order to prevent free''d prisoners - from releasing their comrades.' - - !!python/unicode 'tweak': !!python/unicode 'Monkeys no longer walk away when being - pulled or grabbed.' - - !!python/unicode 'tweak': !!python/unicode 'Anti-breach shield generators have - a greater range, and will cover more exposed space tiles.' - !!python/unicode 'Jordie': - - !!python/unicode 'tweak': !!python/unicode 'Blowing up borgs from the Robotics - Console will now actually make them explode. Emagged Cyborgs will explode even - more.' - !!python/unicode 'Nienhaus': - - !!python/unicode 'rscadd': !!python/unicode 'Added more poster.' - !!python/unicode 'Perakp': - - !!python/unicode 'tweak': !!python/unicode 'You can no longer slip while laying - down.' - !!python/unicode 'RobRichards, Validsalad': - - !!python/unicode 'rscadd': !!python/unicode 'Added new sprites for the sec-hailer, - SWAT gear and riot armour.' -2013-12-27: - !!python/unicode 'Giacom': - - !!python/unicode 'tweak': !!python/unicode 'Light explosions will no longer gib - dead bodies anymore. C4 will function the same and gib anything attached.' - - !!python/unicode 'tweak': !!python/unicode 'Syringe gun projectiles will now display - a message when shots are deflected by space suits, biosuits and etc...' - - !!python/unicode 'tweak': !!python/unicode 'You can now move out of sleepers by - moving, again.' - !!python/unicode 'Miauw': - - !!python/unicode 'tweak': !!python/unicode 'Monkeys now have a resist button on - their HUD.' -2013-12-31: - !!python/unicode 'Fleure': - - !!python/unicode 'bugfix': !!python/unicode 'Paper no longer appears with words - on it when blank input written or photocopied' - - !!python/unicode 'bugfix': !!python/unicode 'Vending machine speaker toggle button - now works' - - !!python/unicode 'bugfix': !!python/unicode 'Building arcade machines works again' -2014-01-01: - !!python/unicode 'Errorage': - - !!python/unicode 'tweak': !!python/unicode 'The damage overlay for humans starts - a little later than before. It used to start at 10 points of fire + brute damage, - it now starts at 35.' -2014-01-02: - !!python/unicode 'Demas': - - !!python/unicode 'tweak': !!python/unicode 'Added different colours to departmental - radio frequencies. Now you''ll be able to filter out or pay attention to each - frequency a lot easier.' - !!python/unicode 'Fleure': - - !!python/unicode 'bugfix': !!python/unicode 'Fixed bruisepacks and ointments not - working.' - - !!python/unicode 'bugfix': !!python/unicode 'Fixed injecting/stabbing mouth or - eyes when only thick suit worn.' -2014-01-04: - !!python/unicode 'Razharas': - - !!python/unicode 'rscadd': !!python/unicode 'Constructable machines now depend - on R&D; parts!' - - !!python/unicode 'rscadd': !!python/unicode 'DNA scanner: Laser quality lessens - irradiation. Manipulator quality drastically improves precision (9x for best - part) and scanner quality allows you to scan suicides/ling husks, with the best - part enabling the cloner''s autoprocess button, making it scan people in the - scanner automatically.' - - !!python/unicode 'rscadd': !!python/unicode 'Clone pod: Manipulator quality improves - the speed of cloning. Scanning module quality affects with how much health people - will be ejected, will they get negative mutation/no mutations/clean of all mutations/random - good mutation, at best quality will enable clone console''s autoprocess button - and will try to clone all the dead people in records automatically, together - with best DNA scanner parts cloning console will be able to work in full automatic - regime autoscanning people and autocloning them.' - - !!python/unicode 'rscadd': !!python/unicode 'Borg recharger: Capacitors'' quality - and powercell max charge affect the speed at which borgs recharge. Manipulator - quality allows borg to be slowly repaired while inside the recharges, best manipulator - allows even fire damage to be slowly repaired.' - - !!python/unicode 'rscadd': !!python/unicode 'Portable power generators: Capacitors'' - quality produce more power. Better lasers consume less fuel and reduce heat - production PACMAN with best parts can keep whole station powered with about - sheet of plamsa per minute (approximately, wasn''t potent enough to test).' - - !!python/unicode 'rscadd': !!python/unicode 'Autolathe: Better manipulator reduces - the production time and lowers the cost of things(they will also have less m_amt - and g_amt to prevent production of infinity metal), stacks'' cant be reduced - in cost, because thatll make production of infinity metal/glass easy' - - !!python/unicode 'rscadd': !!python/unicode 'Protolathe: Manipulators quality - affects the cost of things(they will also have less m_amt and g_amt to prevent - production of infinity metal), best manipulators reduces the cost 5 times (!)' - - !!python/unicode 'rscadd': !!python/unicode 'Circuit imprinter: Manipulator quality - affects the cost, best manipulator reduce cost(acid insluded) 4 times, i.e. - 20 boards per 100 units of acid' - - !!python/unicode 'rscadd': !!python/unicode 'Destructive analyzer: Better parts - allow items with less reliability in. Redone how reliability is handled, you - now see item reliability in the deconstruction menu and deconstructing items - that has same or one point less research type level will rise the reliability - of all known designs that has one or more research type requirements as the - deconstructed item. Designs of the same type raise in reliability more. Critically - broken things rise reliability of the design drastically. Whole reliability - system is not used a lot but now at least on the R&D; part it finally matters. ' -2014-01-07: - !!python/unicode 'Fleure': - - !!python/unicode 'tweak': !!python/unicode 'Janitor now spawns with a service - headset.' - - !!python/unicode 'tweak': !!python/unicode 'Backpack watertank slowdown decreased.' -2014-01-10: - !!python/unicode 'ChuckTheSheep': - - !!python/unicode 'rscadd': !!python/unicode 'Morgue Trays can detect players in - their bodies and will now change colour depending on a few things. Red = Dead - body with no player inside. Orange = No body but items. Green = A dead body - with a player inside.' - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'You can whisper while in critical, - but you will immediately die afterwards DRAMATICALLY. The closer you are to - death, the less you can say.' - - !!python/unicode 'tweak': !!python/unicode 'The wizard won''t spawn so much smoke - after they blink.' - - !!python/unicode 'tweak': !!python/unicode 'The detective''s forensic scanner - was upgraded so that it can now scan from afar.' - - !!python/unicode 'bugfix': !!python/unicode 'Made the ghost''s follow button less - buggy. Please make an issue report if it still bugs out.' - !!python/unicode 'Rumia29, Nienhaus': - - !!python/unicode 'imageadd': !!python/unicode 'A new alt RD uniform spawns in - his locker.' -2014-01-11: - !!python/unicode 'Cheridan': - - !!python/unicode 'rscadd': !!python/unicode 'You can now upgrade laser pointers - with micro laser parts. It will increase the chance of blinding people.' - !!python/unicode 'Errorage': - - !!python/unicode 'rscadd': !!python/unicode 'Cyborg modules now use a new UI, - which is much quicker than a menu.' - !!python/unicode 'Giacom': - - !!python/unicode 'experiment': !!python/unicode 'The game will now have all background - operations disabled, this will result in smoother gameplay but may result in - some spike lags, before being set back to normal. The gradually increasing lag - should now be gone.' - - !!python/unicode 'rscadd': !!python/unicode 'You can now emag the crusher, in - disposals, to remove the safety. You can use a screwdriver to reset it to the - default factory settings.' - - !!python/unicode 'bugfix': !!python/unicode 'The toxin compensation symptom will - stop giving you toxin damage while at full health.' - !!python/unicode 'JJRCop': - - !!python/unicode 'rscadd': !!python/unicode 'The new nuke toy can now be found - in your local arcade machine.' -2014-01-12: - !!python/unicode 'VistaPOWA': - - !!python/unicode 'rscadd': !!python/unicode 'Added Syndicate Cyborgs.' - - !!python/unicode 'rscadd': !!python/unicode 'They can be ordered for 25 telecrystals - by Nuclear Operatives. A ghost / observer with "Be Operative" ticked in their - game options will be chosen to control it.' - - !!python/unicode 'rscadd': !!python/unicode 'Their loadout is: Crowbar, Flash, - Emag, Esword, Ebow, Laser Rifle. Each weapon costs 100 charge to fire, except - the Esword, which has a 500 charge hitcost. Each borg is equipped with a 25k - cell by default.' - - !!python/unicode 'rscadd': !!python/unicode 'Syndicate borgs can hear the binary - channel, but they won''t show up on the Robotics Control computer or be visible - to the AI. Their lawset is the standard emag one.' - - !!python/unicode 'rscadd': !!python/unicode 'Added two cyborg recharging stations - to the Syndicate Shuttle.' -2014-01-14: - !!python/unicode 'Fleure': - - !!python/unicode 'rscadd': !!python/unicode 'Added spider butchery.' - - !!python/unicode 'rscadd': !!python/unicode 'Added spider meat, legs, and edible - eggs.' - - !!python/unicode 'rscadd': !!python/unicode 'Added new spider related meals.' - !!python/unicode 'Giacom': - - !!python/unicode 'tweak': !!python/unicode 'Because of an emagged cyborg''s explosion, - the MMI will die with it.' - - !!python/unicode 'bugfix': !!python/unicode 'The self-respiration symptom will - now properly keep you from dying of oxygen loss.' - - !!python/unicode 'bugfix': !!python/unicode 'The Stimulant symptom''s activation - chance was increased so you had a constant flow of hyperzine.' - !!python/unicode 'Incoming': - - !!python/unicode 'rscadd': !!python/unicode 'A new training bomb has been added - to the armoury, which will allow you to train your wire cutting skills to disarm - real syndicate bombs.' - !!python/unicode 'ManeaterMildred': - - !!python/unicode 'rscadd': !!python/unicode 'Updated research designs.' - - !!python/unicode 'rscadd': !!python/unicode 'The Protolathe can now build a Ion - Rifle.' - - !!python/unicode 'rscadd': !!python/unicode 'The Exosuit Fabricator can now build - a Mech Ion Rifle, a Mech Carbine and a Mech-Mounted Missile Rack.' - !!python/unicode 'SirBayer': - - !!python/unicode 'experiment': !!python/unicode 'Armor now reduces damage by the - protection percentage, instead of randomly deciding to half or full block damage - by those percentages.' - - !!python/unicode 'rscadd': !!python/unicode 'Shotguns, with buckshot shells, will - fire a spread of pellets at your target, like a real shotgun blast.' -2014-01-15: - !!python/unicode 'Dumpdavidson': - - !!python/unicode 'bugfix': !!python/unicode 'EMPs affect the equipment of a human - again.' - - !!python/unicode 'tweak': !!python/unicode 'EMP flashlight now recharges over - time and its description no longer reveals the illegal nature of the device.' - - !!python/unicode 'tweak': !!python/unicode 'EMP implant now has two uses.
    - EMP kit now contains two grenades.
    ' -2014-01-17: - !!python/unicode 'ManeaterMildred': - - !!python/unicode 'tweak': !!python/unicode 'Changed the way the Gygax worked. - It now has less defense and shot deflection, but is faster and have less battery - drain per step.' - - !!python/unicode 'tweak': !!python/unicode 'Nerfed the Carbine''s brute damage - and renamed it to FNX-99 "Hades" Carbine.' - - !!python/unicode 'tweak': !!python/unicode "Nerfed the Gygax defense from 300\ - \ to 250.
    \n\t\t\t\t\t\t Nerfed the Gygax projectile deflection chance from\ - \ 15 to 5.
    \n\t\t\t\t\t\t Buffed the Gygax speed from 3 to 2, making it\ - \ faster.
    \n\t\t\t\t\t\t Reduced the battery use when moving from 5 to 3.
    \n\ -
    \n\t\t\t\t\t\t The Mech Ion Rifle now has a faster cooldown, from 40 to\ - \ 20.
    \n\t\t\t\t\t\t Nerfed the carbine's Brute Damage from 20 to 5.
    \n\ -
    \n\t\t\t\t\t\t Please post feedback to these changes on the forums.\n\t\ - \t







    " -2014-01-19: - !!python/unicode 'KazeEspada': - - !!python/unicode 'tweak': !!python/unicode 'The water cooler is now stocked with - paper cups. You can refill the cups by putting paper in it.' - !!python/unicode 'Rolan7': - - !!python/unicode 'rscadd': !!python/unicode 'You can now sell mutant seeds, from - hydroponics, to Centcom via the supply shuttle.' - - !!python/unicode 'bugfix': !!python/unicode 'Fixes powersinks causing APCs to - stop automatically recharging.' -2014-01-21: - !!python/unicode 'MrPerson': - - !!python/unicode 'rscadd': !!python/unicode 'Mobs now lie down via turning icons - rather than preturned sprites.' - - !!python/unicode 'rscadd': !!python/unicode 'You can lie down facing up or down - and the turn can be 90 degrees clockwise or counterclockwise.' - - !!python/unicode 'tweak': !!python/unicode 'Resting will always make you lie to - the right so you look good on beds.' - - !!python/unicode 'wip': !!python/unicode 'Please report any bugs you find with - this system.' -2014-01-24: - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Gibtonite, the explosive ore, can - now be found on the asteroid. It''s very hard to tell between it and diamonds, - at first glance.' - - !!python/unicode 'rscadd': !!python/unicode 'Gibtonite deposits will blow up after - a countdown when you attempt to mine it, but you can stop it with an analyzer - at any time. It makes for a good mining explosive.' - - !!python/unicode 'rscadd': !!python/unicode 'The closer you were to the explosion - when you analyze the Gibtonite deposit, the better the Gibtonite you can get - from it.' - - !!python/unicode 'rscadd': !!python/unicode 'Once extracted, it must be struck - with a pickaxe or drill to activate it, where it will go through its countdown - again to explode!' - - !!python/unicode 'tweak': !!python/unicode 'Explosives will no longer destroy - the ore inside of asteroid walls or lying on the floor.' -2014-01-25: - !!python/unicode 'Miauw': - - !!python/unicode 'rscadd': !!python/unicode 'Adds changeling arm blades that cost - 20 chems and do 25 brute damage.' - - !!python/unicode 'rscadd': !!python/unicode 'Arm blades can pry open unpowered - doors, replace surgical saws in brain removal, slice tables and smash computers.' -2014-01-26: - !!python/unicode 'Balrog': - - !!python/unicode 'rscadd': !!python/unicode 'Syndicate Playing Cards can now be - found on the Syndicate Mothership and purchased from uplinks for 1 telecrystal.' - - !!python/unicode 'rscadd': !!python/unicode 'Syndicate Playing Cards are lethal - weapons both in melee and when thrown, but make the user''s true allegiance - to the Syndicate obvious.' - - !!python/unicode 'imageadd': !!python/unicode 'Sprites are courtesy of Nienhaus.' -2014-01-28: - !!python/unicode 'Demas': - - !!python/unicode 'rscadd': !!python/unicode 'Adds thud sounds to falling over' - - !!python/unicode 'wip': !!python/unicode 'Known bug: Thuds play when cloning initialises - or someone is put into cryo. This will be fixed.' -2014-01-30: - !!python/unicode 'Balrog': - - !!python/unicode 'rscadd': !!python/unicode 'Syndicate Playing Cards can now be - found on the Syndicate Mothership and purchased from uplinks for 1 telecrystal.' - - !!python/unicode 'rscadd': !!python/unicode 'Syndicate Playing Cards are lethal - weapons both in melee and when thrown, but make the user''s true allegiance - to the Syndicate obvious.' - - !!python/unicode 'imageadd': !!python/unicode 'Sprites are courtesy of Nienhaus.' - !!python/unicode 'Demas': - - !!python/unicode 'rscadd': !!python/unicode 'Adds thud sounds to falling over' - - !!python/unicode 'wip': !!python/unicode 'Known bug: Thuds play when cloning initialises - or someone is put into cryo. This will be fixed.' - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Gibtonite, the explosive ore, can - now be found on the asteroid. It''s very hard to tell between it and diamonds, - at first glance.' - - !!python/unicode 'rscadd': !!python/unicode 'Gibtonite deposits will blow up after - a countdown when you attempt to mine it, but you can stop it with an analyzer - at any time. It makes for a good mining explosive.' - - !!python/unicode 'rscadd': !!python/unicode 'The closer you were to the explosion - when you analyze the Gibtonite deposit, the better the Gibtonite you can get - from it.' - - !!python/unicode 'rscadd': !!python/unicode 'Once extracted, it must be struck - with a pickaxe or drill to activate it, where it will go through its countdown - again to explode!' - - !!python/unicode 'tweak': !!python/unicode 'Explosives will no longer destroy - the ore inside of asteroid walls or lying on the floor.' - !!python/unicode 'Miauw': - - !!python/unicode 'rscadd': !!python/unicode 'Adds changeling arm blades that cost - 20 chems and do 25 brute damage.' - - !!python/unicode 'rscadd': !!python/unicode 'Arm blades can pry open unpowered - doors, replace surgical saws in brain removal, slice tables and smash computers.' - !!python/unicode 'MrPerson': - - !!python/unicode 'rscadd': !!python/unicode 'Mobs now lie down via turning icons - rather than preturned sprites.' - - !!python/unicode 'rscadd': !!python/unicode 'You can lie down facing up or down - and the turn can be 90 degrees clockwise or counterclockwise.' - - !!python/unicode 'tweak': !!python/unicode 'Resting will always make you lie to - the right so you look good on beds.' - - !!python/unicode 'wip': !!python/unicode 'Please report any bugs you find with - this system.' - !!python/unicode 'Petethegoat': - - !!python/unicode 'tweak': !!python/unicode 'Increased the walk speed. Legcuffed - speed is unaffected, and is still suffering.' - - !!python/unicode 'tweak': !!python/unicode 'Sped up alien drones, they are now - the same speed as sentinels.' -2014-02-01: - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Walking Mushrooms will now attack - and eat each other! They''re all a little unique from each other, no two shrooms - are exactly alike, and a better quality harvest means stronger Walking Shrooms. - Pit them against each other for your entertainment.' - - !!python/unicode 'rscadd': !!python/unicode 'Each mushroom will have a different - colored cap to identify them. When mushrooms eat each other, they get stronger. - The resulting mushroom will drop more slices when cut down to harvest, and will - have better quality slices.' - - !!python/unicode 'rscadd': !!python/unicode 'Don''t hurt them yourself, though, - or you''ll bruise them, and mushrooms won''t get stronger from eating a bruised - mushroom. If your mushroom faints, feed it a mushroom such as a plump helmet - to get it back on its feet. It will slowly regenerate to full health eventually.' -2014-02-02: - !!python/unicode 'Demas': - - !!python/unicode 'rscadd': !!python/unicode 'Attack sounds for all melee weapons! - No more silent attacks. ' - - !!python/unicode 'tweak': !!python/unicode 'The volume of an object''s attack - sound is based on the weapon''s force and/or weight class.' - - !!python/unicode 'rscadd': !!python/unicode 'Welders, lighters, matches, cigarettes, - energy swords and energy axes have different attack sounds based on whether - they''re on or off.' - - !!python/unicode 'rscadd': !!python/unicode 'Weapons that do no damage play a - tap sound. The exceptions are the bike horn, which still honks, and the banhammer, - which plays adminhelp.ogg. Surely nothing can go wrong with that last one.' - - !!python/unicode 'tweak': !!python/unicode 'When you tap someone with an object, - the message now uses "tapped" or "patted" instead of attacked. The horn still - uses HONKED, and the banhammer still uses BANNED.' - - !!python/unicode 'bugfix': !!python/unicode 'You won''t get the "armour has blocked - an attack" message for harmless attacks anymore.' - - !!python/unicode 'rscadd': !!python/unicode 'Adds 5 force to the lighter when - it''s lit. Same as when you accidentally burn yourself lighting it.' - - !!python/unicode 'rscadd': !!python/unicode 'Removes boldness from item attack - messages on non-human mobs. The attack is bolded for a player controlling a - non-human mob. Now your eyes won''t jump to the chat when it''s Pun Pun who''s - being brutalised.' - - !!python/unicode 'bugfix': !!python/unicode 'Blood will no longer come out of - non-human mobs if the attack is harmless.' - - !!python/unicode 'tweak': !!python/unicode 'Adds a period at the end of the catatonic - human examine message. That''s been bugging me for years.' - - !!python/unicode 'tweak': !!python/unicode 'The activation and deactivation sounds - of toy swords, energy swords and energy shields are slightly quieter. Energy - swords and shields are now slightly louder than toys.' - - !!python/unicode 'bugfix': !!python/unicode 'You can no longer light things with - burnt matches.' - - !!python/unicode 'tweak': !!python/unicode 'Match, cigarette and lighter attack - verbs, forces and damage types change based on whether the object is lit or - not.' - - !!python/unicode 'bugfix': !!python/unicode 'Fixes a bug with the energy blade - that kept it at weight class 5 after it was deactivated. Who cares, it disappears - upon deactivation.' - - !!python/unicode 'tweak': !!python/unicode 'Changes the welder out of fuel message - slightly to be less fragmented.' - - !!python/unicode 'tweak': !!python/unicode 'Removes dead air from a lot of weapon - sound effects to make them more responsive. In other words, the fire extinguisher - attack sound will play a lot sooner after you attack than before. ' - - !!python/unicode 'tweak': !!python/unicode 'Equalised the peak volumes of most - weapon sounds to be -0.1dB in an attempt to make volumes based on force more - consistent across different sounds.' -2014-02-03: - !!python/unicode 'Demas': - - !!python/unicode 'tweak': !!python/unicode 'Changes windoor and newscaster attack - messages to be consistent with windows and grilles. This removes the distracting - boldness from windoor attack messages, which is reserved for userdanger, and - names the attacker.' - - !!python/unicode 'rscadd': !!python/unicode 'Thrown items now play a sound effect - on impact. The volume of the sound is based on the item''s throwforce and/or - weight class.' - - !!python/unicode 'tweak': !!python/unicode 'The fireaxe now has 15 throwforce, - when previously it had only 1. But why would you throw it away, anyway?' - - !!python/unicode 'rscadd': !!python/unicode 'Projectiles now play a sound upon - impact. The volume of the sound depends on the damage done by the projectile. - Damageless projectiles such as electrodes have static volumes. Practise laser - and laser tag beams have no impact sound.' - - !!python/unicode 'soundadd': !!python/unicode 'Added sear.ogg for the impacts - of damaging beams such as lasers. It may be replaced if player feedback proves - negative.' -2014-02-05: - !!python/unicode 'Yota': - - !!python/unicode 'tweak': !!python/unicode 'Handling a couple flashlights will - no longer transform you into the sun. Each light source will have deminishing - returns.' - - !!python/unicode 'bugfix': !!python/unicode 'Inserting lights into containers - should no longer dim other lights.' -2014-02-08: - !!python/unicode 'MrPerson': - - !!python/unicode 'rscadd': !!python/unicode 'Added a NanoUI for the SMES' - !!python/unicode 'Razharas': - - !!python/unicode 'rscadd': !!python/unicode 'Adds more constructible and deconstructable - machines!' - - !!python/unicode 'rscadd': !!python/unicode 'Added constructible miniature chemical - dispensers, upgradable' - - !!python/unicode 'rscadd': !!python/unicode 'Sleepers are now constructible and - upgradable, open and close like DNA scanners, and don''t require a console' - - !!python/unicode 'rscadd': !!python/unicode 'Cryogenic tubes are now constructible - and upgradable, open and close like DNA scanners, and you can set the cryogenic - tube''s pipe''s direction by opening its panel and wrenching it to connect it - to piping' - - !!python/unicode 'rscadd': !!python/unicode 'Telescience pads are now constructible - and upgradable' - - !!python/unicode 'rscadd': !!python/unicode 'Telescience consoles are now constructible' - - !!python/unicode 'rscadd': !!python/unicode 'Telescience tweaked (you can save - data on GPS units now)' - - !!python/unicode 'rscadd': !!python/unicode 'Teleporters are now constructible - and upgradable, the console has a new interface and you can lock onto places - saved to GPS units in telescience' - - !!python/unicode 'tweak': !!python/unicode 'Teleporters start unconnected. You - need to manually reconnect the console, station and hub by opening the panel - of the station and applying wire cutters to it.' - - !!python/unicode 'rscadd': !!python/unicode 'Biogenerators are now constructible - and upgradable' - - !!python/unicode 'rscadd': !!python/unicode 'Atmospherics heaters and freezers - are now constructible and upgradable and can be rotated with a wrench when their - panel is open to connect them to pipes. Screw the board to switch between heater - and freezer.' - - !!python/unicode 'rscadd': !!python/unicode 'Mech chargers are now constructible - and upgradable' - - !!python/unicode 'rscadd': !!python/unicode 'Microwaves are now constructible - and upgradable' - - !!python/unicode 'rscadd': !!python/unicode 'All kitchen machinery can now be - wrenched free' - - !!python/unicode 'rscadd': !!python/unicode 'SMES are now constructible' - - !!python/unicode 'rscadd': !!python/unicode 'Dragging a human''s sprite to a cryogenic - tube or sleeper will put them inside and activate it if it''s cryo' - - !!python/unicode 'rscadd': !!python/unicode 'Constructible newscasters, their - frames are made with autolathes' - - !!python/unicode 'rscadd': !!python/unicode 'Constructible pandemics' - - !!python/unicode 'rscadd': !!python/unicode 'Constructible power turbines and - their computers' - - !!python/unicode 'rscadd': !!python/unicode 'Constructible power compressors' - - !!python/unicode 'rscadd': !!python/unicode 'Constructible vending machines. Screw - the board to switch vendor type.' - - !!python/unicode 'rscadd': !!python/unicode 'Constructible hydroponics trays' - - !!python/unicode 'imageadd': !!python/unicode 'Sprites for all this' - - !!python/unicode 'wip': !!python/unicode 'This update will have unforeseen bugs, - please report those you find at https://github.com/tgstation/-tg-station/issues/new - if you want them fixed.' - - !!python/unicode 'rscadd': !!python/unicode 'As usual, machines are deconstructed - by screwing open their panels and crowbarring them. While constructing machines, - examining them will tell you what parts you''re missing.' -2014-02-09: - !!python/unicode 'ADamDirtyApe': - - !!python/unicode 'rscadd': !!python/unicode 'The lawyer now spawns with a Sec - Headset. ' - !!python/unicode 'Demas': - - !!python/unicode 'rscadd': !!python/unicode 'Banana peel size is based on banana - size. ' - - !!python/unicode 'rscadd': !!python/unicode 'Bigger peels slip for longer than - smaller ones. Remember that produce size is based on potency.' - - !!python/unicode 'tweak': !!python/unicode 'The clown now spawns with a decent - sized banana.' - - !!python/unicode 'tweak': !!python/unicode 'The banana mortar now shoots 65 potency - peels.' - !!python/unicode 'Giacom': - - !!python/unicode 'rscadd': !!python/unicode 'A new hostile statue mob, can only - move when not being observed, tends to break lights and cause blindness. ' - !!python/unicode 'Incoming5643': - - !!python/unicode 'rscadd': !!python/unicode 'Blob Zombies! When a Blob Spore moves - over a dead human body it will infect the body and revive it as a more powerful - varient of the spore. Has double the health and deals more damage. ' - !!python/unicode 'Neerti': - - !!python/unicode 'rscadd': !!python/unicode 'Sec Belts can now hold Stun Batons. ' - - !!python/unicode 'tweak': !!python/unicode 'Stun Batons now only take 10 seconds - to fully recharge. ' - !!python/unicode 'Razharas': - - !!python/unicode 'tweak': !!python/unicode 'Tables can now be used as an alternative - way to craft makeshift items. Simply click-drag table to yourself bring up a - list. ' - !!python/unicode 'adrix89': - - !!python/unicode 'tweak': !!python/unicode 'Spray Bottles can no longer wet up - to three tiles with water. ' - - !!python/unicode 'tweak': !!python/unicode 'Spray Bottles have a third higher - release volume that wets a single tile. ' - - !!python/unicode 'tweak': !!python/unicode 'Water slip times are reduced to the - same stun times as soap. ' -2014-02-17: - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Mining has been significantly overhauled. - Hostile alien life has infested the western asteroid! Miners are given an equipment - voucher to obtain equipment to protect themselves. There is a spare voucher - in the HoP''s office, should someone want to switch to mining mid-shift.' - - !!python/unicode 'rscadd': !!python/unicode 'The Ore Redemption Machine has been - added just outside of the Science wing. Ore goes in, Sheets go out, and points - are tallied on the machine. Insert your ID to claim points, then spend them - on goods at Mining Equipment Lockers. You require specific accesses to tell - the Ore Redemption Machine to unload its sheets.' - - !!python/unicode 'rscadd': !!python/unicode 'Should you not care for being eaten - alive by horrible alien life, it is suggested you stick to the eastern asteroid, - where there is no hostile alien life... though the yield on ore is not as good.' - - !!python/unicode 'rscadd': !!python/unicode 'Most ore is no longer visible to - the naked eye. You must ping it with a Mining Scanner (Available in all mining - lockers) to locate nearby ore. Make sure to equip your mesons first, or it won''t - be visible.' - - !!python/unicode 'tweak': !!python/unicode 'Mesons no longer remove the darkness - overlay, you must properly light your environment. Hull breaches to space can - still be clearly seen, and it will still protect you from the singulo.' - - !!python/unicode 'tweak': !!python/unicode 'Mineral spawn rates have been significantly - tweaked to cut down on unnecessary inflation of mineral economy.' - - !!python/unicode 'tweak': !!python/unicode 'The asteroid no longer has ambient - power on the entire asteroid. AI''s who go onto asteroid turf will slowly die - of power loss. Mining outposts are unaffected.' - - !!python/unicode 'bugfix': !!python/unicode 'Fixed an issue where projectiles - shot by simple mobs or thrown would hit multiple times.' - !!python/unicode 'Fleure': - - !!python/unicode 'tweak': !!python/unicode 'Reduced chicken crates to contain - 1-3 chicks, down from 3-6' - - !!python/unicode 'tweak': !!python/unicode 'Increased fertile chicken egg chance - from 10% to 25%' - !!python/unicode 'Yota': - - !!python/unicode 'tweak': !!python/unicode 'Photograph now rendered crisp and - clean, so that we may enjoy them in their 0.009 megapixel goodness.' - - !!python/unicode 'bugfix': !!python/unicode 'Cameras should now capture more of - what they should, and less of what they shouldn''t.' -2014-02-19: - !!python/unicode 'Aranclanos': - - !!python/unicode 'bugfix': !!python/unicode 'Removed the chance of your hat falling - off when slipping. ' - !!python/unicode 'Perakp': - - !!python/unicode 'imageadd': !!python/unicode 'Added Iatot''s cyborg module selection - transformation animations. ' -2014-02-24: - !!python/unicode 'Ergovisavi': - - !!python/unicode 'rscadd': !!python/unicode 'Added Advanced Mesons and Night Vision - Goggles to the protolathe. ' - !!python/unicode 'Giacom': - - !!python/unicode 'bugfix': !!python/unicode 'Silicons no longer stop statues from - moving when in sight. ' - - !!python/unicode 'wip': !!python/unicode 'Increased the health of statues. ' - - !!python/unicode 'wip': !!python/unicode 'Increased the range of statues''s blinding - spell. ' - !!python/unicode 'HornyGranny': - - !!python/unicode 'sounddel': !!python/unicode 'Reduced the range of Violin notes. ' - - !!python/unicode 'soundadd': !!python/unicode 'Low quality violin midi-notes replaced - with better .ogg-notes. ' - !!python/unicode 'Incoming5643': - - !!python/unicode 'tweak': !!python/unicode 'Improved the Syndicate Implant bundle - to contain freedom, uplink, EMP, adrenalin and explosive implanters. ' - - !!python/unicode 'tweak': !!python/unicode 'Added Mineral Storeroom to R&D; - containing the Ore Redemption Machine; no more assistants stealing your ore - in the open hallway. ' - !!python/unicode 'Miauw': - - !!python/unicode 'bugfix': !!python/unicode 'No more removing cursed horseheads. ' - !!python/unicode 'Razharas': - - !!python/unicode 'bugfix': !!python/unicode 'Fixed infinite telecrystal exploit. ' -2014-02-25: - !!python/unicode 'Incoming5643': - - !!python/unicode 'rscadd': !!python/unicode 'Colored burgers! Include a crayon - in your microwave when cooking a burger and it''ll come out just like a Pretty - Pattie. ' - - !!python/unicode 'bugfix': !!python/unicode 'Fixed AI''s being able to interact - with syndicate bombs. ' -2014-02-26: - !!python/unicode 'Incoming5643': - - !!python/unicode 'rscadd': !!python/unicode 'Color blending Kitty Ears have returned. ' 2014-03-03: !!python/unicode 'ChuckTheSheep': - !!python/unicode 'rscadd': !!python/unicode 'Round-end report now shows what items @@ -2702,12 +1502,8 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. Steelpoint: - rscadd: SS13's Head of Security has received a new attempted 1:1 recreation of a Old Earth weapon, the Captain's Antique Laser Gun. - - rscadd: This gun features three firing modes, Tase, Laser and Breach. However + - rscadd: This gun features three firing modes, Tase, Laser and Disable. However this gun lacks the capability to recharge in the field, and is extreamly expensive. - - rscadd: The gun's Breach setting fires a low powered Pulse round, it consumes - a large amount of power, has a limited range of two tiles and deals the same - damage as a laser does. However it is effective in destroying walls, hence the - Breach title. - rscadd: 'INTERCEPTED TRANSMISSION REPORT: The Syndicate have expressed a interest in this new weapon, and have instructed field agents to do whatever they can to steal this weapon.' @@ -2735,3 +1531,166 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: Custom food can now be renamed using a pen. xxalpha: - rscadd: 'Added new graffiti: cyka, prolizard, antilizard' +2015-03-01: + Dannno: + - rscadd: Resprited all owl items. Wings are now a seperate toggleable suit item. + - rscadd: Added The Griffin costume, arch nemesis of The Owl. Found in the autodrobe. + - rscadd: Added admin-only Owl hardsuit. Only for the most vengeful souls. + - rscadd: Added Owl and Griffin merchandise; The Nest barsign, Owl/Griffin toys + and posters. + Iamgoofball: + - bugfix: Fixes the recipe for meth. + - bugfix: Fixes sorium blobs flinging themselves. + Incoming5643: + - rscadd: On servers where malfunction, wizard, and blob rounds do not end with + the death of the primary antagonist, new antagonists from traitor and changeling + derivative modes will now sometimes spawn. This depends on the state of the + station, the state of the crew, and the server's gamemode probabilities. Server + owners should consider revising their configuration choices + - rscdel: If you would like to opt out of this midround chance, a new toggle to + disable it can be found in your preferences + Mandurrh: + - rscadd: The barsign can be emagged and EMP'd; EMP'd signs can be repaired with + a screwdriver and cables. + Menshin: + - bugfix: Fixed the protolathe not requiring displayed amount of materials to make + items. + MrStonedOne: + - rscadd: Adds a Panic Bunker! + - tweak: This will prevent any player who has never connected before from connecting. + (Admins are exempt) + - tweak: Can be enabled per-round by any admin with +SERVER or for longer periods + via the config. + - recadd: Also adds some other config options relating to new joins, server operators + should consult their configuration file for more details. + - bugfix: Fixes toggle darkness vision hiding other ghosts. + - tweak: Admins fucking around with ghost icon and icon states in VV are going to + want to change the icon and icon state of the ghostimage var of the ghost to + change the image shown to ghosts who have darkness disabled. doing this via + mass edit is not yet supported. + - rscadd: New ghost verb, toggle ghost vision. Switches the ghost's invisibility + vision between that of a ghost and that of a human. So ghosts can hide other + ghosts and in general get the old behaviour of toggle darkness. + Paprika: + - rscadd: Messages with two exclamation marks will be yelled in bold. + Phil235: + - bugfix: Cultists can't summon narsie until their sacrifice objective is complete. + Razharas: + - rscadd: Vines now can grow on any tiles that is not dense, including space, shuttles, + centcomm tiles and so on. + - rscadd: Added 'Bluespace' mutation to vines, makes them be able to grow through + absolutely everything. + - rscadd: Added 'Space Proofing' mutation to vines, after they grow if the tile + under them is space it will become special vinetile, which is just resprited + regular floor, if the vine on the vinetile dies the vineturf changes back to + space. + - rscadd: Made vines spreading speed depend on the seed's production, can be both + slower and faster than current. + - rscadd: Made vines mutation chance be 1/10th of the potency of the seed it is + spawned from. + - rscadd: Special chemicals added to vine seeds durning their growth can increase/decrease + their potency and productivity. + - rscadd: Special chemicals now can remove good, bad or neutral mutations from vine + seeds while they are growing, cultivating actually helpful vines is now possible. + - rscadd: Plant analyzers now show the vine seeds mutations. + - tweak: Buffed numbers in some of the more useless mutations. + Steelpoint: + - rscadd: Reworked and expanded areas of the derelict station. Featuring a repairable + gravity generator, turret filled computer core and functional solars. + Vekter: + - rscadd: Chemists, Geneticists, Virologists, Scientists, and Botanists will now + spawn with alternative backpacks and satchels in their lockers. Try them out! +2015-03-03: + Delimusca: + - rscadd: Improvised heating! use lighters or other heat sources to heat beakers, + bottles, etc. + Gun Hog: + - tweak: We have purged the xenomicrobes contamination in the E.X.P.E.R.I-MENTOR + using sulfuric acid. Take care not to be exposed should it leak! + Iamgoofball: + - tweak: Colorful reagent can be washed off with water now. + - tweak: Oxygen blob deals breath loss damage. + - tweak: Radioactive blobs irradiate for more. + Ikarrus: + - rscadd: Antagonist roles are now restricted by player client age. + Jordie0608: + - rscadd: The server's current local time is now displayed in status panel in ISO + date format (YYYY-MM-DD hh:mm) + Mandurrrh: + - rscadd: Added the ability to see pda messages as a ghost with GHOSTWHISPER toggled + on. + - bugfix: Removed the degrees symbol from Kelvin units on atmos meters because not + gramatically correct + RemieRichards: + - rscadd: Drones now see either Static, Black icons or Roguelike style lettering + instead of actual mob icons + - rscadd: Icons for the above, from VG's SkowronX + - rscadd: Many icon procs for the above, from VG's ComicIronic + - rscadd: Drones moved into their own folder + - tweak: Drone.dm replaced with seperate files for each functionality + - rscadd: Drones now have 2 skins to choose from, Maintenance Drone (Current drones) + and Repair Drone (A modified VG/Bay sprite) + - rscadd: Much more support for alternate skins on drones + Xhuis: + - rscadd: 'Added four new emoji: :1997:, :rune:, :blob:, and :onisoma:.' + xxalpha: + - rscadd: Added a surgery table and tools to the Nuke Ops ship. + - rscadd: Added Engineering Scanner Goggles to Engivend, Engineering Secure Closets + and Research. + - tweak: Doubled T-ray scanner range. +2015-03-05: + Jordie0608: + - rscadd: Server hosts can set a config option to make an unseen changelog pop up + on connection. + MrPerson: + - rscadd: Expanded the on-screen alerts you get on the top-right of your screen. + You can shift-click them to get a description of what's wrong and maybe how + to fix it. + - rscadd: Getting buckled to something will show an alert of what you're buckled + to. If you're not handcuffed, you can click the alert to unbuckle. + RemieRichards: + - rscadd: Added Necromantic Stones as a buyable item for wizards + - rscadd: Necromantic Stones can cause up to 3 people to rise up as Skeleton Thralls + bound to the wielder of the stone + - rscadd: Skeleton Thralls have a 33% Chance to drop all their gear on the floor + and autoequip a more fitting thematic uniform + - rscadd: Allows the blob to reroll it's chemical for a cost. + phil235: + - rscadd: Adds a lot of new plants to botany (red beet, parsnip, snap corn, blumpkin, + rice, oat, vanilla, steel cap, mimana, blue cherries, holy melon, geranium, + lily, sweet potato) and two new reagents (vanilla, rice). + - bugfix: Fixes taser stun duration being longer due to jitter animation. +2015-03-08: + Dannno: + - rscadd: Added more barsigns, sprites by yours truly. + Ikarrus: + - wip: Gang mode has been reworked to functionality without some of it's features. + - rscdel: Gang membership visibility, conversion pens and weapons are removed until + fixed. + - rscadd: Gang bosses have been given uplinks to use in the meantime. + - tweak: Chance of deconversion from repeated head trauma has been increased. + Incoming5643: + - rscdel: The skeleton and zombie hordes have been quelled, at least for the time + being. + Mandurrrh: + - rscadd: Added the ability to stop table climbers by clicking the table if present. + Paprika: + - tweak: Labcoats and uniforms no longer use action buttons and object verbs to + adjust their aesthetic style. Alt click them to adjust. + - rscadd: Alt click a PDA with an ID inside to eject the ID. + - tweak: Renamed 'remove ID' verb to 'eject ID' so it's not immediately next to + 'remove pen'. + - tweak: Rebalanced the flash protection of thermal scanners. Syndicate thermals + have the same flash weakness as the meson scanners they come disguised as. + Xhuis: + - rscadd: Adds the Adminbus and Coderbus bar signs. + - rscadd: Added a mining satchel of holding to R&D that can hold an infinite amount + of ores. It requires gold and uranium, in addition to a decently high bluespace + and materials research. + phil235: + - tweak: Harvesting meat from dead simple animals now takes time, has a sound, and + can be done with any sharp weapon. + pudl: + - imageadd: Updated the sprite for Fire extinguishers. + xxalpha: + - imageadd: Disposable lighters now come in more colors of the rainbow. diff --git a/html/changelogs/Ikarrus.yml b/html/changelogs/Ikarrus.yml deleted file mode 100644 index b963a50a53d..00000000000 --- a/html/changelogs/Ikarrus.yml +++ /dev/null @@ -1,2 +0,0 @@ -author: Ikarrus -changes: [] diff --git a/html/changelogs/MrStonedOne-panicBunker-PR-8006.yml b/html/changelogs/MrStonedOne-panicBunker-PR-8006.yml deleted file mode 100644 index 4b4a1cc6a67..00000000000 --- a/html/changelogs/MrStonedOne-panicBunker-PR-8006.yml +++ /dev/null @@ -1,40 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -# tgs (TG-ported fixes?) -################################# - -# Your name. -author: MrStonedOne - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. Fuck you N3X15, should have made this work with tabs -# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in single (') or double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. -changes: - - rscadd: 'Adds a Panic Bunker!' - - tweak: 'This will prevent any player who has never connected before from connecting. (Admins are exempt)' - - tweak: 'Can be enabled per-round by any admin with +SERVER or for longer periods via the config.' - - recadd: 'Also adds some other config options relating to new joins, server operators should consult their configuration file for more details.' - \ No newline at end of file diff --git a/html/changelogs/Razharas.yml b/html/changelogs/Razharas.yml index b7f2e8aaf79..f5e4b038096 100644 --- a/html/changelogs/Razharas.yml +++ b/html/changelogs/Razharas.yml @@ -1,15 +1,3 @@ - author: Razharas - -delete-after: False - -changes: - - rscadd: "Vines now can grow on any tiles that is not dense, including space, shuttles, centcomm tiles and so on." - - rscadd: "Added 'Bluespace' mutation to vines, makes them be able to grow through absolutely everything." - - rscadd: "Added 'Space Proofing' mutation to vines, after they grow if the tile under them is space it will become special vinetile, which is just resprited regular floor, if the vine on the vinetile dies the vineturf changes back to space." - - rscadd: "Made vines spreading speed depend on the seed's production, can be both slower and faster than current." - - rscadd: "Made vines mutation chance be 1/10th of the potency of the seed it is spawned from." - - rscadd: "Special chemicals added to vine seeds durning their growth can increase/decrease their potency and productivity." - - rscadd: "Special chemicals now can remove good, bad or neutral mutations from vine seeds while they are growing, cultivating actually helpful vines is now possible." - - rscadd: "Plant analyzers now show the vine seeds mutations." - - tweak: "Buffed numbers in some of the more useless mutations." \ No newline at end of file +changes: [] +delete-after: false diff --git a/html/__CHANGELOG_README.txt b/html/changelogs/__CHANGELOG_README.txt similarity index 55% rename from html/__CHANGELOG_README.txt rename to html/changelogs/__CHANGELOG_README.txt index 6ecc2bb44bb..b15854c38ac 100644 --- a/html/__CHANGELOG_README.txt +++ b/html/changelogs/__CHANGELOG_README.txt @@ -4,17 +4,15 @@ Changelogs are included with commits as text .yml files created individually by TO MAKE A CHANGELOG .YML ENTRRY -1. Make a copy of the file example.yml in html/changelogs and rename it to [YOUR USERNAME]-PR-[YOUR PR NUMBER].yml (the pr and pr number are organizational and can be ignored if you so wish) +1. Make a copy of the file example.yml in html/changelogs and rename it to [YOUR USERNAME]-PR-[YOUR PR NUMBER].yml (the pr and pr number are organizational and can be ignored if you so wish) 2. Change the author to yourself -3. Remove the hash (#) before 'delete-after: True' (this will ensure that this file is delted once your changelog entry is merged with the master changelog) +3. Replace the changes text with a description of the changes in your PR, keep the double quotes to avoid errors (your changelog can be written ICly or OOCly, it doesn't matter) -4. Replace the changes text with a description of the changes in your PR, keep either single or double quotes to avoid errors (your changelog can be written ICly or OOCly, it doesn't matter) +4. (Optional) set the change prefix (rscadd) to a different one listed above in example.yml (this affects what icon is used for your changelog entry) -5. (Optional) set the change prefix (rscadd) to a different one listed above in example.yml (this affects what icon is used for your changelog entry) - -6. When commiting make sure your .yml file is included in the commit (it will usually be unticked as an unversioned file) +5. When commiting make sure your .yml file is included in the commit (it will usually be unticked as an unversioned file) ####################################################### diff --git a/html/changelogs/example.yml b/html/changelogs/example.yml index ede109ba9a2..9cf7d8b07de 100644 --- a/html/changelogs/example.yml +++ b/html/changelogs/example.yml @@ -31,7 +31,7 @@ delete-after: True # INDENT WITH TWO SPACES. NOT TABS. SPACES. # SCREW THIS UP AND IT WON'T WORK. # Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in single (') or double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. changes: - rscadd: "Added a changelog editing system that should cause fewer conflicts and more accurate timestamps." - - rscdel: 'Killed innocent kittens.' + - rscdel: "Killed innocent kittens." diff --git a/html/dice.png b/html/dice.png deleted file mode 100644 index 9038269033c..00000000000 Binary files a/html/dice.png and /dev/null differ diff --git a/html/dice20.png b/html/dice20.png deleted file mode 100644 index be1ba1ea6fa..00000000000 Binary files a/html/dice20.png and /dev/null differ diff --git a/html/help.html b/html/help.html deleted file mode 100644 index 6c7367681b2..00000000000 --- a/html/help.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - Space Station 13 Help - - - -

    Space Station 13

    - - - - -

    Overview

    -

    - Space Station 13 was written for BYOND. Like many BYOND games, it is two - dimensional with a top down view and runs terribly. It uses tile-based - movement. Space Station 13 (or SS13 for short) starts you on a space station - orbiting a very peculiar gaseous planet in a binary star system. Each round - type is centred around a specific type of disaster, ranging from a meteor - shower to a traitor within the crew. The game is constantly being developed, - so new modes are added all the time! -

    - - -

    Objectives

    -

    - The primary objective in most modes of Space Station 13 is survival. You must - try to stay alive long enough to escape on the evacuation shuttle. This - doesn't mean you should immediately rush to the escape dock and wall yourself - in; half the fun is in trying to keep the station running for as long as - possible. Exactly how you do this is up to you and your assigned job. -

    - - -

    Modes

    - - -

    Blob

    -

    - A deadly mutagenous virus has been released and the crew must fight a green - mass for control of the station. The blob spreads quickly, and only the - sacred welder can fight it back! (Unless it spawns in the engine and dies - instantly.) -

    -

    - PROTIP: USE A WELDER -

    - - -

    Traitor

    -

    - In traitor mode there is a traitor aboard the space station!!! The traitor is - assigned a random objective, from escaping alone to stealing the captain's - jumpsuit. The objective of everyone else is to stop the traitor and survive! -

    - - -

    Meteor

    -

    - In Meteor, the station is threatened by a meteor shower. The objective is to - do your best to repair and maintain the station, and eventually escape. -

    - - -

    Monkey

    -

    - In Monkey mode a deadly mutagenous virus has been released and the crew must - fight small underdeveloped primates for control of the station. The monkey's - bite is deadly, and anyone bitten will soon join the primate horde. -

    -

    - PROTIP: ELECTRIC GRILLES ARE PRETTY DANGEROUS. -

    - - -

    Nuclear Emergency

    -

    - A crack team of Syndicate operatives have assaulted the station in order to - gather a nuclear activation key. If found, the team will detonate a NUCLEAR - BOMB and the station will be destroyed! The team must escape with the nuclear - activation key while fighting off the syndicate. -

    -

    - PROTIP: IF YOU KILL A MEMBER OF THE SYNDICATE STEAL HIS STUFF. -

    - - -

    Getting Around

    -

    - The interface for Space Station 13 is largely click driven. To use something, - you will almost always click or double click. -

    - - -

    Getting Started

    -

    - (A Quick jump-start guide to get into the game) -

    -

    - Select your preferences using the character setup command and then use ready - to enter the game. -

    -

    - If you do this after the game has started you will spawn as an assistant; - otherwise, a vague guide to the jobs you may choose follows. -

    - - -

    Jobs

    - - -

    Assistant

    -

    - You'll spawn as this if you enter after a game has started. Assistants have a - very low-access ID card, and really nothing else. They don't however have any - duties, so this can be a pretty good way to learn the layout of the station - if you join midway through a round. It's really not worth choosing this, - though. -

    - - -

    Atmospheric Technician

    -

    - This involves looking after the atmospheric systems on the station, as you - can probably guess. In theory, you'll be checking the air composition of the - station with an analyzer and making sure that it's not going to kill people. - In reality, you'll be cleaning up the constant gas spills caused by griefers - and the traitor via use of the pipe filters in the maintenance tunnel (which - are pretty self-explanatory) and the portable filters that are around the - station and in Atmospheric Storage. This is probably the easiest job for a - new player, so jump in as this and getting a feel for the station layout and - the basic workings of the game before you try anything else. -

    - - -

    Medical Doctor

    -

    - Pretty much self explanatory. Grab a Medkit, and either patrol the station - treating the gassed/beaten crewmembers who will be lying around within 20 - minutes of any game starting or stay in Medical and heal the people who get - dragged in. More advanced medical is explained in weasello's guide below. -

    - - -

    Station Engineer

    -

    - This can be one of the more technical jobs, but it doesn't take a huge amount - of time to learn. Basically, the Engineers handle the engine itself (which - involves keeping it fed with plasma, igniting it, and so on.) and the repair - of the station. Weasello's stuff has a reasonably good guide to the basics of - this, and you should be able to work the rest out by jumping on one of the - empty servers and tinkering about for twenty minutes or so. This isn't a bad - place to start, but messing up with the engines can kill every single person - on the station so be fucking careful. -

    - - -

    Security Officer

    -

    - Open your locker, grab a stun baton and then patrol the station and hit - people. That's it. -

    -

    - PROTIP: KILLING PEOPLE OR BEING A DICK WILL GET YOU BANNED. -

    - - -

    Scientist

    -

    - Scientists are essentially the bombmakers. Weasello's guide has a reasonably - complex explanation of what you're supposed to do here, but basically you'll - be heating plasma and assembling bomb circuitry. Security and the AI will - almost certainly be keeping a close eye on you if you choose to do this, so - I'd you play around a bit with Atmos and get some experience before trying - this. -

    - - -

    Forensic Technician

    -

    - Seriously, don't bother with this. It's arguably the most boring job of all, - and can be one of the most annoying to get to grips with. Forensic Techs take - fingerprints from people and objects and check them against their records. - That's pretty much it. With the relatively short length of games on the goon - server, this isn't really worth doing in itself, as any security man can be a - Forensic Tech if needed. -

    - - -

    Geneticist

    -

    - This is pretty much the most complex job on the station. Don't touch this - until you've played for a while. Geneticists can directly edit the DNA of - other players and monkeys, and as such can bring people back to life, change - their skin colour, or turn a human into a monkey or vice versa. It's all far - too complex and annoying to be worth typing out here. There's probably a more - complex guide for this around, go find it if you REALLY want to do this. -

    - - -

    Chaplain

    -

    - AARHGFHGHGH I FUCKING LOVE TO PRAY -

    - - -

    Head of Research

    -

    - The Head of Research essentially administers Medical and Toxins research and - has an ID-card with quite high access. This isn't really a good choice at all - for a new player as it implies a degree of experience with the game. - Practically, you'll be helping out Toxins and Medical and occasionally being - attacked for your ID card. -

    - - -

    Head of Personnel

    -

    - This one really is only for players with a little bit of experience. The Head - of Personnel is in charge of Security and managers the positions of the - people on the station; they have access to the personnel records and can edit - the ID cards and thus positions of crewmembers as they wish. They also start - next to a locker which contains a laser pistol, which can be useful for a - traitor or in self defense. Traitors will often target the HoP for his ID - card and special equipment, as well. -

    - - -

    AI

    -

    - Don't do this. It carries a huge amount of power as well as massive - limitations, as the AI is bound by Asimov's laws. The AI can control any of - the electrical systems on the station, including the air supply, engine blast - doors and power. Making a stupid mistake as the AI will very possibly kill - several people, so stay away from this until you have a little bit of - experience with the game. -

    - - -

    Captain

    -

    - Self explanatory. An all-access ID card, total power over the crew, guns and - a personal teleporter. ABSOLUTELY DO NOT DO THIS UNTIL YOU HAVE SOME - EXPERIENCE WITH THE GAME OR YOU WILL PISS OFF OTHER PLAYERS. -

    - - -

    Movement

    -

    - Movement on SS13 is only in the 4 cardinal directions. The diagonal - directions throw/drop items, switch hand/modes. If you move into a dense - object you first try to push it. Not all items can be pushed. You can also - right click on an object and select 'pull' and then every movement you make - will ttempt to drag that object behind you. If you wish to stop pulling you - must go onto your on-screen display and find the object with a person in a - box. Click on it and you will stop pulling. If you ever desire to make sure - of which direction you are facing use .center and then try to move what - direction you want to face. -

    - - -

    Equipping

    -

    - You 'equip' items in SS13 by picking them up. In order to pick an item up all - you must do is attack it with a free hand. Now you hae two hands. Which hand - is being used is indicated by the blue button in the lower-left area of your - HUD. You can change hands by clicking the hand button or pressing the - .northeast macro. You can then also then transfer that item to another part - of your body. In order to do this you just attack the green box (or blue - storage box) on your hud that you would like to move it to. In order to - 'unequip' a equipped item that is not in your hand. Get a free hand and - attack the item. Then in order to drop an item in your hand (and make it a - free hand again) click the drop button (or throw to throw the item wherever - you are facing). -

    - - -

    Talking

    -

    - Talking on SS13 is still via the say verb so the normal say speech bubble on - the command line will still work. Please note however that you can whisper. - More on this in the items selection under radio, intercoms, and headsets. - There are a lot of emotes that are accessed by preceding your text with a - '*'. To view a list of available emotes for your character use the type - '*help' into the say menu. To speak via your headset use a semicolon after - say. -

    - - -

    Taking Items / Giving Items

    -

    - You can take items from people by dragging their mob onto your mob. A screen - will pop up. From this screen you can select an object to remove from them. - If you select a 'Nothing' slot then you will attempt to equip that slot with - the object you are holding. -

    - - -

    Death

    -

    - If you are dead then you can use the watch verb to look through the eyes of - another mob. Depending on circumstances you can use abandon mob to restart - (leaving that box blank gives you a random name). A dead person hears - everything that is said but might not hear all attack messages. -

    - - -

    External Links

    - - - diff --git a/html/longchangelog.html b/html/longchangelog.html deleted file mode 100644 index c07456e3f04..00000000000 --- a/html/longchangelog.html +++ /dev/null @@ -1,3109 +0,0 @@ - - - - /tg/ Station 13 Changelog - - - - - - -
    - - - - -
    -
    Traditional Games Space Station 13
    - -

    - Visit our IRC channel: #tgstation13 on irc.rizon.net -
    - - - - - -
    - Current Project Maintainers: -Click Here-
    - Currently Active GitHub contributor list: -Click Here-
    - Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie, Sieve, Giacom, Ikarrus, trubble_bass, Aranclanos, Cael_Aislinn, Cheridan, Intigracy, Malkevin, SuperSayu, DumpDavidson, Tastyfish, Yvar, Elo001.
    - Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut, Pewtershmitz, Firecage
    - Sounds: Skie, Lasty/Vinyl
    - Main Testers: Tenebrosity
    - Thanks to: Baystation 12, CDK Station devs, FacepunchStation, GoonStation devs, the original SpaceStation developers and Invisty for the title image.
    Also a thanks to anybody who has contributed who is not listed here :( Ask to be added here on irc.
    -
    Have a bug to report?
    Visit our Issue Tracker.
    - Please ensure that the bug has not already been reported and use the template provided. -
    - - - - - - - - - - -
    -

    17 November 2013

    -

    Laharl Montgommery updated:

    -
      -
    • AI can now anchor and unanchor itself. In short, it means the AI can be dragged, if it wants to.
    • -
    -
    - -
    -

    29 September 2013

    -

    RobRichards updated:

    -
      -
    • Nanotrasen Cyborg Upgrades:
      -Standard issue Engineering cyborgs now come equipped with replacement floor tiles which they can replenish at recharge stations.
    • -
    -
    - - -
    -

    28 September 2013

    -

    Ergovisavi updated:

    -
      -
    • Mobs can now be lit on fire. Wearing a full firesuit (or similar) will protect you. Extinguishers, Showers, Space, Cryo, Resisting, being splashed with water can all extinguish you. Being splashed with fuel/ethanol/plasma makes you more flammable. Water makes you less flammable.
    • -
    -
    - - -
    -

    26 September 2013

    -

    Cheridan updated:

    -
      -
    • Nanotrasen Anomaly Primer:
      - Unstable anomalies have been spotted in your region of space. These anomalies can be hazardous and destructive, though our initial encounters with these space oddities has discovered a method of neutralization. Method follows.
      -

      Step 1. Upon confirmation of an anomaly sighting, report its location. Early detection is key.
      - Step 2. Using an atmospheric analyzer at short range, determine the frequency that the anomaly's core is fluctuating at.
      - Step 3. Send a signal through the frequency using a radio signaller. Note that non-specialized signaller devices may possibly lack the frequency range needed.

      - With the anomaly neutralized and the station brought out of danger, inspect the area for any remnants of the anomaly. Properly researched, we believe these events could provide vast amounts of valuable data.
      - Did you find this report helpful?
    • -
    -
    - - - -
    -

    21 September 2013

    -

    Malkevin updated:

    -
      -
    • Due to complaints about Security not announcing themselves before making arrests NT has now issued it's Sec team with loud hailer integrated gas masks, found in their standard equipment lockers. Users can adjust the mask's level of aggression with a screwdriver.
    • -
    • The sprites could be shaded better. Think you can do better? Post your submissions here.
    • -
    -
    - - -
    -

    19 September 2013

    -

    Malkevin updated:

    -
      -
    • Juggernaut's ablative armor has been adjusted. They have a greater chance to reflect lasers however on reflection they take half damage instead of no damage, basically this adjustment means you should be able to kill a Juggernaut with two laser guns instead of four! Also their reflection spread has been greatly widened, enjoy the lightshow
    • -
    • Cargo can now order exile implants.
    • -
    • Checking a collector's last power output via analyzers has been moved to multitools, because that actually made sense (betcha didn't know this existed, I know I didn't)
    • -
    • Analyzers can now be used to check the gas level of the tank in a loaded radiation collector (yay no more crowbars), you can also use them on pipes to check gas levels (yay no more pipe meters)
    • -
    -
    - -
    - - -

    17 September 2013

    -

    SuperSayu updated:

    -
      -
    • You can no longer strip people through windows and windoors
    • -
    • You can open doors by hand even if there is a firedoor in the way, making firedoor+airlock no longer an unbeatable combination
    • -
    • Ghosts can now click on anything to examine it, or double click to jump to a turf. Double clicking a mob, bot, or (heaven forbid) singularity/Nar-Sie will let you follow it. Double clicking your own corpse re-enters it.
    • -
    • AI can double click a mob to follow it, as well as double clicking turfs to jump.
    • -
    • Ventcrawling mobs can alt-click a vent to start ventcrawling.
    • -
    • Telekinesis is now part of the click system. You can click on buttons, items, etc, without having a telekinetic throw in hand; the throw will appear when you click on something you can move (with your mind).
    • -
    -
    - - -
    -

    13 September 2013

    -

    JJRcop updated:

    -
      -
    • We at Nanotrasen would like to assure you that we know the pain of waiting five minutes for the emergency shuttle to be dispatched in a high-alert situation due to our confirmation-of-distress policy. Therefore, we have amended our confirmation-of-distress policy so that, in the event of a red alert, the distress confirmation period is shortened to three minutes and we will hurry in preparing the shuttle for transit. This totals to 6 minutes, in hope that it will give our very expensive equipment a better chance of recovery.
    • -
    -
    - - -
    -

    3 September 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 5: Chef gets a Nanotrasen-issued icecream machine with four pre-approved icecream flavours and two official cone types.
    • -
    -
    - - -
    -

    2 September 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 4: Humans, aliens and cyborgs now show speech bubbles when they talk.
    • -
    -
    - - -
    -

    1 September 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 3: Detective can reskin his gun to one of five variants: Leopard Spots, Gold Trim, Black Panther, Peacemaker and the Original.
    • -
    -
    - - -
    -

    12 September 2013

    -

    AndroidSFV updated:

    -
      -
    • AI Photography: AIs now have two new verbs, Take Picture and View Picture. The pictures the AI takes are centered on the AI's eyeobj. You can use these pictures on a newscaster, and print them at a photocopier. -
    -
    - - -
    -

    31 August 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 2: RD, lawyers and librarians now spawn with a laser pointer. Don't point them in anyone's eyes!
    • -
    -
    - - -
    -

    30 August 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Terbs Fun Week Day 1: Added ghost chilis as a mutation of chili plants. Be careful, they're one of the hottest foods in the galaxy!
    • -
    -
    - - -
    -

    21 August 2013

    -

    Dumpdavidson updated:

    -
      -
    • Replaced the EMP grenades from the uplink with an EMP kit. The kit contains a grenade, an implant and a flashlight with 5 uses that can EMP any object or mob in melee range.
    • -
    -
    - - -
    -

    18 August 2013

    -

    Delicious updated:

    -
      -
    • Made time and date consistent across medical and security records, mecha logs and detective scanner reports
    • -
    • Added date to PDA
    • -
    -
    - - -
    -

    13 August 2013

    -

    Giacom updated:

    -
      -
    • Malf AIs now have a new power which will spawn a "borging machine". This machine will turn living humans into loyal cyborgs which the AI can use to take over the station with. The AI will limit themselves by using this ability, such as no shunting, and the machine will have a long cooldown usage.
    • -
    -
    - - - - - -
    -

    12 August 2013

    -

    Giacom updated:

    -
      -
    • Changed the blob balance to make the blob start strong but grow slower, resulting in rounds where the blob doesn't instantly get killed off if found out and doesn't immediately dominate after being left alone long enough. AIs no longer have to quarantine the station.
    • -
    -
    - - -
    -

    10 August 2013

    -

    Malkevin updated:

    -
      -
    • Cargo Overhaul: Phase 1
    • -
    • Ported Bay's cargo computer categoy system
    • -
    • Crates have been tweaked significantly. Crates have been reduced to single item types where possible, namely with expensive crates such as weapons and armor. A total of 28 new crates have been added, including chemical and tracking implants, and raw materials can also be bought from cargo for a significant number of points (subject to change)
    • -
    • This was a pretty large edit of repetitive data, so no doubt I've made a mistake or two. Please report any bugs to the usual place
    • -
    -
    - - -
    -

    6 August 2013

    -

    Giacom updated:

    -
      -
    • NTSL no longer allows you to use a function within another function parameter. This was changed to help prevent server crashes; if your working script no longer compiles this is why.
    • -
        -
    - - -
    -

    5 August 2013

    -

    Kaze Espada updated:

    -
      -
    • Nanotrasen has recentely had to change its provider of alcoholic beverages to a provider of lower quality. Cases of the old ailment known as alcohol poisoning have returned. Bar goers are to be weary of this new condition.
    • -
    -
    - - -
    -

    4 August 2013

    -

    Giacom updated:

    -
      -
    • Nanotrasen has re-arranged the station blueprint designs to have non-essential APCs moved to the maintenance hallways. Non-essential rooms that aren't connected to a maintenance hallway will have their APC remain. Station Engineers will now have easy access to a room's APC without needing access themselves. Nanotrasen also wishes to remind you that you should not sabotage these easy to access APCs to cause distractions or to lockdown someone in a location. Thank you for reading.
    • -
    -
    - - -
    -

    31 July 2013

    -

    Ricotez updated:

    -
      -
    • Atmospherics now has its own hardsuit. Instead of radiation protection it offers fire protection.
    • -
    -
    - - -
    -

    21 July 2013

    -

    Malkevin updated:

    -
      -
    • Cultists now start with two words each, and the starting talisman no longer damages you when you use it
    • -
    -
    - - - -
    -

    21 July 2013

    -

    Cheridan updated:

    -
      -
    • Instead of a level-up system where it is possible to acquire all the skills, each skill now costs 1 point, and you can pick up to 5.Husking people, instead of giving you more XP to buy skills, now gives you a skill reset, allowing you to pick new ones.
    • -
    • DNA Extract Sting is now free, and is your main mode of acquiring DNA. You can hold up to 5 DNAs, and as you acquire more, the oldest one is removed. If you're currently using the oldest DNA strand, you will be required to transform before gaining more.
    • -
    • New abilities! An UI indicator for chemical storage! Fun!
    • -
    -
    - - -
    -

    16 July 2013

    -

    Malkevin updated:

    -
      -
    • Summary of my recent changes: Added a muzzle and a box of Prisoner ID cards to the perma wing, RnD can make a new combined gas mask with welding visor, added some atmos analyzers to atmospherics, air alarm circuit boards have their own sprites, package wrapped objects will now loop back round to the mail chute instead of auto-rerouting to disposals, and the detective and captain have access to securitrons through their PDA cartridges.
    • -
    -
    - -
    -

    15 July 2013

    -

    Giacom updated:

    -
      -
    • A new item has been added to the syndicate catalog. The AI detector is a device disguised as a multitool; it is not only able to be used as a real multitool but when it detects an AI looking at it, or it's holder, it will turn red to indicate to the holder that he should cease supiscious activities. A great and cheap, to produce, tool for undercover operations involving an AI as the security system.
    • -
    -
    - - -
    -

    7 July 2013

    -

    Giacom updated:

    -
      -
    • Revamped blob mode and the blob random event to spawn a player controlled overmind that can expand the blob and upgrade pieces that perform particular functions. This will use resources which the core can slowly generate or you can place blob pieces that will give you more resources.
    • -
    -
    - -
    -

    27 June 2013

    -

    Ikarrus updated:

    -
      -
    • Nanotrasen R&D released a new firmware patch for their station AIs. Included among the changes is the new ability for AIs to interact with fire doors. R&D officials state they feel giving station AIs more influence could only lead to good things.
    • -
    -
    - -
    -

    16 June 2013

    -

    Khub updated:

    -
      -
    • Job preferences menu now not only allows you to left-click the level (i.e. [Medium]) to raise it, but also to right-click it to lower it. That means you don't have to cycle through all the levels to get rid of a [Low].
    • -
    -
    - - -
    -

    15 June 2013

    -

    Carnie updated:

    -
      -
    • DNA-scanner pods (DNA-modifier + cloning), now open and close in a similar fashion to closets. This means you click on them to open/close them. This change was to fix a number of issues, like items being lost in the scanner-pods.
    • -
    • As a side-effect, borgs can now clone humans. No harm can become a dead human, so they are not necessarily lawbound to clone them, and such tasks are probably best left to qualified genetics staff.
    • -
    -

    Petethegoat updated:

    -
      -
    • Updated chemical grenades. The build process is much the same, except they require an igniter-X assembly instead of a single assembly item. You can also just use a cable coil to get regular grenade behaviour.
    • -
    -
    - -
    -

    9 June 2013

    -

    Ikarrus updated:

    -
      -
    • Server operators may now allow latejoiners to become antagonists. Check game_options.txt for more information.
    • -
    • Server operators may now set how traitors and changelings scale to population. Check game_options.txt for more information.
    • -
    -
    - -
    -

    6 June 2013

    -

    Giacom updated:

    -
      -
    • Emptying someone's pockets won't display a message. In theory you can now pickpocket!
    • -
    -
    - - -
    -

    4 June 2013

    -

    Dumpdavidson updated:

    -
      -
    • Headsets can no longer broadcast into a channel that is disabled.
      Headsets now have a button to turn off the power instead of the speaker. This button disables all communication functions.
      EMPs now force affected radios off for about 20 seconds.
    • -
    -
    - -
    -

    2 June 2013

    -

    Ikarrus updated:

    -
      -
    • To reduce costs of security equipment, mounted flashers have been adjusted to use common handheld flashes as their flashbulbs. Although these flashbulbs are more prone to burnout, they can easily be replaced with wirecutters.
    • -
    -
    - -
    -

    25 May 2013

    -

    Ikarrus updated:

    -
      -
    • CentCom announced some minor restructuring within Space Station 13's command structure. Most notable of these changes is the removal of the Head of Personnel's access to the security radio channel. CentCom officials have stated the intention was to make the HoP's role more specialized and less partial towards security.
    • -
    -
    - -
    -

    14 May 2013

    -

    Ikarrus updated:

    -
      -
    • Nanotrasen seeks to further cut operating costs on experimental cyborg units. -
      -Cyborg chassis will now be made from a cheaper but less durable design. -
      -RCDs found on engineering models have been replaced with a smaller model to make room for a metal rods module. -
      -Cyborg arms will no longer be long enough to allow for self-repairs. -
      NOTE: A cyborg's individual modules have been found to become non-operational should the unit sustain too much structural damage.
    • -
    -
    - -
    -

    11 May 2013

    -

    Malkevin updated:

    -
      -
    • SecHuds now check for valid clearance before allowing you to change someone's arrest status. There is only one way to bypass the ID check, and its not the usual way.
    • -
    - -
    - -
    -

    7 May 2013

    -

    Ikarrus updated:

    -
      -
    • As a part of the most recent round of budget cuts, toolboxes will now be made with a cheaper but heavier alloy. HR reminds employees to avoid being struck with toolboxes, as toolbox-related injuries are not covered under the company's standard health plan.
    • -
    -
    - -
    -

    5 May 2013

    -

    Rolan7 updated:

    -
      -
    • Cargo manifests from CentComm may contain errors. Stamp them DENIED for refunds. Doesn't apply to secure or large crates. Check the orders console for CentComm feedback.
    • -
    -
    - -
    -

    2 May 2013

    -

    Malkevin updated:

    -
      -
    • You can now weld four floor tiles together to make a metal sheet
    • -
    • The All-In-One Grinder can now grind Metal, Plasteel, Glass, Reinforced Glass, and Wood sheets
    • -
    • Made grey backpacks slightly less ugly
    • -
    -
    - -
    -

    30 April 2013

    -

    Ikarrus updated:

    -
      -
    • Researchers have discovered that glass shards are, in fact, dangerous due to their typically sharp nature. Our internal Safety Committee advises that glass shards only be handled while using Nanotrasen-approved hand-protective equipment.
    • -
    -
    - -
    -

    24 April 2013

    -

    Carnie updated:

    -
      -
    • DNA reworked: All SE blocks are randomised. DNA-modifier emitter strength affects the size of the change in the hex-character hit. Emitter duration makes it more likely to hit the character you click on. Almost all DNA-modifier functions are on one screen.
      Balancing -will- be off a bit. Is getting halk to hard/easy? Please report bugs/balancing issues/concerns here: http://forums.nanotrasen.com/viewtopic.php?f=15&t=13083 <3
    • -
    -
    - -
    -

    26 April 2013

    -

    Aranclanos updated:

    -
      -
    • Exosuit fabricators will now need to be manually updated
    • -
    -

    Ikarrus updated:

    -
      -
    • Commanding Officers of Nanotrasen Stations have been issued a box of medals to be awarded to crew members who display exemplary conduct.
    • -
    -
    - - -
    -

    23 April 2013

    -

    Malkevin updated:

    -
      -
    • Replaced the captain's run of the mill armored vest with his very own unique vest. Offers slightly better bullet protection.
    • -
    -
    - - -
    -

    22 April 2013

    -

    Malkevin updated:

    -
      -
    • Overhauled the thermal insulation system
    • -
    • All clothing that protected from one side of the thermal spectrum now protects from the other.
    • -
    • Armor (although most don't have full coverage) protects between 160 to 600 kelvin
    • -
    • Firesuits protect between 60 to 30,000 kelvin (Note: Hotspot damage still exists)
    • -
    • CE's hardsuit got its firesuit level protection back
    • -
    • Bomb suits function as ghetto riot gear
    • -
    -
    - -
    -

    22 April 2013

    -

    Cheridan updated:

    -
      -
    • Stungloves removed 5eva.
    • -
    • Don't rage yet. Makeshift stunprods(similar in function to stungloves) and spears are now craftable. Make them by using a rod on cable restraits, then adding something.
    • -
    • Stun batons/prods now work off power cells, which can be removed and replaced! Use a screwdriver to remove the battery.
    • -
    -
    - - -
    -

    17 April 2013

    -

    Giacom updated:

    -
      -
    • If the configuration option is enabled, AIs and or Cyborgs will not be able to communicate vocally. This means they cannot talk normally and need to use alternative methods to do so
    • -
    -
    - - -
    -

    10 April 2013

    -

    Cheridan updated:

    -
      -
    • You can now condense capsaicin into pepper spray with chemistry.
    • -
    • Pepper spray made slightly more effective.
    • -
    • Teargas grenades can be obtained in Weapons and Riot crates.
    • -
    • Riot crate comes with 2 sets of gear instead of 3, made cheaper. Beanbag crate removed entirely. Just make more at the autolathe instead. Bureaucracy crate cheaper, now has film roll.
    • -
    • NT bluespace engineers have ironed-out that little issue with the teleporter occasionally malfunctioning and dropping users into deep space. Please note, however, that bluespace teleporters are still sensitive experimental technology, and should be Test Fired before use to ensure proper function.
    • -
    -
    - - -
    -

    9 April 2013

    -

    Ikarrus updated:

    -
      -
    • Liquid Plasma have been found to have strange and unexpected results on virion cultures. The executive chief science officer urges virologists to explore the possibilities this new discovery could bring.
    • -
    • After years or research, our scientists have engineered this cutting-edge technology born from the science of shaving. The Electric Space-Razor 5000! It uses moisturizers to refuel your face while you shave with not three, not four, but FIVE lazer-precise inner blades for maximum comfort.
    • -
    -
    - -
    -

    4 April 2013

    -

    Cheridan updated:

    -
      -
    • When an AI shunts into an APC, the pinpointer will begin tracking it. When the AI returns to its core, the pinpointer will go back to locating the nuke disc.
    • -
    • New sechud icons for sec officers/HoS, medical doctors, and loyalty implants.
    • -
    -
    - -
    -

    28 March 2013

    -

    Carnie updated:

    -
      -
    • Empty character slots in your preferences screen will now randomize. So they won't initialise as bald, diaper-clad, white-guys.
    • -
    • Reworked the savefile versioning/updating code. Your preferences data is less likely to be lost.
    • -
    -
    - -
    -

    14 March 2013

    -

    Major_sephiroth updated:

    -
      -
    • You can now light cigarettes with other cigarettes, and candles. And cigars. Light a cigar with a candle! It's possible now!
    • -
    -
    - -
    -

    13 March 2013

    -

    Elo001 updated:

    -
      -
    • You can now open and close job slots for some jobs at any IDcomputer. There is a cooldown when opening or closing a position.
    • -
    -
    - -
    -

    8 March 2013

    -

    Kor updated:

    -
      -
    • You can now construct/destroy bookcases. This is super exciting and game changing.
    • -
    -
    - -
    -

    6 March 2013

    -

    Petethegoat updated:

    -
      -
    • Petethegoat says, "Added a new feature involvi-GLORF"
    • -
    • Overhauled how grabs work. There aren't any interesting mechanical differences yet, but they should be a lot more effective already. You don't have to double click them anymore. Report any bugs with grabbing directly to me, or on the issue tracker.
    • -
    -
    - -
    -

    24 February 2013

    -

    Ikarrus updated:

    -
      -
    • AI has been moved back to the center of the station. Telecoms has been moved to engineering.
    • -
    -

    Faerdan updated:

    -
      -
    • Competely new UI overhaul! Most user interface have been converted.
    • -
    - -
    -

    22 February 2013

    -

    Petethegoat updated:

    -
      -
    • Added cavity implant surgery.
    • -
    • Additionally, surgery must now be performed with help intent. Some procedures have also been updated. - As always, check the wiki for details.
    • -
    -
    - -
    -

    18 February 2013

    -

    Ikarrus updated:

    -
      -
    • The AI has been moved to Research Division, and Telecomms has been moved into the former AI chamber. Affected areas: Telecoms Satellite, Research Division South & Command Sector.
    • -
    -

    Incoming updated:

    -
      -
    • Added three new types of surgery- lipoplasty, plastic surgery, and gender reassignment.
    • -
    -

    Kor updated:

    -
      -
    • The RD has lost access to telecomms, and basic engineers have gained it.
    • -
    -
    - -
    -

    14 February 2013

    -

    Petethegoat updated:

    -
      -
    • Updated surgery: you now initiate surgery with surgical drapes or a bedsheet. Most procedures have changed, check the wiki for details. Currently it's pretty boring, but this paves the way for exciting new stuff- new procedures are very simple to add. Report any bugs directly to me, or on the issue tracker.
    • -
    -
    - -
    -

    13 February 2013

    -

    Giacom updated:

    -
      -
    • There are now hackable wires for the PA computer. To open the interface, click on it while the wires are exposed/panel is open. All but one wire will do something interesting, see if you can figure it out. You can also attach signallers to the wires so have fun remotely releasing the singularity.
    • -
    • New staff of animation icon by Teh Wolf!
    • -
    • You can now hack plastic explosives (C4)!
    • -
    • You can now use NTSL to send signals! With the function signal(frequency, code) you can create some clever ways to trigger a bomb. NTSL also has two new additions; return in the global scope will now stop the remaining code from executing and NTSL now has "elseif"s, huzzah!
    • -
    -

    Kor "I'm quitting I swear" Phaeron updated:

    -
      -
    • You've been asking for it for years, it's finally here. Wizards can spend points to buy apprentices.
    • -
    • A new wizard artefact, the scrying orb.
    • -
    • The spellbook now has descriptions of spells/items visible BEFORE you purchase them.
    • -
    -

    Petethegoat updated:

    -
      -
    • Traitors with the station blueprints steal objective can now use a photo of the blueprints instead!
    • -
    -
    - -
    -

    11 February 2013

    -

    SuperSayu updated:

    -
      -
    • Signallers, prox sensors, mouse traps and infrared beams can now be attacheed to grenades to create a variety of mines.
    • -
    • A slime core can be placed in a large grenade in place of a beaker. When the grenade goes off, the chemicals from the second container will be transfered to the slime core, triggering the usual reaction.
    • -
    -
    - -
    -

    10 Feburary 2012

    -

    Ikarrus updated:

    -
      -
    • Implants can now be surgically removed. Hint: They're inside the skull.
    • -
    -
    - -
    -

    07 February 2012

    -

    Giacom updated:

    -
      -
    • The return of the Nanotrasen Scripting Language! (NTSL) If you haven't heard of NTSL, it is a scripting language within a game for telecomms. Yes, you can create scripts to interact with the radio! For more information, head here: http://wiki.nanotrasen.com/index.php?title=NT_Script But before you do, if you are not an antag, do not create bad scripts which hinders communication.
    • -
    • Cameras, mulebots, APCs, radios and cyborgs can have signallers attached to their wires, like airlocks!
    • -
    • Cameras have non-randomized wires and the power wire when pulsed will now toggle the camera on and off.
    • -
    • Cyborgs have a new wire, the lockdown wire! It will disable/enable the lockdown of a Cyborg when pulsed.
    • -
    • The traffic control computer (or more commonly known as the computer which lets you add NTSL scripts) will now have a user log, which will log all user activity. Other users can then view that log and see who has been uploading naughty scripts!
    • -
    • NTSL has two new functions! time() and timestamp(format) will help you increase the range of types of scripts you can make, especially time(); since you can then make the scripts know the different between each execution by storing the results in memory.
    • -
    • Two new advance disease symptoms! Their names are "Longevity" and "Anti-Bodies Metabolism". Have fun experimenting with them!
    • -
    -
    - - -
    -

    31 January 2013

    -

    Kor "Even in death I still code" Phaeron updated:

    -
      -
    • Four new slime types with their own reactions and two new reactions for old slimes.
    • -
    • Put a suit of reactive teleport armour back in the RD's office.
    • -
    • Chemistry now has two dispensers (with half charge each) so both chemists can actually work at the same time.
    • -
    -
    - - -
    -

    27 January 2013

    -

    Ikarrus updated:

    -
      -
    • Security frequency chatter now appears in cyan (Similar to how command is gold)
    -

    Cheridan updated:

    -
      -
    • The plant bags in Hydroponics lockers have been replaced with upgraded models with seed-extraction tech. Activate with via right-click menu or Objects verb tab.
    • -
    • Obtaining grass tiles works a bit different now: grass is harvested as a normal plant item, clicking on it in-hand produces the tile.
    • -
    -
    - -
    -

    26 January 2013

    -

    Pete updated:

    -
      -
    • Added hugging and kicking. I also updated the text styles for clicking on humans in most intents, but they should be pretty much the same.
    • -
    -
    - -
    -

    25 January 2013

    -

    Errorage updated:

    -
      -
    • All the equipment you spawn with will now contain your fingerprints, giving the detective more ability to tell where items came from and if a crewmember has changed clothing.
    • -
    -
      -
    • Better explosions: Explosion spreading will now be determined by walls, airlocks and poddoors and not just a flat circle.
    • -
    -
    - -
    -

    20 January 2013

    -

    Cheridan updated:

    -
      -
    • Chickens will now lay a certain number of eggs after being fed wheat, rather than just laying them whenever they felt like it. No more chickensplosions.
    • -
    -
    - -
    -

    16 January 2013

    -
      -
    • Department Security can now be runned: -
      Department Security decentralizes security by assigning each officer to a different department. They will be given the radio channel and access to their assigned department along with a security post. The brig has been remapped to be smaller to accomodate this change. -
      To run DeptSec: Before compiling, server operators must
      tick jobs.dm (in WorkInProgress/Sigyn/Department Sec) and use map 2.1.1 instead of 2.1.0.
    • -
    -
    - -
    -

    /tg/station 13 Presents

    -

    Directed by S0ldi3rKr4s0

    -

    & produced by Petethegoat

    -
      -
    • Curse of the Horseman.
    • -
    -
    - -
    -

    12 January 2013

    -

    Cael Aislinn updated:

    -
      -
    • Spiders which will breed and spread through vents. Different classes of vents. AI controlled only at the moment.
    • -
    • Farm animals! Cows, goats and chickens are now available. You can order them at Cargo Bay.
    • -
    -

    Giacom updated:

    -
      -
    • Staff of animation mimics will no longer care whether you are holding the staff or not, they will never attack their creator.
    • -
    • Brainrot will only need alkysine to be cured.
    • -
    • New spider infestation event based on Cael's spiders. The announcement will be the same as alien infestations.
    • -
    -
    - -
    -

    11 January 2013

    -

    Giacom updated:

    -
      -
    • Plasma (Air) will give the breather the plasma reagent, for a toxic effect, instead of just straight damage.
    • -
    • The agent card will now work inside PDAs/Wallets; meaning the AI won't be able to track you.
    • -
    -
    - -
    -

    09 January 2013

    -

    Malkevin updated:

    -
      -
    • The owl mask now functions as a gasmask for increased crimestopping power.
    • -
    -
      -
    • Adds the missing icons for the arrest statuses of Parolled and Released, as well as a little blinking icon for chemical implants.
    • -
    - - -
    -

    08 January 2013

    -

    Cael Aislinn & WJohnston updated:

    -
      -
    • Many new icons for aliens (death, sleeping, unconscious, neurotox, thrown/impregnated facehugger etc)
    • -
    • Alien larva can now be removed by dangerous and unnecessary surgery (and actually chestburst if they aren't).
    • -
    • Alien larva now have sprites to represent their growth: bloody at 0%, pale at 25% and 75% the normal deep red.
    • -
    • New icon overlays for representing alien embryo progression.
    • -
    - -
    -

    07 January 2013

    -

    Kor updated:

    -
      -
    • Four new slime types with their own extract reactions have been added. Sprites this time were created by Reisyn, SuperElement, and LePinkyFace.
    • -
    - -
    -

    02 January 2013

    -

    Kor updated:

    -
      -
    • Slime breeding! There are now 13 varities of slime, each with its own extract reaction (inject five units of plasma). Some of these reactions are reused from the old cores, some are new. As to breeding, each colour of slime has a series of other slimes it may mutate into when it reproduces.
    • -
    -

    Giacom updated:

    -
      -
    • You can now use wallets as IDs and equip them in your ID slot.
    • -
    • Firesuits are once again effective at protecting you from heat. The flames themselves will still hurt you, even with a firesuit. The damage protection is much better with a firesuit though.
    • -
    • Engineering starts with a PACMAN generator for jump starting the singularity if the power runs out of the SMES. 30 plasma spawns in Secure Storage inside the crate, to use as fuel for the generator.
    • -
    - -
    -

    31 December 2012

    -

    Giacom updated:

    -
      -
    • Simple animals (Corgis, Cats, Constructs, Mice, Etc...) can now pull people.
    • -
    • You can quickly stop pulling on someone by pulling them, while they're already being pulled by you. For example, CTRL+Click on something you are pulling to quickly stop pulling it.
    • -
    - -
    -

    30 December 2012

    -

    Giacom updated:

    -
      -
    • Emitters now require to be wired in order to work. When there is not enough power it will stop shooting until there is enough power, meaning you do not have to turn it back on, just get the power flowing.
    • -
    • You can order shield generators from cargo. Teleporter access is required to open the crate.
    • -
    -

    Ikarrus updated:

    -
      -
    • Map: Reorganized the Command Sector. The Captain has his own private quarters in addition to his office.
    • -
    - -
    -

    26 December 2012

    -

    Ikarrus updated:

    -
      -
    • An agent card is now required to use doors and controls on the Syndicate Shuttle (Nuke).
    • -
    • Scanning gas tanks is now a PDA-cart function. Only Atmos and Science PDA carts have this function. Have fun mislabelling gas tanks!
    • -
    - -
    -

    23 December 2012

    -

    Giacom updated:

    -
      -
    • The syndicate Military PDA will not show up on possible PDAs to message anymore, even when the receive/signal is turned on. You can still send messages and people can still reply to you.
    • -
    • You can now sell processed plasma for supply points. The conversion rate is 2 plasma sheets for 1 point. You must put the plasma in a crate for it to count.
    • -
    • The mecha toy prize promotion has officially ended. You can no longer redeem all 11 action mecha figures for a real mech. New toy redeeming promotions in the future will be considered.
    • -
    - -
    -

    21 December 2012

    -

    Ikarrus updated:

    -
      -
    • You can now use . to speak over headset department channels in addition to the : and # characters.
    • -
    - -
    -

    19 December 2012

    -

    Nodrak updated:

    -
      -
    • You can now use # to speak over headset department channels. For example say "#e Hello" will say "Hello" over the engineering channel. say ":e Hello" will still work as it always has.
    • -
    - -
    -

    16 December 2012

    -

    Giacom updated:

    -
      -
    • You can now create your own solar arrays! Order the solar pack crate and you'll receive 21 solar assemblies, 1 electronic which you can put into an assembly to make it a solar tracker and finally the solar computer circuit board. You will get more detailed instructions in the crate, on a piece of paper. Engineering will also start with this crate to help repair destroyed solar arrays.
    • -
    -

    Petethegoat updated:

    -
      -
    • Added a new option to the key authorisation devices. It removes the maintenance access requirement from all doors. It's irreversible, so only use it in an emergency!
    • -
    - -
    -

    15 December 2012

    -

    Ikarrus updated:

    -
      -
    • Swapped the locations of the Library and Chapel. Thanks to killerz104 for the remap.
    • -
    • Partial remap of atmos. Monitoring and Refill stations are now the same room.
    • -
    • Toxins Mixing should be working properly again.
    • -
    - -
    -

    12 December 2012

    -

    Ikarrus updated:

    -
      -
    • Robotics is now a full Science department.
    • -
    • Completely remapped Research Division, Robotics, Medbay, and the Library.
    • -
    • Partially remapped Cargo Bay, Mining Dock, Engineering, and Atmospherics.
    • -
    • Changed the access of the HoS and HoP. For a list, refer to their respective wiki pages.
    • -
    -

    Errorage updated:

    -
      -
    • Miners now have to go through cargo to reach the Mining Dock.
    • -
    -

    Petethegoat updated:

    -
      -
    • The Detective's revolver no longer cares about how cool you look. It now spawns in his locker.
    • -
    • Added new inhands for most energy weapons, by Flashkirby!
    • -
    -

    Giacom updated:

    -
      -
    • Disintegrate (EI NATH) will leave behind the brain of the victim. Possible productive uses include: trophies, looking awesome as you gib someone and only their brain remains, people to talk to when you get an MMI, pocket brains, a way to get back into the game if the wizard didn't grab your brain and stuffed it into his bag.
    • -
    - -
    -

    07 December 2012

    -

    Giacom updated:

    -
      -
    • The detective's scanner was upgraded, it can now scan for reagents in items and living beings. Potential uses include, scanning dead bodies for leftover poison or scanning items to see if they have been spiked.
    • -
    • You can now attach photos to newscaster news feeds and wanted posters.
    • -
    • You can now emag buttons to remove access from them.
    • -
    • The CentComm. Report has been changed so it no longer names potential antagonists. It will just announce the potential round type instead.
    • -
    - -
    -

    05 December 2012

    -

    Cheridan updated:

    -
      -
    • Agent cards have been upgraded with microscanners, allowing operatives in the field to copy access levels off of other ID cards.
    • -
    -

    Ikarrus updated:

    -
      -
    • The Chief Medical Officer, Research Director, Chief Engineer, and Lawyers now have basic Brig access (corridor only)
    • -
    • Merged Mining and Cargo radio channels into the Supply Radio. To use the supply channel, use :u
    • -
    • Mining Dock remapped to be more compact and closer to cargo.
    • -
    -

    Giacom updated:

    -
      -
    • The wizard's fireball spell is once again dumbfire. It will fire in the direction of the wizard instead of having to choose from a list of targets and then home in on them.
    • -
    -
    - -
    -

    02 December 2012

    -

    Giacom updated:

    -
      -
    • Added a new artefact called the "Staff of Animation". You can get it in the Wizard's Spellbook. It will animate objects and items, but not machines, to fight for you. The animated objects will not attack the bearer of the staff which animates them, meaning if you lose your staff, or if it gets stolen, your minions will turn on you.
    • -
    -
    - -
    -

    30 November 2012

    -

    Petethegoat updated:

    -
      -
    • Janitor has recieved a slightly upgrade mop bucket. The old one is still there too.
    • -
    -

    Ikarrus updated:

    -
      -
    • Swapped the locations of the Vault and Tech Storage.
    • -
    • Cargo Techs, Miners, and Roboticists no longer start with gloves. They are still available from their lockers.
    • -
    -
    - -
    -

    28 November 2012

    -

    Kor updated:

    -
      -
    • Slimes have replaced roros (finally)! Right now they are functionally identical, but massive expansion of slimes and xenobio is planned. Sprites are by Cheridan.
    • -
    -
    - -
    -

    25 November 2012

    -

    Giacom updated:

    -
      -
    • Added new very high level symptoms which are only obtainable in the virus crate. Virus crate will also come with mutagen.
    • -
    -

    Petethegoat updated:

    -
      -
    • Removed clown planet! It'll return shortly in away mission form.
    • -
    -

    Ikarrus updated:

    -
      -
    • Added Gateway access. Only the RD, HoP, and Captain start with this.
    • -
    • New access levels in the brig:
      -Brig access now opens the front doors of the brig, as well as other lower-risk security areas.
      -Security access allows you into the break room and equipment lockers.
      -Holding Cells allows you to use brig timers and lets you in the Prison Wing.
      -The Detective no longer has Security Equipment access.
    • -
    • Significantly increased max cloneloss penalty for fresh clones to 40%.
    • -
    -
    - -
    -

    23 November 2012

    -

    Giacom updated:

    -
      -
    • Simplified detective stuff. The high-res scanner is gone and instead the detective's normal scanner will instantly report all fingerprints, dna and cloth fibers in full. This was needed because the system took too long to work with and disencouraged detectives. Not only that, it made detectives less of a threat for antagonists and made possible scenerios, such as framing someone by changing fingerprints with someone else, impratical. To replace the computer, the detective will have a full medical computer with access to it. Not only that, but his useless filing cabinet will be replaced with an empty one for serious investigators. Along with this, are fingerprint cards and built-in PDA scanning, as all of security had access to it which was really the detective's thing. The new scanner will also log every finding and you can print them out as a report by clicking the scanner while it is in your active hand.
    • -
    • You can toggle the pressure of your sprayer by clicking on it while it is in your active hand. With pressure, the sprayer will spray 10 units on the floor, otherwise it sprays 5. You'll need to turn pressure on to spray water on the floor and make it slippery.
    • -
    • AIs in intellicards can no longer move their camera. This will limit them in ability but without making creating and carding an AI to have as a personel door opener impossible.
    • -
    • Telecommunication Busses can now be set to change the frequency of a signal. (Allowing you to say.. set the command channel to broadcast to the common channel).
    • -
    • Telecommunication was changed to be more effecient. Because of this, Relays don't need a broadcaster or a receiver and you can setup a relay on it's own. You can still disable sending and or receiving from the relay's interface.
    • -
    -

    Zelacks updated:

    -
      -
    • Plant Analysers now work on seed bags.
    • -
    -
    - -
    -

    21 November 2012

    -

    Petethegoat updated:

    -
      -
    • The nuke shuttle can now travel at will, and to any location. When travelling from syndicate space to the station, (and vice versa), it will travel through hyperspace.
    • -
    -

    Carn updated:

    -
      -
    • Changed savefile structure. There's a bunch of unused files left lying around so old savefiles will be purged. Sorry for the inconvenience. Many preferences have been moved to the Preferences verb tab. Everything in that tab is persistent between rounds (it updates your savefile, so even DCing won't reset them). Enjoy x
    • -
    -

    Phol updated:

    -
      -
    • Added female sprites for most mutant races.
    • -
    -

    Cheridan updated:

    -
      -
    • SSU manufacturers have issued a product recall! It seems old models shipped with faulty wiring, causing them to short-circuit.
    • -
    -
    - -
    -

    20 November 2012

    -

    Kor updated:

    -
      -
    • Added Exile Implants to the Gateway room. Someone implanted with an Exile Implant will be able to enter the away mission, but unable to return from it. Not only can they be used for getting rid of dangerous criminals, but revs/stationheads count as dead while on the away mission, and traitor/changeling/wizard assassination targets count as dead if they're on the away mission at round end, allowing for those objectives to be completed peacefully.
    • -
    • Added medical hardsuits, sprited by Majorsephiroth. Two of them spawn in EVA. Their most unique/medical oriented feature is being able to hold a medkit in the suit storage slot, allowing you to easily access medicine while keeping your hands free.
    • -
    -
    - -
    -

    19 November 2012

    -

    Giacom updated:

    -
      -
    • Malf AIs can only shunt to APCs from their core. Meaning their core needs to be alive before they can shunt to another APC. Malf AIs can start a takeover inside an APC now.
    • -
    • When taking damage, the next sequence of the overlay will show for a bit before reverting to the overlay you should have. This allows you to know you are taking damage without having to check the text screen.
    • -
    -
    - -
    -

    18 November 2012

    -

    Petethegoat updated:

    -
      -
    • Ported over BS12 style cameras. They now take a photo of a 3x3 area!
    • -
    • Catatonic people (those that have ghosted while alive) now count as dead for assasinate objectives.
    • -
    -
    - -
    -

    17 November 2012

    -

    Donkie updated:

    -
      -
    • You can now deconstruct and construct Air Alarms and Fire Alarms. Read wiki on howto.
    • -
    -

    Giacom updated:

    -
      -
    • Medical Cyborgs no longer lose the reagents in their hypospray when switching modes.
    • -
    • Spaceacillin will now help stop the spread of diseases.
    • -
    • You can once again make floors slippery by spraying water. This was done by increasing the amount the sprayer uses, which is from 5 to 10. You can also empty your sprayer's contents onto the floor with a verb in the Object tab.
    • -
    -
    - -
    -

    16 November 2012

    -

    Kor updated:

    -
      -
    • Fixed the syndicate teleporter door, making teleport assaults possible. It will once again open when you open the outter door.
    • -
    -
    - - -
    -

    15 November 2012

    -

    Giacom updated:

    -
      -
    • You can now name your advance diseases! You can't name already known diseases though.
    • -
    • Chemical implants can now hold 50 units instead of 10 units.
    • -
    -
    - -
    -

    13 November 2012

    -

    Giacom updated:

    -
      -
    • More work to advance diseases. Please report any bugs to the bug tracker, I have tried everything that I can on my own but I'll need lots of people playing to fix the more minor bugs. You can find a guide to making your own diseases here: LINK!
    • -
    • Reduced the cost to use Hive Absorb from 40 to 20. This is to help encourage people to use this power more and to use team work.
    • -
    • New symptom added! See if you can find it.
    • -
    • You can now remove symptoms from a disease using synaptizine.
    • -
    • Kor: You can once again debrain changelings. They won't make anyone half-lings though, and you won't be able to tell if the body of a debrained changeling is a changeling by putting a player brain in there.
    • -
    -

    Nodrak updated:

    -
      -
    • Wizards can no longer cast spells when muzzled. It iss now actually possible to capture a live wizard without constantly injecting them with chloral.
    • -
    • You can no longer take bags of holding or mechs to the clown planet.
    • -
    -
    - -
    -

    11 November 2012

    -

    Carn updated:

    -
      -
    • Admin-ranks changes
      - Lots of changes. This is just a brief summary of the most recent changes; still working on proper documentation.
      - All admins have access to view-vars, player-panel(for individual mobs), game panel and secrets panel. Most of the things on those pages have their own rights requirements. For instance, you can only use event orientated secrets in the secret panel if you have FUN rights. Debug secrets if you have DEBUG rights. etc.
      - Spawn xeno and toggle gravity procs were moved into the secrets panel (fun).
      - This may help with understanding which flags do what. Unfortuanately it's still somewhat vague.
      - If you have any problems, feel free to PM me at irc.rizon.net #coderbus. I go by the username carn or carnie. -
    • -
    -
    - -
    -

    11 November 2012

    -

    Kor updated:

    -
      -
    • New cyborg upgrade available for production that requires illegal and combat tech
    • -
    • Summon Guns has a new gun type created by Ausops. It also lets the user know when its been cast now to prevent people trying to buy it multiple times
    • -
    • Grilles are no longer immortal in regards to solid projectiles, you can now shoot out windows.
    • -
    -
    - -
    -

    09 November 2012

    -

    Giacom updated:

    -
      -
    • Cyborgs can now ping and beep! (Say "*beep" and "*ping") Thanks to Rahlzel for the proposal.
    • -
    • HULKS WILL NOW TALK IN ALL CAPS AND WILL RANDOMLY SAY HULK THINGS. Thanks to Brotemis for the proposal.
    • -
    • Sorry for the inconveniences with advance diseases. They are working much better now!
    • -
    • An improved APC sprite by TankNut!
    • -
    -
    - - -
    -

    05 November 2012

    -

    Giacom updated:

    -
      -
      -
    • AIs can now tweak with a bot's setting like a human who unlocked the bot.
    • -
    -
    - -
    -

    05 November 2012

    -

    Errorage updated:

    -
      -
    • Being in an area with extremely low pressure will now deal some damage, if you're not protected.
    • -
    • Space suits and the captain's armor now protect against pressure damage
    • -
    • Slightly lowered all environment damage intakes (temperature, oxygen deprevation) to make up for low pressure damage.
    • -
    • Pressure protection finally works properly. Items that protect from pressure (firesuits, space suits, fire helmets, ...) will now properly protect. The pressure damage indicator will update properly based on the pressure effects on you. Black (low) and red (high) mean you are taking damage.
    • -
    • Slightly slowed down the speed at which your body temperature changes if you are in a very hot or very cold area. The speed at which you recover from an abnormal body temperature remains the same.
    • -
    -
    - - -
    -

    03 November 2012

    -

    TankNut updated:

    -
      -
    • New APC sprite.
    • -
    • New Wraith sprite and jaunting animation.
    • -
    -
    - -
    -

    03 November 2012

    -

    WJohnston updated:

    -
      -
    • New Ablative Armor sprite.
    • -
    -
    - -
    -

    03 November 2012

    -

    Giacom updated:

    -
      -
      -
    • Airborne diseases will not spread through walls now.
    • -
    • Reduced queen healing rate to 5. The maximum health will be enough.
    • -
    • Aliens can now clear hatched eggs by clicking on them.
    • -
    -
    - -
    -

    02 November 2012

    -

    Errorage updated:

    -
      -
    • You can once again travel to the station, derelict, satellite and mining z-levels through space. You will also never loop into the same level on transition - So if you are exiting the derelict z-level, you will enter one of the other z-levels.
    • -
    -
    - - -
    -

    01 November 2012

    -

    Giacom updated:

    -
      -
    • Aliens now take x2 as much damage from fire based weaponary, instead of x1.5.
    • -
    • Doors are now weaker than walls; so normal weapons can destroy them much more easily.
    • -
    -
    - -
    -

    31 October 2012

    -

    Giacom updated:

    -
      -
    • Advance evolving diseases! Virology can now create, mutate and mix advance diseases together. I replaced the two bottles of blood in Virology with the advance disease. I'll write a wiki article soon enough. Here's a tip: Putting mutagen or virus food (a mixture of milk, water and oxygen) in blood with an existing disease will mutate it to gain symptoms. It can potentially lose old symptoms in the process, so keep backups!
    • -
    -
    - -
    -

    28 October 2012

    -

    Errorage updated:

    -
      -
    • You can now set your character's age up to 85. This used to be 45.
    • -
    -
    - -
    -

    27 October 2012

    -

    Petethegoat updated:

    -
      -
    • Mousetraps are now assemblies.
    • -
    • Added a new crate for cargo to order.
    • - -
    -
    - -
    -

    27 October 2012

    -

    Petethegoat updated:

    -
      -
    • Player Weekend begins!
    • -
    • Added a camera and hand labeler to art storage.
    • -
    • Added a medical records cabinet to the Detective's office.
    • -
    • Added a safe to the vault. Who'll be the first to crack it?
    • -
    -

    Nodrak updated:

    -
      -
    • The CE has a new pet!
    • -
    -
    - -
    -

    25 October 2012

    -

    Flashkirby99 updated:

    -
      -
    • Added 18 new hairstyles!
    • -
    -
    - -
    -

    24 October 2012

    -

    Giacom updated:

    -
      -
    • Throwing eggs will result in the reagents of the egg reacting to the target. (Which can be a turf, object or mob) This creates possibilities like chloral eggs, lube eggs, and many more.
    • -
    • Aliens can now acid walls and floors! Not R-Walls though.
    • -
    • Facehugger throw range reduced to 5, so aim at humans that are 2 tiles apart from the edge of your screen.
    • -
    • Making eggs is a little more expensive but secreting resin is cheaper. (Both cost 75 now)
    • -
    • Aliens no longer have a random duration of stunning humans, it's a constant value now of the lower based value.
    • -
    • Acid is less random and will be more reliable. Don't bother aciding stuff more than once, as it will waste plasma.
    • -
    • You can now target non-dense items (such as facehuggers) with a gun.
    • -
    • You can now shoot canisters, computers and windoors to break them.
    • -
    -
    - -
    -

    18 October 2012

    -

    Giacom updated:

    -
      -
    • As an AI, you can type in the "track with camera" command and get a list of names to show up there. This also works with "list camera" verb. Remember to use space to auto-fill.
    • -
    • Welding goggles have been added. They are like welding helmets but they are for the glasses equipment slot. Science and the assembly line are given a pair.
    • -
    • Thanks to WJohnston for the welding goggle icons.
    • -
    • Small change to the Assembly Line. Instead of six normal flashes, the Assembly Line will instead have two normal flashes and eight synthetic flashes. Synthetic flashes only work once but are designed to be used in construction of Cyborgs.
    • -
    • Nar-Sie put on a few pounds. Thanks HornyGranny.
    • -
    -
    - -
    -

    16 October 2012

    -

    Giacom updated:

    -
      -
    • New changeling powers!
    • -
    • Hive Channel/Hive Absorb. Allows you to share your DNA with other changelings, very expensive chemical wise to absorb (download), not so much to channel (upload)! You cannot achieve your objective by sharing DNA.
    • -
    • Mimic Voice! You can form your voice of a name you enter. You won't look like them but when you talk, people will hear the name of who you selected. While you're mimicing, you can't regenerate chemicals.
    • -
    • Extract DNA! A power that allows you to silently sting someone and take their DNA! Meaning you do not have to absorb someone to become them. Extracting their DNA doesn't count towards completing your objectives.
    • -
    • You can now get flares from red emergency toolboxes. Has a 50% chance of a flash-light or a flare spawning.
    • -
    • Flare icon by Ausops!
    • -
    • Thanks to RavingManiac (Smoke Carter), Roros now lay eggs which can grow into baby roros or be used for cooking recipes. Scientists will need to expose the egg to plasma for it to hatch; while it is orange (grown).
    • -
    • A new icon for the map spawned x-ray cameras. Icon by Krutchen.
    • -
    -
    - -
    -

    13 October 2012

    -

    Giacom updated:

    -
      -
    • Facehuggers have a new animation, thanks to Sly.
    • -
    • Firelocks, glass-less airlocks and walls will stop heat.
    • -
    • Fires are now more deadly, especially the flames.
    • -
    • Fires will now break windows.
    • -
    -
    - -
    -

    10 October 2012

    -

    Giacom updated:

    -
      -
    • Larva grow a little bit faster when on weeds or when breathing in plasma.
    • -
    -
    - -
    -

    8 October 2012

    -

    Giacom updated:

    -
      -
    • Thanks to Skasi. Atmospherics has been changed to be made simpler and spawn with the new atmos features, such as the heaters.
    • -
    • Radio headsets can only be heard by people wearing them on their ear slot. This will let us do more fun stuff with headsets, such as a traitor encryption key which can listen to all the channels, but not talk in them.
    • -
    - -

    Kor updated:

    -
      -
    • A pen no longer spawns in your pocket. Instead, each PDA will spawn with a pen already in it.
    • -
    -
    - -
    -

    5 October 2012

    -

    Giacom updated:

    -
      -
    • Aliens can now be harmed by fire. They now also take double fire damage, meaning flame based weaponry is very effective.
    • -
    • Buffed alien facehuggers and eggs. Facehuggers don't go idle anymore, and they attach to anyone who walks past them. Eggs do the same; fully grown eggs will open to potential hosts. If you are still in the range of them, the facehugger inside will leap out and hug you. Removed "activate facehuggers", since it's useless now. Emote "roar" if you want to roar now.
    • -
    • There can be only one living queen at a time, if the queen dies then a drone can take her place as a princess.
    • -
    • Buffed queen regeneration a bit, so it's not the same as her underlings. It's also more important because there can only be one queen at a time.
    • -
    • Aliens don't slip in space anymore.
    • -
    • Hulks don't paralyze aliens anymore, they instead slow them down to a slow crawl. It is very effective for punching aliens out of weeds, so it can't regenerate it's health.
    • -
    • New egg opening and opened egg icons by WJohnston.
    • -
    -

    Aranclanos updated:

    -
      -
    • A buncha crud nobody cares about lol Added a light to the airlock wiring interface to show the status of the timing.
    • -
    • You can't fill sprays without being next to the dispenser.
    • -
    • Simple animals no longer freeze to death in places with normal temperature.
    • -
    • Mechs no longer freeze on the spot when they are using the Energy Relay on powerless areas.
    • -
    • Improvements to showers, they now clean gear on beltslot, back, ears and eyes. Showers only clean visible gear.
    • -
    • Replica pods works again! But you can't make potato people without a key or clone people who ghosted alive (Catatonic).
    • -
    • Engiborgs can deconstruct airlocks with their RCDs once again.
    • -
    • You can construct airlocks while standing on another airlock with RCDs.
    • -
    -
    - -
    -

    3 October 2012

    -

    Agouri updated:

    - -
    - -
    -

    1 October 2012

    -

    Cheridan updated:

    -
      -
    • Wizards have a new artifact added to their spellbooks.
    • -
    -
    - - -
    -

    30 September 2012

    -

    Numbers updated:

    -
      -
    • Readded Volume Pumps - now they work as intended and are constructable
    • -
    • Readded Passive Gates - now they work as intended and are constructable
    • -
    • Readded Heat Exchangers - now they work as intended and are constructable
    • -
    • Added Heater - to warm up gasses to 300C
    • -
    • Pipe dispensers can produce the readded pieces.
    • -
    • New graphics for all of the above - courtesy by Ausops.
    • -
    -
    - -
    -

    30 September 2012

    -

    Giacom updated:

    -
      -
    • Airlocks now use the Environmental power channel, since they are airlocks after-all. Meaning, when power is low the airlocks will still work until the environmental channel on the APC is turned off. This applies to all the door control buttons too. Pipe meters now use the environmental power channel. If you have any comments have this change, please let me know in the feedback section of the forums.
    • -
    -
    - -
    -

    26 September 2012

    -

    Carnwennan updated:

    -
      -
    • Added new hotkeys. Type hotkeys-help for details or see the drop-down help menu at the top of the game window.
    • -
    -

    Aranclanos updated:

    -
      -
    • Mechs are once again spaceproof!
    • -
    • The YouTool machine is now all access
    • -
    • Cutting tower caps in hand no longer deletes the wood, and planks now auto stack
    • -
    -
    - -
    -

    25 September 2012

    -

    Donkie updated:

    -
      -
    • Reworked the Piano, now really optimized and new interface!
    • -
    -
    - -
    -

    24 September 2012

    -

    Petethegoat updated:

    -
      -
    • Hopefully fixed the stop midis button. It should now stop any midis that are currently playing.
    • -
    -
    - -
    -

    23 September 2012

    -

    Petethegoat updated:

    -
      -
    • Fixed an exploit which would allow the janitor to magically mop floors.
    • -
    • Added lipstick~ It's not available on station, as Nanotrasen has deemed it contraband.
    • -
    • If you encounter any issues with computers, notify an admin, or ask for assistance on #coderbus, on irc.rizon.net.
    • -
    -

    Donkie updated:

    -
      -
    • Updated the Package Tagger with new interface!
    • -
    • You can now dispense, remove and retag sort junctions properly!
    • -
    -
    - -
    -

    17 September 2012

    -

    Cheridan updated:

    -
      -
    • Metroids have been replaced with Rorobeasts. Roros are strange latex-based lifeforms that hate light, fun, and gloves.
    • -
    -
    - -
    -

    17 September 2012

    -

    Carn updated:

    -
      -
    • F5 is now a hotkey for adminghosting. F8 toggles ghost-like invisibility for admins.
    • -
    • Catatonia makes you fall down. Admins appear braindead when admin-ghosting.
    • -
    • "Set-observe"/"Set-play" renamed and merged into "Aghost".
    • -
    • "Lay down/Get up" renamed to "Rest"
    • -
    • Closets can't be sold on the supply shuttle anymore
    • -
    • Fixed all dat light
    • -
    -
    - -
    -

    13 September 2012

    -

    Carn updated:

    -
      -
    • New Hotkeys (Trial period). Details can be found in the help menu or via the hotkeys-help verb. It's all client-side. It shouldn't intefere with regular controls (except ctrl+A, ctrl+S, ctrl+D and ctrl+W).
    • -
    -
    - -
    -

    10 September 2012

    -

    Giacom updated:

    -
      -
    • AIs can double click on mobs to instantly start tracking them.
    • -
    -
    - -
    -

    Important note for server hosts!

    -

    Important note for server hosts!:

    -
      -
    • The file /code/defines/hub.dm was moved into /code/hub.dm. To get your server back on the hub, open /code/hub.dm and set the hub variables again. Sorry for the inconvenience.
    • -
    -
    -
    -

    8 September 2012

    -

    Carn updated:

    -
      -
    • Added an additional check to stop changelings sharing powers/becomming un-absorbable/etc by absorbing eachother and then rejuvinating from death.
    • -
    • Cloaked Aliens are now slightly easier to see, so they should avoid strongly lit areas when possible. They can still lay down to become even stealthier though. Let me know what you think, it's only a minor sprite change.
    • -
    -
    - -
    -

    6 September 2012

    -

    Cheridan updated:

    -
      -
    • -Changes flour from an item to a container-held reagent. All recipes have been updated to use 5 units of reagent flour for every item required previously. This has a few advantages: The 16(!) sacks of flour previously in the kitchen cabinet have been condensed to an equivalent 3 sacks. Beer is now brewable with universal enzyme, and converting lots of wheat into flour should be less tedious. Also, flour grenades, etc. Because of this, flour is now obtained from the all-in-one blender rather than the processor, and spaghetti noodles are made with 5 units of flour in the microwave.
    • -
    -
    - -
    -

    6 September 2012

    -

    Giacom updated:

    -
      -
    • Removed cameras from bots (NOT BORGS). They weren't working well with freelook and I felt that since they weren't used at all, they wouldn't be missed.
    • -
    -
    - -
    -

    3 September 2012

    -

    Giacom updated:

    -
      -
    • Cameras has changed quite a bit. They are no longer created from grenade canisters, instead you make them from an autolathe. The construction and deconstruction for them has also changed, so look it up or experiment it with yourself to see how to setup the cameras now. Cameras also get wires, like airlocks and APCs. There's two duds, a focus wire, a power wire, an alarm wire and a light wire. Protip: You can see which one is the alarm wire by pulsing it.
    • -
    • Added a red phone and placed it in the Cyborg Station. Sprite by Pewtershmitz! You'll also find an AI restorer there, replacing the computer frame.
    • -
    • Cameras aren't all X-ray anymore. The AI won't be able to see what room you are in if there's no normal camera inside that room or if there's no X-ray camera nearby..
    • -
    • Cameras get upgrades! Currently there's X-ray, EMP-Proof and Motion. You'll find the EMP-Proof and Motion cameras in the normal places (Singularity Pen & EVA), the new X-ray cameras can be found in the Dormitory and Bathrooms, plus some extra ones to invade your privacy. See if you can smash them all.
    • -
    • Alien Larva can bite simple animals (see: Ian, Runtime, Mice) to kill them and gain a small amount of growing points.
    • -
    • Space travel was tweaked to be more random when changing Z levels. This will stop people and items from being stuck in an infinite loop, as they will eventually hit something to make them stop.
    • -
    -
    - -
    -

    31 August 2012

    -

    Agouri updated:

    -
      -
    • Overhauled newscasters. No visual additions but the thing is much more robust and everything works as intended. Wanted issues are fixed. Admins, check out Access News Network under Fun.
    • -
    -
    - -
    -

    30 August 2012

    -

    Giacom updated:

    -
      -
    • You can now create an EMP Pulse. Like an explosion, it is the mixing of two reagents that trigger this to happen. I will tell you the first required reagent. Uranium. Have fun!
    • -
    • I have made most chemicals need 3-5 or more chemicals in order to react to a turf. For instance, you need at least 5 units of thermite splashed on a wall for it to burn down."
    • -
    • The EMP kit, that you can buy through the uplink, has two more grenades in them now. Making the box full of EMP grenades!
    • -
    • Changed the EMP grenade's range to be much bigger.
    • -
    -
    - -
    -

    29 August 2012

    -

    Nodrak updated:

    -
      -
    • Mice now work with the admin player panel. Admins can now turn players into mice with the 'Animalize' button in the player panel!
    • -
    • Space bear AI no longer runs when a player is controlling it. Admins can now turn players into space bears with the 'Animalize' button in the player panel!
    • -
    • The holodeck beach program once again has a beach.
    • -
    • The nuke op shuttle floor was pressure-washed a few days ago. We have since re-painted it with nanotrasen blood. Sorry for any confusion.
    • -
    -
    - -
    -

    28 August 2012

    -

    Giacom updated:

    -
      -
    • You can now toggle the bolt light of airlocks. An extra wire, that controls the airlock's bolt light, has been added.
    • -
    • Aliens can now tell who is and who isn't infected. They get a special facehugger icon that appears over mobs that have been impregnated.
    • -
    • Cameras have temporary X-Ray for the time being.
    • -
    -
    - -
    -

    August 26, 2012

    -

    Nodrak updated:

    -
      -
    • Admins now have an 'Animalize' button on a mob's player panel. This button allows admins to turn players into simple animals.
      There are a few exceptions. Mice, Parrots, Bears and Space Worms all have issues that, until fixed, prevent me from allowing players those transformations.
    • -
    -

    August 25, 2012

    -

    Carnwennan updated:

    -
      -
    • New lighting. It should look and feel the same as the old lighting whilst being less taxing on the server. Space has a minimum brightness (IC starlight) and areas that do not use dynamic lighting default to a lighting level of 4, so they aren't dark, but they aren't superbright. Replacing turfs should preserve dynamic lighting. Singulo/bombs should cause a lot less lighting-related lag. There are some minor known issues, see the commit log for details.
    • -
    • Admins can now access most controller datums with the "Debug Controller" verb. Time to break all the things!
    • -
    • Supply shuttle now uses a controller datum. This means admins can see/edit supply orders etc.
    • -
    • Changeling fakedeath can be initiated after death again. Next time you want something reverted, just ask rather than being obnoxious.
    • -
    -

    Giacom updated:

    -
      -
    • AIs can now look around like a ghost with the exception that they cannot see what cameras cannot see. Meaning if you're in maintenance, and there's no cameras near you, the AI will not know what you are doing. This also means there's no X-Ray vision cameras anymore.
    • -
    • AIs can add links to Telecommunication Machines. Added some cameras for areas that should have it but instead relied on cameras nearby for vision.
    • -
    • Choking has been changed. You have to stand still while lethally choking someone. It takes time to get into that lethal choke. When you are lethaling choking someone, they are still concious until the lack of oxygen knocks them out.
    • -
    -

    trubble_bass updated:

    -
      -
    • Nerfed the Neurotoxin drink, it is now less effective than a stunbaton. But more effective than a Beepsky Smash.
    • -
    • Updated descriptions on various cocktails to be more accurate or more relevant to the drink itself.
    • -
    -
    - -
    -

    August 24, 2012

    -

    Sieve updated:

    -
      -
    • Floorbots now actually pull up tiles when emagged
    • -
    • All helper bots (excluding MULEs) have an access panel and maint panel, access being for behavior and maint for internal work
    • -
    • To open the maint panel, the access panel needs to be unlocked, then you use a screwdriver. There you can emag/repair it to your heart's content. (Emagging the access panel will also unlock it permanently)
    • -
    • Helper bots are now repaired by using a welder when their maint panel is open
    • -
    -
    - -
    -

    August 23, 2012

    -

    Nodrak updated:

    -
      -
    • In-hand sprites once again update correctly when equipping items.
    • -
    -
    - - -
    -

    August 16, 2012

    -

    Errorage updated:

    -
      -
    • Changes were made to how heating and cooling of humans works.
    • -
    • You must wear both a space suit and space helmet to be protected from space! Likewise you must wear a firesuit and a fire helmet to be protected from fire! Fire helmets are red and white hardhats, found in all fire closets.
    • -
    • Fire suits now only protect from heat and space suits only protect from cold, so make your choice count.
    • -
    -
    - - -
    -

    August 14, 2012

    -

    Sieve updated:

    -
      -
    • DNA modifiers can be used if there is no occupant, primarily to handle the buffer.
    • -
    • Ion Rifles are only effected by max severity EMPs, so AOE from its own shot won't effect it
    • -
    • Pepper Spray fits on Sec belts again
    • -
    -
    - -
    -

    August 11, 2012

    -

    Sieve updated:

    -
      -
    • Turrets now properly fire at simple_animals.
    • -
    • Borgs, AIs, and brains/MMIs can be sacrificed by cultists.
    • -
    • Grenades now automatically set throw on again.
    • -
    -
    - -
    -

    August 6, 2012

    -

    Dingus updated:

    -
      -
    • Library has been redesigned. It's a whole lot more classy now.
    • -
    • Significant changes to Medbay. CMO's office is more centralized, genetics has a new exit into cryogenics, and a new break room has been installed
    • -
    -
    - -
    -

    August 4, 2012

    -

    Icarus updated:

    -
      -
    • Changes to Med-Sci south and surrounding maintenance areas. Virology is more isolated and Science gets a new Misc. Research Lab.
    • -
    • Atmos techs get construction access now to do their little projects in.
    • -
    • Transformation Stings now work on living humans.
    • -
    -
    - -
    -

    August 2, 2012

    -

    Errorage updated:

    -
      -
    • Gas masks now protect you from reagent smoke clouds
    • -
    • Changed the 'black overlay' you get when paralyzed, blind or in critical condition to include a small circle around you.
    • -
    • Dramatically lowered the amount of damage you get per breath while in critical condition. Critical condition now lasts for about 5 minutes if nothing is causing you any additional harm. This in combination with the new black image overlay is an attempt at making doctors more willing to help.
    • -
    -

    Icarus updated:

    -
      -
    • Borgs now have flashlights to allow them to see in lightless areas
    • -
    • Changes to Medbay: The sleeper and storage rooms have been swapped around. Hopefully this leads to more healing and less looting.
    • -
    -
    - -
    -

    August 1, 2012

    -

    Sieve updated:

    -
      -
    • Borgs can now have an encryption key installed into their internal radios. Simply ID, open the panel, and use the key to insert it (Screwdriver to remove)
    • -
    • Due to that as well, borgs have a 'Toggle Broadcast Mode' button for their radios, which changes the broadcast type between station-bounced (Non-reliant on TComms), and subspace (Required for department channels)
    • -
    • Also changed the binary chat for consistency, now for the prefix is ':b' for everyone, not just one for humans and one for borgs/AIs/pAIs
    • -
    • Based on feedback, Nuke Op pinpointers now automagically change between shuttle and disk mode when the nuke is armed or disarmed.
    • -
    -
    - -
    -

    01-August-2012

    -

    Carn updated:

    -
      -
    • Please update your BYOND clients! Ideally everybody should be running the latest version of byond (v496). People who fail to update to at least version 494 within a month's time may find themself unable to connect. Currently our code has no restrictions at all, which is rather bad. By getting the user-base to keep their clients up-to-date we can make use of newer BYOND features reliably.
    • -
    -

    Giacom updated:

    -
      -
    • I've made some adjustments to the Fireball spell. I've changed it to shoot in the player's facing direction instead of you having to pick a name from a list. It will explode upon contact of a person, if it hits an obstacle or if it shoots for too long. To make up for the fireball not being able to go diagonal I've shortened the cooldown to 10 seconds. It still can hurt you badly and knock you down if you shoot it at a wall. Lastly, it now lights up so it'll show up in dark rooms easily.
    • -
    -
    - -
    -

    31 July 2012

    -

    Giacom updated:

    -
      -
    • Removed passive throwing. You need at least an aggressive hold of the mob before you can throw them.
    • -
    • New map changes by Ikarrus. AI Upload Foyer is now Secure Tech Access, and the outer door only requires Bridge access. Attached to it are two new rooms: The messaging server room and the communications relay. The comms relay room runs off its own SMES unit like the AI, so it won't be affected by powersinks
    • -
    -
    - - -
    -

    29 July 2012

    -

    Giacom updated:

    -
      -
    • All radios now only work in their Z level. This means that the CommSat has a few more additions to work with this change. There is now a new Telecomms Machine called the Relay which allows information to travel across Z levels. It it then linked to a new machine called the Hub, which will receive information from the Relays and send it to the buses. Because every Z level needs these relays, which are linked up with Receivers/Broadcasters, every Z level will get one. There is one in the station, in the RD's office, one in Telecomms as always, one in the Ruskie station which is turned off and hidden from the HUB's linked list. The last one is in Mining but the location for it has not been decided yet.
    • -
    • PDAs now need to be in a Z level with a functioning Relay/Comms Network in order to send messages. It will also send uncompressed (scrambled) messages like you would with the ordinary voice messages.
    • -
    • Added some of WJohnston's sprites. Added a new mining borg sprite, Added a new high tech security airlock, Added the new telecomm sprites for Relays. Hubs were given old Bus sprites.
    • -
    -
    - -
    -

    29 July 2012

    -

    Errorage updated:

    -
      -
    • You can now use crayons to color eggs
    • -
    • Mice have invaded the station!
    • -
    -
    - -
    -

    26 July 2012

    -

    Giacom updated:

    -
      -
    • Added a new mushroom for Hydroponics, the Reishi Mushroom! It is obtained like any other mushroom and it has relaxing properties.
    • -
    -
    - -
    -

    July 25, 2012: The day of updates!

    -

    Nodrak updated:

    -
      -
    • Attacking mobs with items will now give new messages. Instead of "Monkeyman was attacked in the head with a wrench by Nodrak." it will read "Monkeyman was bashed in the head with a wrench by Nodrak." Diffrent items have diffrent verbs and some have multiple verbs.
    • -
    • Cultists can now read what words a rune was made with by examining the rune. Due to an error in the code, this was not possible before.
    • -
    • Clowns no longer have practice lasers or staves of change blow up in their face due to clumsyness.
    • -
    • Engineering cyborgs can now actually repair a cut AI wire in APCs.
    • -
    • I've removed a ton of pointless checks and redundant loops from metroid's which have been causing lag due to how often they get called. If metroids are behaving strangly ping me in #coderbus
    • -
    -

    Sieve updated:

    -
      -
    • Made a 'default' save slot (D), and whenever you connect it automatically selects the default slot to load from, but manually selecting a different slot will allow you to play on that one before it returns to default.
    • -
    • Added the ability to name your save slots with the '*'. Names can be up to 16 characters and contain letters, numbers, and basic symbols
    • -
    • The preview icon on the preference screen now takes into account any job you have set on high, and dresses up the icon accordingly. If assistant is set to 'yes', or AI/Cyborg are on high it will put the icon in a grey suit (So you can still customize).
    • -
    • Nuke Ops get a new pinpointer, changing modes with the verb will switch between pointing to the disk, and pointing to the shuttle. Also provides a notification when you leave the station z-level
    • -
    • Reworked how MMI Life() was done, now they will never lose consciousness, and many less things affect them now(Like deafening/blindness from explosions). However, they are vulnerable to EMPs, but all damage is temporary.
    • -
    • Clowns will no longer be killed trying to use holo eswords
    • -
    • Major tweaking to try and optimize many operations on the game's backend. Hopefully, this will reduce a large amount of lag by steamlining CPU-intensive operations, but at the same time there was so much changed that there is no real way for a small group to test everything. If anyone spots a bug involving being unable to 'find' mobs, characters, whatever, then put it on the issue tracker or at the very least let #coderbus know. We can't fix shit unless we know about it.
    • -
    -

    Icarus updated:

    -
      -
    • Players not buckled in when the emergency shuttle/pod starts moving get will get knocked down.
    • -
    • Added a YouTool vending machine to primary tool storage.
    • -
    -
    - -
    -

    24 July 2012

    -

    Errorage updated:

    -
      -
    • Both the chef and bartender have access to the bar area so both can serve if the other is incompetent or does not exist. Bartender's shotgun and shaker were moved to his back room and the booze-o-mat is now ID restricted to the bartender.
    • -
    • Added powercells into vending machines in engineering
    • -
    • Gave two beartraps to the janitor for pest control purposes................
    • -
    -
    - -
    -

    22 July 2012

    -

    Errorage updated:

    -
      -
    • Mech toys can now be redeemed at the quartermaster's for a great reward! If you collect the full set of 11 toys you should put them in a crate and send them to centcom via the supply shuttle.
    • -
    • Supply shuttle arrival time reduced to 2 minutes
    • -
    • Hopefully fixed the toy haul problem which made it possible to get a million toys from arcade machines.
    • -
    -

    Giacom updated:

    -
      -
    • You can now make newlines with your PDA notes.
    • -
    • You can now research and build the Light Replacer.
    • -
    • You can now store donuts in the donut box. The next donut you pull out will be the last one you put in.
    • -
    • APCs will auto-turn on if there is enough power in the grid, even if the powercell is below 30%. The APC needs to be charged for a long enough time before it starts turning equipment on, to avoid spazzing out. If you have any problems with it, such as equipment turning off and on repeatedly then please make an issue report with a screenshot of the APC.
    • -
    -
    - -
    -

    18 July 2012

    -

    Giacom updated:

    -
      -
    • Added the Light Replacer. This is a device that can auto replace lights that are broken, missing or burnt. Currently it is found in the Janitor's closet and Janitor Borgs can equip it. You can refill it with glass, or if you're a Cyborg, just recharge. It is emaggable and will replace lights with rigged lights. The light's explosion was nerfed to help balance it and it is very noticable when you are holding an emagged Light Replacer.
    • -
    • The Janitor's equipment locator, on their PDA, will now tell you the direction of the equipment.
    • -
    -
    - -
    -

    17 July 2012

    -

    Icarus updated:

    -
      -
    • Added department satchels
    • -
    • Added Captain's Backpack and Satchel
    • -
    • Added three new hairstyles by Sly: Gelled, Flat Top, and Pigtails. Hair list has also been sorted by grouping similar styles.
    • -
    -

    Giacom updated:

    -
      -
    • Added a new wire for Cyborgs. See if you can figure out what it does.
    • -
    • You can now fill any container with a sink. You can change the amount to fill, from sinks, by setting your container's transfer amount.
    • -
    -
    - -
    -

    14 July 2012

    -

    Carn updated:

    -
      -
    • All living mobs can now ghost whenever they want. Essentially making the suicide verb obsolete. If you ghost whilst still alive however, you may not re-enter your body for the rest of the round.
    • -
    • Humans can no longer suicide whilst restrained (this is purely to prevent meta whilst I finish up the new FUN suicides)
    • -
    • Fixed dem evidence bags. Fixed metroids getting at it like rabbits. Fixed stuff like welding masks not hiding your face. Bunch of other things
    • -
    -

    Willox and Messycakes updated:

    -
      -
    • pAI Emoticons! Allows each pAI to set their screen to display an array of faces! Click on 'Screen Display' in the pAI OS for a list.
    • -
    -
    - - -
    -

    Saturday July 14th 2012

    -

    Giacom updated:

    -
      -
    • Added Russian Revolvers. This is a special Revolver that can only hold a single bullet randomly in it's chamber. This will allow you to play Russian Roulette with your fellow crew members! You can use it like a normal gun but you will need to cycle through the chamber slots until you hit the bullet. Only admin spawnable.
    • -
    -
    - -
    -

    Friday July 13th 2012

    -

    Carn updated:

    -
      -
    • Added FLOORLENGTH HAIR. YEESSSSSSSS!!!! :3 If you like it say thanks to Ausops for fixing it up. Credits to Powerfulstation for the original sprite.
    • -
    -

    Giacom updated:

    -
      -
    • Save Slots! You can now have separate save slots for different character setups, with a customizable maximum of 3 slots per account. If you are wondering, you will not lose your old saved setup.
    • -
    • The character setup screen was updated to look nicer and to fit on the screen.
    • -
    -

    Icarus updated:

    -
      -
    • Added new Dwarf and Very Long hairstyles. Dwarf hair and beard by SuperCrayon.
    • -
    -
    - -
    -

    Thursday July 12th 2012

    -

    Giacom updated:

    -
      -
    • pAI gets a better PDA that can actually receive messages from people. They can also instantly reply like everybody else now and they can toggle their receiver/signaller/ringer.
    • -
    • You can show the AI the notes on your PDA by holding it up to a camera. When you show up a paper/pda to the camera the AI can now click on your name to go to you, if you're near a camera. People who are Unknown will not have a link; which would've allowed the AI to track them.
    • -
    • Made the" common server" and the "preset right receiver" listen for frequencies 144.1 to 148.9. This will allow people to use different frequencies to talk to eachother without bothering the common channel. It will also allow Revs and Cultists to work with each other; everything is still logged though so it still has risks.
    • -
    • Increased the maximum frequency limit for handheld radios and intercoms. It will give you the option to just use station bounced radios on a higher frequency so that anyone with a headset can't simply tune in.
    • -
    • Created an All-In-One Grinder that is suppose to replace the blender, juicer and reagent grinder all together. Meaning any department that has a juicer, blender and grinder will instead get this. It will help people be more independent from Chemistry by recycling foods and plants.
    • -
    -
    - -
    -

    Wednesday July 11th 2012

    -

    Nodrak, Cheridan and Icarus updated:

    -
      -
    • Added a couple of Emergency Shield Projectors to Engineering secure storage. -

      Note: Credit goes to Barhardar for the original code and functionality. -

      These devices can be used to quickly create an air-tight seal across a hull breach until repairs can been made. -

      Wrench them in place and activate them near a hull breach. The shield should extend to all space tiles in range. -

      They can be (un)locked by engineering IDs and can also be emagged and otherwise malfunction. As they can not be constructed, you can repair damage and malfunctions by opening the panel with a screwdriver and replacing the wires with a cable coil

    • -
    -

    Giacom updated:

    -
      -
    • Chemistry update: Pills can now be ground up in reagent grinders. You can now put custom amounts of reagent into things using chemmasters. Can now load pill-bottles into chemmasters for mass pill-production.
    • -
    -

    Carn updated:

    -
      -
    • Clicks on inventory slots with items in now act like a click on the thing in that slot. So clicking smaller things (like pens) is easier and you can remove clothing that borks/goes invisible. Please continure to report those kinds of bug though please. Thanks x
    • -
    • Can no longer interact with your inventory with a mech.
    • -
    -

    Errorage updated:

    -
      -
    • You can now only adminhelp once every 2 minutes so please provide all necesary information in one adminhelp instead of 5! Also reply to admins in PM-s and not additional adminhelps.
    • -
    -
    - -
    -

    Saturday July 7th, 2012

    -

    Icarus updated:

    -
      -
    • A basketball simulation is now available at the holodeck. Credit to Sly and Ausops for the sprites.
    • -
    -
    - -
    -

    Friday July 6th, 2012

    -

    Giacom updated:

    -
      -
    • Bottles can now be broken over people's heads! To do this, you must have the harm intent on and you must be targeting the person's head. This change affects alcoholic bottles only. It does not change pill bottles or chemistry bottles. Helmets help protect you from damage and the regents of the bottles will splash over the victim.
    • -
    • AI's now have access to a PDA. Note: It is not PDA-bomb-able
    • -
    • Health analyzers and medical PDAs now give a time of death when used on corpses.
    • -
    -
    - -
    -

    Thursday July 5th, 2012

    -

    Carn updated:

    -
      -
    • Alien larva now chestburst even after their host has died.
    • -
    • Aliens can now slap facehuggers onto faces so they can infect mobs which lay down (or those stuck to nests).
    • -
    • Aliens can now slash security cameras to deactivate them.
    • -
    -
    - -
    -

    Wednesday July 4th, 2012

    -

    39kk9t & Carn updated:

    -
      -
    • Added alien nests. They're basically beds made of thick sticky resin which aliums can 'stick' (buckle) people to for sexytimes
    • -
    • Weed nodes are no longer dense.
    • -
    • Queens can secrete resin for walls/nests/membranes
    • -
    • Various bugfixes
    • -
    -
    - -
    -

    Saturday June 30th, 2012

    -

    Icarus updated:

    -
      -
    • Added Petethegoat's basic mirrors to the map. They allow you to change hairstyles.
    • -
    • Remapped Bar, Theatre, and Hydroponics. Bar and Kitchen are now more integrated with each other.
    • -
    -
    - -
    -

    Thursday, June 28th

    -

    Nodrak updated:

    -
      -
    • I'm currently working on cleaning up and moving around a large portion of the mob code. These changes do not directly affect players; HOWEVER, bugs, oversights or simple mistakes may cause problems for players. While I have tested as much as I can, there may be some lingering bugs I have missed.

      This part of the mob code cleanup mainly focuses on damage variables and procs. So if you suspect something related to taking, dealing or examining damage is not working as intended please fill out an issue report here and be as detailed as possible. This includes what you were doing, steps to reproduce the problem, who you were doing it to, what you were using ect... Thank you.

    • -
    -

    Carn updated:

    -
      -
    • Alien hunters will now cloak when using the 'stalk' movement intent. Whilst cloaked they will use up their plasma reserves. They can however cloak as long as they like. Using the Lay-down verb will allow them to remain cloaked without depleting their plasma reserves, hence allowing them to lay ambushes for unsuspecting prey. Should a hunter attack anybody, or get knocked down in any way, they will become visible. Hopefully this allows for more strategic/stealthy gameplay from aliens. On the other hand, I may have totally screwed the balance so feedback/other-ideas are welcome.
    • -
    • Removed the invisibility verb from the alien hunter caste.
    • -
    -
    - -
    -

    Wednesday, June 27th

    -

    Errorage updated:

    -
      -
    • Fixed the bug which prevented you from editing book's titles and authors with a pen. Also fixed the bug which prevented you from ordering a book by it's SS13ID.
    • -
    • Added the F12 hotkey which hides most of the UI. Currently only works for humans.
    • -
    -

    Donkie updated:

    -
      -
    • Pizza boxes! Fully stackable, tagable (with pen), and everythingelse-able. Fantastic icons by supercrayon!
      Created with a sheet of cardboard.
    • -
    -
    - -
    -

    Tuesday, June 26th

    -

    Errorage updated:

    -
      -
    • Changeling parasting now only weakens for 10 game ticks. It no longer silences your target.
    • -
    -
    - -
    -

    Saturday, June 23rd

    -

    Donkie updated:

    -
      -
    • Reworked job randomizing system. Should be more fair.
    • -
    • List of players are now randomized before given antag, this means that declaring as fast as possible doesn't mean shit anymore!
    • -
    -

    Carn updated:

    -
      -
    • Putting a blindfold on a human with lightly damaged eyes will speed up the healing process. Similar with earmuffs.
    • -
    • More overlay bug fixes. Most of it to do with little robots and construction stuff. Bugs go here if you have 2 minutes http://nanotrasen.com/phpBB3/viewtopic.php?f=15&t=9077
    • -
    • Weakening is instant! That means if you stunbaton somebody they're gonna fall-down immediately.
    • -
    -

    Icarus updated:

    -
      -
    • Medical storage now requires Surgery access (Medical Doctors only)
    • -
    -
    - -
    -

    Wednesday, June 20th

    -

    Nodrak updated:

    -
      -
    • AIs, Borgs are no longer able to be cultists or revolutionaries as their objectives completely contradict their laws. They can still be subverted of course.
    • -
    • pAI's no longer keep cult or rev icons.
    • -

    Cheridan updated:

    -
      -
    • -Both Ambrosia forms have had their reagent contents modified to prevent going over the 50-unit cap at high potencies. Ambrosia Deus now contains space drugs instead of poison.
    • -
    • -Drinking milk removes capsaicin from your body. REALISM!
    • -
    • -Frost oil hurts less upon consumption.
    • -
    • -Liquid plasma can be converted into solid plasma sheets, by mixing 20 plasma, 5 iron, and 5 frost oil.
    • -
    • -Added effects for holy water injection on hydroponics plants.
    • -
    -
    - -
    -

    Monday, June 18th

    -

    Giacom updated:

    -
      -
    • Fix for special characters on paper and from announcements
    • -
    -

    Sieve updated:

    -
      -
    • Various small bugfixes, check the commit log for full details
    • -
    • Fixed falsewalls not working
    • -
    • Made Lasertag ED-209's and turrets much more useful, including making their emag function more fitting
    • -
    • Added Mesons to the EngiVend to make up for how many lockers were removed
    • -
    • New Item: Sheet Snatcher. Right now only borgs have them, but they can hold up to 500 sheets of minerals (Of any combination), and auto-stacks them to boot. Used just like the mining satchels, meaning minerborgs can actually deliver metal
    • -
    • Mech drills can mine sand, and the diamond gets a much larger volume
    • -
    • If a borg has the satchel in its modules (Doesn't have to be the active one), it will auto-magically pick up any ores it walks over.
    • -
    • Bumping an asteroid wall with a pickaxe/drill in your hand makes you auto-magically start drilling the wall, making mining much less tedious (humans and borgs)(Also, gustavg's idea)
    • -
    -

    Icarus updated:

    -
      -
    • New afro hairstyles. Big Afro by Intigracy.
    • -
    -
    - -
    -

    Friday, June 15th

    -

    Carnwennan updated:

    -
      -
    • First update for update_icons stuffs:
      Fixed husking and fatties
      Fixed floor tiles still appearing in hand when laying them
      Fixed runtimes with fatties.
    • -
    • Fixes for pre-existing bugs:
      Fixed being unable to put belts & backpacks on other people
      nodamage (godmode) now prevents all organ damage. It does not stop healing however.
      Nerd stuff...
    • - -
    -

    Errorage updated:

    -
      -
    • Greatly reduced the amount of damage high pressure does.
    • -
    • Fire suits, firefighting helmets (red harhats) and the chief engineer's white hardhat now protect against high pressure.
    • -
    -

    Icarus updated:

    -
      -
    • Ported over ponytail sprites from Baystation
    • -
    -
    - -
    -

    Thursday, June 14th

    -

    Carn updated:

    -
      -
    • FEAR NOT! You can now store a pen in your pda. (aka Best commit all commits)
    • -
    -
    - -
    -

    Wednesday, June 13th

    -

    Carn updated:

    -
      -
    • Massive Mob-Icon Overhaul:
      A large amount of the mob code has been replaced. The systems replaced were causing immense performance issues so the following are very necessary optimisations.
      However, there is a downside: SS13 code is the equivilant of monkeys on typewriters. Despite weeks of constant coding/testing there -will- be things I've missed. The kinds of bugs I'm expecting are overlays not updating and/or in rare cases things not appearing in your hud. Most of these issues can be worked around simply by dropping the item and picking it back up. If all else fails ask an admin to regenerate your icons through view-vars.
      Please report any bugs to me on #coderbus IRC or make an issue on the tracker as a matter of urgency. I will fix them ASAP.
      Also a massive thankyou to Nodrak, Erro, Pete and Willox. :)
    • -
    • Massive rewrite of the overlays system (particularly for humans). Stuff is cached and only updates when necessary. In effect this means faster updates, less overheads/lag, and less reliance on the game-ticker.
    • -
    • Numerous bugfixes and tweaks for damage-procs and damage-overlays for humans. They should now be almost seamless, use very little overhead and update instantly.
    • -
    • TK grab can now be cancelled using the throw hotkey. (so now it toggles on/off like it used to).
    • -
    • Added verbs to the view-var drop-down list: "Regenerate Icons" will fix a mob's hud/overlays. "Set Mutantrace" will change a mob's mutantrace.
    • -
    • Damage icons were split up. They kinda look a bit crap so spriters feel free to replace them. Templates are provided in dam_human.dmi
    • -
    • More to come...
    -

    Cheridan updated:

    -
      -
    • -Added Lezowski's overalls to hydroponic supply closets. 50% chance per closet for them to replace the apron. -Removed some covers tags from things that made no sense to have them.
    • -
    -
    - -
    -

    Monday, June 11th

    -

    Donkie updated:

    -
      -
    • Fixed being able to lock yourself in or out of a locker using the verb.
    • -
    -

    Xerux updated:

    -
      -
    • Added lightfixture creating.
    • -
    -

    Errorage updated:

    -
      -
    • You can now use the resist verb or UI button when welded or locked in a closet. Takes 2 minutes to get out tho (Same as getting out of handcuffs or unbuckling yourself)
    • -
    • Making single-pane windows will now make the window in the direction you're facing. If a window already exists in that direction it will make it 90 degrees to your left and so on.
    • -
    -
    - -
    -

    Sunday, June 10th

    -

    Agouri updated:

    -
      -
    • Cyborgs and AIs can now use the newscaster. It was a mistake on my part, forgetting to finish that part of them.
    • -
    -
    - -
    -

    Saturday, June 9th

    -

    Errorage updated:

    -
      -
    • You can now make restraints from cable. It takes 15 lengths of cable to make a pair of restraints, they are applied the same way as handcuffs and have the same effects. It however only takes 30s to remove them by using the resist verb or button. You can also remove them from someone by using wirecutters on the handcuffed person.
    • -
    • Added four new cable colors: pink, orange, cyan and white. Engineer belts spawn with yellow, red or orange cables while toolboxes and tool closets spawn with all 8 colors.
    • -
    -
    - -
    -

    Thursday, June 7st

    -

    Icarus updated:

    -
      -
    • Added a second ZIS suit to engineering.
    • -
    • Remapped CE office and surrounding areas.
    • -
    -
    - -
    -

    Wednesday, June 6th

    -

    Sieve updated:

    -
      -
    • Radiation now works properly, watch out for that Singularity!
    • -
    • Disposals are no longer the loudest machines in existence.
    • -
    • Building portable turrets with lasertag guns now makes them fire lasertag bolts based on team, and they will automatically target and prioritize people wearing opposing team gear.
    • -
    • The same can be done for ED-209s, simply using a lasertag vest and gun (same color) where you would use a security vest and taser in construction.
    • -
    • Added mineral walls and powered mineral door construction. More information can be found in the commit thread, but basically they are built the same way others are, apply mineral to girder for a mineral wall, mineral to airlock assembly for a powered mineral door.
    • -
    • Commit Thread
    • -
    • Throw hotkey (end) now works with TK.
    • -
    • Swap hands hotkey (page up) now cycles through borg modules.
    • -
    -

    Nodrak updated:

    -
      -
    • Cargo's 'shuttle: station' and 'shuttle: dock' has been changed to 'shuttle: station' and 'shuttle: away' to help avoid confusion.
    • -
    -

    Icarus updated:

    -
      -
    • Maintenance shafts changed around. Renamed, less windows, more turns, and expanded in a few areas.
    • -
    -

    Neek updated:

    -
      -
    • You can now add chemicals into cigarettes by injecting them directly or dipping individual cigarettes into a beaker. You can inject into cigarette packs directly to affect multiple cigarettes at once.
    • -
    -

    Willox updated:

    -
      -
    • You can now click individual blocks/subblocks in the genetics console instead of having to scroll through the blocks with a forward/back button!
    • -
    -
    - -
    -

    Sunday, June 3rd

    -

    Donkie updated:

    -
      -
    • You can now Drag-Drop disposal pipes and machinery into the dispenser, in order to remove them.
    • -
    • You must now use wrench before welding a pipe to the ground
    • -
    • You can no longer remove a trunk untill the machinery ontop is unwelded and unwrenched
    • -
    • You are now forced to eject the disposal bin before unwelding it.
    • -
    -
    - -
    -

    Friday, June 1st

    -

    SkyMarshal updated:

    -
      -
    • Readded fingerprints and detective work, after lots of debugging and optimization.
    • -
    • Any PDA with access to the Security Records can now, by the normal forensic scanner function, store data the same way as the detective's scanner. Scanning the PDA in the detective's computer will copy all scanned data into the database.
    • -
    • If something goes wrong, please contact SkyMarshal on the #bs12 channel on irc.sorcery.net
    • -
    -
    - -
    -

    Friday, June 1st

    -

    Nodrak updated:

    -
      -
    • Windoor's are now constructable! Steps are found here.
    • -
    -
    - -
    -

    Tuesday, May 29th

    -

    Nodrak updated:

    -
      -
    • Glass Doors are now breakable.
    • -
    • Added more treasures to the secret mining room.
    • -
    • Changed mineral lockers from secret mining rooms: Instead of giving you two stacks of everything, you get stacks of ore based on rarity
    • -
    -

    Icarus updated:

    -
      -
    • Moved Engineering and Bridge deliveries.
    • -
    -
    - -
    -

    This 28th day of May, in the year of our Lord, Two Thousand Twelve

    -

    Cheridan updated:

    -
      -
    • -Adjusted balaclavas and added luchador masks. Wearing luchador masks give you latin charisma. They replace the boxing gloves in the fitness room. Boxing gloves are still available in the holodeck. -Fake moustache tweaked and given new sprites.
    • -
    -
    - -
    -

    Monday, May 28th

    -

    Donkie updated:

    -
      -
    • You can now dispense Disposal Bins, Outlets and Chutes from the disposal dispenser. These are movable and you can attach them above open trunks with a wrench, then weld them to attach them completely. You can remove Bins by turning off their pump, then screwdriver, then weld, then wrench. Same with outlet and chute except for the pump part.
    • -
    -
    - -
    -

    Saturday, May 26th

    -

    Icarus updated:

    -
      -
    • Ported over Flashkirby99's RIG suit sprites from Bay12
    • -
    • Department PDA Carts moved out of lockers and into head offices.
    • -
    -
    - -
    -

    Wednesday, May 23rd

    -

    Cheridan updated:

    -
      -
    • -Reverted default UI sprites to Erro's old-style UI. Config options for UI color styles coming soon. -Driest Martinis will no longer be invisible. -Braincakes are now sliceable.
    • -
    • -Medical borg overhaul. Instead of a dozen random pills and syringes, they get a hypospray that can switch between auto-replenishing tricordrazine, inprovaline, and spaceacillin.
    • -
    -

    Errorage updated:

    -
      -
    • Some of the more pressing issues with the new user interface were addressed. These include the health indicator being too far up, the open inventory taking a lot of space, hotkey buttons not being removable and suit storage not being accessible enough.
    • -
    • A toggle-hotkey-buttons verb was added to the OOC tab, which hides the pull, drop and throw buttons for people who prefer to use hotkeys and never use the buttons.
    • -
    • Added a character setup option which allows you to pick between the Midnight, Orange and Old iconsets for the user interface.
    • -
    -
    - -
    -

    Tuesday, May 22nd

    -

    Icarus updated:

    -
      -
    • RIG helmets can now be used as flashlights, just like hardhats. Credit to Sly for the sprites.
    • -
    • HoP's office has been remapped and made into his private office. Conference Room can now be accessed from the main hall.
    • -
    -
    - -
    -

    Sunday, May 20th

    -

    Errorage updated:

    -
      -
    • The new user interface is here. If anything is broken or something should be done differently please post feedback on the forum. Spriters are encouraged to make new sprites for the UI.
    • -
    • When you receive a PDA message, the content is displayed to you if the PDA is located somewhere on your person (so not in your backpack). You will also get a reply button there. This will hopefully make PDA communication easier.
    • -
    • New hotkeys! delete is the now the 'stop dragging' hotkey, insert is the 'cycle intents' hotkey.
    • -
    -
    - -
    -

    Saturday, May 19th

    -

    Doohl updated:

    -
      -
    • You can now swap hands by clicking with your middle mouse button (you have to click on a visible object though, that's the catch).
    • -
    • Tweaked the DNA modifier consoles a little bit so that it's much easier to see individual blocks instead of one jumbled mess of hexadecimal.
    • -
    • You can now properly emag AI turret controls and commsat turret controls.
    • -
    -

    Invisty updated:

    -
      -
    • Brand new ending animations!
    • -
    -
    - -
    -

    Friday, May 18th

    -

    Errorage updated:

    -
      -
    • Removed hat storage, which was useless.
    • -
    • Implanting someone now takes 5 seconds, both people need to remain still. Implanting yourself remains instant.
    • -
    • Wallets once again spawn in the cabinets in the dormitory
    • -
    • Wallets now fit in pockets
    • -
    -
    - -
    -

    Thursday, May 17th

    -

    Icarus updated:

    -
      -
    • Individual dorms now have a button inside that bolts/unbolts the door
    • -
    • New sprites for Cargo, HoP, and Captain's lockers
    • -
    • More department-specific door sprites. Most noticable changes in medsci and supply departments.
    • -
    -
    - -
    -

    Tuesday, May 15th

    -

    Icarus updated:

    -
      -
    • Added WJohnston's scrubs to Medical Doctor lockers. Comes in blue, green, and purple.
    • -
    • Added two new syndicate bundles
    • -
    • Reduced cost of thermals to 3 telecrystals (formerly 4)
    • -
    • Singularity Beacons are now spawned from a smaller, portable device.
    • -
    • CMO and QM jumpsuits made more unique.
    • -
    -
    - -
    -

    Monday, May 14th

    -

    Icarus updated:

    -
      -
    • Reinforced table parts are now made by using four metal rods on regular table parts. No plasteel involved.
    • -
    • Beakers, small and large can now be made/recycled in autolathes.
    • -
    -

    Nodrak updated:

    -
      -
    • Added a 'random item' button to traitor uplinks. You can potentially get ANY item that shows up on the traitor item list, provided you have enough crystals for it.
    • -
    -
    - -
    -

    Friday, May 11th

    -

    Icarus updated:

    -
      -
    • New design for security. This should be the last time it sees major changes for a while.
    • -
    • Added a new construction area. What could it be for?
    • -
    -

    Petethegoat updated:

    -
      -
    • Readded the RD's genetics access.
    • -
    • RD is still without chemistry access, but I'm going to review this decision in a week and see if R&D is useless due to lack of acid.
    • -
    • Added Flashkirby99's SMES sprites!
    • -
    -

    Invisty updated:

    -
      -
    • Sexy new warpspace (or whatever) tiles.
    • -
    -

    Important changes below!

    -
    - -
    -

    Thursday, May 10th

    -

    Sieve updated:

    -
      -
    • Reverted dismemberment, the recent gun changes, and Tarajans. Before you shit up the forums, read this:
    • -
    • Dismemberment was ported from Bay12, but only halfway, and there were several problems with it. I know many people really liked it, but as it stood it did not fit the playstyle here at all. This had to be removed, there is work on a more fitting system, but this had to be taken out first regardless, and the longer people beat around the bush the worse the situation got.
    • -
    • The gun change was made for no real reason and was pretty problematic, so reverting that should mean there are a lot less 'accidental suicides.'
    • -
    • Tarjans were reverted by request as well, and since keeping them working after removing dismemberment would be a stupid amount of work.
    • -
    -
    - -
    -

    Sunday, May 6th

    -

    Cheridan updated:

    -
      -
    • -New booze sprites for the drinks that were removed! Re-enabled the recipes for the removed drinks. Get cracking, bartenders. -You now need 10 sheets of metal instead of 2 to make a gas canister, people can't FILL ENTIRE ROOMS WITH THEM.
    • -
    • -Emergency Toolboxes now contain smaller, lighter fire extinguishers that actually fit inside them! -
    -
    - -
    -

    Saturday, May 5th

    -

    Petethegoat updated:

    -
      -
    • RD get the fuck out of chemistry and genetics
    • -
    • CHEMISTS, DON'T BE DICKS TO RESEARCH, GIVE THEM ACID YOU TIGHT FUCKS
    • -
    -

    Icarus updated:

    -
      -
    • Updates to Sec, including a stationary scrubber for the prison area.
    • -
    • Swapped around cryogenics and the patient rooms in medbay.
    • -
    -
    - -
    -

    Friday, May 4th

    -

    Cheridan updated:

    -
      -
    • -Added fat jumpsuit sprites for orange, pink, yellow, owl, security, and warden jumpsuits.
    • -
    • -Somatoray is hopefully more useful and less buggy when used on trays. -Botanists now have morgue access, because of their ability to clone via replica pods. Try not to get this removed like all your other access, okay hippies?
    • -
    -
    - -
    -

    Thursday, May 3rd

    -

    Ikarrus updated:

    -
      -
    • Updated genetics, medbay and security.
    • -
    -

    Petethegoat updated:

    - -
    - -
    -

    Tuesday, May 1st

    -

    PolymorphBlue updated:

    -
      -
    • Adds BS12 dismemberment!
    • -
    • Adds greater changeling for 30 points
    • -
    -
    - - -
    -

    Monday, April 20th

    -

    Erro updated:

    -
      -
    • Added a verb to the PDA which you can use to remove an ID in it. If your active hand is empy, it puts it there otherwise it puts it on the floor under you.
    • -
    -
    - -
    -

    Wednesday, April 27th

    -

    Cheridan updated:

    -
      -
    • -New sprites for lemons, oranges, and walking mushroom critters. -Added Invisty's new blob sprites.
    • -
    • -Added a new chemical: lipozine, a weight loss drug. Made with sodium chloride, ethanol, and radium.
    • -
    -
    - -
    -

    Wednesday, April 25th

    -

    Ikarrus & Flazeo updated:

    -
      -
    • New layout for Security, including a prison area instead of permacells.
    • -
    • New layout for the library, bar, and botany.
    • -
    • Medbay and R&D now have three-tile halls.
    • -
    -

    Scroll down for more commits! There's a bunch of new shit.

    -
    - -
    -

    Tuesday, April 24th

    -

    PolymorphBlue updated:

    -
      -
    • Fakedeath changelings can no longer have their brains cut out.
    • -
    • Rev checkwin changed to fire every five ticks (from twenty) and actually use the right objective type so revs being off station counts as success.
    • -
    -

    Sieve updated:

    -
      -
    • Powercells now have unique icons for cell types
    • -
    • Implemented mech construction sprite by WJohnston for the Ripley, Firefighter, Gygax, and Durand
    • -
    • Durand construction is reversible
    • -
    • Power Cells can now be made in Mechfabs, provided the proper research level has been achieved
    • -
    • Added a new item, the Synthetic Flash. Works just like a normal flash, except they can only withstand one use, but can be produced in the Mechfab(To replace the need for normal flashes)
    • -
    • Added a new type of gloves, ones that are cheap copies of the coveted Insulated Gloves, but be warned, quality control wasn't too thorough
    • -
    • Added a new Cyborg Upgrade, a jetpack for use by Miner Cyborgs. Can be refilled on any air canister
    • -
    • Miner Cyborgs now have a Diamond Drill equivalent along with an upgraded Ore Satchel
    • -
    • Mechfabs no longer brick if there are parts in the quene on sync
    • -
    • MMIs can be built in the Mechfabs again
    • -
    • Crabs are no longer immortal, and are now especially vulnerable to wirecutters
    • -
    • Bibles printed in the library now retain the religion's deity
    • -
    • Added Construction Sprites for the Ripley, Firefighter, Gygax, and Durand by WJohnston
    • -
    • Added Particle Accelerator sprites by Invisity
    • -
    • Added Power Cell, Synthetic Flash, Robot Upgrades, and made some modifications to the PA sprites
    • -
    -

    Petethegoat updated:

    -
      -
    • Added Invisty's field generator sprites.
    • -
    -
    - -
    -

    April 1-22, 2012

    -

    Cheridan updated:

    -
      -
    • CATCHING UP ON MY CHANGELOG. Some of this has been in for a while: -Added carved pumpkins and corncob pipes. -Added mutations for ambrosia and lemon trees. -Added more wood items for tower cap wood construction. -Added soil to plant seeds in. Make it by crushing up sandstone. Soil does not have indicators like trays do! Watch your plants carefully!
    • -
    • -The biogenerator is now more robust. It can dispense fertilizer in batches, and make simple leather items. -RnD can create a new tool for botanists: The floral somatoray. Has two modes. Use it on your plants to induce mutations or boost yield.
    • -
    • -Added plump helmet biscuits, mushroom soup, pumpkin pie and slices, chawanmushi, and beet soup recipes for the chef to make.
    • -
    • -Added transparency to biohelmets. -Normalized grass harvests. -Changed the name of "Generic Weeds". -Blenders can now be filled directly from plant bags. -Added low chance for a species mutation whenever a plant's stats mutate. -You now get more descriptive messages when applying mutagen to plant trays. -Removed sugarcane seeds from the vending machine. Added the sugarcane seeds to the seeds crate.
    • -
    -
    - -
    -

    Sunday, April 22nd

    -

    Petethegoat updated:

    -
      -
    • New gasmask sprites. Removed emergency gasmasks, so there's only one type now.
    • -
    • New shotgun sprites by Khodoque!
    • -
    • The barman's double-barrel actually works like a double-barrel instead of a pump-action! Rejoice!
    • -
    • Sneaky barmen may be able to illegally modify their shotgun, if they so choose.
    • -
    • Trimmed the changelog, vastly.
    • -
    -
    - -
    -

    Saturday, April 21st

    -

    Errorage updated:

    -
      -
    • Maintenance door outside of tech storage now requires maintenance OR tech storage access instead of maintenance AND robotics accesses.
    • -
    -
    - -
    -

    Thursday, April 19th

    -

    Carn updated:

    -
      -
    • Rewrote the cinematic system to try and simplify and optimise it. Please report any bugs asap to me or coderbus, thanks.
    • -
    -
    - -
    -

    Tuesday, April 17th

    -

    Kor updated:

    -
      -
    • Engineering jobs now have their PDA spawn in their pocket, and their toolbelt on their belt
    • -
    • The nuke going off on station will now gib everyone on the Z level.
    • -
    • Two more core displays are available for the AI
    • -
    • The Artificer can now build cult floors and walls
    • -
    -
    -

    Friday, April 13th

    -

    Sieve updated:

    -
      -
    • Updated the robotics layout.
    • -
    -

    Petethegoat updated:

    -
      -
    • Nerfed the librarian by removing the r-walls from his cubbyhole thing, fuck WGW readers hiding out in there.
    • -
    -
    -
    -

    Thursday, April 12th

    -

    Agouri updated:

    -
      -
    • Fixed the ability to move while lying down/resting.
    • -
    • Sleep has been fixed and works as intended again. Anaesthetic and toxins can now properly put people to sleep, permanently if you keep the administration stable. Sleeplocs are now viable again. The sleep button and *faint emote work again.
    • -
    -
    -
    -

    Wednesday, April 11th

    -

    PolymorphBlue updated:

    -
      -
    • Droppers are now used at the eyes, and thus, access to the eyes is required to have an effect.
    • -
    -
    - - -
    -

    April 10, the year of our lord 2012

    -

    Agouri updated:

    -
      -
    • CONTRABAND-CON UPDATE: Added posters. I'm sorry to add it seperately with the rest of contraband, but there was a lack of sprites for everything else. Hopefully, people will gain interest and get me some damn sprites this way :3 - As I said, this is an ongoing project of mine. So starting of, we've got...
    • -
    • POSTERS! Posters come in rolled packages that can adhere to any wall or r_wall, if it's uncluttered enough. -

      How they get on-board: The quartermaster can now set the receiver frequency of his supplycomp circuit board. A bit simplistic as of now, will work on it later. Building a supplycomp with a properly set up circuitboard will give access to the Contraband crate. -

      How they're used: Unfold the rolled poster on any wall or r_wall to create the poster. There are currently 17 designs, with the possibility of me adding more. -

      How to get rid of them: You can rip them using your hand... To cleanly extract them and not ruin them for future use, however, you can use a pair of wirecutters. -

      How they're classified: They're contraband, so it's perfectly okay for security officers to confiscate them. Punishment for contraband-providers (or end-users, if you want to go full nazi) is up to the situational commanding officers. - -
    -

    Nodrak updated:

    -
      -
    • Merged 'Game' and 'Lobby' tabs during pre-game into one tab
    • -
    • Added the little red x to the late-join job list
    • -
    • Late-joiners are warned if the shuttle is past the point of recall, and if the shuttle has already left the station
    • -
    • Late-joiners now see how long the round has been going on.
    • -
    • Mining shuttle computer no longer spits out both 'Shuttle has been sent' and 'The shuttle is already moving' every time.
    • -
    - -
    - -
    -

    Monday, April 9th

    -

    Petethegoat updated:

    -
      -
    • TORE OUT DETECTIVE WORK! THIS IS A TEMPORARY PATCH TO SEE IF THIS FIXES THE CRASHING.
    • -
    • DETECTIVE SCANNERS AND EVIDENCE BAGS (AND FINGERPRINTS) ARE GONE.
    • -
    -
    - -
    -

    Sunday, April 8th

    -

    PolymorphBlue updated:

    -
      -
    • Secret little rooms now spawn on the mining asteroid, containing various artifacts.
    • -
    • Added the beginnings of a borg upgrade system. Currently, can be used to reset a borg's module.
    • -
    -
    - -
    -

    2 April 2012

    -

    PolymorphBlue updated:

    -
      -
    • ERP is gone. Hope you enjoyed it while it lasted!
    • -
    -
    - -
    -

    April Fools Day! Get hype!

    -

    Doohl updated:

    -
      -
    • Security officers can modify people's criminal status by simply examining them with a security hud on and clicking a link that will show up as part of the character's description.
    • -
    • Less jobs have maintenance access. The only jobs that will have it now are engineers, atmos techs, cargo techs, heads, and the detective.
    • -
    • Changed Runtime's sprite to look more catlike.
    • -
    • View Variables can now better list associative lists.
    • -
    • Miscellaneous bugfixes for the NT Script IDE.
    • -
    -

    PolymorphBlue updated:

    -
      -
    • Minor bugfixes to borg deathsquad, adds borg deathsquad to potential tensioner (set so high it's never going to happen)
    • -
    • Adds consiterable support for ERP! (If enabled.)
    • -
    • Increases cost for changeling unstun to 45
    • -
    -
    - -
    -

    30 March 2012

    -

    Donkie updated:

    -
      -
    • You can now stick papers back in to paperbins, text will persist.
    • -
    • Added a [field] bbcode tag to the pen writing. Lets your start writing from that point.
    • -
    • Changed fonts a bit for papers to make [sign] stand out more.
    • -
    -

    Doohl updated:

    -
      -
    • Gave pill bottles the ability to scoop up pills like ore satchels scoop ore. (There you go, /vg/ Anon.)
    • -
    • Security Officers and Wardens now start with maintenance acceess.
    • -
    -
    - -
    -

    29 March 2012

    -

    PolymorphBlue updated:

    -
      -
    • Exosuits now provide a message when someone is getting in, someone getting in must remain stationary and unstunned, and getting in takes four seconds.
    • -
    -
    - -
    -

    28 March 2012

    -

    Carn updated:

    -
      -
    • Fixed turrets shooting people that leave the area and the telecomm turret controls.
    • -
    -

    Donkie updated:

    -
      -
    • Updated air alarm's GUI.
    • -
    -
    - -
    -

    27 March 2012

    -

    Nodrak updated:

    -
      -
    • Security borgs now have modified tasers.
    • -
    • Security borgs have gone back to having the same movement speed as all other borgs.
    • -
    -
    - -
    -

    23 March 2012

    -

    Doohl updated:

    -
      -
    • Escape shuttles/pods now spend about 2 minutes in high-speed transit before they reach centcom/recon shuttle. This is a warning: regular after-round shuttle grief is NOT OKAY while the shuttle is still in transit! Save it for when the shuttle gets to centcom! The purpose of this is to give potential antagonists and protagonists a chance to have a final showdown in the shuttle. The round does not end until the shutle comes to a stop and docks. Don't step outside while the shuttle is moving!

      For example; if you are a traitor and have an escape-alone objective and a couple of people manage to squeeze in the shuttle, you have two minutes to kill/toss them out to win. Or you can just chill for the duration and reflect on the round.
    • -
    - -

    Donkieyo updated:

    -
      -
    • A bunch new standard-namespace NTSL functions added! Check them out at the NT Script wiki page!
    • -
    -
    - -
    -

    22 March 2012

    -

    Ricotez updated:

    -
      -
    • Medical Lockers, Security Lockers, Research Lockers, Warden Locker, CMO Locker, and RD locker all have new sprites.
    • -
    • Encryption keys now each have their own invidual sprites.
    • -
    - -

    PolymorphBlue updated:

    -
      -
    • Added a prototype holodeck to fitness!
    • -
    • Assorted tensioner fixes
    • -
    - -
    -

    20 March 2012

    -

    Kor updated:

    -
      -
    • Lasertag vests and guns have been added to fitness.
    • -
    • Art storage has replaced the emergency storage near arrivals. Emergency storage has replaced chem storage (has anyone ever used that?)
    • -
    • Wraiths can now see in the dark
    • -
    -
    - - -
    -

    19 March 2012

    -

    PolymorphBlue updated:

    -
      -
    • Added LSD sting to modular changeling by popular demand.
    • -
    • Silence sting no longer provides a message to the victim.
    • -
    • Tensioner will no longer assign dead people as assassination targets.
    • -
    -
    - -
    -

    18 March 2012

    -

    Quarxink updated:

    -
      -
    • The medical record computers can finally search for DNA and not just name and ID.
    • -
    -
    - -
    -

    14 March 2012

    -

    PolymorphBlue updated:

    -
      -
    • Modular changeling added! Changelings now purchase the powers they want. Balancing still underway, but should be playable.
    • -
    -

    Petethegoat updated:

    -
      -
    • Janitor cyborgs have been massively upgraded. Suffice to say they're pretty ballin' now...
    • -
    -

    Nodrak updated:

    -
      -
    • You can now choose whether to spawn with a backpack, satchel, or nothing. Excess items will spawn in your hands if necessary.
    • -
    • You can now choose what kind of underwear you'd like to wear, per a request.
    • -
    -
    - -
    -

    14 March 2012

    -

    Carn updated:

    -
      -
    • Added 6 female hairstyles -- credits go to Erthilo of Baystation. Added a male hairstyle -- credits go to WJohnston of TG. If you can sprite some unique and decent-looking hair sprites, feel free to PM me on the TG forums.
    • -
    -
      -
    • The way objects appear to be splattered with blood has been rewritten in an effort to fix stupid things happening with icons. It should be called far less frequently now. PLEASE, if you experience crashes that could in anyway be related to blood, report them with DETAILED information. Thanks
    • -
    -
    - -
    -

    13 March 2012

    -

    Nodrak & Carn updated:

    -
      -
    • Fixed the way flashes break. Long story short: They'll never break on first use so rev don't get screwed over. They run out of charge temporarily when spammed but recharge. Spamming them also increases the chance of them breaking a little, so use them sparingly.
    • -
    -

    Doohl updated:

    -
      -
    • Ablative Armor now has a high chance of reflecting energy-based projectiles.
    • -
    • Riot shields were buffed; they now block more attacks and they will prevent their wielder from being pushed (most of the time).
    • -
    -
    - -
    -

    12 March 2012

    -

    PolymorphBlue updated:

    -
      -
    • PDA messages now require an active messaging server to be properly sent.
    • -
    -
    - -
    -

    11 March 2012

    -

    PolymorphBlue updated:

    -
      -
    • The AI can now open doors with shift+click, bolt them with ctrl+click, and shock them with alt+click
    • -
    • Tratior borgs who hack themselves cannot be blown by the robotics console, and can override lockdowns.
    • -
    • Adds a new wire to doors that controls the time delay before they close. If pulsed, they close like a sliding glass door. If cut, they do not close by themselves.
    • -
    • Borgs who have died, ghosts, and are then blown up will now have their ghosts properly transfered to their dropped MMIs.
    • -
    -

    Carnwennan updated:

    -
      -
    • You can now request AI presence at a holopad for immediate private communication with the AI anywhere. AIs can click a quick button to zoom to the holopad.
    • -
    -
    - -
    -

    08 March 2012

    -

    Nodrak and Carnwennan updated:

    -
      -
    • Nodrak: Fixed crayon boxes and stuff getting stuck in pockets.
    • -
    • Nodrak: 'Steal item' objectives will report correctly when wrapped up in paper now.
    • -
    • Carn: fixed the vent in the freezer...poor chef kept suffocating.
    • -
    -
    - -
    -

    02 March 2012

    -

    Carn updated:

    -
      -
    • Fixed a number of issues with mob examining. Including: not being able to see burns unless they were bruised; vast amounts of grammar; and icons. Updated them to use stylesheet classes.
    • -
    • Borgs can no-longer drop their module items on conveyor belts.
    • -
    • Names input into the setup screen are now lower-cased and then have their first letters capitalised. This is to fix problems with BYOND's text-parsing system.
    • -
    • Runtime fix for lighting.
    • -
    • Over the next few commits I will be updating a tonne of item names to fix text-parsing. Please inform me if I've typoed anything.
    • -
    -
    - -
    -

    03 March 2012

    -

    Petethegoat updated:

    -
      -
    • Removed cloakers. Removed Security's thermals. Added disguised thermals as a traitor item.
    • -
    -
    - -
    -

    01 March 2012

    -

    SkyMarshal updated:

    -
      -
    • Tweak/Bugfix for Hallucinations. Much more robust.
    • -
    -
    - -
    -

    01 March 2012

    -

    SkyMarshal updated:

    -
      -
    • Ported BS12 Detective Work System
    • -
    -
    - -
    -

    1 March 2012

    -

    Petethegoat updated:

    -
      -
    • Head revolutionaries no longer spawn with traitor uplinks.
    • -
        -
      -
    - -
    -

    29 February 2012

    -

    SkyMarshal updated:

    -
      -
    • BS12 Hallucination and Dreaming port
    • -
        -
      -
    - - -
    -

    29 February 2012

    -

    muskets updated:

    -
      -
    • Integrated BS12's improved uplink code
    • -
    -
    - - -
    -

    26 February 2012

    -

    Doohl updated:

    -
      -
    • The insane crashing has finally been fixed!
    • -
    -
    - -
    -

    25 February 2012

    -

    Doohl updated:

    -
      -
    • Telecommunications has been refined, with many new features and modules implemented.
    • -
    • NTSL (Nanotrasen Scripting Language) is ONLINE! This is a brand new, fully operational scripting language embedded within SS13 itself. The intended purpose is to eventually expand this scripting language to Robotics and possibly other jobs, but for now you may play with the TCS (Traffic Control Systems) implementation of NTSL in the Telecommunications Satellite. Recommended you read the NT Script wiki page for information on how to use the language itself. Other than that, there's not a lot of documentation.
    • -
    • Radio systems have been further optimized, bugfixed, etc. Should be more stable.
    • -
    • Intercoms now require power to work.
    • -
    -
    - - -
    -

    24 February 2012

    -

    PolymorphBlue updated:

    -
      -
    • Headsets are now modular! Use a screwdriver on them to pop out their encrpytion keys, and use a key on one to put it in. A headset can hold two keys. Normal headsets start with 1 key, department headsets with two. The standard chip does nothing, and is not required for listening to the common radio.
    • -
    • Binary translators made into a encrpytion key, and fixed. They now broadcast to AIs properly.
    • -
    -
    - -
    -

    23 February 2012

    -

    PolymorphBlue updated:

    -
      -
    • MMIs/pAIs no longer lip read, and thus can now hear in the dark.
    • -
    • Borg rechargers are no longer Faraday cages, and thus can now receive radio while they're recharging.
    • -
    -

    LastyScratch updated:

    -
      -
    • Glass airlocks now make a different sound than regular airlocks.
    • -
    • in 1997 nanotrasen's first AI malfunctioned
    • -
    • Toggle ambience probably works now! -
    • Runtime is dead. -
    • The Research Director's consoles were moved into the completely empty cage in the back of his office.
    • -
    -
    - - -
    -

    22 February 2012

    -

    PolymorphBlue updated:

    -
      -
    • Changed alt+click to ctrl+click for pulling.
    • -
    -

    Petethegoat updated:

    -
      -
    • New stationary scrubber sprites~
    • -
    • Removed the mint. Coins can still be found and used in vending machines. PACMANs now run off sheets.
    • -
    -

    coolity updated:

    -
      -
    • New sprites for HoS and Captain lockers.
    • -
    • New sprites for the orebox.
    • -
    -
    - -
    -

    21 February 2012

    -

    Petethegoat updated:

    -
      -
    • The jetpacks now display correctly when worn.
    • -
    • Buckling to chairs no longer causes you to drop your weapon
    • -
    -

    Nodrak updated:

    -
      -
    • Ghosts now have a "Jump to Mob" verb.
    • -
    -

    Sieve updated:

    -
      -
    • Mining lanterns work properly once again!.
    • -

      Skaer updated:

      -
        -
      • The armoury now includes a box of spare Sec cartridges.
      • -
      -
    - -
    -

    19 February 2012

    -

    Petethegoat updated:

    -
      -
    • The jetpacks in EVA have been replaced with CO2 ones, painted a classy black.
    • -
    • Additionally, jetpacks will now run on gases other than oxygen, as you would expect.
    • -
    • Chair overhaul! You shouldn't notice anything different, but if you encounter bugs with chairs or beds, please report those asap.
    • -
    • New electric chair sprites, by myself.
    • -
    • Electric chairs will only electrocute people buckled into them.
    • -
    • Karma should be fixed.
    • -
    -

    KorPhaeron updated:

    -
      -
    • A new construct type: Artificer. It is capable of constructing defenses, repairing fellow constructs, and summoning raw materials to construct further constructs
    • -
    • Simple animals (constructs, Ian, etc) can now see their health in the Status tab
    • -
    • Detective's revolver is non-lethal again. Was fun while it lasted
    • -
    -
    - -
    -

    18 February 2012

    -

    Petethegoat updated:

    -
      -
    • Foam has a reduced range to prevent spamming
    • -
    -

    Sieve updated:

    -
      -
    • Stopped the unholy Radium/Uranium/Carbon smoke that crashed the server. And for anyone that did this, you are a horrible person
    • -
    • Cleanbots clean dirt
    • -
    • Cleanbots automatically patrol on construction
    • -
    • Removed silicate because it is not useful enough for how much lag it caused
    • -
    -
    - -
    -

    16 February 2012

    -

    Smoke Carter updated:

    -
      -
    • Newscasters now alert people of new feeds and wanted-alerts simultaneously.
    • -
    -
    - -
    -

    15 February 2012

    -

    Kor updated:

    -
      -
    • Terrorists Win! Desert Eagles and Riot Shields now spawn on the syndicate shuttle, replacing the c20r
    • -
    • The Detectives gun still uses .38, but they're now fully lethal bullets. Go ahead, make his day.
    • -
    • The Veil Render has been nerfed, the Nar-Sie it spawns will not pull anchored objects. This is a temporary measure, more nerfs/reworking to come
    • -
    -
    - -
    -

    14 February 2012

    -

    Carn updated:

    -
      -
    • Spacevines added to the random events.
    • -
    • The bug where doors kept opening when a borg tried to close them at close range is now fixed.
    • -
    -
    - -
    -

    13 February 2012

    -

    Khodoque updated:

    -
      -
    • Security officers, the warden and the HoS have new jumpsuits.
    • -
    -

    Erro updated:

    -
      -
    • Clicking the internals button on your user interface (The one that shows if you have internals on or not) will now toggle internals even if they are in your pockets. (humans only) - It now works if your internals are on your back, suit storage, belt, hands and pockets.
    • -
    • The public autolathe has been removed. If you want some some stuff from a lathe, go to cargo.
    • -
    -

    Kor updated:

    -
      -
    • A new item, the null rod, protects the one bearing it from cult magic. One starts in the chaplains office, and this replaces the job based immunity he had. The null rod also is capable of dispelling runes upon hitting them (the bible can no longer do this)
    • -
    • Shooting fuel tanks with lasers or bullets now causes them to explode
    • -
    • A construct shell is now waiting to be found in space.
    • -
    • Chaplains can no longer self heal with the bible
    • -
    • Simple animals, including constructs, can now attack mechs and critters
    • -
    - -
    - -
    -

    12 February 2012

    -

    Erro updated:

    -
      -
    • You can no longer attach photos to ID cards. This never worked properly and if anything, it was misleading.
    • -
    • Backpacks can now hold 7 normal sized items (box size) as opposed to 6 normal sized items + 1 small item
    • -
    • Added several fire alarms to areas around the station including the brig, engineering and others
    • -
    • The atmospherics department now has a few hazard vests available for atmos techs to wear if they don't like the fire suit
    • -
    • Roboticist now have engineering + science headsets, virologists now have medsci headsets with medical + science channels
    • -
    • Added some headsets to the jobs that didn't have any extras: roboticist, qm, scientist, virologist and geneticist.
    • -
    • Station engineers now have construction site access (vacent office by arrivals)
    • -
    • Replaced a few airlocks with glass airlocks (detective, autolathe, assistant storage, robotics, checkpoint)
    • -
    • Removed the wall that was blocking the entrance to the theater
    • -
    • Made a small redesign for the HoP's office so that people running towards it from the escape hallway don't run right into the queue, annoying everyong
    • -
    • The engineering, command and security airlocks now glow green when closing instead of red to match all the other airlocks
    • -
    • The disposal units now auto trigger every 30 game ticks, if there is something (or someone) in them. So no more hiding in disposal units!
    • -
    • You can no longer control the disposal unit from within it. You will have to wait for it to trigger itself.
    • -
    • You can no longer strip items off of Ian while dead / a ghost
    • -
    -

    Pete updated:

    -
      -
    • Updated fitness, athletic shorts are now available!
    • -
    -
    - - -
    -

    11 February 2012

    -

    Erro updated:

    -
      -
    • You can now take individual crayons out of the crayon box the same way as from boxes
    • -
    • Clicking a grille with a glass or reinforced glass pane in your hand will glaze the grille from the direction you're looking from (don't forget to fasten the window tho)
    • -
    • When you click somewhere with the intent to interact, you will automaticaly face the item you're trying to interact with. This won't slow you down when running and firing guns behind you.
    • -
    -

    Kor updated:

    -
      -
    • A new passive mob ability: Relentless. Relentless mobs cannot be shoved (though may still swap places with help intent)
    • -
    • Alien Queens, Juggernaut constructs, and Medical Borgs are all Relentless. Maybe the medborg can actually drag people to medbay on time now
    • -
    • Two constructs, the Juggernaut and the Wraith are now available for wizards and cultists to use soul stones with
    • -
    • A new highly destructive artefact, Veil Render, is now available for wizards
    • -
    • A new one time use global spell, Summon Guns, is now available for wizards.
    • -
    • DEEPSTRIKING! There is now a partially constructed teleporter on the nuke shuttle, and for a large sum of telecrystals they may purchase the circuitboard needed to complete it.
    • -
    • The Chaplain is immune to cult stun, blind, deafen, and blood boil
    • -
    -
    - -
    -

    10 February 2012

    -

    Quarxink updated:

    -
      -
    • Added a new toy: Water balloons. They can be filled with any reagent and when thrown apply the reagents to the tile and everything on it.
    • -
    -
    - -
    -

    9 February 2012

    -

    Erro updated:

    -
      -
    • Engineering and security lockers now spawn with their respective backpacks in them so job-changers can look as they should. HoS locker now also contains an armored vest, for the convenience of the HoS who wants to play with one.
    • -
    • Slightly changed the spawn order of items in the CE and HoS lockers to make starting up a hint less tedious.
    • -
    -
    - -
    -

    8 February 2012

    -

    ConstantA updated:

    -
      -
    • Added Exosuit Jetpack
    • -
    • Added Exosuit Nuclear Reactor (runs of normal, everyday uranium, maybe I'll switch it to run on enriched) - requires research (level 3 in Materials, Power Manipulation and Engineering)
    • -
    • Added Ripley construction steps sprites (courtesy of WJohnston - man, you're awesome)
    • -
    • Exosuit Sleeper can now inject occupant with reagents taken from Syringe Gun
    • -
    • Exosuit Cable Layer will now auto-dismantle floors
    • -
    • Exosuit Heavy Lazer cooldown increased, Scattershot now fires medium calibre ammo (less damage)
    • -
    • Exosuit wreckage can be pulled
    • -
    • EMP now drains half of current exosuit cell charge, not half of maximum charge.
    • -
    • Fixed several possible exosuit equipment runtimes
    • -
    • Introduced new markup to changelog. Javascript is extremely slow (in byond embedded browser) for some reason.
    • -
    -
    -
    -

    4 February 2012, World Cancer Day

    -

    Erro updated:

    -
      -
    • Examining humans now works a bit differently. Some external suits and helmets can hide certain pieces of clothing so you don't see them when examining. Glasses are also now displayed when examining.
    • -
    • The job selection screen has been changed a little to hopefully make making changes there easier.
    • -
    -
    -GoonStation 13 Development Team -
    - Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
    - Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No
    -
    -
    -

    Creative Commons License
    Except where otherwise noted, Goon Station 13 is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.
    Rights are currently extended to SomethingAwful Goons only.

    -

    Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.

    -
    - - diff --git a/html/map.png b/html/map.png deleted file mode 100644 index 333c988606c..00000000000 Binary files a/html/map.png and /dev/null differ diff --git a/html/old_add-to-changelog.html b/html/old_add-to-changelog.html deleted file mode 100644 index e442eff327b..00000000000 --- a/html/old_add-to-changelog.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - New commit - - - - - - -
    - - - - -
    Date:
    Author:
    Add list item - - -
    - -
    - - - \ No newline at end of file diff --git a/html/postcardsmall.jpg b/html/postcardsmall.jpg deleted file mode 100644 index 5d666d73827..00000000000 Binary files a/html/postcardsmall.jpg and /dev/null differ diff --git a/html/somerights20.png b/html/somerights20.png deleted file mode 100644 index a66f4d1a010..00000000000 Binary files a/html/somerights20.png and /dev/null differ diff --git a/html/templates/footer.html b/html/templates/footer.html index b5533610ac4..5d98f73b159 100644 --- a/html/templates/footer.html +++ b/html/templates/footer.html @@ -1,3 +1,4 @@ +
GoonStation 13 Development Team
diff --git a/html/templates/header.html b/html/templates/header.html index 68c713ec038..53eaaea7d2a 100644 --- a/html/templates/header.html +++ b/html/templates/header.html @@ -54,3 +54,4 @@ *** DO NOT FUCK WITH THIS FILE OR YOU WILL CAUSE MERGE CONFLICTS. *** --> +
\ No newline at end of file diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index f1a60e810d8..14a4b7f8fef 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/emoji.dmi b/icons/emoji.dmi index 04406998764..723c5b5b9d2 100644 Binary files a/icons/emoji.dmi and b/icons/emoji.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 00aae60bf8d..4570042ccba 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/drone.dmi b/icons/mob/drone.dmi index 0a8a3f70a4a..003750d8d89 100644 Binary files a/icons/mob/drone.dmi and b/icons/mob/drone.dmi differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 306ea503fe2..3479dda2dd1 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 858fb2ba7c9..4341f441d0d 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index d732743543c..b8eedb8f334 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 111bdc0b9bd..8459b715b44 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi new file mode 100644 index 00000000000..f1b776ad5a1 Binary files /dev/null and b/icons/mob/screen_alert.dmi differ diff --git a/icons/mob/screen_alien.dmi b/icons/mob/screen_alien.dmi index e0257307ac1..8b37786d021 100644 Binary files a/icons/mob/screen_alien.dmi and b/icons/mob/screen_alien.dmi differ diff --git a/icons/mob/screen_cyborg.dmi b/icons/mob/screen_cyborg.dmi index 2df7c1c35c4..002768f9d2a 100644 Binary files a/icons/mob/screen_cyborg.dmi and b/icons/mob/screen_cyborg.dmi differ diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 0966d2de5e2..7e756cc2141 100644 Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index b5b228e57b6..5df1911eb35 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index efcb1eb63f0..1d690ffd463 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index c6b04ee3d14..ae720ac6cd2 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 53f3240d2b9..5bf0a0fc687 100644 Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index f18a3018b12..b0d6821f3a2 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 37b28e21f6e..276aaa7e525 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index ccd6cd42102..74dade9bb5f 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index eee89a7e0d6..8527227a42b 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 59f39d363b5..a3be493d9c3 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 65b860a9f2f..417d6049b2c 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/contraband.dmi b/icons/obj/contraband.dmi index 03f6c8d17f8..3e03b1b7155 100644 Binary files a/icons/obj/contraband.dmi and b/icons/obj/contraband.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 1e8e9a6c930..36224612d34 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/flora/rocks.dmi b/icons/obj/flora/rocks.dmi index a1f6a0df0a9..b03c866fd75 100644 Binary files a/icons/obj/flora/rocks.dmi and b/icons/obj/flora/rocks.dmi differ diff --git a/icons/obj/harvest.dmi b/icons/obj/harvest.dmi deleted file mode 100644 index acf3b39ea00..00000000000 Binary files a/icons/obj/harvest.dmi and /dev/null differ diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi deleted file mode 100644 index b572d01eeb1..00000000000 Binary files a/icons/obj/hydroponics.dmi and /dev/null differ diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi new file mode 100644 index 00000000000..25a4bee8e63 Binary files /dev/null and b/icons/obj/hydroponics/equipment.dmi differ diff --git a/icons/obj/hydroponics/growing.dmi b/icons/obj/hydroponics/growing.dmi new file mode 100644 index 00000000000..fd0f0dcc7c6 Binary files /dev/null and b/icons/obj/hydroponics/growing.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi new file mode 100644 index 00000000000..f841e089491 Binary files /dev/null and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi new file mode 100644 index 00000000000..bb70e0b5946 Binary files /dev/null and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index d0ed0ed12f4..368336a106d 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 5c9e5021add..4b2073c171b 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/seeds.dmi b/icons/obj/seeds.dmi deleted file mode 100644 index 89bd1ef0807..00000000000 Binary files a/icons/obj/seeds.dmi and /dev/null differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 143db8d719f..ee4ae2f82cf 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 90a2579ab6a..5c62c63a925 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index acc2556a7a5..e3eec0a88ac 100644 Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 08724346457..a74a3ce7694 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -76,6 +76,7 @@ #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" #include "code\_onclick\hud\ai.dm" +#include "code\_onclick\hud\alert.dm" #include "code\_onclick\hud\alien.dm" #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\drones.dm" @@ -347,6 +348,7 @@ #include "code\game\jobs\whitelist.dm" #include "code\game\jobs\job\assistant.dm" #include "code\game\jobs\job\captain.dm" +#include "code\game\jobs\job\cargo_service.dm" #include "code\game\jobs\job\civilian.dm" #include "code\game\jobs\job\civilian_chaplain.dm" #include "code\game\jobs\job\engineering.dm" @@ -355,7 +357,6 @@ #include "code\game\jobs\job\science.dm" #include "code\game\jobs\job\security.dm" #include "code\game\jobs\job\silicon.dm" -#include "code\game\jobs\job\supply.dm" #include "code\game\machinery\ai_slipper.dm" #include "code\game\machinery\airlock_control.dm" #include "code\game\machinery\alarm.dm" @@ -843,6 +844,7 @@ #include "code\modules\client\preferences_savefile.dm" #include "code\modules\client\preferences_toggles.dm" #include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\glasses\engine_goggles.dm" #include "code\modules\clothing\glasses\glasses.dm" #include "code\modules\clothing\glasses\hud.dm" #include "code\modules\clothing\gloves\boxing.dm" @@ -1180,13 +1182,20 @@ #include "code\modules\mob\living\simple_animal\friendly\cat.dm" #include "code\modules\mob\living\simple_animal\friendly\corgi.dm" #include "code\modules\mob\living\simple_animal\friendly\crab.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone.dm" #include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" #include "code\modules\mob\living\simple_animal\friendly\fox.dm" #include "code\modules\mob\living\simple_animal\friendly\lizard.dm" #include "code\modules\mob\living\simple_animal\friendly\mouse.dm" #include "code\modules\mob\living\simple_animal\friendly\pug.dm" #include "code\modules\mob\living\simple_animal\friendly\slime.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\interaction.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\inventory.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\say.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm" #include "code\modules\mob\living\simple_animal\hostile\alien.dm" #include "code\modules\mob\living\simple_animal\hostile\bear.dm" #include "code\modules\mob\living\simple_animal\hostile\bees.dm" @@ -1265,6 +1274,11 @@ #include "code\modules\power\singularity\particle_accelerator\particle_power.dm" #include "code\modules\power\supermatter\supermatter.dm" #include "code\modules\power\supermatter\supermatter_crate.dm" +#include "code\modules\procedural mapping\mapGenerator.dm" +#include "code\modules\procedural mapping\mapGeneratorModule.dm" +#include "code\modules\procedural mapping\mapGeneratorReadme.dm" +#include "code\modules\procedural mapping\mapGeneratorModules\nature.dm" +#include "code\modules\procedural mapping\mapGenerators\nature.dm" #include "code\modules\projectiles\ammunition.dm" #include "code\modules\projectiles\firing.dm" #include "code\modules\projectiles\gun.dm" diff --git a/tools/AddToChangelog/AddToChangelog.sln b/tools/AddToChangelog/AddToChangelog.sln deleted file mode 100644 index d402865fa5f..00000000000 --- a/tools/AddToChangelog/AddToChangelog.sln +++ /dev/null @@ -1,20 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual C# Express 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AddToChangelog", "AddToChangelog\AddToChangelog.csproj", "{838EA2DE-A108-4213-8409-7F562F1009BE}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x86 = Debug|x86 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {838EA2DE-A108-4213-8409-7F562F1009BE}.Debug|x86.ActiveCfg = Debug|x86 - {838EA2DE-A108-4213-8409-7F562F1009BE}.Debug|x86.Build.0 = Debug|x86 - {838EA2DE-A108-4213-8409-7F562F1009BE}.Release|x86.ActiveCfg = Release|x86 - {838EA2DE-A108-4213-8409-7F562F1009BE}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/tools/AddToChangelog/AddToChangelog/AddToChangelog.csproj b/tools/AddToChangelog/AddToChangelog/AddToChangelog.csproj deleted file mode 100644 index cb18329318f..00000000000 --- a/tools/AddToChangelog/AddToChangelog/AddToChangelog.csproj +++ /dev/null @@ -1,140 +0,0 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {838EA2DE-A108-4213-8409-7F562F1009BE} - WinExe - Properties - AddToChangelog - AddToChangelog - v4.0 - Client - 512 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - x86 - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - x86 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - changelog.ico - - - - - - - - - - - - - - - - Form - - - Form1.cs - - - - - Form1.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - False - Microsoft .NET Framework 4 Client Profile %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 3.1 - true - - - - - \ No newline at end of file diff --git a/tools/AddToChangelog/AddToChangelog/Form1.Designer.cs b/tools/AddToChangelog/AddToChangelog/Form1.Designer.cs deleted file mode 100644 index 63b3b0771db..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Form1.Designer.cs +++ /dev/null @@ -1,263 +0,0 @@ -namespace AddToChangelog -{ - partial class MainForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.authorBox = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.dateBox = new System.Windows.Forms.MaskedTextBox(); - this.dropdownBox = new System.Windows.Forms.ComboBox(); - this.getButton = new System.Windows.Forms.Button(); - this.addButton = new System.Windows.Forms.Button(); - this.resultsBox = new System.Windows.Forms.TextBox(); - this.addLineButton = new System.Windows.Forms.Button(); - this.addLineBox = new System.Windows.Forms.TextBox(); - this.listBox = new System.Windows.Forms.TextBox(); - this.saveButton = new System.Windows.Forms.Button(); - this.editBox = new System.Windows.Forms.TextBox(); - this.reloadButton = new System.Windows.Forms.Button(); - this.pictureBox = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(20, 46); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(33, 13); - this.label1.TabIndex = 10; - this.label1.Text = "Date:"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(20, 21); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(41, 13); - this.label2.TabIndex = 11; - this.label2.Text = "Author:"; - // - // authorBox - // - this.authorBox.Location = new System.Drawing.Point(67, 18); - this.authorBox.Name = "authorBox"; - this.authorBox.Size = new System.Drawing.Size(154, 20); - this.authorBox.TabIndex = 1; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(330, 21); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(68, 13); - this.label3.TabIndex = 12; - this.label3.Text = "Add change:"; - // - // dateBox - // - this.dateBox.Location = new System.Drawing.Point(67, 43); - this.dateBox.Mask = "00/00/0000"; - this.dateBox.Name = "dateBox"; - this.dateBox.Size = new System.Drawing.Size(79, 20); - this.dateBox.TabIndex = 2; - this.dateBox.ValidatingType = typeof(System.DateTime); - // - // dropdownBox - // - this.dropdownBox.DisplayMember = "\""; - this.dropdownBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.dropdownBox.FormattingEnabled = true; - this.dropdownBox.Items.AddRange(new object[] { - "Added feature", - "Removed feature", - "Bugfix", - "Work in progress", - "Tweak", - "Experimental feature", - "Added icon", - "Removed icon", - "Added sound", - "Removed sound"}); - this.dropdownBox.Location = new System.Drawing.Point(856, 17); - this.dropdownBox.MaxDropDownItems = 10; - this.dropdownBox.Name = "dropdownBox"; - this.dropdownBox.Size = new System.Drawing.Size(121, 21); - this.dropdownBox.TabIndex = 7; - this.dropdownBox.SelectedIndexChanged += new System.EventHandler(this.dropdownBox_SelectedIndexChanged); - // - // getButton - // - this.getButton.Location = new System.Drawing.Point(17, 70); - this.getButton.Name = "getButton"; - this.getButton.Size = new System.Drawing.Size(69, 21); - this.getButton.TabIndex = 3; - this.getButton.Text = "Get HTML"; - this.getButton.UseVisualStyleBackColor = true; - this.getButton.Click += new System.EventHandler(this.getButton_Click); - // - // addButton - // - this.addButton.Location = new System.Drawing.Point(92, 70); - this.addButton.Name = "addButton"; - this.addButton.Size = new System.Drawing.Size(69, 21); - this.addButton.TabIndex = 4; - this.addButton.Text = "Lazy Add"; - this.addButton.UseVisualStyleBackColor = true; - this.addButton.Click += new System.EventHandler(this.addButton_Click); - // - // resultsBox - // - this.resultsBox.Location = new System.Drawing.Point(11, 101); - this.resultsBox.Multiline = true; - this.resultsBox.Name = "resultsBox"; - this.resultsBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.resultsBox.Size = new System.Drawing.Size(318, 356); - this.resultsBox.TabIndex = 10; - // - // addLineButton - // - this.addLineButton.Location = new System.Drawing.Point(983, 17); - this.addLineButton.Name = "addLineButton"; - this.addLineButton.Size = new System.Drawing.Size(21, 21); - this.addLineButton.TabIndex = 8; - this.addLineButton.Text = "+"; - this.addLineButton.UseVisualStyleBackColor = true; - this.addLineButton.Click += new System.EventHandler(this.addLineButton_Click); - // - // addLineBox - // - this.addLineBox.Location = new System.Drawing.Point(404, 18); - this.addLineBox.Name = "addLineBox"; - this.addLineBox.Size = new System.Drawing.Size(415, 20); - this.addLineBox.TabIndex = 6; - // - // listBox - // - this.listBox.Location = new System.Drawing.Point(335, 46); - this.listBox.Multiline = true; - this.listBox.Name = "listBox"; - this.listBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.listBox.Size = new System.Drawing.Size(669, 49); - this.listBox.TabIndex = 9; - // - // saveButton - // - this.saveButton.Location = new System.Drawing.Point(260, 70); - this.saveButton.Name = "saveButton"; - this.saveButton.Size = new System.Drawing.Size(69, 21); - this.saveButton.TabIndex = 5; - this.saveButton.Text = "Save"; - this.saveButton.UseVisualStyleBackColor = true; - this.saveButton.Click += new System.EventHandler(this.saveButton_Click); - // - // editBox - // - this.editBox.Location = new System.Drawing.Point(335, 101); - this.editBox.MaxLength = 9999999; - this.editBox.Multiline = true; - this.editBox.Name = "editBox"; - this.editBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.editBox.Size = new System.Drawing.Size(669, 356); - this.editBox.TabIndex = 13; - // - // reloadButton - // - this.reloadButton.Location = new System.Drawing.Point(185, 70); - this.reloadButton.Name = "reloadButton"; - this.reloadButton.Size = new System.Drawing.Size(69, 21); - this.reloadButton.TabIndex = 14; - this.reloadButton.Text = "Reload"; - this.reloadButton.UseVisualStyleBackColor = true; - this.reloadButton.Click += new System.EventHandler(this.reloadButton_Click); - // - // pictureBox - // - this.pictureBox.Location = new System.Drawing.Point(834, 20); - this.pictureBox.Name = "pictureBox"; - this.pictureBox.Size = new System.Drawing.Size(16, 16); - this.pictureBox.TabIndex = 15; - this.pictureBox.TabStop = false; - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.ClientSize = new System.Drawing.Size(1016, 469); - this.Controls.Add(this.pictureBox); - this.Controls.Add(this.reloadButton); - this.Controls.Add(this.editBox); - this.Controls.Add(this.saveButton); - this.Controls.Add(this.listBox); - this.Controls.Add(this.addLineBox); - this.Controls.Add(this.addLineButton); - this.Controls.Add(this.resultsBox); - this.Controls.Add(this.addButton); - this.Controls.Add(this.getButton); - this.Controls.Add(this.dropdownBox); - this.Controls.Add(this.dateBox); - this.Controls.Add(this.label3); - this.Controls.Add(this.authorBox); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "MainForm"; - this.Text = "Add To Changelog"; - this.Load += new System.EventHandler(this.MainForm_Load); - this.Shown += new System.EventHandler(this.MainForm_Shown); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox authorBox; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.MaskedTextBox dateBox; - private System.Windows.Forms.ComboBox dropdownBox; - private System.Windows.Forms.Button getButton; - private System.Windows.Forms.Button addButton; - private System.Windows.Forms.TextBox resultsBox; - private System.Windows.Forms.Button addLineButton; - private System.Windows.Forms.TextBox addLineBox; - private System.Windows.Forms.TextBox listBox; - private System.Windows.Forms.Button saveButton; - private System.Windows.Forms.TextBox editBox; - private System.Windows.Forms.Button reloadButton; - private System.Windows.Forms.PictureBox pictureBox; - } -} - diff --git a/tools/AddToChangelog/AddToChangelog/Form1.cs b/tools/AddToChangelog/AddToChangelog/Form1.cs deleted file mode 100644 index 567c1fb3e50..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Form1.cs +++ /dev/null @@ -1,268 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Windows.Forms; -using System.IO; -using System.Reflection; - -namespace AddToChangelog -{ - public partial class MainForm : Form - { - - public string changelogPath = "changelog.html"; - public string changelogMarker = "#ADDTOCHANGELOGMARKER#"; - public string longDateFormat = "d MMMM yyyy"; - public string shortDateFormat = "ddMMyyyy"; - - public Dictionary ItemList = new Dictionary() - { - { "Added feature", "rscadd" }, - { "Removed feature", "rscdel" }, - { "Bugfix", "bugfix" }, - { "Work in progress", "wip" }, - { "Tweak", "tweak" }, - { "Experimental feature", "experiment" }, - { "Added icon", "imageadd" }, - { "Removed icon", "imagedel" }, - { "Added sound", "soundadd" }, - { "Removed sound", "sounddel" } - }; - - public Dictionary ImageList = new Dictionary(); - - public MainForm() - { - InitializeComponent(); - this.dropdownBox.SelectedIndex = 0; - this.dateBox.Text = DateTime.Now.ToString(shortDateFormat); - this.listBox.Text = "# Enter your logs in the text box above and it'll be parsed into here. You can use 'Get HTML' to format it for the changelog. You can also use Lazy Add to automatically add the logs to the changelog, no effort needed (just remember to save)! Below is the changelog, you can edit and save it from here to easily fix mistakes. Save will save the changelog below, reload will undo any unsaved changes."; - } - - public void SaveChangelog() - { - DialogResult dialogResult = MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo); - if (dialogResult == DialogResult.Yes) - { - try - { - File.WriteAllText(changelogPath, editBox.Text); - } - catch - { - MessageBox.Show("Could not find '" + changelogPath + "'. Please place me on the same folder as " + changelogPath + "."); - } - } - } - - public void ScrollToMarker() - { - int selection = editBox.Text.IndexOf(changelogMarker); - if (selection > 0) - { - // Hacky way to scroll the edit text box to the beginning of the changelog entries - this.ActiveControl = editBox; - this.Refresh(); - editBox.SelectionStart = editBox.Text.Length - 1; - editBox.SelectionLength = 0; - editBox.ScrollToCaret(); - editBox.SelectionStart = selection - 2; - editBox.ScrollToCaret(); - } - } - - // Load up the changelog - - public void ReadChangelog() - { - try - { - string changelog = File.ReadAllText(changelogPath); - editBox.Text = changelog; - ScrollToMarker(); - } - catch (Exception e) - { - MessageBox.Show("Could not find '" + changelogPath + "'. Please place me on the same folder as " + changelogPath + "." + e); - } - } - - // Get the log notes - - public string GetHTMLLines() - { - StringReader stringReader = new StringReader(listBox.Text); - string html = ""; - string aLine = ""; - - do - { - aLine = stringReader.ReadLine(); - if (aLine != null) - { - // remove < and > - if (aLine.StartsWith("<") && aLine.Contains(">")) - { - string tag = aLine.Substring(1, aLine.IndexOf(">") - 1); // extract the tag - aLine = aLine.Substring(aLine.IndexOf(">") + 1); // now remove the tag from the line - aLine = "\t\t
  • " + aLine + "
  • \r\n"; // give html - } - else - { - aLine = "\t\t
  • " + aLine + "
  • \r\n"; - } - - html += aLine; - } - - } while (aLine != null); - - return html; - } - - private void addLineButton_Click(object sender, EventArgs e) - { - if (addLineBox.Text == "") - { - return; - } - - string textAdd = this.addLineBox.Text; - string listItem = this.dropdownBox.SelectedItem.ToString(); - string itemClass = ItemList[listItem]; - - if (itemClass == null) - { - return; - } - - if (listBox.Text.StartsWith("#")) - { - listBox.Text = ""; - } - - listBox.Text += "<" + itemClass + ">" + textAdd + "\r\n"; - addLineBox.Text = ""; - - } - - private void getButton_Click(object sender, EventArgs e) - { - if (listBox.Text != "") - { - DateTime dateTime; - if (!DateTime.TryParse(dateBox.Text, out dateTime)) - { - MessageBox.Show("Invalid date time."); - return; - } - - resultsBox.Text = "
    \r\n"; - resultsBox.Text += "\t

    " + dateTime.ToString(longDateFormat) + "

    \r\n"; - resultsBox.Text += "\t

    " + authorBox.Text + " updated:

    \r\n"; - resultsBox.Text += "\t
      \r\n"; - resultsBox.Text += GetHTMLLines(); - resultsBox.Text += "\t
    \r\n"; - resultsBox.Text += "
    "; - } - } - - // Automatically add to changelog - - private void addButton_Click(object sender, EventArgs e) - { - if (resultsBox.Text == "") - { - getButton_Click(this, EventArgs.Empty); - } - - if (resultsBox.Text == "") - { - return; - } - - string html = resultsBox.Text; - - string[] changelogFile = null; - - changelogFile = Regex.Split(editBox.Text, "\r\n"); - - if (changelogFile != null) - { - bool foundMarker = false; - for (int i = 0; i < changelogFile.Length; i++) - { - if (foundMarker == false) - { - string line = changelogFile[i]; - if (line.Contains(changelogMarker)) - { - line += "\r\n\r\n"; - line += resultsBox.Text; - line += "\r\n"; - changelogFile[i] = line; - foundMarker = true; - break; - } - } - } - - if (foundMarker == false) - { - MessageBox.Show("Could not find '#ADDTOCHANGELOGMARKER#' in '" + changelogPath + "'. Please place one above where the changelog entries start, inside a comment."); - } - else - { - editBox.Text = String.Join("\r\n", changelogFile); - ScrollToMarker(); - } - - } - } - - private void saveButton_Click(object sender, EventArgs e) - { - SaveChangelog(); - } - - private void reloadButton_Click(object sender, EventArgs e) - { - ReadChangelog(); - } - - private void MainForm_Shown(object sender, EventArgs e) - { - ReadChangelog(); - } - - private void dropdownBox_SelectedIndexChanged(object sender, EventArgs e) - { - // Change the image to reflect the drop down box selection - if (ImageList.Count > 0) - { - string value = ItemList[dropdownBox.SelectedItem.ToString()]; - pictureBox.Image = ImageList[value]; - } - } - - private void MainForm_Load(object sender, EventArgs e) - { - // Get our embedded images. Use our dictionaries to help. - foreach (string value in ItemList.Values) - { - Assembly myAssembly = Assembly.GetExecutingAssembly(); - Stream myStream = myAssembly.GetManifestResourceStream("AddToChangelog." + value + ".png"); - Bitmap image = new Bitmap(myStream); - - ImageList.Add(value, image); - } - - pictureBox.Image = ImageList["rscadd"]; - } - } -} diff --git a/tools/AddToChangelog/AddToChangelog/Form1.resx b/tools/AddToChangelog/AddToChangelog/Form1.resx deleted file mode 100644 index 56c5b622846..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Form1.resx +++ /dev/null @@ -1,1906 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAYAgIAAAAEAIAAoCAEAZgAAAEhIAAABACAAiFQAAI4IAQAwMAAAAQAgAKglAAAWXQEAICAAAAEA - IACoEAAAvoIBABgYAAABACAAiAkAAGaTAQAQEAAAAQAgAGgEAADunAEAKAAAAIAAAAAAAQAAAQAgAAAA - AAAACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACAAA - AA4AAAARAAAAEwAAABYAAAAaAAAAHQAAACEAAAAiAAAAJQAAACgAAAAqAAAALAAAAC4AAAAwAAAAMgAA - ADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA6AAAAOwAAADwAAAA8AAAAPQAAAD0AAAA+AAAAPgAA - AD4AAAA+AAAAPgAAAD4AAAA+AAAAPQAAAD0AAAA8AAAAPAAAADsAAAA6AAAAOgAAADkAAAA4AAAANwAA - ADYAAAA1AAAANAAAADEAAAAwAAAALQAAACwAAAApAAAAJwAAACUAAAAiAAAAIAAAAB0AAAAZAAAAFQAA - ABMAAAARAAAADQAAAAcAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAADAAAACQAAABEAAAAWAAAAGgAAAB0AAAAgAAAAIgAAACUAAAAoAAAAKgAA - ACwAAAAvAAAAMgAAADUAAAA3AAAAOAAAADkAAAA7AAAAPAAAADwAAAA+AAAAPwAAAEAAAABBAAAAQgAA - AEMAAABEAAAARQAAAEYAAABHAAAARwAAAEgAAABJAAAASQAAAEkAAABJAAAASwAAAE0AAABLAAAASQAA - AEcAAABFAAAARAAAAEMAAABCAAAAQQAAAEAAAAA/AAAAPgAAADwAAAA8AAAAOgAAADkAAAA4AAAANwAA - ADQAAAAxAAAALwAAACwAAAAqAAAAJwAAACQAAAAhAAAAHwAAAB0AAAAZAAAAFgAAABAAAAAIAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAACgAA - ABAAAAAVAAAAGAAAABsAAAAeAAAAIQAAACQAAAAnAAAAKQAAACsAAAAuAAAAMAAAADMAAAA0AAAANgAA - ADgAAAA4AAAAOQAAADsAAAA8AAAAPgAAAEAAAABDAAAAQwAAAEIAAABCAAAAQgAAAEMAAABEAAAARAAA - AEUAAABFAAAARgAAAE0AAABbAAAAYwAAAGEAAABcAAAAVgAAAFEAAABMAAAARwAAAEIAAABAAAAAPQAA - ADwAAAA7AAAAOQAAADgAAAA3AAAANgAAADQAAAAyAAAAMAAAAC0AAAArAAAAKQAAACYAAAAjAAAAIQAA - AB0AAAAaAAAAGAAAABUAAAAPAAAACgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAQAAAAGAAAACQAAAA4AAAARAAAAEwAA - ABQAAAAWAAAAGAAAABsAAAAeAAAAIgAAACUAAAAmAAAAKAAAACoAAAAsAAAAMAAAADYAAABAAAAASgAA - AFIAAABRAAAAQgAAADYAAAA0AAAAMwAAADMAAAA0AAAANAAAADQAAAA6AAAAVAwMDHoxMTGULi4ukBoa - GoYGBgZ6AAAAcQAAAGYAAABaAAAAUAAAAEYAAAA5AAAALwAAACsAAAApAAAAKAAAACYAAAAkAAAAIgAA - AB8AAAAbAAAAGAAAABYAAAAUAAAAEgAAABEAAAAPAAAACgAAAAYAAAAEAAAAAgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAJAAAACgAAAAwAAAAPAAAAEQAA - ABIAAAATAAAAGwAAACgAAAA2AAAASAcHB1sXFxdyJCQkghkZGXkAAABPAAAAKgAAABYAAAATAAAAEgAA - ABEAAAASAAAAEwAAACcAAABXaGhoqaysrOKqqqrhn5+f2ZKSks6AgIC+ZmZmqUZGRpEnJyd7FhYWZwAA - AEgAAAAmAAAAEAAAAAsAAAALAAAACgAAAAoAAAAJAAAABwAAAAQAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAYAAAAKAAAADQAA - ABAAAAASAAAAEwAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAVAAAAGwAAACgAAAA9AAAAVRgYGG5CQkKPbm5ur5iY - mM2xsbHkkpKSyBwcHHEAAAA2AAAADgAAAAYAAAADAAAAAQAAAAAAAAABAAAAIRsbG2WgoKDNzs7O/8/P - z//Pz8//zs7O/srKyvrFxcX1vr6+7q+vr9yUlJTANDQ0eQAAADIAAAAHAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAGAAAADAAAABQAAAAbAAAAIQAAACUAAAAnAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKQAA - ADoAAABTCwsLbTMzM4xpaWmxlpaW0rW1tevGxsb5ysrK/MvLy/6/v7/zZmZmrQcHB14AAAAnAAAAEAAA - AAkAAAAEAAAAAgAAAAkAAAA2TU1Niry8vOrQ0ND/09PT/9TU1P/U1NT/1NTU/9TU1P/T09P/0NDQ/cbG - xvVfX1+ZBAQEPQAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAkAAAAUAAAAIAAA - ACwAAAA1AAAAPAAAAD4AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABIAAAAaigoKJh5eXnHrKys6MXFxfjMzMz+y8vL/8nJ - yf/Kysr/ysrK/8zMzP6jo6PgLi4ukQAAAE4AAAAjAAAAEgAAAA0AAAAJAAAAFhEREVKGhoa0y8vL+dLS - 0v/U1NT/1dXV/9bW1v/W1tb/19fX/9jY2P/W1tb/ycnJ+WNjY50EBAQ/AAAACgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAFAAAADQAAABsAAAAsAAAAPAAAAEoAAABS//////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////////+zs - 7P+xsbH/p6en/8jIyP/Kysr/ycnJ/8jIyP/IyMj/ycnJ/8rKyv/Ly8v/zMzM/8vLy/+pqan/h4eH2x8f - H1kAAAA4AAAAMwAAADIAAAA8NDQ0dbKyst3Pz8/+1NTU/9XV1f/W1tb/19fX/9jY2P/Z2dn/2dnZ/9jY - 2P/Kysr5ZGRkngMDA0AAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAACAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAQAAAAIQAA - ADYAAABKAAAAWwAAAGX/////+Pj4//f39//4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8 - /P/8/Pz//Pz8//z8/P/8/Pz//f39//39/f/9/f3//f39//39/f/9/f3//f39//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//f39//z8/P/7+/v/6enp/7CwsP+oqKj/ysrK/8jIyP/Hx8f/yMjI/8nJ - yf/Kysr/y8vL/8vLy//MzMz/z8/P/7y8vP+VlZX/iYmJ+TU1NZEmJiaBKysrfy8vL4FycnKqxsbG9NLS - 0v/V1dX/1tbW/9fX1//Y2Nj/2NjY/9ra2v/a2tr/2NjY/8vLy/lqamqhCwsLQQAAAAoAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAAdAAAALAAAACcAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABIAAAAlAAAAPAAAAFIAAABlAAAAcP/////29vb/9vb2//f3 - 9//39/f/9/f3//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7 - +//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/f3//Pz8//v7 - +//x8fH/u7u7/6Wlpf/IyMj/ysrK/8nJyf/Kysr/ysrK/8vLy//MzMz/zc3N/83Nzf/Pz8//zc3N/7S0 - tP+qqqr/ra2t/q6urumzs7Pltra25sPDw/HS0tL/1dXV/9fX1//Y2Nj/2NjY/9nZ2f/a2tr/29vb/9vb - 2//a2tr/zMzM+W5ubqILCwtBAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAKQwMDFNKSkp/Ly8vcAMD - A0MAAAAdAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAEwAA - ACcAAAA/AAAAVgAAAGoAAAB2//////b29v/29vb/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+fn5//n5 - +f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8 - /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//f39//39/f/8/Pz/+/v7//X19f/Gxsb/oaGh/8bGxv/MzMz/ysrK/8rK - yv/Ly8v/zMzM/83Nzf/Ozs7/zs7O/8/Pz//Q0ND/0dHR/9HR0f/S0tL/0tLS/9LS0v/T09P/09PT/9TU - 1P/X19f/2NjY/9nZ2f/Z2dn/2tra/9vb2//c3Nz/3Nzc/9ra2v/MzMz5e3t7rA4ODlYAAAAwAAAAFgAA - AAgAAAADAAAADwAAADIhISFidnZ2qLW1teCjo6PPXl5ekQwMDFMAAAApAAAACwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9vb2//b2 - 9v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//7+/v/+/v7//v7+//n5+f/7+/v//v7+//7+/v/9/f3//f39//z8 - /P/7+/v/9vb2/8/Pz/+enp7/xMTE/83Nzf/Ly8v/zMzM/8zMzP/Nzc3/zs7O/8/Pz//Pz8//0NDQ/9HR - 0f/S0tL/09PT/9PT0//U1NT/1dXV/9XV1f/W1tb/19fX/9jY2P/Z2dn/2tra/9ra2v/b29v/3Nzc/93d - 3f/e3t7/29vb/9LS0v2ysrLbeXl5pjw8PHcDAwNQAAAAMQAAACYAAAA8KSkpb5KSkrrFxcXv1tbW/9XV - 1f27u7vlgYGBqhUVFWEAAAAxAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////29vb/9/f2//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//n5 - +f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7 - +//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//v7+//j4 - +P/n5+f/0tLS/9XV1f/p6en/9/f3//39/f/8/Pz//Pz8//v7+//09PT/0NDQ/5ubm//AwMD/zs7O/8zM - zP/Nzc3/zc3N/87Ozv/Pz8//0NDQ/9DQ0P/R0dH/0tLS/9PT0//U1NT/1NTU/9XV1f/W1tb/19fX/9fX - 1//Y2Nj/2dnZ/9ra2v/b29v/29vb/9zc3P/d3d3/3t7e/97e3v/e3t7/2tra/9bW1v7MzMz2srKy24GB - ga9AQEB6DQ0NX0lJSYOcnJzIzc3N99vb2/7l5eX/5OTk/9ra2v7Hx8fwiIiItTExMW0AAAA1AAAADwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////b2 - 9v/39/b/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//39 - /f/9/f3//f39//39/f/9/f3//f39//7+/v/6+vr/4eHh/7e3t/+hoaH/oqKi/7Gxsf/S0tL/7e3t//n5 - +f/8/Pz/7Ozs/9LS0v+vr6//nJyc/8PDw//R0dH/zs7O/87Ozv/Pz8//z8/P/9DQ0P/R0dH/0tLS/9PT - 0//T09P/1NTU/9XV1f/V1dX/1tbW/9fX1//Y2Nj/2dnZ/9ra2v/a2tr/29vb/9zc3P/d3d3/3t7e/97e - 3v/f39//4ODg/+Hh4f/h4eH/4ODg/93d3f/Y2Nj/z8/P+bOzs9yTk5O8sLCw2dTU1P3f39//5+fn/+rq - 6v/r6+v/6enp/9/f3//Pz8/3m5ubwzAwMHMAAAA4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9vb2//f39v/39/f/9/f3//f39//4+Pj/+Pj4//j4 - +P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7 - +//7+/v//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//f39//39/f/9/f3//f39//39/f/9/f3/+/v7/+Tk - 5P+3t7f/pKSk/7y8vP+9vb3/qamp/6SkpP+5ubn/2NjY/+Pj4//CwsL/pKSk/6Wlpf++vr7/0dHR/9DQ - 0P/Ozs7/z8/P/8/Pz//Q0ND/0dHR/9LS0v/S0tL/09PT/9TU1P/V1dX/1tbW/9fX1//Y2Nj/2NjY/9nZ - 2f/a2tr/29vb/9vb2//c3Nz/3d3d/93d3f/e3t7/39/f/+Dg4P/h4eH/4uLi/+Li4v/j4+P/5OTk/+Tk - 5P/f39//2dnZ/dLS0vrX19f94uLi/+np6f/q6ur/6+vr/+zs7P/s7Oz/6+vr/+Hh4f7Pz8/3nZ2dxjw8 - PHYAAAA4AAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///29vb/9/f2//f39//5+fn/5OTk/97e3v/39/f/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8 - /P/9/f3//f39//39/f/9/f3//f39//39/f/p6en/ubm5/6SkpP++vr7/0tLS/9HR0f/Pz8//urq6/6Sk - pP+kpKT/q6ur/56env+wsLD/zMzM/9HR0f/Pz8//z8/P/8/Pz//Pz8//0NDQ/9HR0f/S0tL/09PT/9PT - 0//V1dX/1dXV/9bW1v/X19f/2NjY/9jY2P/Z2dn/2tra/9ra2v/c3Nz/3Nzc/93d3f/e3t7/3t7e/+Dg - 4P/g4OD/4eHh/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5ubm/+bm5v/l5eX/4+Pj/+Xl5f/q6ur/6urq/+vr - 6//s7Oz/7e3t/+3t7f/u7u7/7u7u/+Pj4/7U1NT8lZWVvRsbG14AAAAbAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////b29v/39/b/9/f3/9TU1P+Ojo7/oKCg/8LC - wv/39/f/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7 - +//7+/v/+/v7//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//39/f/9/f3//f39//39/f/8/Pz/6+vr/8DA - wP+jo6P/vr6+/9DQ0P/Kysr/yMjI/8zMzP/Pz8//ycnJ/7S0tP+rq6v/vr6+/9HR0f/Q0ND/z8/P/8/P - z//Pz8//0NDQ/9HR0f/S0tL/09PT/9PT0//U1NT/1dXV/9bW1v/W1tb/19fX/9jY2P/Z2dn/2tra/9ra - 2v/b29v/3Nzc/93d3f/d3d3/3t7e/9/f3//g4OD/4eHh/+Hh4f/i4uL/4+Pj/+Tk5P/l5eX/5eXl/+bm - 5v/n5+f/6Ojo/+jo6P/p6en/6urq/+vr6//s7Oz/7Ozs/+3t7f/u7u7/7+/v/+/v7//w8PD/6urq/9fX - 1/2enp7EICAgXwAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////9vb2//f39v/39/f/s7Oz/3x8fP+Ojo7/paWl//Ly8v/5+fn/+fn5//n5+f/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8/P/8/Pz//Pz8//z8 - /P/8/Pz//f39//39/f/9/f3//f39//Dw8P/Hx8f/oqKi/7a2tv/R0dH/y8vL/8fHx//Hx8f/ycnJ/8vL - y//Pz8//09PT/9TU1P/T09P/0NDQ/87Ozv/Pz8//0NDQ/9DQ0P/R0dH/0tLS/9PT0//T09P/1NTU/9XV - 1f/W1tb/19fX/9fX1//Y2Nj/2tra/9vb2//d3d3/3d3d/9/f3//f39//4ODg/+Dg4P/h4eH/4eHh/+Hh - 4f/i4uL/4uLi/+Pj4//k5OT/5eXl/+Xl5f/m5ub/5+fn/+jo6P/p6en/6enp/+rq6v/r6+v/7Ozs/+3t - 7f/t7e3/7u7u/+/v7//w8PD/8PDw//Dw8P/i4uL/xcXF62NjY5IAAAA/AAAADwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////29vb/9vb2//f39//h4eH/hYWF/4KC - gv/BwcH/9fX1//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7 - +//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9/f3//f39//39/f/5+fn/1NTU/6Ki - ov+zs7P/0dHR/8zMzP/IyMj/yMjI/8nJyf/Kysr/ysrK/8vLy//Ozs7/0dHR/8/Pz//Pz8//z8/P/9DQ - 0P/R0dH/0tLS/9LS0v/T09P/1NTU/9XV1f/V1dX/1tbW/9fX1//a2tr/3t7e/+Pj4//n5+f/6urq/+zs - 7P/s7Oz/7u7u/+3t7f/s7Oz/7Ozs/+vr6//p6en/6Ojo/+fn5//l5eX/5eXl/+Xl5f/m5ub/5+fn/+jo - 6P/o6Oj/6enp/+rq6v/r6+v/7Ozs/+zs7P/t7e3/7u7u/+/v7//w8PD/8PDw//Hx8f/x8fH/6urq/9bW - 1vqTk5O8ICAgXgAAAB8AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4//////b29v/29vb/9/f3//f39//v7+//7Ozs//X19f/4+Pj/+fn5//n5+f/5+fn/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pz8//z8 - /P/8/Pz//Pz8//39/f/9/f3//Pz8/+Tk5P+wsLD/qKio/83Nzf/Pz8//yMjI/8jIyP/Jycn/ysrK/8vL - y//Ly8v/zMzM/83Nzf/Ozs7/z8/P/9DQ0P/Q0ND/0dHR/9LS0v/S0tL/09PT/9TU1P/V1dX/1tbW/9jY - 2P/d3d3/5OTk/+vr6//v7+//8fDw/+zp5//q6OX/6Ofm/+bk4//j4uD/4+Hg/+Ti4f/l5OP/5+bm/+no - 6P/t7ez/7+/v/+3t7f/r6+v/6urq/+jo6P/o6Oj/6enp/+np6f/q6ur/6+vr/+vr6//t7e3/7e3t/+7u - 7v/v7+//8PDw//Dw8P/x8fH/8vLy//Dw8P/h4eH+vb294UhISIIAAAA3AAAACgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9vb2//b29v/39/f/9/f3//f3 - 9//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/+/v7//v7 - +//7+/v/+/v7//v7+//7+/v//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//f39//39/f/6+vr/z8/P/6Sk - pP/ExMT/0tLS/8rKyv/Jycn/ysrK/8rKyv/Ly8v/zMzM/83Nzf/Nzc3/zs7O/8/Pz//Q0ND/0NDQ/9HR - 0f/S0tL/09PT/9TU1P/U1NT/1dXV/9fX1//e3t7/6Ojo//Hx8f/z8/P/7erp/9fMwP/Fsp//uKeV/7Gk - lv+upZz/q6Ob/6ujmv+ropr/qqGa/6uim/+vqKH/uLKs/8bCvv/T0M3/4N/e/+7t7f/v7+//7e3t/+zs - 7P/r6+v/6+vr/+vr6//s7Oz/7e3t/+7u7v/u7u7/7+/v//Dw8P/w8PD/8fHx//Ly8v/z8/P/6Ojo/9TU - 1PiIiIivBgYGUwAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////29vb/9vb2//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8 - /P/8/Pz//Pz8//z8/P/9/f3//f39//r6+v/Pz8//pKSk/8HBwf/S0tL/zMzM/8rKyv/Kysr/y8vL/8zM - zP/Nzc3/zc3N/87Ozv/Pz8//0NDQ/9HR0f/S0tL/0tLS/9PT0//U1NT/1dXV/9bW1v/c3Nz/5+fn//Ly - 8v/y8fD/49vU/8Oumf+kgl//kmlB/5V1Vf+pmIj/tayi/7qxqf+8tKz/vbat/721rf+8s6v/ubCp/7Wt - pf+vpp7/qJ+W/6Wbkv+up5//v7m0/9TSz//o5+b/7+/v/+/v7//t7e3/7e3t/+3t7f/t7e3/7u7u/+/v - 7//w8PD/8fHx//Ly8v/z8/P/8/Pz//Pz8//j4+P/xMTE6VhYWJAAAABGAAAAEgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////b29v/29vb/9/f3//f3 - 9//39/f/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7 - +//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9/f3/+/v7/+Hh - 4f+wsLD/pqam/8jIyP/S0tL/zMzM/8zMzP/MzMz/zc3N/87Ozv/Pz8//z8/P/9DQ0P/R0dH/0tLS/9PT - 0//T09P/1NTU/9XV1f/X19f/4+Pj//Ly8v/4+Pj/6uTe/7+nkv+UaT7/gUkS/41eL/+rknn/wrmv/8zE - vf/TzMX/2NHL/9nUzv/b1c//2tTP/9jQyv/PwbP/xrKd/7yhh/+yknP/qIZl/6GCY/+cgmj/n4t3/7Gk - l//Rzcj/7ezs//Hx8f/x8fH/7+/v/+/v7//w8PD/8fHx//Hx8f/y8vL/8/Pz//T09P/09PT/9fX1/+vr - 6//Y2Nj7mpqavhISEmIAAAAoAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////9vb2//b29v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v//Pz8//z8 - /P/8/Pz//Pz8//z8/P/8/Pz//Pz8//39/f/9/f3/+fn5/9zc3P+rq6v/q6ur/8/Pz//S0tL/zc3N/87O - zv/Ozs7/z8/P/9DQ0P/Q0ND/0dHR/9LS0v/T09P/1NTU/9TU1P/V1dX/2tra/+jo6P/4+Pj/9PLv/868 - q/+ackn/f0YN/4RGCf+fcUX/wK2a/9HKwv/b1c//4NvW/+Tg3P/p5eH/6+fj/+fe1f/YwKj/xppt/7d7 - P/+sZR7/pVgL/6JUB/+eUgb/mlAG/5NNB/+OTg//ilYi/5FpQ/+wmYP/2tLM//Hx8P/y8vL/8PDw//Hx - 8f/x8fH/8vLy//Pz8//09PT/9fX1//X19f/29vb/9fX1/+fn5/7Nzc3venp6pg8PD1AAAAAXAAAAAwAA - AAIAAAAEAAAACwAAAA8AAAAPAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////29vb/9vb2//f3 - 9v/39/f/9/f3//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//f39//39 - /f/9/f3/9/f3/9bW1v+mpqb/sLCw/9LS0v/S0tL/z8/P/8/Pz//Q0ND/0dHR/9HR0f/S0tL/09PT/9TU - 1P/V1dX/1dXV/9vb2//r6+v/+Pj4/+vm4P+1mHz/g04Z/38/AP+MSQj/rIJY/87Asv/c1tH/4t7a/+jl - 4v/t6+n/8e/u//Pw7f/m0bz/y5hk/7VrH/+tWAL/q1UA/6tUAP+qVAD/qFQA/6dTAP+kUgD/oU8A/5tM - AP+SSAD/iEMA/4FECf+TaUD/wrCd/+7t6//z8/P/8/Pz//Pz8//z8/P/9PT0//X19f/19fX/9vb2//f3 - 9//4+Pj/9fX1/+Pj4/68vLzgUVFRhAAAADoAAAAiAAAAKAAAADEAAAA8AAAARgAAAEUAAAApAAAACwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4//////b29v/29vb/9/f2//j4+P/w8PD/6urq//r6+v/4+Pj/+fn4//n5 - +f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7 - +//8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/9/f3//f39//39/f/9/f3/8fHx/8bGxv+jo6P/vLy8/9jY - 2P/S0tL/0NDQ/9HR0f/S0tL/09PT/9TU1P/U1NT/1dXV/9bW1v/b29v/7Ozs//j4+P/g1sz/o35b/4FI - D/+EQQD/kUoF/69/UP/Sw7X/4d3Z/+jl4//u7ev/8/Lx//f19f/07+r/3b2d/8KCQv+1aBr/tGQV/7Rk - Ff+zYhL/sl8O/7BcCf+uWQT/rVcB/6xVAP+pVAD/plIA/6JQAP+aTAD/j0cA/4RCAv+JVSD/t52C/+rl - 4P/19fX/9PT0//X19f/19fX/9vb2//f39//4+Pj/+Pj4//n5+f/6+vr/8vLy/93d3fudnZ3BJiYmcR0d - HWdBQUF4Xl5einR0dJ2GhoaucHBwnxMTE1wAAAAhAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9vb2//b2 - 9v/39/b/4ODg/5SUlP+jo6P/ysrK//j4+P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//39 - /f/9/f3//f39//39/f/5+fn/09PT/6Ojo/+3t7f/2dnZ/9PT0//R0dH/0tLS/9PT0//U1NT/1dXV/9XV - 1f/W1tb/2tra/+np6f/29vb/2MzB/5x0Tv97PgL/h0MA/5RKAP+vekX/1MW3/+Xi3//s6ur/8fHw//X1 - 9f/29vb/8uzm/9m0kP+9dzL/t2oe/7htIv+5byX/unIp/7pyKv+6cCf/uGwh/7VnGf+yYhH/sF0K/65Z - BP+tVgH/q1QA/6ZTAP+fTwD/lEkA/4ZCAP+BRw7/ro9w/+fh2//29vb/9vb2//b29v/39/f/+Pj4//n5 - +f/5+fn/+vr6//v7+//6+vr/6+vr/9PT0/S2trbZt7e32cHBwePKysrr1dXV89zc3PvIyMjqYGBgkgQE - BDwAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////29vb/9vb2//f39v+0tLT/f39//5GRkf+mpqb/8/Pz//j4 - +P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/wMDA/7CwsP/t7e3/rq6u/729 - vf/z8/P/s7Oz/8PDw//p6en/oqKi/8LCwv/8/Pz/s7Oz/9XV1f/29vb/sLCw//Dw8P9+fn7/oqKi/8rK - yv/W1tb/0tLS/9LS0v/T09P/1NTU/9XV1f/W1tb/19fX/9nZ2f/m5ub/8/Pz/9vQxv+ZcUr/fkIG/4pE - AP+WSgD/qGgo/9G6pf/n5eP/7e3s//Hx8f/z8/P/8/Pz//Lv7P/Uq4T/uGwi/7NiEf+0YxT/tWYX/7Vo - G/+3ax//uG4j/7pwJ/+7cyv/u3Iq/7lvJf+3ah7/tGUW/7JgD/+wXAj/rloF/6tWA/+jUgD/lkoA/4hD - AP+FTBP/sZN0/+3o5P/4+Pj/+fn5//n5+f/5+fn/+vr6//v7+//7+/v//Pz8//39/f/4+Pj/6enp/+Li - 4v7m5ub+6enp/+3t7f/w8PD/7u7u/93d3fuhoaHFGBgYXAAAABwAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////b2 - 9v/29vb/9vb2/9fX1/92dnb/f39//7a2tv/09PT/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v+wsLD/+vr6/8jIyP+rq6v/9/f3/8HBwf+srKz//Pz8/8bGxv+xsbH/7u7u/8LC - wv+2trb/5OTk/8/Pz/+YmJj/z8/P/3V1df+srKz/19fX/9TU1P/T09P/09PT/9XV1f/V1dX/1tbW/9fX - 1//Y2Nj/4uLi//Ly8v/j3Nf/o4Jf/3s/A/+JRAD/lksA/6NYDf/Fn3n/5uPg/+3t7f/v7+//8PDw//Hx - 8f/w7uz/272g/7dtI/+vWgX/sFwH/7BdCv+xYA3/smIS/7RmF/+2aRz/uG0i/7pyKf+8dS//vXgz/713 - Mv+7cyv/uG4j/7VpG/+0ZBT/smEQ/69eDP+nVgf/mEwC/4hEAP+CSA//vKKI//X08v/6+vr/+vr6//r6 - +v/7+/v//Pz8//z8/P/9/f3//f39//z8/P/5+fn/9/f3//n5+f/6+vr/+fn5//n5+f/39/f/6Ojo/sjI - yOhLS0uAAAAALwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9vb2//b29v/29vb/9vb2/+Xl5f/Z2dn/8fHx//j4 - +P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6/83Nzf/k5OT/8/Pz/5mZ - mf/5+fn/9PT0/5+fn//6+vr/+fn5/6Ghof/x8fH/y8vL/6ampv/s7Oz/zs7O/5iYmP+jo6P/h4eH/8nJ - yf/Y2Nj/09PT/9TU1P/V1dX/1tbW/9bW1v/X19f/2NjY/93d3f/s7Oz/7uzr/6qNcf98Qwr/h0IA/5ZK - AP+fTwD/uH9H/+DVyv/r6ur/7Ozs/+7u7v/u7u7/8PDw/+XWx/+/fz//rlcB/65XAP+uVwH/rlgD/7Bb - B/+xXw3/s2MT/7VnGf+3ax//unAm/7x0Lf++eTT/wH06/8B+O/++ezf/vHYw/7pxJ/+3bCD/tmkc/7Rm - Gv+rXhL/mVEI/4ZDAP+MWCX/yrek//r5+f/7+/v/+/v7//z8/P/9/f3//f39//39/f/8/Pz//Pz8//v7 - +//6+vr/+fn5//n5+f/4+Pj/9/f3//f39//u7u7/2dnZ+IaGhqsAAABIAAAAEQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///29vX/9vb2//b29v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6/83Nzf/Jycn/pKSk/+fn5//7+/v/4+Pj//v7+//5+fn/0dHR/5iY - mP+Kior/f39//7CwsP+vr6//j4+P/5ubm/+cnJz/2dnZ/9bW1v/U1NT/1dXV/9XV1f/W1tb/19fX/9jY - 2P/a2tr/5eXl/+/u7v/Juan/gk4c/4NAAP+TSQD/n08A/6pdEf/QspT/6Ojn/+rq6v/r6+v/7Ozs/+3t - 7f/t6+n/0KZ+/7BcCP+uVwD/rlcC/69ZBP+vWgb/sF0J/7FfDP+zYhH/tWYX/7ZpHP+5biP/u3Mr/713 - Mv+/fDj/wYA//8KDRP/CgUH/v3w4/7x1Lv+5byX/uGsg/7ZpHv+rYRj/llEM/4RFBf+YbEH/5dzT//z8 - /P/8/Pz//f39//39/f/9/f3//Pz8//v7+//7+/v/+vr6//r6+v/5+fn/+Pj4//f39//39/f/9vb2//Pz - 8//i4uL+rq6uzSMjI2QAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////b29f/29vb/9vb2//f39v/39/f/9/f3//j4 - 9//4+Pj/+Pj4//n5+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/+/v7//v7 - +//Z2dn/0NDQ//v7+//u7u7/y8vL/+3t7f+5ubn/o6Oj/7S0tP+3t7f/t7e3/7e3t/+4uLj/vb29/9TU - 1P/a2tr/1dXV/9XV1f/W1tb/19fX/9jY2P/Z2dn/2dnZ/9/f3//t7e3/497Z/5x3Uv98PgD/jkYA/51O - AP+lUwH/u3w//+DVy//n5+f/6enp/+rq6v/r6+v/7Ozs/+TYzP+8ejj/rlgB/69ZBP+wWwf/sV4K/7Ff - Df+yYQ//s2MS/7RkFf+1Zhj/tmkc/7htIf+6cSj/vHUu/714M/+/fDj/wX8//8KCQv/BgUD/v3s3/7t0 - LP+4bCH/tWga/7JlF/+mXRX/klAN/4BFCf+3mn3/+ff2//39/f/9/f3//Pz8//z8/P/7+/v/+vr6//r6 - +v/5+fn/+Pj4//f39//39/f/9vb2//b29v/19fX/9PT0/+jo6P/Ly8voUFBQhQAAADIAAAAHAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////9vb1//b29v/29vb/9/f2//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/8PDw/7i4uP+5ubn/+/v7//v7+//7+/v/39/f/6ur - q/+9vb3/29vb/9nZ2f/Y2Nj/2NjY/9nZ2f/Y2Nj/29vb/9fX1//W1tb/1tbW/9fX1//Y2Nj/2dnZ/9nZ - 2f/b29v/5ubm/+zr6/+4oYv/e0IL/4dDAP+YTAD/o1EA/6xbCf/MpX//5OHf/+bm5v/o6Oj/6enp/+rq - 6v/q6ej/2b6j/7NkFf+vWwf/sV0K/7FfDf+zYhD/s2MT/7RlFv+1Zxn/tmkc/7dqHv+3ax//t2sg/7hs - If+4biP/uXAn/7tzLP+9dzH/vns3/8B9O//Afjv/vXgz/7lwJ/+2aRv/s2MU/61fEf+eVg//ikoK/49e - Lf/bzsL/+/v7//z8/P/7+/v/+/v7//r6+v/5+fn/+fn5//j4+P/39/f/9/f3//b29v/19fX/9fX1//T0 - 9P/z8/P/7e3t/9vb2/h6enqjCwsLRAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////29vX/9vb2//b29v/29vb/9/f3//f3 - 9//39/f/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7 - +//7+/v/+/v7//n5+f/7+/v/+/v7//f39//S0tL/oaGh/8zMzP/Z2dn/09PT/9PT0//U1NT/1dXV/9XV - 1f/W1tb/1tbW/9fX1//X19f/2NjY/9nZ2f/a2tr/2tra/9/f3//q6ur/3NXP/5NpQf99PgD/kUcA/59P - AP+oUwD/s2cc/9fEsf/k5OT/5eXl/+bm5v/o6Oj/6enp/+fk4P/Nonf/smEQ/7FfDP+yYRD/s2MT/7Rl - Fv+1Zxn/tmkc/7dqHv+3ax//t2sf/7dqHf+2aBv/tmca/7ZnGf+2aBv/t2sf/7lvJP+7cyr/vHYw/756 - Nv++ejb/u3Qt/7dsIP+zZBT/sF8N/6ZYCv+UTgj/hEkN/7GSdP/z8e7/+vr6//r6+v/6+vr/+fn5//n5 - +f/4+Pj/9/f3//f39//29vb/9fX1//X19f/09PT/8/Pz//Ly8v/s7Oz/3t7e/J2dnb4eHh5cAAAAHgAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4//////b29f/29vb/9vb2//b29v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9fX1/8XF - xf+ioqL/1dXV/9fX1//S0tL/09PT/9TU1P/V1dX/1dXV/9bW1v/X19f/2NjY/9jY2P/Z2dn/2tra/9vb - 2//c3Nz/4+Pj/+np6P+/rpz/f0kU/4ZDAP+ZSwD/pVEA/6xVAP+8fT//3NPK/+Pj4//k5OT/5eXl/+bm - 5v/o6Oj/5uDb/8SOWP+zYxL/s2IS/7RlFf+1Zxn/tmkc/7dqHv+3ax//t2oe/7dpHP+2aBr/tWcY/7Rl - Fv+0ZBT/tGMT/7NjEv+zYxP/tGYX/7ZqHf+4biP/unIq/712MP+9dzH/unAn/7VnGf+xXw3/q1gG/5xQ - BP+IRgP/kF4u/+DWzP/5+fn/+fn5//n5+f/4+Pj/9/f3//f39//29vb/9vb2//X19f/09PT/9PT0//Pz - 8//w8PD/6+vr/+Pj4/3Q0NDuhISEqxUVFVMAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9fX1//b29f/29vb/9vb2//j4 - 9//19fX/+fn5//j49//4+Pj/+Pj4//n5+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+/v7//v7+//7+/v/+/v7//v7+//y8vL/ubm5/62trf/Z2dn/1tbW/9PT0//U1NT/1dXV/9XV - 1f/W1tb/19fX/9jY2P/Z2dn/2dnZ/9ra2v/b29v/3Nzc/97e3v/m5ub/4+Hf/5x7WP97PgH/jkcA/6BP - AP+pVAD/rVYA/8OQXv/f29j/4uLi/+Pj4//l5eX/5ubm/+fn5//k39n/wYZL/7RlFv+0Zhf/tmgb/7dq - Hv+3ax//t2sf/7dpHP+2aBr/tWcY/7VlFv+0ZBT/s2IS/7JhEP+yYA//sV8N/7FeC/+xXgz/s2EQ/7Rl - F/+3ah7/uW4k/7tzK/+7cyv/t2wg/7NjEv+tWQb/oVEA/49IAP+DRgv/v6eP//f39//4+Pj/+Pj4//f3 - 9//39/f/9vb2//X19f/19fX/9PT0//Pz8//y8vL/7e3t/+bm5v7Y2Nj1tLS003V1dZwaGhpgAAAALwAA - AAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////19fX/9vb1//b29v/n5+f/nZ2d/6ampv/W1tb/9/f3//j4+P/4+Pj/+Pj4//n5 - +f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7/+jo - 6P+urq7/ubm5/9nZ2f/V1dX/1NTU/9XV1f/W1tb/19fX/9jY2P/Y2Nj/2dnZ/9ra2v/b29v/29vb/9zc - 3P/d3d3/4ODg/+fn5//RyMD/iFot/4FAAP+WSgD/pVIA/6xWAP+uWQP/x592/9/f3//h4eH/4uLi/+Tk - 5P/l5eX/5ubm/+Te2f/CiE7/tmkb/7dpHP+3ah//t2sf/7ZpHf+2aBv/tWYZ/7RlFv+0ZBT/s2IS/7Jh - EP+xXw7/sV4M/7BdCv+wXAj/r1sG/69aBf+vWgX/sF0K/7JhEf+1Zxn/uG0h/7pyKf+5cSf/tmkb/7Fg - Dv+nVQP/l0sA/4RBAP+lf1r/7urn//f39//39/f/9vb2//b29v/19fX/9PT0//T09P/z8/P/8PDw/+jo - 6P/g4OD7wsLC3oeHh6o8PDxyBwcHRQAAACIAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////X19f/29vX/9vb2/7a2 - tv+CgoL/lJSU/6qqqv/z8/P/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//7+/v/39/f/6Wlpf/CwsL/3Nzc/9XV1f/V1dX/1tbW/9fX - 1//Y2Nj/2dnZ/9nZ2f/a2tr/29vb/9zc3P/d3d3/3d3d/97e3v/i4uL/5ubm/7ilkv97RA3/h0MA/5tO - AP+pVAD/rVYA/69dCv/KqIX/39/f/+Dg4P/i4uL/4+Pj/+Xl5f/m5ub/5N/a/8eUYP+4bCH/uGwg/7dq - Hv+2aRz/tmcZ/7VmF/+0ZBX/s2MS/7JiEP+yYA7/sV8M/7BdCv+wXAj/r1sG/69aBP+uWAL/rlcA/65X - AP+uWAL/r1sH/7JhEf+1aBr/uG0j/7pyKf+5byX/tWYY/6xbCv+cTwH/ikQA/49eLf/az8X/9fX1//b2 - 9v/19fX/9fX1//T09P/09PT/8/Pz//Ly8v/t7e3/4uLi/rGxsc9NTU2BBgYGTgAAACsAAAASAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////9fX1//X19f/29vb/zs7O/3Jycv+CgoL/r6+v//Ly8v/4+Pj/+Pj4//j4 - +P/5+fj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//n5+f/l5eX/8PDw//v7+//7+/v/+/v7//v7 - +//Y2Nj/pKSk/8rKyv/d3d3/1tbW/9bW1v/X19f/2NjY/9nZ2f/a2tr/2tra/9vb2//c3Nz/3d3d/97e - 3v/e3t7/39/f/+Pj4//j4+L/qY5z/3g7AP+MRQD/oFAA/6tVAP+tVgD/sWAQ/8yuj//e3t7/39/f/+Hh - 4f/j4+P/5OTk/+Xl5f/k4d7/zqd//7lvJf+3ah7/tmgb/7VnGf+0ZRb/tGQU/7NiEv+yYQ//sV8N/7Fe - C/+wXQn/r1sG/69ZBP+uWAL/rlcB/65XAP+uVwD/rlcA/65XAP+uWAL/sF0J/7NjE/+2aRz/uW8l/7py - Kv+4bCL/sGIT/6FTBv+PRgD/gUYL/8q3pf/09PP/9PT0//X19f/09PT/8/Pz//Ly8v/y8vL/8fHx/+3t - 7f/h4eH5g4ODqQAAAEoAAAAdAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////19fX/9fX1//b2 - 9f/z8/P/09PT/8PDw//r6+v/9/f3//j49//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6 - +v/6+vr/3d3d/6ysrP/Q0ND/zs7O/+fn5//7+/v/2dnZ/6CgoP+Li4v/zMzM/97e3v/X19f/19fX/9jY - 2P/Z2dn/2tra/9ra2v/b29v/3Nzc/93d3f/e3t7/3t7e/9/f3//g4OD/4+Pj/93a1/+belr/ezwA/5FH - AP+kUQD/rVYA/65XAP+yYhP/zbCT/93d3f/f39//4ODg/+Li4v/j4+P/5eXl/+Xk4//XvqT/unIq/7Zo - G/+1Zhj/tGUW/7NjE/+zYhH/smAO/7FfDP+wXQn/sFsH/69aBf+uWAL/rlcB/65XAP+uVwD/rlcA/65X - AP+uVwD/rlcA/65XAP+uWQP/sV8M/7RlFf+3ax//unEo/7pxKP+0aBz/plkN/5RKAv+BQQT/vKSM//Dv - 7v/z8/P/9PT0//Pz8//y8vL/8vLy//Hx8f/w8PD/7u7u/+Tk5P6QkJCyBgYGSQAAABAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4//////X19f/19fX/9vb1//b29v/29vb/9vb2//f39//39/f/9/f3//j4 - +P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/s7Oz/tra2//r6+v/7+/v/y8vL/+vr - 6/+tra3/0NDQ/6SkpP+8vLz/3t7e/+Dg4P/d3d3/29vb/9vb2//b29v/3Nzc/93d3f/d3d3/3t7e/9/f - 3//g4OD/4eHh/+Hh4f/i4uL/1tHM/49nQP9+PgD/lEkA/6dTAP+tVgD/rlcB/7JjFP/MrpD/3Nzc/9/f - 3//g4OD/4eHh/+Pj4//k5OT/5eXl/97Sxv/Ag0b/tWYY/7RkFf+zYxP/smEQ/7JfDf+xXgv/sFwI/69a - Bv+uWQT/rlcB/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+vWgX/smAP/7Vm - GP+4bSL/unIq/7duJP+qXxX/mE8H/4RDA/+sjGz/6ufl//Ly8v/z8/P/8vLy//Hx8f/x8fH/8PDw/+/v - 7//u7u7/5eXl/6CgoL0YGBhTAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9fX1//X1 - 9f/29vX/9vb2//b29v/29vb/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+fn4//n5+f/5+fn/+fn5//r6 - +v/6+vr/+vr6//r6+v+pqan/+vr6//r6+v/09PT/t7e3/8fHx/++vr7/s7Oz/4WFhf+kpKT/u7u7/9XV - 1f/e3t7/39/f/97e3v/d3d3/3t7e/97e3v/f39//4ODg/+Hh4f/h4eH/4uLi/+Li4v/RysP/g1Yp/4A/ - AP+WSgD/qVQA/65XAf+vWQT/smIS/8qpiP/c3Nz/3t7e/9/f3//h4eH/4uLi/+Pj4//j4+P/4+De/8yj - e/+1Zxr/s2MS/7JhEP+xXw3/sV0K/7BcCP+vWgb/rlkD/65YAf+uVwD/rlcA/65XAP+uVwD/rlcA/65X - AP+uVwD/rlcA/65XAP+uVwD/rlcA/65YAv+wXQn/s2MT/7ZpHf+5cCf/uXEp/6xlHf+bVA7/hkUE/6B6 - Vf/m49//8fHx//Ly8v/x8fH/8PDw//Dw8P/v7+//7u7u/+3t7f/m5ub/qKiowx8fH1gAAAAWAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////19fT/9fX1//X19f/29vX/9vb2//b29v/39/b/9/f3//f3 - 9//4+Pf/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/4ODg/6mpqf/4+Pj/+vr6//Dw - 8P+srKz/+/v7/8/Pz/+bm5v/lpaW/6+vr/+VlZX/nJyc/7CwsP/Jycn/4+Pj/+Dg4P/f39//39/f/+Dg - 4P/h4eH/4uLi/+Li4v/i4uL/4eHh/83Fvf99Th3/gUAA/5dLAP+qVQD/rlgD/7BbB/+yXw7/yKB6/9vb - 2//d3d3/39/f/+Hh4f/h4eH/4uLi/+Li4v/j4+P/2ci3/719Pf+yYRD/smAN/7FdCv+wXAj/r1oG/65Y - A/+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65a - Bf+yYA7/tWYY/7htI/+5cir/rmgi/51YE/+JSAj/mnJJ/+Tf2//v7+//8fHx//Dw8P/v7+//7+/v/+7u - 7v/u7u7/7Ozs/+fn5/+tra3GHh4eYwAAACkAAAANAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////X1 - 9P/19fX/9fX1//b29f/29vb/9vb2//b29v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/MzMz/t7e3/+Hh4f/b29v/qqqq/9/f3//7+/v/+/v7//n5+f/09PT/6Ojo/9XV - 1f+/v7//qamp/6Wlpf/b29v/4uLi/+Dg4P/g4OD/4eHh/+Li4v/j4+P/5OTk/+Pj4//f39//y8K6/3tJ - GP+CQAD/mEwA/6tXA/+vWwb/sF0K/7JgD//DlGb/2dbT/9zc3P/e3t7/39/f/+Dg4P/g4OD/4eHh/+Li - 4v/g3dr/zqyJ/7VqHv+xXQr/sFwI/69aBf+uWAP/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65X - AP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlgB/7BdCf+zYxT/tmoe/7hwJ/+vayb/nlwZ/4tL - Df+ZcUj/4t7Z/+7u7v/w8PD/7+/v/+7u7v/u7u7/7e3t/+zs7P/r6+v/5+fn/8fHx+BkZGSVHBwcYgMD - A0MAAAAsAAAAFwAAAAkAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9fX0//X19f/19fX/9vb1//b29v/29vb/9vb2//f3 - 9//39/f/9/f3//j49//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/19fX/4ODg/+Dg - 4P/09PT/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+Pj4/+3t7f/Jycn/o6Oj/9HR0f/j4+P/4eHh/+Hh - 4f/i4uL/4+Pj/+Tk5P/l5eX/5OTk/9/f3//Lw7v/fU0d/4FAAP+YTQH/q1gG/7BdCf+xXw3/s2IS/76F - TP/Wzsb/3Nzc/93d3f/e3t7/3t7e/9/f3//g4OD/4ODg/+Hg4P/e19H/xJFf/7FfDP+vWgX/rlgD/65X - AP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65X - AP+uVwD/r1oF/7JgD/+1Zxr/tm0j/65rJ/+fXx7/jE4R/5x1T//i3dn/7Ozs/+/v7//v7+//7u7u/+3t - 7f/t7e3/7Ozs/+vr6//o6Oj/5eXl/dHR0eivr6/Kenp6oD8/P3gVFRVVAAAAOAAAABkAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///09PT/9fX0//X19f/19fX/+fn4//r6+v/39/f/9/f2//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//n5 - +f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7+//7+/v/+/v7//v7 - +//7+/v/+fn5/9XV1f+mpqb/0dHR/+Tk5P/i4uL/4uLi/+Pj4//k5OT/5eXl/+bm5v/l5eX/3t7e/8zG - vv+CVyv/fz8A/5dOBP+rWgj/sV4M/7JhEP+0ZBX/unUx/9PCsv/b29r/3Nzc/9zc3P/d3d3/3d3d/97e - 3v/f39//39/f/+Dg4P/ZzL7/xJJf/7ZqHf+2aBv/t2od/7drH/+3bCD/t2oe/7ZoG/+1Zhf/s2MT/7Ff - DP+vWgX/rlcA/65XAP+uVwD/rlcA/65XAP+uVwD/rlcA/65XAP+uWAP/sV4M/7RlFv+zaR//q2kl/59g - If+MURX/ooBe/+Le2//r6+v/7u7u/+3t7f/t7e3/7Ozs/+zs7P/r6+v/6urq/+np6f/o6Oj/5ubm/uTk - 5Pzc3Nz0yMjI36SkpLxnZ2eKAAAAPwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////T09P/19fT/9fX1/+/v7/+urq7/rq6u/+Dg - 4P/29vb/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+fn4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/2dnZ/6ioqP/Nzc3/5eXl/+Pj - 4//k5OT/5eXl/+Xl5f/m5ub/5+fn/+bm5v/e3t7/z8rG/4xmQf99PgH/lU0F/6laCv+xYA7/s2MT/7Vl - F/+3bSP/y6qK/9nX1f/b29v/29vb/9zc3P/d3d3/3t7e/+Dg4P/i4uL/5eXl/+bm5v/i18z/0amA/8iQ - V//IjlT/yY9W/8mQV//IjlX/x4xR/8aJTf/Ehkf/wYA//756Nv+7cyv/t2of/7JhEP+vWwb/rlgC/65X - AP+uVwD/rlcA/65XAf+wXAn/s2IT/7BmG/+oZSP/nWAj/4xSGv+vlHn/5OLg/+vr6//t7e3/7e3t/+zs - 7P/r6+v/6+vr/+rq6v/p6en/6enp/+jo6P/n5+f/5+fn/+bm5v7n5+f+5+fn/qysrMcGBgZVAAAAFgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////9PT0//X19P/19fX/ubm5/4WFhf+Xl5f/rq6u//T09P/39/b/9/f3//f39//39/f/+Pj4//j4 - +P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/7+/v/+/v7//v7 - +//7+/v/+/v7//r6+v/c3Nz/qqqq/8fHx//m5ub/5OTk/+Xl5f/m5ub/5ubm/+fn5//o6Oj/5+fn/9/f - 3//T0c//mXpc/3o+A/+RTAf/p1oM/7JiEf+0ZBX/tWca/7drIP/BjFb/1c3G/9nZ2f/a2tr/3Nzc/+Dg - 4P/j4+P/5eXl/+fn5//o6Oj/6enp/+rq6v/m4Nr/28Cm/8+fcP/LlV7/y5Ve/8uUXf/Lk1z/ypJa/8mQ - WP/Jj1X/x41S/8aKTv/EhUj/wYA//714Mv+4bCD/smAO/65YAv+uVwD/rlcA/69aBv+xYBD/rGMY/6Ri - H/+aXiP/iVMd/7yok//l5eT/6urq/+zs7P/s7Oz/6+vr/+rq6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+bm - 5v/l5eX/5eXl/+Xl5f/m5ub9pqamwgAAAFMAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////09PT/9PT0//X19P/ExMT/cnJy/4WF - hf+oqKj/8fHx//b29v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fj/+fn5//n5+f/5+fn/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//4+Pj/5+fn/8bGxv+goKD/wMDA/+jo - 6P/l5eX/5ubm/+fn5//o6Oj/6Ojo/+np6f/q6ur/4eHh/9bW1f+iinL/dT0F/4xKCP+jWQ7/sWIT/7Vm - F/+2aRz/t2sf/7p1MP/Ot5//2tra/9/f3//i4uL/4+Pj/+Xl5f/m5ub/5+fn/+jo6P/p6en/6urq/+vq - 6v/p5uT/4tHA/9ezj//Om2j/zZhk/8yXYv/LlV//y5Rc/8qSWv/JkFb/x41S/8aLT//FiEv/xIRG/8KB - QP++eTT/uG0h/7JhD/+vWAP/r1kE/65eDf+oXxX/oF4c/5ZcIf+MXCz/xrip/+Xl5f/p6en/6+vr/+vr - 6//q6ur/6enp/+np6f/o6Oj/5+fn/+fn5//m5ub/5eXl/+Xl5f/k5OT/5OTk/+Tk5Pqampq1AAAASwAA - ABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4//////T09P/09PT/9fX0//Dw8P+9vb3/r6+u/+Dg4P/29vb/9vb2//f39v/39/f/9/f3//j4 - 9//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//v7 - +//7+/v/7+/v/9nZ2f+4uLj/pKSk/7Kysv/Y2Nj/6Ojo/+fn5//n5+f/6Ojo/+np6f/p6en/6urq/+vr - 6//j4+P/19fX/7Khkf95Rxb/hkcJ/55XD/+uYRX/tWca/7dqHv+4bCD/unEo/8mgdf/c2dX/4eHh/+Li - 4v/j4+P/5OTk/+Xl5f/m5ub/5+fn/+jo6P/p6en/6+vr/+zs7P/s7Oz/593T/9Wthf/PnGr/zpto/82Z - Zf/Ml2H/y5Re/8qSWv/Jj1X/x4xR/8aJTf/Fhkj/w4ND/8GAPv+/fDn/vHYv/7dpHf+xXgz/q1sM/6Nb - E/+bWxr/klkf/5hxSf/RycL/5eXl/+np6f/q6ur/6urq/+np6f/o6Oj/6Ojo/+fn5//m5ub/5ubm/+Xl - 5f/k5OT/5OTk/+Pj4//k5OT/4ODg9oiIiKQAAABBAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////9PT0//T09P/09PT/9fX0//X1 - 9f/19fX/9vb1//b29v/29vb/9/f2//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//n5+P/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/9fX1/+Li4v/BwcH/qamp/6qqqv/Hx8f/4eHh/+jo - 6P/o6Oj/6Ojo/+jo6P/p6en/6urq/+rq6v/r6+v/7Ozs/+jo6P/Y2Nj/xb+4/4VeNf+ARQr/mFQQ/6lf - Ff+0Zxv/t2wg/7t0LP/Afz3/x49X/9bBrP/f3t3/4eHh/+Li4v/j4+P/5eXl/+bm5v/n5+f/6Ojo/+np - 6f/r6+v/7Ozs/+3t7f/s6ef/3cKn/9Ghcv/Qnmz/z5tp/82ZZf/MlmH/y5Rc/8mQV//IjVL/xolN/8WG - Sf/Dg0T/wYA+/798Of++eTT/vHQt/7VrIf+pYBX/n1kT/5dYGP+NVh//qIxv/97c2//l5eX/6urq/+np - 6f/p6en/6Ojo/+fn5//n5+f/5ubm/+bm5v/l5eX/5OTk/+Pj4//j4+P/4uLi/+Tk5P/c3NzybW1tkAAA - ADYAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////09PP/9PT0//T09P/19fT/9fX1//X19f/29vX/9vb2//b29v/29vb/9/f2//f3 - 9//39/f/+Pj3//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/k5OT/tLS0/6Wlpf+7u7v/3Nzc/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6enp/+rq6v/r6+v/6+vr/+zs - 7P/t7e3/7Ozs/9zc3P/Qz83/mHxg/3pEDf+PTxD/o10X/7FmHv+6cyz/wH89/8ODRf/Ehkj/zKF2/9rP - xv/g4OD/4eHh/+Li4v/k5OT/5eXl/+bm5v/n5+f/6enp/+rq6v/r6+v/7Ozs/+3t7f/l2Mr/1Kl+/9Gg - cP/PnWv/zppm/8yXYv/LlF3/yZFY/8iNUv/GiU3/xIZI/8OCQ//Bfz3/v3s3/754Mv+7dC3/s24o/6hm - I/+cWxr/klUX/4xaJ/+8qpn/4eHh/+bm5v/p6en/6enp/+jo6P/n5+f/5+fn/+bm5v/l5eX/5eXl/+Tk - 5P/j4+P/4+Pj/+Li4v/i4uL/5eXl/9XV1elGRkZ7AAAAKwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////T08//09PT/9PT0//X1 - 9P/19fT/9fX1//X19f/29vX/9vb2//b29v/39/b/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+fn4//n5 - +f/5+fn/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/9vb2/9DQ0P+hoaH/y8vL/+fn5//o6Oj/5+fn/+jo - 6P/o6Oj/6enp/+rq6v/q6ur/6+vr/+zs7P/t7e3/7e3t/+7u7v/u7u7/5OTk/9PS0v+1p5r/e0we/4dK - EP+cWRf/rWgk/7t5N//BgD//woFB/8ODQ//FiU3/0K+O/93Z1P/f39//4eHh/+Li4v/k5OT/5eXl/+bm - 5v/n5+f/6enp/+rq6v/r6+v/7e3t/+rk4P/auJb/0aBw/8+da//NmWX/zJZg/8qSW//Ij1X/x4tQ/8WH - Sv/DhEX/wYFA/8B9Ov++eTX/vHYw/7dwKf+taCT/o2Qj/5ZbH/+MUxr/lm1F/9HKw//h4eH/5+fn/+jo - 6P/o6Oj/5+fn/+bm5v/m5ub/5eXl/+Tk5P/k5OT/4+Pj/+Li4v/i4uL/4eHh/+Hh4f/l5eX9w8PD1yws - LGcAAAAfAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////8/Pz//T08//09PT/9PT0//X19P/19fX/9fX1//b29f/29vb/9vb2//b2 - 9v/39/b/9/f3//f39//4+Pf/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6//r6 - +v/29vb/z8/P/6Ghof/Q0ND/6urq/+fn5//n5+f/6Ojo/+np6f/q6ur/6+vr/+vr6//s7Oz/7e3t/+7u - 7v/u7u7/7+/v//Dw8P/s7Oz/2NjY/8jFwf+MbEv/fEUP/5JVGP+lZij/tXU1/757Ov/Afj3/woA//8OC - Q//Fi1H/0raa/93a2P/f39//4eHh/+Li4v/j4+P/5eXl/+bm5v/o6Oj/6enp/+rq6v/r6+v/6+rq/97G - rv/Qn27/zZpm/8yXYf/Kk1z/yZBX/8eMUf/FiUz/xIVG/8KBQf/Afjz/vno3/713Mf+5civ/sGok/6Zi - H/+bXR//jFQc/4RSIf+ul4H/2tnY/+Li4v/o6Oj/6Ojo/+fn5//m5ub/5eXl/+Xl5f/k5OT/5OTk/+Xl - 5f/k5OT/5OTk/+Pj4//i4uL/4+Pj/+bm5vujo6O6GxsbUwAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////z8/P/9PTz//T0 - 9P/09PT/9fX0//X19P/19fX/9fX1//b29f/29vb/9vb2//b29v/39/f/9/f3//f39//4+Pj/+Pj4//j4 - +P/4+Pj/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/i4uL/rKys/7+/v//r6+v/6Ojo/+jo - 6P/p6en/6urq/+vr6//s7Oz/7Ozs/+3t7f/u7u7/7+/v/+/v7//w8PD/8fHx//Hx8f/h4eH/0NDQ/6ub - i/96TB//hE0X/5ddJP+qay7/tnQz/7x6N//AfTv/wX89/8KBQP/GkFr/0rmf/9za1//f39//4ODg/+Hh - 4f/j4+P/5OTk/+bm5v/n5+f/6Ojo/+np6f/q6ur/4tXI/9Chc//LlF7/yZJa/8iPVf/HjFD/xYlL/8SF - Rv/CgUH/wH48/797N/+9dzL/unMs/7JsJv+oYx//nlwb/5BVGf+BTBf/jWdC/8jAuP/d3d3/5eXl/+fn - 5//n5+f/5ubm/+Xl5f/k5OT/5OTk/+Tk5P/p6en/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/5eXl9nV1 - dZwEBAQ/AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4//////Pz8//09PP/9PTz//T09P/29vb/+Pj3//X19f/19fX/9vb1//b2 - 9v/29vb/9vb2//f39v/39/f/9/f3//f39//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/5+fn/+vr6//r6 - +v/6+vr/+vr6/+zs7P+6urr/sbGx/+Xl5f/q6ur/6enp/+rq6v/r6+v/7Ozs/+3t7f/t7e3/7u7u/+/v - 7//w8PD/8PDw//Hx8f/y8vL/8/Pz/+3t7f/X19f/x8TB/5R4Xf91RBT/h1Ec/5xgJf+rayv/tnIw/7x4 - NP+/ezf/wH05/8F+PP/Ei1L/0bac/9vW0f/e3t7/39/f/+Hh4f/i4uL/4+Pj/+Tk5P/l5eX/5ubm/+fn - 5//k39r/0ah//8iOVf/Hi1D/xYlN/8SHSP/Dg0T/wYA//799Ov++ejb/vXcx/7lyK/+yayX/qWQe/59c - Gf+TVBX/hUwU/35NHv+umob/2djX/+Dg4P/m5ub/5ubm/+bm5v/l5eX/5OTk/+Pj4//j4+P/5eXl/+np - 6fu4uLjOjY2NrYqKiquKioqrioqKq4qKiquEhISiKioqZwAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////8/Pz//Pz - 8//09PP/8/Pz/7+/v/++vr7/6urp//b29v/19fX/9vb1//b29v/29vb/9vb2//f39//39/f/9/f3//j4 - 9//4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/9vb2/87Ozv+np6f/1dXV/+zs - 7P/r6+v/7Ozs/+zs7P/t7e3/7u7u/+7u7v/v7+//8PDw//Hx8f/y8vL/8/Pz//Pz8//09PT/9PT0/+Xl - 5f/Pz8//tauh/35ZNv93RBP/i1Mb/51fIv+raSf/tG8s/7l1L/+9dzL/vnk0/756Nv/Chkv/zKmF/9jP - xf/c3Nz/3t7e/9/f3//g4OD/4eHh/+Lg3//g2dL/3tDD/9nCrP/NnnD/xYhM/8OERv/CgkL/wYA+/799 - Ov++ejb/vXcy/7x0Lf+4cCj/sWkj/6hiHP+fWxf/lFMS/4ZLD/97RRD/mXpc/83Hwv/b29v/4+Pj/+bm - 5v/l5eX/5eXl/+Tk5P/j4+P/4+Pj/+Li4v/n5+f/19fX519fX4sAAABOAAAAQwAAAEIAAABCAAAAQgAA - AD4AAAApAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////z8/L/8/Pz//T08//AwMD/iIiI/5qamv+zs7P/9PT0//X1 - 9f/29vX/9vb2//b29v/29vb/9/f2//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//j4+P/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/5+fn/39/f/6enp/+/v7//6urq/+zs7P/s7Oz/7e3t/+7u7v/v7+//8PDw//Dw - 8P/x8fH/8vLy//Pz8//09PT/9PT0//X19f/29vb/8vLy/9ra2v/Ix8b/oI17/3RJH/97RhL/jVIY/51d - Hf+oZSL/sGsm/7ZwKf+6cyv/vHUt/7x2L/++fDj/xpZm/9G7pf/Y0sv/2dHJ/9bFtf/St5z/z6mF/8uc - bv/Gjlf/w4VH/8KBQP/Afjz/wH06/797N/++eTT/vXcw/7t0Lf+5cCj/tWwk/69mH/+mXxn/nVkU/5NR - D/+GSQr/ekEK/4deN/+/tav/19fX/+Dg4P/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Li4v/i4uL/4+Pj/+np - 6f2urq7FGxsbXgAAACIAAAAOAAAADgAAAA4AAAAOAAAADAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////Pz - 8v/z8/P/8/Pz/7u7u/92dnb/iIiI/6ampv/w8O//9fX1//X19f/29vX/9vb2//b29v/29vb/9/f3//f3 - 9//39/f/+Pj3//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//n5+f/6+vr/+vr6//r6+v/v7+//vb29/6ur - q//j4+P/7u7u/+7u7v/u7u7/7+/v//Dw8P/x8fH/8fHx//Ly8v/z8/P/9PT0//X19f/19fX/9vb2//f3 - 9//4+Pj/7e3t/9TU1P/HxcT/mIJs/24/Ef98RRD/jFAT/5lZGP+lYBz/q2Ue/7JpIP+2bSP/uG4k/7lw - Jv+6cSj/vX08/8KNV//BiVD/v4FC/758Ov++eDP/vnk0/754M/+9eDP/vXgy/7x2MP+8dS7/u3Ms/7py - Kf+5byX/tWwi/7BnHf+qYRn/olsU/5tWEP+STwz/hUYH/3k+BP98TR//rpyL/9bW1v/c3Nz/5OTk/+Xl - 5f/k5OT/5OTk/+Pj4//i4uL/4eHh/+Hh4f/n5+f+3Nzc73FxcZYAAAA/AAAADQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////8/Py//Pz8v/z8/P/7Ozs/6enp/+enp7/1NTU//T0 - 8//19fX/9fX1//X19f/29vX/9vb2//b29v/39/b/9/f3//f39//39/f/+Pj3//j4+P/4+Pj/+Pj4//n5 - +f/5+fn/+fn5//n5+f/6+vr/+vr6//f39//S0tL/paWl/87Ozv/t7e3/7+/v/+/v7//u7u7/7e3t/+zs - 7P/s7Oz/8fHx//T09P/19fX/9vb2//b29v/39/f/+Pj4//n5+f/5+fn/6enp/9DQ0P++urX/kXdd/3FC - FP97Qw3/iUsQ/5VTEv+fWRT/pV4W/6thF/+wZBn/s2cb/7VpHP+2ah3/t2wh/7htIv+5biT/uW8l/7lv - Jv+6cCb/unAm/7lvJv+5byX/uG4j/7htIf+2ayD/tGgd/7BlGv+qYBb/pFsS/55WD/+XUQv/jksH/4ND - BP93PAL/fEwd/6qWgv/Qzsz/2dnZ/+Li4v/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh4f/h4eH/4+Pj/+rq - 6vyxsbHJJycnZQAAACMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///z8/L/8/Py//Pz8//z8/P/8/Py//Hx8f/09PT/9PT0//X19P/19fX/9fX1//b29f/29vb/9vb2//b2 - 9v/39/b/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+Pj4//n5+f/5+fn/+fn5//r6+v/6+vr/+vr6/+fn - 5/+0tLT/s7Oz/+Li4v/i4uL/3t7e/9bW1v/Jycn/vb29/8rKyv/t7e3/8/Pz//b29v/39/f/9/f3//j4 - +P/5+fn/+vr6//v7+//5+fn/5OTk/83NzP/AvLj/kXdd/24/EP94QQv/hEcM/45NDP+XUg3/nlUN/6JY - Dv+nWxD/ql0Q/61fEP+xYhP/s2MV/7RlF/+0Zhj/tWYZ/7VnGf+1Zhn/tGYY/7NmGP+xZBb/rmIV/6tf - Ev+nXBD/o1gO/55VC/+YUAj/kksF/4lGAv9+PwH/dDoA/3lKG/+kjnj/0M7N/9bW1v/g4OD/5OTk/+Tk - 5P/j4+P/4+Pj/+Li4v/h4eH/4ODg/+Hh4f/n5+f/6enp+Xt7e6QAAABHAAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////Ly8v/z8/L/8/Py//Pz8//z8/P/9PTz//T0 - 9P/09PT/9fX0//X19f/19fX/9fX1//b29f/29vb/9vb2//b29v/39/f/9/f3//f39//39/f/+Pj4//j4 - +P/4+Pj/+fn4//n5+f/5+fn/+fn5//r6+v/6+vr/9PT0/9DQ0P+lpaX/p6en/4aGhv+kpKT/pKSk/6qq - qv+rq6v/oKCg/83Nzf/w8PD/9vb2//j4+P/5+fn/+fn5//r6+v/7+/v//Pz8//39/f/5+fn/5eXl/8zM - zP+8uLT/mIJt/3RIHf90Pgn/fkMI/4dHCP+PSwf/lU4H/5pQBv+dUQX/oFMF/6NVB/+mVwj/qFkK/6la - C/+qWwz/qVsM/6lbDP+oWgv/p1kK/6RXCf+hVQj/nlMG/5pQBf+WTQP/kUoC/4tFAf+CQAD/eTwA/3I6 - Av+BVy7/rp2M/83Myv/V1dX/3t7e/+Tk5P/j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg4P/f39//39/f/+Tk - 5P/r6+v7rKyswycnJ2YAAAArAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////8vLy//Pz8v/z8/L/8/Pz//Pz8//09PP/9PTz//T09P/09PT/9fX0//X19f/19fX/9fX1//b2 - 9f/29vb/9vb2//f39v/39/f/9/f3//f39//4+Pf/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+fn5//r6 - +v/6+vr/7+/v/9LS0v/BwcH/iYmJ/87Ozv/X19f/39/f/9vb2/+0tLT/r6+v/9/f3//z8/P/+Pj4//r6 - +v/6+vr/+/v7//z8/P/9/f3//v7+//39/f/5+fn/4+Pj/87Ozv/DwcD/oI99/31aNv9wPQv/dz4G/35C - Bv+GRQX/jEcD/5FIAf+USQD/l0sA/5lMAP+bTQH/nE4B/51PAv+dTwL/nE8C/5tOAf+ZTQH/l0wB/5VL - AP+SSQD/j0cA/4pEAP+DQQD/ez0A/3Q5AP91QQ7/jmxL/7aroP/Ozs3/1dXV/97e3v/k5OT/4+Pj/+Pj - 4//i4uL/4eHh/+Hh4f/g4OD/39/f/97e3v/e3t7/3t7e/+fn5/7l5eXzi4uLqgsLC1YAAAAgAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////y8vL/8vLy//Pz8v/z8/L/8/Pz//Pz - 8//09PP/9PT0//T09P/09PT/9fX0//X19f/19fX/9vb1//b29v/29vb/9vb2//f39v/39/f/vr6+/66u - rv/p6en/zMzM/729vf/u7u7/n5+f/8fHx//l5eX/o6Oj/9TU1P/g4OD/sLCw/8bGxv++vr7/vb29/9HR - 0f/f39//9fX1/5iYmP+IiIj/tra2/+rq6v/39/f/+/v7//v7+//8/Pz//f39//39/f/9/f3//Pz8//v7 - +//4+Pj/6Ojo/9LS0v/DwsL/saif/5B2Xv9zSB3/bzoF/3Y8BP98PwP/gUAB/4VCAP+KRQD/jUYA/49H - AP+RSAD/kkkA/5JJAP+RSAD/kEgA/49HAP+MRQD/iUQA/4VCAP9/PwD/ejwA/3Q5AP9wOQP/gVgv/6ON - eP/Bu7X/zc3N/9bW1v/f39//5OTk/+Pj4//i4uL/4uLi/+Hh4f/g4OD/4ODg/9/f3//e3t7/3t7e/93d - 3f/c3Nz/3t7e/+jo6P/b29vofHx8mgYGBkoAAAAZAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4//////Ly8f/y8vL/8vLy//Pz8v/z8/P/8/Pz//T08//09PP/9PT0//T09P/19fT/9fX1//X1 - 9f/19fX/9vb1//b29v/29vb/9vb2//f39v+urq7/9vb2/7+/v/+np6f/8vLy/7m5uf+6urr/5eXl/7i4 - uP/MzMz/3t7e/7+/v//Q0ND/7e3t/7e3t//Ozs7/+vr6/76+vv/19fX/p6en/8vLy/+EhIT/yMjI//Hx - 8f/5+fn//Pz8//39/f/9/f3//Pz8//z8/P/7+/v/+vr6//n5+f/4+Pj/7e3t/9fX1//Jycn/v727/6ea - jf+LblH/dksg/3E9C/9yOQL/dToA/3g8AP97PQD/fz8A/4FAAP+DQQD/g0EA/4JBAP+BQAD/fz8A/3s9 - AP94OwD/dDkA/3E5Av9zPw3/f1Us/5qAZv+4r6b/ysnJ/9DQ0P/Y2Nj/4eHh/+Pj4//j4+P/4uLi/+Hh - 4f/h4eH/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9vb2//b29v/3t7e/+rq6v7Ozs7bYmJiiQAA - AEEAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////8vLx//Ly8f/y8vL/8/Py//Pz - 8//09PT/8/Pz//T08//09PP/9PT0//T09P/19fT/9fX1//X19f/19fX/9vb1//b29v/29vb/9vb2/8vL - y//g4OD/8fHx/5aWlv/29vb/8PDw/6SkpP/4+Pj/y8vL/729vf/5+fn/yMjI/7a2tv/6+vr/1NTU/6ys - rP/6+vr/u7u7/+bm5v+qqqr/3t7e/6Ghof+lpaX/7Ozs//n5+f/9/f3//Pz8//z8/P/7+/v/+/v7//r6 - +v/5+fn/+fn5//j4+P/39/f/8/Pz/+Tk5P/S0tL/x8fH/7+9u/+wpp3/l4Fr/4JfPP94SyD/bz0K/202 - AP9vNwD/cDcA/3E4AP9xOAD/cTgA/3A3AP9uNgD/bjcC/3JAEP98Uij/imlI/6WSgP+7s63/x8bF/83N - zf/V1dX/3t7e/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/+Dg4P/f39//3t7e/97e3v/d3d3/3Nzc/9zc - 3P/b29v/2tra/9nZ2f/Z2dn/4ODg/+/v7/6zs7PGEhISXgAAABsAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////y8vH/8vLx//Ly8v/19fX/0dHR/83Nzf/x8fH/8/Pz//T08//09PT/9PT0//T0 - 9P/19fT/9fX1//X19f/29vX/9vb2//b29v/29vb/9vb1/8rKyv/Hx8f/r6+v/+Hh4f/4+Pj/4+Pj/8bG - xv/BwcD/rKys//n5+f/09PT/5eXl//r6+v/29vb/n5+f/8HBwf+xsbH/+Pj4/9ra2v/Ly8v/paWl/8zM - zP/09PT/+/v7//39/f/8/Pz/+/v7//r6+v/6+vr/+fn5//j4+P/4+Pj/9/f3//f39//29vb/9PT0/+7u - 7v/g4OD/0tLS/8nJyP/DwsL/vbm2/6+km/+fjXv/l39m/5BzWP+JaEn/hGE//4JeO/+GY0H/jGxN/5R4 - Xf+bhG3/ppWE/7ewqP/CwL7/x8fG/8zMzP/U1NT/3Nzc/+Li4v/j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg - 4P/f39//39/f/97e3v/d3d3/3d3d/9zc3P/c3Nz/29vb/9ra2v/Z2dn/2dnZ/9nZ2f/i4uL/6urq+KSk - pLoRERFXAAAAGAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////Hx8f/y8vH/8vLx/8jI - yP+Li4v/nZ2d/7q6uv/z8/P/9PTz//T08//09PT/9PT0//X19P/19fT/9fX1//X19f/29vX/9vb2//b2 - 9v/29vb/9/f2//f39//39/f/9/f3//j49//4+Pj/+Pj4//j4+P+srKz/+fn5//n5+f/T09P/5eXl/83N - zf+/v7//+vr6//r6+v/5+fn/0NDQ/5CQkP+7u7v/8PDw//n5+f/8/Pz/+/v7//v7+//6+vr/+fn5//n5 - +f/4+Pj/9/f3//f39//29vb/9fX1//T09P/09PT/8/Pz//Ly8v/u7u7/5eXl/9nZ2f/Ozs7/ysrK/8fH - x//ExMP/wb++/767uP+8uLX/u7ez/725tf+/vLr/wsHA/8bFxf/IyMj/ysrK/8/Pz//Y2Nj/39/f/+Pj - 4//k5OT/4+Pj/+Li4v/i4uL/4eHh/+Hh4f/g4OD/39/f/9/f3//e3t7/3t7e/93d3f/c3Nz/29vb/9ra - 2v/a2tr/2dnZ/9jY2P/Y2Nj/39/f/+vr6/3FxcXUT09PegAAADMAAAAJAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////8fHx//Hx8f/y8vH/tra2/3h4eP+Li4v/paWl/+/v7//z8/P/9PTz//T0 - 8//09PT/9PT0//X19P/19fX/9fX1//X19f/29vX/9vb2//b29v/29vb/9/f2//f39//39/f/9/f3//j4 - 9//4+Pj/1dXV/6CgoP/s7Ov/+fn5//n5+f/19fX/+fn5//r6+v/6+vr/+vr6/+7u7v/CwsL/p6en/97e - 3v/39/f/+/v7//v7+//7+/v/+vr6//n5+f/4+Pj/+Pj4//f39//39/f/9vb2//X19f/19fX/9PT0//Pz - 8//y8vL/8vLy//Hx8f/w8PD/7u7u/+vr6//l5eX/3t7e/9nZ2f/V1dX/0tLS/9LS0v/R0dH/0dHR/9PT - 0//U1NT/19fX/9vb2//g4OD/4+Pj/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh4f/g4OD/4ODg/9/f - 3//e3t7/3t7e/+Dg4P/n5+f/6enp/+Hh4f/b29v/2tra/9nZ2f/Y2Nj/2NjY/9zc3P/q6ur+19fX4m5u - bo8DAwNDAAAAFQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////x8fD/8fHx//Ly - 8f/n5+b/lZWV/5CQkP/Ly8v/8vLx//Pz8//z8/P/9PTz//T09P/09PT/9PT0//X19P/19fX/9fX1//X1 - 9f/29vX/9vb2//b29v/29vb/9/f2//f39//39/f/9/f3//j49//4+Pj/+Pj4//b29v/5+fj/+fn5//n5 - +f/5+fn/+fn5//r6+v/5+fn/29vb/6ampv+/v7//8/Pz//r6+v/7+/v/+/v7//r6+v/5+fn/+fn5//j4 - +P/39/f/9vb2//b29v/19fX/9PT0//T09P/z8/P/8vLy//Ly8v/x8fH/8PDw//Dw8P/v7+//7u7u/+7u - 7v/t7e3/7Ozs/+rq6v/o6Oj/5+fn/+bm5v/m5ub/5ubm/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Tk - 5P/j4+P/4uLi/+Li4v/h4eH/4ODg/9/f3//f39//3t7e/97e3v/i4uL/6+vr/+zs7P/m5ub/7u7u/+bm - 5v/d3d3/2NjY/9jY2P/b29v/6enp/97e3uuEhISiCQkJTwAAABsAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4//////Hx8P/x8fH/8fHx//Ly8f/v7+7/7e3t//Ly8v/z8/L/8/Py//Pz - 8//z8/P/9PTz//T09P/09PT/9PT0//X19P/19fX/9fX1//b29f/29vX/9vb2//b29v/29vb/9/f3//f3 - 9//39/f/9/f3//j4+P/4+Pj/+Pj4//j4+P/5+fj/+fn5//n5+f/5+fn/+fn5//X19f/Kysr/q6ur/9/f - 3//39/f/+vr6//r6+v/5+fn/+fn5//j4+P/39/f/9vb2//b29v/19fX/9fX1//T09P/z8/P/8/Pz//Ly - 8v/x8fH/8PDw//Dw8P/v7+//7+/v/+7u7v/t7e3/7e3t/+zs7P/r6+v/6urq/+rq6v/p6en/6enp/+jo - 6P/n5+f/5+fn/+bm5v/l5eX/5OTk/+Tk5P/j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f39//3t7e/97e - 3v/f39//5eXl/+7u7v/g4OD/tbW1/6urq//ExMT/5ubm/+7u7v/j4+P/3d3d/+jo6P7j4+PwkpKSryMj - I1wAAAAiAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////8fHw//Hx - 8P/x8fH/8fHx//Ly8f/y8vH/8vLy//Pz8v/z8/L/8/Pz//Pz8//09PP/9PTz//T09P/09PT/9fX0//X1 - 9P/19fX/9fX1//b29f/29vb/9vb2//b29v/29vb/9/f3//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//j4 - +P/5+fj/+fn5//n5+f/5+fn/9vb2/9HR0f+kpKT/x8fH//Ly8v/4+Pj/+fn5//n5+f/4+Pj/9/f3//f3 - 9//29vb/9fX1//X19f/19fX/9fX1//Pz8//y8vL/8fHx//Dw8P/w8PD/7+/v/+7u7v/u7u7/7e3t/+3t - 7f/s7Oz/6+vr/+vr6//q6ur/6enp/+jo6P/o6Oj/5+fn/+bm5v/m5ub/5eXl/+Tk5P/k5OT/4+Pj/+Li - 4v/i4uL/4eHh/+Dg4P/g4OD/39/f/97e3v/e3t7/4+Pj/+vr6//t7e3/0tLS/6+vr/+pqan/tbW1/6Wl - pf+wsLD/z8/P/+vr6//v7+/+5ubm8pmZmbgWFhZkAAAAKwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////w8PD/8fHw//Hx8P/x8fH/8vLx//Ly8f/y8vL/8vLy//Pz - 8v/z8/L/8/Pz//Pz8//09PP/9PTz//T09P/09PT/9fX0//X19P/19fX/9fX1//b29f/29vb/9vb2//b2 - 9v/29vb/9/f3//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/5ubm/7y8 - vP+pqan/yMjI//Ly8v/4+Pj/9/f3//f39//29vb/9vb2//X19f/19fX/9vb2//b29v/z8/P/9fX1//Pz - 8//x8fH/8PDw/+/v7//u7u7/7u7u/+3t7f/s7Oz/6+vr/+vr6//q6ur/6urq/+np6f/o6Oj/6Ojo/+fn - 5//m5ub/5eXl/+Xl5f/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh4f/g4OD/39/f/9/f3//e3t7/3d3d/+Hh - 4f/v7+//6urq/7y8vP+pqan/t7e3/9zc3P/n5+f/2dnZ/7q6uv+pqan/t7e3/7e3t9yJiYm8JiYmbwAA - ADQAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////Dw - 8P/x8fD/8fHw//Hx8P/x8fH/8vLx//Ly8f/y8vL/8vLy//Pz8v/z8/L/8/Pz//Pz8//09PP/9PTz//T0 - 9P/09PT/9fX0//X19f/19fX/9fX1//b29f/29vb/9vb2//b29v/29vb/9/f3//f39//39/f/9/f3//j4 - 9//4+Pj/+Pj4//j4+P/4+Pj/+fn5//n5+f/4+Pj/5OTk/729vf+kpKT/yMjI/+/v7//39/f/9vb2//X1 - 9f/19fX/9vb2//b29v/k5OT/wcHB/7q6uv/Y2Nj/7+/v//Pz8//y8vL/8PDw/+7u7v/t7e3/7Ozs/+vr - 6//r6+v/6urq/+np6f/p6en/6Ojo/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh - 4f/h4eH/4ODg/9/f3//f39//3t7e/93d3f/d3d3/4+Pj/+7u7v/Dw8P/oqKi/8fHx//m5ub/+vr6//z8 - /P/6+vr/6urq/9HR0f+zs7P/Hh4ejQoKCnEAAAA9AAAAFQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////8PDv//Dw8P/x8fD/8fHw//Hx8f/x8fH/8vLx//Ly - 8f/y8vL/8vLy//Pz8v/z8/L/8/Pz//Pz8//09PP/9PT0//T09P/09PT/9fX0//X19f/w8PD/9PT0//b2 - 9f/29vb/9vb2//b29v/29vb/9/f3//f39//39/f/9/f3//j49//4+Pj/6+vr/83Nzf/u7u7/+fn5//n5 - +f/4+Pj/5ubm/8HBwf+np6f/vr6+/+vr6//39/f/9vb2//b29v/39/f/2dnZ/6+vr/+np6f/rq6u/6am - pv+3t7f/1dXV/+3t7f/19fX/8fHx/+zs7P/r6+v/6urq/+np6f/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm - 5v/l5eX/5OTk/+Pj4//j4+P/4uLi/+Li4v/h4eH/4ODg/9/f3//f39//3t7e/93d3f/d3d3/3Nzc/9zc - 3P/g4OD/7e3t/8HBwf+vr6//4uLi//r6+v/8/Pz//Pz8//z8/P/8/Pz/9vb2/+np6f8AAABZAAAAPQAA - ABsAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///w8O//8PDw//Dw8P/x8fD/8fHw//Hx8f/y8vH/8vLx//Ly8f/y8vL/8/Py//Pz8v/z8/P/8/Pz//Pz - 8//09PP/9PT0//T09P/09PT/0tLR/6ysrP/BwcH/2NjY/9DQz/+/v7//xMTE/+Xl5f/29vb/vb29/+Tk - 5P/39/f/1dXV/7Cwr//W1tb/ysrK/7W1tf/r6+v/qamp/8XFxf/Nzc3/4uLi/4SEhP+EhIT/paWl/+Hh - 4f/09PT/8PDw/87Ozv+EhIT/i4uL/6+vr//d3d3/j4+P/4SEhP+YmJj/mpqa/9zc3P/19fX/7Ozs/+rq - 6v/p6en/6enp/+jo6P/n5+f/5+fn/+bm5v/l5eX/5ubm/+Xl5f/l5eX/5eXl/+Tk5P/l5eX/5+fn/+bm - 5v/h4eH/3t7e/97e3v/d3d3/3d3d/9zc3P/b29v/29vb/93d3f/u7u7/zMzM/6mpqf/i4uL/+/v7//z8 - /P/8/Pz//Pz8//z8/P/7+/v//////wAAAEEAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4//////Dw7//w8O//8PDw//T08//k5OP/3Nzc//T0 - 9P/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//Pz8//09PP/9PT0//T09P+wsLD/7+/u//X1 - 9f/b29v/n5+f//b29f/19fX/sbGx//b29v/BwcH/ubm5//f39/+8vLz/5+fn/8vLyv/c3Nz/qKio/8bG - xv+xsbH/3d3c//Dw8P+5ubn/uLi4/9PT0/+pqan/l5eX/7+/v//Hx8f/mpqa/3t7e//CwsL/8fHx/8XF - xf+ioqL/5+fn/8DAwP90dHT/zc3N//X19f/r6+v/6enp/+jo6P/o6Oj/5+fn/+bm5v/m5ub/5eXl/+jo - 6P/w8PD/8/Pz//T09P/19fX/9fX1//T09P/y8vL/9vb2/+np6f/e3t7/3d3d/9zc3P/c3Nz/29vb/9ra - 2v/a2tr/2tra/+3t7f/X19f/paWl/9vb2//6+vr/+/v7//v7+//7+/v/+/v7//v7+///////AAAAQAAA - ACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////8PDv//Dw7//w8O//09PT/46Ojv+goKD/wcHB//Ly8v/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz - 8v/z8/P/8/Pz//T08//09PP/9PT0/8jIyP/c3Nz/9PTz//Hx8f+rq6v/zs7O//b29f+np6f/ycnJ/7W1 - tf/IyMj/1tbW/7S0tP/v7+//7e3t/6ampv/w8PD/0NDQ/6ysrP/e3t7/wMDA/+vr6/+oqKj/9PT0/9bW - 1v+xsbH/bW1t/6ioqP+/v7//nJyc/+jo6P+2trb/9/f3/56env/19fX/39/f/4SEhP/IyMj/9fX1/+rq - 6v/o6Oj/5+fn/+fn5//m5ub/5eXl/+Xl5f/k5OT/7e3t//Ly8v/X19f/zs7O/8rKyv/FxcX/vb29/7y8 - vP/d3d3/8fHx/+Hh4f/c3Nz/29vb/9vb2//a2tr/2dnZ/9nZ2f/Y2Nj/6urq/+Dg4P+pqan/0tLS//n5 - +f/7+/v/+/v7//v7+//7+/v/+/v7//////8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////v7+//8PDv//Dw7/+zs7P/fHx8/46O - jv+lpaX/7u7u//Hx8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//T08//09PP/9PT0/8rK - yv/ExMT/z8/O//T09P/Nzc3/qamp/8DAwP/19fX/2tra/+Xl5f/MzMz/q6ur//f39//39/f/ubm5/9jY - 2P/4+Pf/0tLS/87Ozv/Dw8P/+Pj4/+Hh4f/Nzc3/s7Oz/9fX1/+Pj4//wMDA/9HR0f/S0tL/y8vL/76+ - vv/r6+v/sLCw/8vLy//IyMj/kJCQ/8bGxv/19fX/6urq/+jo6P/n5+f/5ubm/+bm5v/l5eX/5OTk/+Xl - 5f/y8vL/ycnJ/5OTk/+rq6v/q6ur/6urq/+urq7/pKSk/7e3t//v7+//6enp/9zc3P/a2tr/2tra/9nZ - 2f/Z2dn/2NjY/9ra2v/r6+v/6Ojo/66urv/Jycn/9vb2//v7+//7+/v/+/v7//v7+//7+/v//////wAA - AEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4/////+/v7v/v7+//8PDv/97e3v+FhYX/goKC/8DAwP/v7+7/8fHx//Hx8f/y8vH/8vLx//Ly - 8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//T08//09PP/9PT0//T09P/09PT/9fX0//X19f/09PT/9fX1//b2 - 9f/29vX/9vb2//b29v/29vb/9/f2//f39//39/f/9/f3//f39//4+Pf/+Pj4//j4+P/4+Pj/+Pj4//j4 - +P/5+fn/9PT0/8vLy/+7u7v/6urq/+np6f/6+vr/+vr6//j4+P/e3t7/rq6u/9bW1v+hoaH/y8vL//X1 - 9f/p6en/5ubm/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/6urq//Ly8v+5ubn/sLCw/9XV1f/i4uL/5eXl/+fn - 5//R0dH/pqam/8vLy//y8vL/4ODg/9ra2v/Z2dn/2dnZ/9zc3P/k5OT/7Ozs//T09P/a2tr/p6en/8rK - yv/29vb/+/v7//v7+//7+/v/+/v7//v7+///////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////7+/u/+/v7v/v7+//8PDv/+rq - 6f/o6Oj/7u7u//Hx8P/x8fD/8fHx//Hx8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//T0 - 8//09PP/9PT0//T09P/09PT/9fX0//X19f/19fX/9fX1//b29f/29vX/9vb2//b29v/29vb/9/f2//f3 - 9//39/f/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5+fj/+fn5/+Xl5f/5+fn/+fn5//n5 - +f/6+vr/+vr6//r6+v/m5ub/5OTk/62trf/Ly8v/9/f3/+rq6v/n5+f/5eXl/+Tk5P/k5OT/4+Pj/+Pj - 4//v7+//5eXl/6ampv/IyMj/8fHx//v7+//7+/v/+/v7/+3t7f+8vLz/rq6u/+Xl5f/s7Oz/4ODg/+Pj - 4//r6+v/8PDw/+/v7//f39//wcHB/6qqqv+wsLD/3d3d//r6+v/7+/v/+/v7//v7+//7+/v/+/v7//// - //8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Hx - 8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//T08//09PP/9PT0//T09P/09PT/9fX0//X1 - 9f/19fX/9fX1//X19f/29vX/9vb2//b29v/29vb/9vb2//f39v/39/f/9/f3//f39//39/f/+Pj3//j4 - +P/4+Pj/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+vr6//r6+v/l5eX/sLCw/8XF - xf/6+vr/9/f3//Pz8//u7u7/6urq/+jo6P/m5ub/6Ojo//b29v/MzMz/qqqq/97e3v/5+fn/+vr6//r6 - +v/6+vr/9/f3/9zc3P+srKz/xMTE//f39//39/f/8vLy/+Li4v/Kysr/tLS0/6enp/+vr6//xsbG/+Hh - 4f/19fX/+/v7//v7+//7+/v/+/v7//v7+//7+/v//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+/v7v/v7+7/7+/u/+/v - 7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Ly8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz - 8v/z8/P/8/Pz//T08//09PP/9PT0//T09P/09PT/9fX0//X19P/19fX/9fX1//X19f/29vX/9vb2//b2 - 9v/29vb/9vb2//f39v/39/f/9/f3//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//n5 - +f/5+fn/+fn5//n5+f/5+fn/+fn5/+zs7P/AwMD/qamp/7y8vP/Ly8v/39/f/+zs7P/x8fH/8fHx//Ly - 8v/09PT/9fX1/7a2tv+7u7v/7e3t//r6+v/6+vr/+vr6//r6+v/6+vr/8PDw/8XFxf+kpKT/xMTE/8TE - xP+0tLT/qamp/6ampv+4uLj/zc3N/+Li4v/y8vL/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v//////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////7u7u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx - 8P/x8fD/8fHx//Ly8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//T08//09PP/9PT0//T0 - 9P/09PT/9fX0//X19P/19fX/9fX1//X19f/29vX/9vb2//b29v/29vb/9vb2//b29v/39/f/9/f3//f3 - 9//39/f/9/f3//j49//4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5+fn/+fn5//n5+f/5+fn/9/f3/+Pj - 4//Gxsb/tLS0/62trf+lpaX/pKSk/62trf+8vLz/xsbG/87Ozv/ExMT/q6ur/9PT0//39/f/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/5ubm/7y8vP+srKz/r6+v/7q6uv/Ozs7/3t7e/+3t7f/29vb/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//////8AAABAAAAAKAAAABQAAAAIAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////u7u3/7u7u/+/v - 7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Ly8f/y8vH/8vLx//Ly - 8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//Pz8//09PP/9PT0//T09P/09PT/9fX0//X19P/19fX/9fX1//X1 - 9f/29vX/9vb1//b29v/29vb/9vb2//b29v/39/b/9/f3//f39//39/f/9/f3//f39//4+Pf/+Pj4//j4 - +P/4+Pj/+Pj4//j4+P/4+Pj/+fn5//n5+f/5+fn/+Pj4//Hx8f/p6en/4eHh/9TU1P/IyMj/wMDA/7e3 - t/+urq7/qKio/6qqqv/ExMT/6+vr//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/4+Pj/6+vr/+Hh - 4f/g4OD/7Ozs//b29v/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4/////+7u7f/u7u3/7u7u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw - 7//w8PD/8fHw//Hx8P/x8fD/8fHx//Ly8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//Pz - 8//09PP/9PTz//T09P/09PT/9PT0//X19P/19fX/9fX1//X19f/19fX/9vb1//b29v/29vb/9vb2//b2 - 9v/29vb/9/f2//f39//39/f/9/f3//f39//39/f/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//n5 - +f/5+fn/+fn5//n5+f/5+fn/9/f3//T09P/y8vL/8PDw/+np6f/i4uL/4+Pj//Dw8P/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//b29v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v//////AAAAQAAAACgAAAAUAAAACAAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////7u7t/+7u - 7f/u7u3/8fHw/+3t7f/n5+f/9PT0/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Ly - 8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/P/8/Pz//Pz8//09PP/9PTz//T09P/09PT/9PT0//X1 - 9P/19fT/9fX1//X19f/19fX/9vb1//b29f/29vb/9vb2//b29v/29vb/9/f2/9bW1v/W1tb/9/f3//f3 - 9//39/f/9/f3//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/5+fj/+fn5//n5+f/5+fn/+fn5//n5 - +f/5+fn/+fn5//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/09PT/vb29//j4 - +P/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//////8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////u7u3/7u7t/+7u7f/c3Nv/lJSU/6Ojo//Kysr/8fHw/+/v - 7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Ly8f/y8vH/vLy7/62trf/m5ub/q6ur/7m5 - uf/q6ur/srKy/8rKyv/Hx8b/9PTz/+3t7f+ioqL/xcXF/9XV1P+8vLz/xcXF/+Li4v/19fX/qamp/+/v - 7//29vb/9vb2//b29v/29vb/wsLC/8LCwf/Y2Nj/0NDQ/7m5uf/S0tL/2NjY/6Wlpf/MzMv/+Pj4//j4 - +P/s7Oz/oKCg/8zMzP/v7+//sLCw/97e3v/e3t7/wsLC//Dw8P+urq7/+fn5/9HR0f+vr6//4ODg/6mp - qf/CwsL/ysrK//T09P+wsLD/ubm5/+Xl5f+1tbX/6Ojo//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr//////wAAAEAAAAAoAAAAFAAA - AAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+3t - 7P/u7u3/7u7t/7Ozs/9+fn7/kZGR/6enp//u7u7/7+/v/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx - 8P/x8fD/8fHx//Hx8f+traz/8fHw/8PDw/+oqKj/7+/u/7Gxsf+7u7v/8/Pz/8zMzP/W1tX/3t7d/76+ - vv/q6ur/nZ2d//Hx8f/19fT/r6+v//X19f+zs7P/y8vL//b29f/29vX/9vb2//b29v/29vb/q6ur/8XF - xf/CwsL/4ODg/9/f3/+ysrL/2dnZ/+3t7f/39/f/+Pj3/97e3v/Hx8f/3t7e/7m5uf/IyMj/1NTU/8vL - y/+goKD/9fX1/5+fn//e3t7/yMjI/93d3f++vr7/paWl/9jY2P/z8/P/xMTE/6ampv/5+fn/7u7u//n5 - +f/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6 - +v/6+vr/+vr6//r6+v//////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////7e3s/+3t7f/u7u3/1NTU/3Z2dv9+fn7/tra2/+3t - 7P/v7+7/7+/v/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx/8fHx//d3dz/6+vq/5iY - mP/w8PD/5+fm/5ubm//v7+7/29vb/6enp//ExMT/qamp//T08/+xsbH/xcXF//T09P+qqqr/x8fH/7Cw - sP/ExMT/3t7e//Pz8//29vX/9vb1/+np6f+1tbX/8vLy/7a2tv/Jycn/9/f2/7q6uv/Dw8P/9/f3//f3 - 9//39/f/8vLy/7u7uv/4+Pj/wcHB/8TExP/4+Pj/x8fH/7S0tP/Q0ND/rq6u/8nJyf/Q0ND/ysrK//Hx - 8f+dnZ3/6enp/7a2tv/29vb/np6e//X19f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 - +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//////8AAABAAAAAKAAA - ABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///t7ez/7e3s/+3t7f/u7u3/4eHh/9fX1//q6ur/7+/u/+/v7v/v7+7/7+/v/+/v7//w8O//8PDv//Dw - 7//w8PD/8fHw//Hx8P/x8fD/8PDw/8fHx//ExMP/oqKi/9/f3//y8vL/4uLi/76+vf+goKD/4+Pj//Pz - 8/+pqan/9PTz//T08//Ozs7/q6ur/7u7u//y8vL/3t7e/+Pj4v/Pz8//rq6u//X19f/19fX/7e3s/6Sk - pP/29vb/6+vr/+fn5//09PT/z8/P/6qqqf/Z2dn/2tra//Pz8//39/f/3t7e/8jIyP+9vb3/vb28//j4 - +P/w8PD/1dXV/+Tk5P+ioqL/9PT0/7W1tf/MzMz/+Pj4/97e3v/Kysr/vLy8/+rq6v+wsLD/ysrK/9vb - 2//k5OT/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5 - +f/5+fn/+fn5//n5+f/5+fn//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u - 7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Hx - 8f/T09L/ysrJ//Ly8f/y8vL/8fHx//Pz8v/z8/L/8/Py/7CwsP/u7u7/8/Pz//T08//z8/L/9PT0//T0 - 9P/09PT/9fX0//X19P/19fX/9fX1//X19f/19fX/9fX1//b29f/29vb/ysrK/+np6f/r6+v/pqam/+Hh - 4f/m5uX/8PDw//f39//39/f/9/f3//f39//39/f/9/f3//f39//4+Pf/+Pj4//j4+P/4+Pj/+Pj4//j4 - +P/4+Pj/+Pj4//j4+P/4+Pj/9vb2/9zc3P+urq7/6enp/+bm5f/5+fj/+fn5//n5+f/5+fn/+fn5//n5 - +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+P//////AAAAQAAA - ACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////7Ozs/+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v - 7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/5+fn/7S0tP+1tbX/8vLx//Ly8f/y8vL/8vLy//Pz - 8v/d3d3/pqal/9ra2v/z8/P/8/Pz//T08//09PP/9PT0//T09P/09PT/9PT0//X19P/19fT/9fX1//X1 - 9f/19fX/9fX1//b29f/29vX/8vLy//b29v/t7e3/7Ozs//b29v/29vb/9vb2//f39v/39/f/9/f3//f3 - 9//39/f/9/f3//f39//39/f/9/f3//j49//4+Pf/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4/+Tk - 5P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4 - +P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//////8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////s7Ov/7e3s/+3t7P/t7ez/7e3s/+3t - 7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8PDw//Hx - 8P/x8fD/8fHw/+/v7//x8fH/8vLx//Ly8f/y8vL/8vLy//Hx8f/z8/L/8vLx//Pz8v/z8/P/8/Pz//Pz - 8//09PP/9PTz//T09P/09PT/9PT0//T09P/19fT/9fX0//X19f/19fX/9fX1//X19f/19fX/9vb1//b2 - 9f/29vb/9vb2//b29v/29vb/9vb2//b29v/39/b/9/f2//f39//39/f/9/f3//f39//39/f/9/f3//f3 - 9//39/f/9/f3//f39//4+Pf/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4 - +P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj//////wAA - AEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4/////+zs6//s7Ov/7e3s/+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v - 7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8PDw//Hx8P/x8fD/8fHw//Hx8f/x8fH/8vLx//Ly - 8f/y8vH/8vLy//Ly8v/z8/L/8/Py//Pz8v/z8/P/8/Pz//Pz8//09PP/9PTz//T08//09PT/9PT0//T0 - 9P/09PT/9fX0//X19P/19fX/9fX1//X19f/19fX/9fX1//b29f/29vX/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb/9vb2//f39v/39/b/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3 - 9//39/f/9/f3//j49//4+Pf/+Pj3//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4 - +P/4+Pj/+Pj4//j4+P/4+Pj/+Pj3//j49///////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////7Ozr/+zs6//s7Ov/7e3s/+3t - 7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u7f/u7u3/7+/u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw - 7//w8PD/8PDw//Hx8P/x8fD/8fHw//Hx8f/x8fH/8vLx//Ly8f/y8vH/8vLy//Ly8v/y8vL/8/Py//Pz - 8v/z8/L/8/Pz//Pz8//z8/P/9PTz//T08//09PT/9PT0//T09P/09PT/9PT0//X19P/19fT/9fX1//X1 - 9f/19fX/9fX1//X19f/29vX/9vb1//b29f/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//f3 - 9v/39/b/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3 - 9//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//// - //8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////s7Ov/7Ozr/+zs6//t7ez/8/Py//Hx8f/y8vH/7e3s/+3t7f/u7u3/7u7t/+7u - 7f/u7u3/7+/u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8O//8PDw//Hx8P/x8fD/8fHw//Hx - 8P/x8fH/8fHx//Ly8f/y8vH/8vLx//Ly8v/y8vL/8/Py//Pz8v/z8/L/8/Pz//Pz8//z8/P/8/Pz//T0 - 8//09PP/9PT0//T09P/09PT/9PT0//T09P/y8vH/7e3s//X19f/19fX/9fX1//X19f/19fX/9fX1//b2 - 9f/29vX/9vb1//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//f39v/39/b/9/f2//f3 - 9//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f3 - 9//39/f/9/f3//f39//39/f/9/f3//f39//39/f//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+vr6v/s7Ov/7Ozr/+Tk - 5P+cnJz/pqam/9XV1f/v7+7/7e3s/+3t7f/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v7v/v7+7/7+/u/+/v - 7//v7+//8PDv//Dw7//w8O//8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fH/8fHx//Ly8f/y8vH/8vLx//Ly - 8v/y8vL/8vLy//Pz8v/z8/L/8/Py//Pz8//z8/P/8/Pz//Pz8//09PP/9PTz//T09P/09PT/9PT0/+Hh - 4f+8vLz/9fX0//X19P/19fT/9fX1//X19f/19fX/9fX1//X19f/19fX/9vb1//b29f/29vX/9vb2//b2 - 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9/f2//f39v/39/b/9/f2//f3 - 9v/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/b/9/f2//f3 - 9v//////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////6+vq/+vr6v/s7Ov/tra2/4KCgv+Tk5P/qamp/+3t7P/t7ez/7e3s/+3t - 7P/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v7v/v7+7/7+/u/+/v7v/v7+//8PDv//Dw7//w8O//8PDw//Dw - 8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx8f/y8vH/8vLx//Ly8f/y8vL/8vLy//Ly8v/z8/L/8/Py//Pz - 8v/z8/P/8/Pz//Pz8//z8/P/9PTz//T08//09PP/8PDw/66urv/09PT/9PT0//X19P/e3t3/zs7N//Hx - 8f/19fX/9fX1//X19f/19fX/9fX1//X19f/29vX/9vb1//b29f/29vX/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//////8AAABAAAAAKAAAABQAAAAIAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////r6+r/6+vq/+vr - 6v/Nzc3/cnJy/4KCgv+urq7/6+vr/+3t7P/t7ez/7e3s/+3t7P/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v - 7v/v7+7/y8vK/6Wlpf++vr7/ysrK/+Hh4P+zs7L/xsbF/9HR0f/w8PD/urq6/9jY2P/x8fD/8fHx/7S0 - tP+8vLv/wsLB/+Xl5P/MzMv/zMzM/9vb2/+4uLj/8/Py/8DAv/+xsbH/5ubm//Pz8//z8/P/v7+//76+ - vf/a2tn/pKSk/8zMzP/Ly8v/7Ozs/8vLy//Ly8v/v7++/9/f3v+np6f/1NTU/+Hh4f+urq7/4eHh/7Oz - s//o6Oj/wsLC/9bW1v/29vX/q6ur/7+/v//z8/L/9vb1//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4/////+rq6f/r6+r/6+vq/+np6P/S0tL/wcHB/+Tk5P/s7Ov/7Ozs/+3t - 7P/t7ez/7e3s/+3t7P/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v7v/Ly8r/yMjH/+/v7v/v7+//v7+//9bW - 1f/w8O//tra2/+jo6P/IyMj/srKx//Hx8P/x8fD/mpqa/83Nzf/r6+v/ysrJ/8XFxP+pqan/7Ozr/5ub - m//i4uL/tra1/+bm5v/CwsH/8fHw//Pz8/+wsLD/7u7u/9HR0f+pqan/7e3s//Hx8P+4uLj/9PT0/8HB - wf+0tLT/z8/P/8vLy//a2tn/t7e2/9vb2//IyMf/s7Oz/8bGxv/T09P/qKio//Ly8v+qqqr/7+/v/8bG - xv/19fX/9fX1//b29f/29vX/9vb1//b29f/29vX/9vb1//b29f/29vX/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb/9vb2//b29v/29vb/9vb2//b29f/29vX/9vb1//b29f//////AAAAQAAAACgAAAAUAAAACAAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////6urp/+rq - 6f/r6+r/6+vq/+vr6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t7P/t7e3/7u7t/+7u - 7f/u7u3/7u7t/97e3v+2trX/7+/u/+/v7v/X19b/s7Oz//Dw7/+/v77/tra2/7i4uP+0tLT/zc3N//Dw - 7/+rq6v/5eXk/7CwsP/r6+v/ubm5/7y8vP/Q0M//rKyr/8DAwP/Dw8P/09PT/+vr6v/Pz87/8/Py/8HB - wP/b29v/8/Pz/6ysrP/T09P/8/Pz/6ampv/09PP/qamo//T09P/Hx8f/sLCw//T09P+xsbH/09PT//Pz - 8/+qqqr/zc3M/9TU0/+1tbT/xMTE/62trf/x8fH/2tra/+Pj4//19fX/9fX1//X19f/19fX/9fX1//X1 - 9f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9vb1//b29f/19fX/9fX1//X19f/19fX/9fX1//X1 - 9f/19fX/9fX1//////8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAA - ABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////q6un/6urp/+rq6f/r6+r/6+vq/+vr6v/s7Ov/7Ozr/+zs - 6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t7P/t7e3/7u7t/+7u7f/u7u3/7e3s/6ampv/v7+7/7+/u/+/v - 7v/U1NP/s7Oz/6qqqv/q6un/5+fm/9LS0f/a2tr/pKSk/+Dg3//BwcH/ubm4/+jo5//i4uL/2NjY/9bW - 1v+pqan/7Ozr/6qqqf/U1NT/8vLy//Ly8v/y8vL/5OTj/+vr6v/z8/L/19fW/6enp/+1tbX/xMTE//Pz - 8/+ioqL/6+vq//T08//BwcD/9PT0/97e3v/Hx8f/9PT0/9XV1f/o6Oj/w8PD/76+vv/i4uH/oqKh/+7u - 7f/19fT/9PTz//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1 - 9f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX//////wAAAEAAAAAoAAAAFAAA - AAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+rp - 6P/q6un/6urp/+rq6f/r6+r/6+vq/+vr6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t - 7P/t7ez/7u7t/+7u7f/u7u3/paWl/+3t7f/v7+7/7+/u/+/v7v/u7u3/7+/u/+/v7//w8O//8PDv//Dw - 7//w8O//8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx8f/x8fH/8vLx//Ly8f/y8vH/8vLx//Ly - 8v/y8vL/wMDA/+bm5f/CwsH/zMzM//Pz8v/z8/P/8/Pz//Pz8//z8/P/8/Pz//T08//09PP/9PTz//T0 - 8//09PP/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9fX0//X19P/19fT/9fX0//X1 - 9P/19fT/9fX0//X19P/19fT/9fX0//X19P/19fX/9fX1//X19f/19fX/9fX1//X19f/19fT/9fX0//X1 - 9P/19fT/9fX0//X19P//////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////6eno/+rp6P/q6un/6urp/+rq6f/r6+r/6+vq/+vr - 6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t7P/t7ez/7u7t/+7u7f/GxsX/6Ojn/+7u - 7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v7//v7+//8PDv//Dw7//w8O//8PDv//Dw8P/w8PD/8fHw//Hx - 8P/x8fD/8fHw//Hx8f/x8fH/8fHx//Ly8f/y8vH/8vLx//Ly8f/y8vL/7u7u//Ly8v/z8/L/8/Py//Pz - 8v/z8/L/8/Py//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//T08//09PP/9PTz//T08//09PP/9PT0//T0 - 9P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9fX0//X1 - 9P/19fT/9fX0//X19P/19fT/9fX0//X19P/09PT/9PT0//T09P/09PT/9PT0//////8AAABAAAAAKAAA - ABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP// - ///p6ej/6eno/+rp6P/q6un/6urp/+rq6f/r6+r/6+vq/+vr6v/r6+r/7Ozr/+zs6//s7Ov/7Ozr/+zs - 7P/t7ez/7e3s/+3t7P/t7ez/7e3t/+7u7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v - 7v/v7+//8PDv//Dw7//w8O//8PDv//Dw7//w8PD/8PDw//Hx8P/x8fD/8fHw//Hx8P/x8fH/8fHx//Hx - 8f/y8vH/8vLx//Ly8f/y8vH/8vLy//Ly8v/y8vL/8vLy//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Pz//Pz - 8//z8/P/8/Pz//Pz8//z8/P/8/Pz//T08//09PP/9PTz//T08//09PP/9PTz//T08//09PT/9PT0//T0 - 9P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T0 - 9P/09PT/9PT0//T09P/09PT//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+no5//p6ej/6eno/+np6P/x8fD/8/Pz/+3t - 7P/r6un/6+vq/+vr6v/r6+r/7Ozr/+zs6//s7Ov/7Ozr/+zs6//t7ez/7e3s/+3t7P/t7ez/7e3s/+7u - 7f/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v7v/v7+7/7+/u/+/v7v/v7+//7+/v//Dw7//w8O//8PDv//Dw - 7//w8PD/8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx8f/x8fH/8vLx//Ly8f/y8vH/8vLx//Ly - 8f/y8vL/8vLy//Ly8v/y8vL/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Pz//Pz8//z8/P/8/Pz//Pz - 8//z8/P/8/Pz//Pz8//09PP/9PTz//T08//09PP/9PTz//T08//09PP/9PTz//T08//09PP/9PTz//T0 - 8//09PP/9PTz//T08//09PP/9PTz//T08//09PP/9PTz//T08//09PP/9PTz//T08///////AAAAQAAA - ACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAA - AHj/////6Ojn/+no5//p6ej/6urp/62trf+tra3/39/f/+zs6//r6un/6+vq/+vr6v/r6+r/7Ozr/+zs - 6//s7Ov/7Ozr/+zs6//t7ez/7e3s/+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v - 7v/v7+7/7+/u/+/v7v/v7+7/7+/v/+/v7//w8O//8PDv//Dw7//w8O//8PDw//Dw8P/w8PD/8fHw//Hx - 8P/x8fD/8fHw//Hx8f/x8fH/8fHx//Hx8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8v/y8vL/8vLy//Ly - 8v/y8vL/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz - 8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//09PP/9PTz//T08//09PP/9PTz//T08//09PP/9PTz//T0 - 8//09PP/8/Pz//Pz8//z8/P/8/Pz//////8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////o6Of/6Ojn/+no5/+6urr/hISE/5eX - l/+urq7/7Ozs/+rq6f/q6un/6+vq/+vr6v/r6+r/7Ozr/+zs6//s7Ov/7Ozr/+zs6//s7Oz/7e3s/+3t - 7P/t7ez/7e3s/+3t7P/u7u3/7u7t/+7u7f/u7u3/7u7t/+7u7v/v7+7/7+/u/+/v7v/v7+7/7+/u/+/v - 7//v7+//8PDv//Dw7//w8O//8PDv//Dw7//w8PD/8PDw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx - 8f/x8fH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8/Py//Pz - 8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz - 8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P//////wAA - AEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAA - AGwAAAB4/////+jn5v/o6Of/6Ojn/8PDw/9ycnL/hISE/6mpqf/p6Of/6urp/+rq6f/q6un/6+vq/+vr - 6v/r6+r/6+vq/+zs6//s7Ov/7Ozr/+zs6//s7Ov/7e3s/+3t7P/t7ez/7e3s/+3t7P/t7e3/7u7t/+7u - 7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v7v/v7+//7+/v//Dw7//w8O//8PDv//Dw - 7//w8O//8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fH/8fHx//Hx8f/y8vH/8vLx//Ly - 8f/y8vH/8vLx//Ly8f/y8vH/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Pz8v/z8/L/8/Py//Pz - 8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz - 8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v//////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////5+fm/+jn5v/o6Of/5eXl/729 - vf+vr6//29vb/+np6P/q6ej/6urp/+rq6f/q6un/6+rp/+vr6v/r6+r/6+vq/+zs6//s7Ov/7Ozr/+zs - 6//s7Ov/7Ozs/+3t7P/t7ez/7e3s/+3t7P/t7ez/7u7t/+7u7f/u7u3/7u7t/+7u7f/u7u3/7u7u/+/v - 7v/v7+7/7+/u/+/v7v/v7+7/7+/v/+/v7//w8O//8PDv//Dw7//w8O//8PDv//Dw8P/w8PD/8PDw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8f/x8fH/8fHx//Hx8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly - 8f/y8vH/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Pz8v/z8/L/8/Py//Pz - 8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//// - //8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAA - AFgAAABsAAAAeP/////n5+b/5+fm/+jn5v/o6Of/6Ojn/+jo5//p6Of/6eno/+np6P/p6ej/6urp/+rq - 6f/q6un/6+rp/+vr6v/r6+r/6+vq/+vr6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t - 7P/t7ez/7e3t/+7u7f/u7u3/7u7t/+7u7f/u7u3/7u7u/+7u7v/v7+7/7+/u/+/v7v/v7+7/7+/u/+/v - 7//v7+//8PDv//Dw7//w8O//8PDv//Dw7//w8O//8PDw//Dw8P/w8PD/8fHw//Hx8P/x8fD/8fHw//Hx - 8P/x8fD/8fHx//Hx8f/x8fH/8fHx//Hx8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly - 8f/y8vH/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly - 8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAAACgAAABAAAAAWAAAAGwAAAB4/////+fm5f/n5+b/5+fm/+jn - 5v/o5+b/6Ojn/+jo5//p6Of/6eno/+np6P/p6ej/6uno/+rq6f/q6un/6urp/+vr6v/r6+r/6+vq/+vr - 6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+zs7P/t7ez/7e3s/+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u - 7f/u7u3/7u7t/+7u7v/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v7v/v7+//7+/v/+/v7//w8O//8PDv//Dw - 7//w8O//8PDv//Dw8P/w8PD/8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx - 8f/x8fH/8fHx//Hx8f/x8fH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly - 8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly - 8f//////AAAAQAAAACgAAAAUAAAACAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAA - AEAAAABYAAAAbAAAAHj/////5ubl/+fm5f/n5+b/5+fm/+jn5v/o5+b/6Ojn/+jo5//p6Of/6eno/+np - 6P/p6ej/6uno/+rq6f/q6un/6urp/+vq6f/r6+r/6+vq/+vr6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+zs - 6//t7ez/7e3s/+3t7P/t7ez/7e3s/+3t7P/t7e3/7u7t/+7u7f/u7u3/7u7t/+7u7f/u7u7/7u7u/+/v - 7v/v7+7/7+/u/+/v7v/v7+7/7+/u/+/v7//v7+//8PDv//Dw7//w8O//8PDv//Dw7//w8O//8PDv//Dw - 8P/w8PD/8PDw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8f/x8fH/8fHx//Hx - 8f/x8fH/8fHx//Hx8f/x8fH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly - 8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//////8AAABAAAAAKAAAABQAAAAIAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAACAAAABQAAAAoAAAAQAAAAFgAAABsAAAAeP/////m5uX/5ubl/+fm - 5f/n5uX/5+fm/+fn5v/o5+b/6Ojn/+jo5//p6Of/6ejn/+np6P/p6ej/6eno/+rq6f/q6un/6urp/+rq - 6f/r6+r/6+vq/+vr6v/r6+r/7Ozr/+zs6//s7Ov/7Ozr/+zs6//s7Ov/7e3s/+3t7P/t7ez/7e3s/+3t - 7P/t7ez/7e3t/+7u7f/u7u3/7u7t/+7u7f/u7u3/7u7t/+7u7v/v7+7/7+/u/+/v7v/v7+7/7+/u/+/v - 7v/v7+//7+/v/+/v7//w8O//8PDv//Dw7//w8O//8PDv//Dw7//w8O//8PDw//Dw8P/w8PD/8PDw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx8f/x8fH/8fHx//Hx - 8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx - 8f/x8fH//////wAAAEAAAAAoAAAAFAAAAAgAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAIAAAAFAAA - ACgAAABAAAAAWAAAAGwAAAB4/////+bl5P/m5uX/5ubl/+fm5f/n5uX/5+fm/+fn5v/o5+b/6Ojn/+jo - 5//o6Of/6ejn/+np6P/p6ej/6eno/+rp6P/q6un/6urp/+rq6f/r6un/6+vq/+vr6v/r6+r/6+vq/+zs - 6//s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u - 7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v7v/v7+7/7+/u/+/v7v/v7+7/7+/u/+/v7//v7+//7+/v//Dw - 7//w8O//8PDv//Dw7//w8O//8PDv//Dw7//w8O//8PDw//Dw8P/w8PD/8PDw//Dw8P/x8fD/8fHw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P//////AAAAQAAAACgAAAAUAAAACAAA - AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAgAAAAUAAAAKAAAAEAAAABYAAAAbAAAAHj/////5uXk/+bl - 5P/m5eT/5ubl/+fm5f/n5uX/5+fm/+fn5v/o5+b/6Ofm/+jo5//o6Of/6ejn/+np6P/p6ej/6eno/+rp - 6P/q6un/6urp/+rq6f/q6un/6+vq/+vr6v/r6+r/6+vq/+zs6//s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+zs - 7P/t7ez/7e3s/+3t7P/t7ez/7e3s/+3t7P/t7e3/7u7t/+7u7f/u7u3/7u7t/+7u7f/u7u3/7u7u/+7u - 7v/v7+7/7+/u/+/v7v/v7+7/7+/u/+/v7v/v7+7/7+/v/+/v7//v7+//7+/v//Dw7//w8O//8PDv//Dw - 7//w8O//8PDv//Dw7//w8O//8PDv//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/x8fD/8fHw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx - 8P/x8fD/8fHw//////8AAABAAAAAKAAAABQAAAAIAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAA - ABMAAAAnAAAAPwAAAFYAAABqAAAAdv/////r6+r/5eXk/+bl5P/m5eT/5ubl/+fm5f/n5uX/5+fm/+fn - 5v/o5+b/6Ofm/+jo5//o6Of/6Ojn/+no5//p6ej/6eno/+np6P/q6ej/6urp/+rq6f/q6un/6+rp/+vr - 6v/r6+r/6+vq/+vr6v/s7Ov/7Ozr/+zs6//s7Ov/7Ozr/+zs6//s7Oz/7e3s/+3t7P/t7ez/7e3s/+3t - 7P/t7ez/7e3t/+7u7f/u7u3/7u7t/+7u7f/u7u3/7u7t/+7u7f/u7u7/7u7u/+/v7v/v7+7/7+/u/+/v - 7v/v7+7/7+/u/+/v7v/v7+7/7+/v/+/v7//v7+//7+/v//Dw7//w8O//8PDv//Dw7//w8O//8PDv//Dw - 7//w8O//8PDv//Dw7//w8O//8PDv//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw - 8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/z8/P//////wAAAD8AAAAnAAAAEwAA - AAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAEgAAACUAAAA8AAAAUgAAAGUAAABw//////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////AAAAPAAAACUAAAASAAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA - AAYAAAAQAAAAIQAAADYAAABKAAAAWwAAAGUAAABqAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA - AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA - AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA - AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA - AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA - AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAA - AGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAAABsAAAAbAAAAGoAAABlAAAAWwAAAEoAAAA2AAAAIQAA - ABAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAAA0AAAAbAAAALAAAADwAAABKAAAAUgAA - AFYAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAA - AFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAA - AFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAA - AFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAA - AFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAA - AFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAA - AFgAAABYAAAAVgAAAFIAAABKAAAAPAAAACwAAAAbAAAADQAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAACQAAABQAAAAgAAAALAAAADUAAAA8AAAAPgAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAA - AEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAA+AAAAPAAAADUAAAAsAAAAIAAA - ABQAAAAJAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAADAAAABQAAAAbAAAAIQAA - ACUAAAAnAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAA - ACgAAAAoAAAAKAAAACcAAAAlAAAAIQAAABsAAAAUAAAADAAAAAYAAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAMAAAAGAAAACgAAAA0AAAAQAAAAEgAAABMAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAA - ABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAEwAAABIAAAAQAAAADQAA - AAoAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAEAAAABQAA - AAYAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAABwAAAAYAAAAFAAAABAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA - AAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////gAAAAAAAAAAD///////// - wAAAAAAAAAAAf////////8AAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAA////+A - AAAAAAAAAAAQAA//////gAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA/H - ////AAAAAAAAAAAAAAAPgf///wAAAAAAAAAAAAAADwD///8AAAAAAAAAAAAAAAAAf///AAAAAAAAAAAA - AAAAAD///wAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAAf//wAAAAAA - AAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8A - AAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAA - D///AAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAA - AAAAAAAH/wAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAD/wAAAAAA - AAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAP8A - AAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAAAAAAAAA - AAf/AAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAAAD//AAAAAAAAAAAA - AAAAAAA//wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAA - AAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8A - AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAA - AAD/AAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAf8AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAA - AAAAAAAD/wAAAAAAAAAAAAAAAAAAB/8AAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAD//8AAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAf/8A - AAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAA//wAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAAAAAA - AH//AAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAA - AAAAAAP//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAA - AAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8A - AAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAA - B///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAA - AAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAA - AAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8A - AAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAA - B///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAA - AAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAA - AAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8A - AAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAA - B///AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAA - AAAAAAf//wAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAAAf//wAAAAAA - AAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAB///gAAAAAAAAAAAAAAAAA///4AAAAAAAAAAAAAAAAAP///A - AAAAAAAAAAAAAAAAH///4AAAAAAAAAAAAAAAAD///////////////////////ygAAABIAAAAkAAAAAEA - IAAAAAAAYFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAkAAAARAAAAFwAAABwAAAAiAAAAJgAAACsAAAAvAAAAMgAA - ADUAAAA4AAAAOgAAADsAAAA9AAAAPgAAAEAAAABBAAAAQgAAAEMAAABDAAAARAAAAEMAAABBAAAAPwAA - AD0AAAA8AAAAOgAAADgAAAA2AAAAMwAAAC8AAAArAAAAJwAAACIAAAAcAAAAGAAAABIAAAAKAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAAcAAAAOAAAAFAAAABoAAAAfAAAAIgAAACcAAAAsAAAALwAAADIAAAA0AAAAOQAA - AEAAAABGAAAAQwAAAD4AAAA+AAAAPwAAAEAAAABLDAwMaRAQEGsDAwNfAAAAVAAAAEkAAAA/AAAAOAAA - ADQAAAAyAAAALwAAACsAAAAnAAAAIwAAAB4AAAAaAAAAFAAAAA8AAAAIAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABQAAAAcAAAAJAAAACQAAAAkAAAAJAAAACQAA - AAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAA - AAkAAAAJAAAACgAAAAwAAAAMAAAADQAAAA8AAAASAAAAFgAAABwAAAAuEBAQSTMzM21ISEiFHh4eXQAA - ACQAAAAXAAAAFQAAABkPDw9KhoaGvJ2dndKOjo7EeHh4rFpaWo4xMTFkBAQEKQAAABAAAAAOAAAADQAA - AAoAAAAGAAAABAAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAKAAAAFQAAAB4AAAAhAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAA - ACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAAACIAAAAiAAAAIgAA - ACIAAAAiAAAAIgAAACIAAAAiAgICMxwcHFdUVFSJjIyMvLCwsOG8vLzueXl5qQYGBjcAAAALAAAAAwEB - AQtERERlwcHB7tHR0f/R0dH+z8/P+8jIyPSZmZnAHx8fNgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAYAAAAYAAAAMQAAAETNzc2g0NDQpNDQ0KTQ0NCk0NDQpNDQ0KTQ0NCk0NDQpNDQ0KTQ0NCk0NDQpNDQ - 0KTQ0NCk0NDQpNDQ0KTQ0NCk0NDQpNDQ0KTQ0NCk0NDQpNDQ0KTQ0NCk0NDQpNDQ0KTQ0NCk0NDQpNDQ - 0KTIyMimhoaGvJ+fn+DDw8P4ycnJ/snJyf/Kysr+ubm58HNzc68YGBg4AAAAIQwMDC+Ghoalz8/P/dTU - 1P/W1tb/19fX/9fX1/+rq6vUJiYmPAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAjAAAASAAA - AGP4+Pj59/f3//f39//4+Pj/+Pj4//n5+f/5+fn/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//z8 - /P/8/Pz//Pz8//z8/P/9/f3//f39//39/f/9/f3//v7+//7+/v/+/v7//f39//z8/P/19fX/uLi4/7+/ - v//IyMj/ycnJ/8rKyv/Ly8v/zMzM/6+vr/6KiorbcXFxpnx8fKi5ubnj1NTU/tbW1v/Y2Nj/2dnZ/9nZ - 2f+urq7VLCwsPgAAAAMAAAAAAAAAAgQEBB4mJiZCEBAQKgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAoAAAAUQAAAHD39/f69vb2//f3 - 9//39/f/+Pj4//j4+P/5+fn/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8 - /P/9/f3//f39//39/f/9/f3//v7+//z8/P/9/f3//f39//z8/P/4+Pj/wcHB/7y8vP/Kysr/ysrK/8zM - zP/Nzc3/zs7O/87Ozv/Ly8v+zc3N+8/Pz/vT09P+19fX/9nZ2f/a2tr/29vb/9vb2/+4uLjfS0tLZw8P - DygAAAAPDg4OKmxsbISsrKzNi4uLpC4uLkkBAQEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/f69vb2//f39//39/f/+Pj4//j4 - +P/5+fn/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/9/f3//f39//39 - /f/8/Pz/7+/v/9jY2P/n5+f/+Pj4//v7+//19fX/wsLC/7i4uP/MzMz/zMzM/87Ozv/Pz8//0NDQ/9LS - 0v/T09P/1dXV/9bW1v/X19f/2dnZ/9ra2v/b29v/3d3d/93d3f/U1NT6uLi42YeHh6BERERleXl5lcfH - x+ne3t791dXV9qCgoL49PT1TBgYGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/f69vb2//b29v/29vb/9/f3//j4+P/5+fn/+vr6//r6 - +v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/9/f3//f39//z8/P/v7+//urq6/7Gx - sf+wsLD/yMjI/+fn5//Hx8f/rq6u/8TExP/Ozs7/zs7O/8/Pz//R0dH/0tLS/9TU1P/V1dX/19fX/9jY - 2P/a2tr/29vb/9zc3P/d3d3/39/f/+Hh4f/h4eH/4ODg/9jY2PvDw8Pn0tLS9eXl5f7q6ur/6urq/9/f - 3/yrq6vLQUFBWQEBARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL39/f69vb2/+Xl5f/BwcH/6urq//j4+P/5+fn/+vr6//r6+v/6+vr/+vr6//v7 - +//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/9/f3//Pz8//Ly8v++vr7/urq6/83Nzf/Ly8v/uLi4/6ur - q/+zs7P/zMzM/8/Pz//Pz8//0NDQ/9LS0v/T09P/1NTU/9bW1v/X19f/2dnZ/9ra2v/b29v/3Nzc/97e - 3v/g4OD/4eHh/+Pj4//k5OT/5eXl/+bm5v/m5ub/6Ojo/+vr6//s7Oz/7e3t/+7u7v/f39/9kZGRqxIS - EikAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL39/f69vb2/8jIyP+JiYn/0NDQ//j4+P/5+fn/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7 - +//8/Pz//Pz8//z8/P/9/f3/9vb2/8fHx/+2trb/y8vL/8fHx//Jycn/zMzM/83Nzf/Pz8//zs7O/8/P - z//Q0ND/0tLS/9PT0//V1dX/19fX/9ra2v/e3t7/4eHh/+Li4v/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Tk - 5P/l5eX/5+fn/+jo6P/q6ur/6+vr/+3t7f/u7u7/7+/v/+/v7//S0tLwaWlpfAQEBBcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/f69vb2/+/v - 7//Y2Nj/8PDw//j4+P/5+fn/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8 - /P/8/Pz/2dnZ/7Ozs//Ly8v/yMjI/8nJyf/Kysr/y8vL/87Ozv/Pz8//0NDQ/9HR0f/S0tL/1NTU/9jY - 2P/f39//5uXl/+Xh3v/f2tX/3NnW/9nX1P/Z1tT/29jX/+De3f/m5uX/6enp/+np6f/o6Oj/6enp/+rq - 6v/s7Oz/7e3t/+/v7//w8PD/8fHx/+bm5v2fn5+6JCQkNgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/f69vb2//f39//39/f/+Pj4//j4 - +P/5+fn/+vr6//r6+v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/7+/v/ycnJ/7u7 - u//Nzc3/ycnJ/8vLy//MzMz/zc3N/8/Pz//Q0ND/0dHR/9PT0//V1dX/3t7e/+no5//g18//wauV/6uQ - df+ypJX/t66m/7iwqP+3rqf/tKuj/7Oqof+3r6f/ysXA/+De3P/s6+v/7Ozs/+zs7P/t7e3/7+/v//Dw - 8P/y8vL/8fHx/9fX1/ZcXFyAAQEBFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/f69vb2//f39//39/f/+Pj4//j4+P/5+fn/+vr6//r6 - +v/6+vr/+vr6//v7+//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz/5OTk/7Ozs//Hx8f/zc3N/83N - zf/Ozs7/z8/P/9HR0f/S0tL/09PT/9jY2P/o6Oj/6uXg/7WYe/+QXi3/o39b/8e8sf/Y0sz/4NvW/+DY - 0P/RuqT/vZNo/654Qv+iazT/mWc1/5lzTf+6p5T/5eDd//Dw8P/w8PD/8fHx//Ly8v/09PT/9PT0/+fn - 5/2dnZ24IiIiOQAAAAUAAAABAAAABgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL39/f69vb2//b29v/z8/P/+Pj4//j4+P/5+fn/+vr6//r6+v/6+vr/+vr6//v7 - +//7+/v/+/v7//v7+//8/Pz//Pz8//z8/P/8/Pz/+/v7/97e3v+wsLD/zs7O/9DQ0P/Q0ND/0dHR/9PT - 0//U1NT/2dnZ/+vq6f/ZzL//lmc4/41PEv+3lnX/3NTO/+jm4//w7ez/5dK//8eQWP+yZBb/rloI/6tW - A/+oVAD/o1EA/5pNAf+NSAb/mGo9/9DBsv/x8fD/8/Pz//T09P/19fX/9/f3//f39/7b29v0eHh4jRgY - GEE4ODhNT09PZDc3N1YGBgYXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL39/f69vb2/9fX1v+lpaX/3d3d//j4+P/5+fn/+fn5//r6+v/6+vr/+vr6/+7u7v/v7+//5+fn//Hx - 8f/t7e3/6urq//T09P/s7Oz/8/Pz/+fn5/+srKz/ycnJ/9LS0v/S0tL/09PT/9XV1f/Z2dn/6Ofn/828 - q/+PWib/kEsG/72Xcv/i3Nb/7+7t//Pz8v/hx67/v307/7dqHv+3bCH/uG0j/7ZqHv+zYxT/r1wJ/6xW - A/+jUgH/k0oB/5BYIf/JtaH/9PPz//b29v/4+Pj/+fn5//r6+v/09PT+z8/P6Lu7u9PIyMjf1dXV7K6u - rsg4ODhHAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/f69vb2/9DQ - 0P+Pj4//1dXV//j4+P/5+fn/+fn5//r6+v/6+vr/+vr6/9HR0f/Z2dn/xsbG/8jIyP/Z2dn/v7+//9ra - 2v/Gxsb/ycnJ/7a2tv+bm5v/09PT/9PT0//U1NT/1dXV/9fX1//l5eX/0sW4/5FfLf+PSAH/sHY8/+La - 0v/t7e3/8PDv/+XVxv+6ciz/sF0K/7FgDv+0ZRf/t2sg/7pyKv+7dC7/uXAo/7VpG/+yYRD/qloK/5dN - Bf+QWSL/2Mq8//n4+P/6+vr/+/v7//z8/P/8/Pz/9PT0/vLy8v719fX/9fX1/9ra2vJwcHB+AAAAEQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/b69vb1//X19f/t7e3/9vb2//j4 - +P/5+fj/+fn5//r6+v/6+vr/+vr6/+rq6v/X19f/xcXF/+Xl5f/u7u7/z8/P/6+vr/+np6f/sbGx/5qa - mv+7u7v/1dXV/9TU1P/V1dX/19fX/97e3v/j3tr/lmk+/4xGAf+jVwz/1b2m/+rp6f/s7Oz/6+bh/8WN - Vv+uVwH/rlgD/69bCP+yYRD/tWga/7lwJv+9dzL/wH47/799PP+7dS7/t2wh/7BkGf+XUQv/mGk6/+3m - 4f/7+/v//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2/+rq6v2jo6O1ERERKgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL39/b69vb1//b29v/39/f/9/f3//j4+P/4+Pj/+fn5//r6 - +v/6+vr/+vr6//r6+v/19fX/x8fH//T09P/m5ub/wsLC/7u7u//Gxsb/xsbG/8rKyv/X19f/1dXV/9bW - 1v/Y2Nj/2tra/+fn5/+1m4L/h0cG/51OAP+6fED/5ODc/+jo6P/q6ur/3sq3/7JjFP+wWwf/sV8N/7Ji - Ef+0ZRf/tmgb/7hsIf+6cSn/vHcx/799Ov/Afjv/u3Qt/7VpHP+rXxP/jk0L/7yghP/49/X/+/v7//v7 - +//5+fn/+Pj4//f39//19fX/9fX1//Dw8P/Hx8fdPDw8UAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL39/b69vb1//b29v/39/f/9/f3//j4+P/4+Pj/+fn5//r6+v/6+vr/+vr6//r6 - +v/5+fn/8vLy//r6+v/u7u7/tbW1/9PT0//T09P/1NTU/9XV1f/W1tb/19fX/9jY2P/a2tr/39/f/97Y - 0/+MWij/k0gA/6hWBf/KpH7/5OTj/+bm5v/o5+b/0a2J/7FgD/+yYhL/tGYX/7VoG/+2aR3/tmkc/7Vn - Gf+1Zhj/tmkc/7hvJP+7dS//vHcx/7htI/+wYBD/nlMI/5VhLv/i2M//+fn5//n5+f/4+Pj/9vb2//X1 - 9f/09PT/8/Pz/+3t7f7Q0NDpV1dXbAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL29vb69fX1//Hx8f/l5eX/9PT0//f39//4+Pj/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+/v7//v7 - +//m5ub/tra2/9bW1v/T09P/1NTU/9bW1v/X19f/2dnZ/9ra2v/c3Nz/4uLh/72ql/+FRQb/n08A/69e - Dv/Tvaf/4uLi/+Xl5f/m5OP/y59z/7RlFv+2aBv/tmod/7ZpHP+1Zxj/tGQV/7JhEf+xYA7/sV4M/7Jg - Dv+1Zxn/uW4l/7pxKP+0Zhf/p1YE/41JBv/Apoz/9/b2//f39//29vb/9fX1//T09P/w8PD+5ubm+sfH - x92KioqYJiYmOwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL29vb69fX1/8zM - zP+VlZX/1dXV//f39//4+Pj/+fn4//n5+f/5+fn/+vr6//n5+f/5+fn/+/v7//v7+//a2tr/u7u7/9fX - 1//V1dX/1tbW/9jY2P/Z2dn/29vb/9zc3P/e3t7/4N7c/515Vv+NRgD/p1MA/7JlGP/WyLr/4eHh/+Pj - 4//l5OL/zaR8/7dqHv+2aR3/tWca/7RlFv+yYhH/sWAO/7BdCv+vWwf/rlkD/65YAf+vWwb/s2QU/7ht - Iv+4biP/r18O/5RKAf+jeVD/7uzp//X19f/09PT/8/Pz//Hx8f/m5ub8qqqqv0tLS2AREREkAAAABgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL29vb69fX1/93d3f+mpqb/4ODg//f3 - 9//4+Pj/+Pj4//n5+f/5+fn/+vr6/+np6f/V1dX/6enp//Pz8/+8vLz/vLy8/9nZ2f/W1tb/2NjY/9nZ - 2f/b29v/3d3d/97e3v/g4OD/2dTQ/4tcLv+VSQD/q1UA/7RqIP/Wy8D/39/f/+Li4v/k5OP/1bqe/7ds - If+1Zhj/s2MU/7JhEP+wXgv/sFsH/65ZA/+uVwH/rlcA/65XAP+uVwD/r1wH/7RmF/+5byb/tWoe/55S - B/+TXCb/49vU//T09P/z8/P/8fHx//Dw8P/j4+P4ZGRkfgAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL29vb69fX1//X19f/z8/P/9vb2//f39//4+Pj/+Pj4//n5 - +f/5+fn/+vr6/+np6f/c3Nz/6+vr/8zMzP+8vLz/q6ur/8zMzP/a2tr/3Nzc/9zc3P/d3d3/3t7e/+Dg - 4P/h4eH/z8e//4ROGf+bTAD/rFYA/7RrIf/Vyb3/39/f/+Hh4f/j4+P/3dLG/7x4Nv+zYxP/sWAO/7Bd - Cv+vWgX/rlcB/65XAP+uVwD/rlcA/65XAP+uVwD/rlcB/7FeC/+2aRz/uHAn/6VbE/+QVRr/1cm8//Ly - 8v/x8fH/8PDw/+7u7v/m5ub7e3t7jAgICBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL29vb69fX0//X19f/29vb/9vb2//f39//39/f/+Pj4//n5+f/5+fn/+vr6/97e - 3v/X19f/5+fn/9LS0v/X19f/s7Oz/7S0tP+xsbH/ycnJ/9/f3//f39//4ODg/+Li4v/h4eH/yb+0/39G - Df+dTgD/rlgE/7RoHP/TwrP/3d3d/+Dg4P/h4eH/4d7c/8ukff+yYxP/sFwJ/69aBf+uVwH/rlcA/65X - AP+uVwD/rlcA/65XAP+uVwD/rlcA/65aBP+zYxT/uG4l/6hjHf+RVRr/zb6v//Dw8P/v7+//7u7u/+3t - 7f/m5ub8i4uLoBISEi8AAAAPAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL29vb69PT0//X19f/29vb/9vb2//f39v/39/f/+Pj4//j4+P/5+fn/+fn5/+7u7v/j4+P/4ODg//T0 - 9P/6+vr/+Pj4//Hx8f/U1NT/tra2/97e3v/g4OD/4uLi/+Tk5P/i4uL/x72z/39FDf+eUAL/r1wJ/7Rm - Gf/Ns5r/3Nzc/97e3v/f39//4ODg/9zUzP+9f0L/sF0K/69aBf+vWQT/r1kE/65YA/+uWAH/rlcA/65X - AP+uVwD/rlcA/65XAf+xXgz/tWoe/6hmIv+TWiH/zb6v/+3t7f/u7u7/7e3t/+vr6//o6Oj+z8/P5JmZ - madiYmJvMDAwOgAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL29vb69PT0/+vr - 6//MzMz/7u7u//b29v/39/f/9/f3//j4+P/4+Pj/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+/v7//v7 - +//s7Oz/ubm5/97e3v/j4+P/5OTk/+Xl5f/k5OT/ysK6/4JOGv+cUQb/sF8O/7RlF//GmnD/2tnY/9vb - 2//d3d3/39/f/+Li4v/cz8H/x5Jd/8GAP//BgUD/wH49/756Nv+6cyv/tmkc/7JgD/+uWQT/rlcA/65X - AP+vWgf/smUY/6VkIv+WYi3/0se8/+zs7P/s7Oz/6+vr/+rq6v/p6en/5+fn/uTk5Pza2trwpaWlswIC - Ai0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL29vb69PT0/8PDw/+JiYn/zMzM//b2 - 9v/39/f/9/f3//j4+P/4+Pj/+fn5//n5+f/6+vr/+vr6//r6+v/6+vr/+/v7//r6+v/k5OT/tLS0/9zc - 3P/l5eX/5ubm/+fn5//m5ub/0c3J/4hcMP+WUAn/sGES/7VnGv+8fDv/1c3F/9zc3P/h4eH/5eXl/+fn - 5//p6en/5t/Z/9m6nP/Nm2n/y5Vf/8qSW//JkFf/xotQ/8OFR/++ejb/tmkd/7BcCP+uWQT/rWAS/59f - Hv+ZbD7/2tTO/+rq6v/r6+v/6enp/+jo6P/n5+f/5ubm/+Tk5P/k5OT+tLS0wwAAAC8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL29vb69PT0/+jo6P/Dw8P/6urq//b29v/39/b/9/f3//j4 - +P/4+Pj/+fn4//n5+f/6+vr/+vr6//r6+v/5+fn/8vLy/9bW1v+3t7f/xcXF/+Pj4//n5+f/6Ojo/+np - 6f/p6en/19XT/5Z2Vv+OTQz/rGAV/7ZqHf+7dS7/0Laa/+Df3v/i4uL/5OTk/+bm5v/o6Oj/6urq/+rn - 5P/cwKX/zpxq/82YZP/LlF7/yY9W/8aKTv/EhEb/wH47/7t0Lf+zZBb/plsQ/5dZG/+mhGH/4N3b/+np - 6f/p6en/5+fn/+bm5v/l5eX/5OTk/+Pj4//i4uL8pqamrwAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL29vX69PTz//T09P/19fT/9fX1//b29f/29vb/9/f3//f39//4+Pj/+Pj4//n5 - +f/5+fn/+vr6//r6+v/09PT/xsbG/7q6uv/X19f/5ubm/+jo6P/o6Oj/6urq/+vr6//s7Oz/39/f/7Gh - kf+ESxL/pF0Y/7dwKv/BgD//yJRg/9rPxf/g4OD/4+Pj/+Xl5f/n5+f/6urq/+vr6//m3NH/0qV4/86b - af/MlmH/yZBY/8aKTv/DhEX/wH47/713Mv+0bif/oV8c/5FYH/+6pZH/5OTk/+jo6P/n5+f/5ubm/+Xl - 5f/k5OT/4uLi/+Hh4f/g4OD5jIyMkwAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL19fX68/Pz//T09P/19fT/9fX1//X19f/29vb/9vb2//f39//39/f/+Pj4//j4+P/5+fn/+vr6//r6 - +v/u7u7/tbW1/9zc3P/n5+f/6Ojo/+np6f/q6ur/7Ozs/+3t7f/u7u7/6ejo/8vHw/+GWzD/l1ga/7Ny - Mf+/fT3/woJD/82lff/b1c//4ODg/+Pj4//l5eX/6Ojo/+rq6v/q5+X/1rGM/82ZZf/Kk1z/x41T/8SH - Sf/BgED/vno2/7lzLP+rZiL/lloe/5NoPf/Px7//5eXl/+fn5//l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Li - 4v/a2trva2trcgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL19fX68/Pz//T0 - 9P/29vX/9fX1//X19f/29vb/9vb2//f39//39/f/+Pj4//j4+P/5+fn/+fn5//r6+v/19fX/xMTE/9HR - 0f/o6Oj/6enp/+vr6//s7Oz/7u7u/+/v7//w8PD/8PDw/9zc3P+mkn//g1Ae/59iJ/+1czH/vns4/8GB - Qf/Lo3v/29TO/9/f3//i4uL/5OTk/+bm5v/n5+b/2sCn/8mRWf/Gi1D/xIZI/8GAP/++ejb/uXMt/65o - Iv+bWhn/hU4Y/66ZhP/d3Nv/5ubm/+Xl5f/k5OT/4+Pj/+Tk5PnJycnawcHB0sHBwdKtra26MjIyRQAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL19fX68/Py/93d3P+ysrL/5OTk//X1 - 9f/29vX/9vb2//f39v/39/f/9/f3//j4+P/4+Pj/+fn5//n5+f/5+fn/2dnZ/7y8vP/q6ur/6+vr/+3t - 7f/u7u7/7+/v//Hx8f/z8/P/9PT0/+7u7v/JxsP/i2pL/4ROGf+gYSH/sm4q/7p1L/+9ejf/xpZl/9TF - tf/c2db/3NTN/9rLvP/Wu6D/zaBz/8OERv/Afz7/vns3/7x2MP+3byj/q2Qe/5tYFP+HSw//km1I/9HN - yf/i4uL/5OTk/+Tk5P/i4uL/5OTk/sjIyNY2NjZXFxcXMxcXFzMUFBQsBAQEDgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL19fX68/Py/8rKyv+Ojo7/0dHR//T09P/19fX/9vb1//b2 - 9v/39/b/9/f3//j49//4+Pj/+fn5//n5+f/5+fn/7Ozs/7W1tf/i4uL/7e3t/+7u7v/v7+//8PDw//Pz - 8//09PT/9fX1//f39//l5eX/urKq/4ReOf+ESxL/nFoY/6tkHf+zaiH/t28l/7x7Of/CjVf/wIVK/79+ - Pf++ejb/vHcx/7t0Lf+6cir/t20k/7BnHf+lXRb/l1IO/4VHCP+FWCv/wbeu/97e3v/k5OT/4+Pj/+Li - 4v/h4eH/4eHh9pOTk5oEBAQeAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL19fX68vLy/+7u7v/b29r/7u7u//T09P/19fX/9fX1//b29v/29vb/9/f3//f3 - 9//4+Pj/+Pj4//n5+P/5+fn/9vb2/8nJyf/Hx8f/2tra/9bW1v/Ly8v/29vb//Pz8//29vb/9/f3//n5 - +f/4+Pj/3d3c/7Sqn/+AWDD/gUcO/5NQDv+fVw//p1wR/6xfEv+xYxX/s2YZ/7RnGv+0Zxr/s2Ya/7Bk - F/+sYBT/pVsQ/5xUC/+QSgb/gEIE/4JUJv+2qJr/2dnZ/+Pj4//j4+P/4uLi/+Dg4P/i4uL/1dXV5VJS - UmYAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL19fX68vLy//Pz8v/z8/P/9PTz//T09P/09PT/9fX1//b29f/29vb/9vb2//X19f/29vb/9vb2//f3 - 9//39/f/9/f3/+vr6/+8vLz/n5+f/8HBwf/Hx8f/sbGx/+fn5//39/f/+fn5//v7+//8/Pz/+Pj4/93d - 3f+4sar/hWNB/3lCDP+ERQb/j0kE/5ZMAv+cTwL/n1EE/6FTBf+hUwX/n1IE/5tPA/+WTAL/jkcB/4RC - AP95PgX/i2U//7uwpf/X19f/4uLi/+Li4v/h4eH/4ODg/97e3v/f39//4ODg9JKSkpsLCwspAAAAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL19fX68vLx//Ly - 8v/z8/P/9PTz//T08//09PT/9fX1//X19f/29vX/9vb2/8zMzP/R0dH/x8fH/8bGxv/Ly8v/wsLC/9TU - 1P/Jycn/wcHB/9fX1//i4uL/oqKi/7W1tf/w8PD/+/v7//z8/P/8/Pz/+/v7//f39//j4+P/xMG//52J - dv99VCv/dz8J/3w9AP+CQQD/h0MA/4pFAP+KRAD/iEMA/4NAAP99PQD/dz4G/35QI/+kjnn/yMTB/9nZ - 2f/i4uL/4uLi/+Hh4f/f39//3t7e/93d3f/c3Nz/3t7e/9vb2+x2dnaDAAAAGgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL19fT68vLx//Hx8f/o6Oj/8/Py//Pz - 8//09PT/9PT0//X19f/19fX/9vb2/9/f3//Z2dn/xcXF/9nZ2f/V1dX/xMTE/+Pj4//b29v/0dHR/8/P - z//W1tb/xsbG/6qqqv/l5eX/+/v7//v7+//6+vr/+fn5//j4+P/29vb/6+vr/9TT0/++uLP/o5KB/41t - Tv9+Uyj/e0ob/3lGFP95RhT/e0oa/39TKP+NbEz/ppOA/7+5s//S0dD/3t7e/+Li4v/h4eH/4ODg/9/f - 3//e3t7/3d3d/9vb2//a2tr/2dnZ/+Dg4P3CwsLNDAwMOgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL19fT68fHx/8/Pz/+goKD/2NjY//Pz8//09PP/9PT0//X1 - 9P/19fX/9fX1//T09P/s7Ov/7Ozs//X19f/s7Oz/xcXF//f39//l5eX/2dnZ/+Hh4f/v7+//ubm5/8vL - y//19fX/+/v7//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Dw8P/n5+f/2tnZ/8zKyf/BvLf/ubGq/7Sq - of+0qZ//ubGp/8G8t//KyMb/1dXU/93d3f/i4uL/4uLi/+Hh4f/g4OD/3t7e/9/f3//f39//29vb/9ra - 2v/Y2Nj/2tra/t7e3vOTk5OYBQUFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL09PT68fHw/9LS0v+VlZX/19fW//Ly8v/z8/P/9PTz//T09P/09PT/9fX1//b2 - 9f/29vb/9vb2//f39//09PT/4eHh//X19f/4+Pj/+Pj4//n5+f/n5+f/tLS0/+zs7P/6+vr/+vr6//n5 - +f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7u7u/+vr6//m5ub/4uLi/9/f3//e3t7/39/f/+Hh - 4f/j4+P/5OTk/+Pj4//i4uL/4eHh/9/f3//e3t7/39/f/+Xl5f/k5OT/4uLi/9ra2v/Z2dn+4eHh+bKy - srcnJyc9AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL09PT68fHw//Hx8P/w8O//8vLy//Pz8v/z8/P/9PTz//T09P/09PT/9fX0//X19f/29vb/9vb2//b2 - 9v/39/f/9/f3//j4+P/4+Pj/+fn4//j4+P/b29v/u7u7//Pz8//5+fn/+Pj4//f39//19fX/9fX1//T0 - 9P/y8vL/8fHx/+/v7//u7u7/7e3t/+zs7P/r6+v/6enp/+jo6P/n5+f/5ubm/+Xl5f/j4+P/4uLi/+Hh - 4f/g4OD/39/f/97e3v/j4+P/5OTk/7+/v/+wsLD/xcXF/+Li4v/m5ub7s7OzwTo6Ok4AAAAIAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL09PT68PDw//Hx - 8P/x8fH/8vLx//Ly8v/z8/L/8/Pz//T08//09PP/9PT0//X19f/19fX/9vb2//b29v/29vb/9/f3//f3 - 9//4+Pf/+Pj4//j4+P/v7+//vr6+/8nJyf/x8fH/9vb2//X19f/19fX/6+vr/+Dg4P/u7u7/8fHx/+/v - 7//t7e3/6+vr/+rq6v/p6en/6Ojo/+fn5//m5ub/5OTk/+Pj4//i4uL/4eHh/+Dg4P/e3t7/3d3d/+Li - 4v/g4OD/tbW1/9HR0f/o6Oj/0dHR/7m5uf+FhYW1NDQ0WAEBAREAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL09PT68PDv//Dw8P/x8fD/8vLx//Ly - 8f/y8vL/8/Py//Pz8//z8/P/9PT0/+vr6//j4+P/7Ozs/+fn5//w8PD/7e3t//T09P/q6un/4ODg/9/f - 3//p6en/39/f/7q6uv+5ubn/6enp//T09P/c3Nz/sLCw/7W1tf+urq7/z8/P/+3t7f/t7e3/6urq/+np - 6f/n5+f/5ubm/+Xl5f/k5OT/4+Pj/+Pj4//i4uL/39/f/97e3v/d3d3/3Nzc/+Dg4P/S0tL/w8PD//f3 - 9//7+/v/+fn5/+vr6/8dHR1VAAAAHAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL09PT68PDv/+vr6//b29v/7u7u//Ly8f/y8vH/8vLy//Pz - 8v/z8/P/9PTz/9HR0P/f39//x8fH/9/f3v/S0tL/zs7O/97e3v/MzMz/0tLS/8HBwf++vr7/2trZ/7+/ - v/+2trb/srKy/8nJyf+dnZ3/uLi4/8vLy/+4uLj/np6e/9jY2P/s7Oz/6Ojo/+fn5//m5ub/5ubm/+vr - 6//q6ur/6enp/+fn5//q6ur/4eHh/9zc3P/b29v/2tra/93d3f/b29v/v7+///j4+P/7+/v/+/v7//39 - /f8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHL09PT67+/u/8TExP+Pj4//zs7O//Hx8P/x8fH/8vLx//Ly8v/z8/L/8/Pz/+Tk - 5P/W1tb/2tra/83Nzf/FxcX/1dXV/9XV1f/Nzc3/4ODg/9bW1v/S0tL/zc3N/+Dg4P/U1NT/vr6+/56e - nv/ExMT/zMzM/9bW1v/Hx8f/sLCw/9PT0//r6+v/5+fn/+bm5v/k5OT/6Ojo/9jY2P+2trb/uLi4/7Oz - s//Kysr/5+fn/9vb2//Z2dn/2dnZ/9zc3P/j4+P/u7u7//X19f/7+/v/+/v7//39/f8lJSU9AAAAEwAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHL09PP67+/u/+Dg4P+zs7P/4eHh//Dw8P/x8fH/8vLx//Ly8v/y8vL/8/Py//Pz8//09PP/9PT0//T0 - 9P/19fT/9fX1//b29f/29vb/9vb2//f39//39/f/9/f3//j4+P/4+Pj/9PT0/9bW1v/v7+//+Pj4//f3 - 9//W1tb/wsLC/9jY2P/r6+v/5eXl/+Tk5P/j4+P/6urq/8LCwv/T09P/7u7u/+np6f+8vLz/3Nzc/+Dg - 4P/f39//5eXl/+Xl5f/MzMz/vb29//b29v/7+/v/+/v7//39/f8lJSU9AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHL09PP67+/u/+/v - 7v/v7+7/8PDv//Dw8P/x8fD/8fHx//Ly8f/y8vH/8vLy//Pz8v/z8/P/9PTz//T09P/09PT/9fX0//X1 - 9f/19fX/9vb2//b29v/39/b/9/f3//f39//39/f/+Pj4//f39//4+Pj/+fn5//n5+f/39/f/z8/P/8vL - y//o6Oj/6+vr/+rq6v/q6ur/5ubm/729vf/v7+//+vr6//j4+P/Z2dn/v7+//+Tk5P/Y2Nj/w8PD/7u7 - u//Ly8v/6urq//r6+v/6+vr/+vr6//39/f8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLz8/P67u7t/+/v7v/v7+7/8PDv//Dw - 7//w8PD/8fHw//Hx8f/y8vH/8vLx//Ly8v/z8/L/8/Pz//Pz8//09PT/9PT0//X19P/19fX/9fX1//b2 - 9f/29vb/9vb2//f39v/39/f/9/f3//j49//4+Pj/+Pj4//j4+P/4+Pj/6urq/8fHx/++vr7/vLy8/8PD - w//MzMz/w8PD/8/Pz//4+Pj/+vr6//r6+v/z8/P/ysrK/729vf/Hx8f/2dnZ/+vr6//29vb/+vr6//r6 - +v/6+vr/+vr6//z8/P8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLz8/P67u7t/+7u7v/u7u3/7+/v/+/v7//w8O//8PDw//Hx - 8P/x8fD/8vLx//Ly8f/y8vL/8/Py//Pz8//z8/P/9PTz//T09P/09PT/9fX0//X19f/29vX/9vb2//b2 - 9v/29vb/9fX0//f39//39/f/9/f3//j4+P/4+Pj/+Pj4//X19f/v7+//5eXl/93d3f/S0tL/1NTU/+/v - 7//6+vr/+vr6//r6+v/4+Pj/9PT0/+/v7//29vb/+fn5//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//z8 - /P8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHLz8/P67u7t/+Hh4f/CwsL/5ubm/+/v7//w8O//8PDv//Hx8P/x8fD/8fHx/9zc - 2//e3t7/0NDQ/+Hh4f/a2tr/7Ozr/9ra2v/e3t3/2tra/+jo6P/e3t7/9PT0//b29v/s7Oz/zs7O/+Tk - 5P/c3Nz/3t7e/97e3v/39/f/3t7e/+bm5v/f39//6Ojo/+np6f/i4uL/4eHh/+Dg4P/X19f/6+vr/9fX - 1//c3Nz/39/f//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr6//z8/P8lJSU9AAAAEwAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHLz8/L67e3s/8PDw/+Ghob/zMzM/+7u7v/v7+//8PDv//Dw7//w8PD/8fHw/8/Pzv/Y2Nf/xcXE/8HB - wf/a2tr/y8vK/8PDwv/Ozs7/29vb/8rKyv/FxcX/2tra//T09P/09PP/yMjI/8nJyf/b29v/xMTE/+fn - 5//29vb/1NTU/9XV1f/Kysr/zs7O/8rKyv+7u7v/z8/P/8vLy//Gxsb/2dnZ/8TExP/z8/P/9/f3//n5 - +f/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+fn5//z8/P8lJSU9AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLz8/L67e3s/+fn - 5v/S0tH/6Ojn/+7u7v/v7+7/7+/u//Dw7//w8O//8PDw/+jo6P/U1NT/w8PD/+fn5v/R0dD/1tbW/8jI - yP/s7Ov/1tbV/87Ozv/j4+P/39/f/9zc3P/z8/P/09PT/+zs7P/j4+P/zMzM/9HR0f/s7Oz/6+vr/9fX - 1//X19f/7e3t/+Dg4P/R0dH/1NTU/+np6f/a2tr/3Nzc/8LCwv/e3t7/8/Pz//n5+f/5+fn/+fn5//n5 - +f/5+fn/+fn5//n5+f/5+fn/+fn4//z8/P8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLz8/L67Ozr/+3t7P/t7ez/7u7t/+7u - 7f/u7u7/7+/u/+/v7v/v7+//8PDv//Dw8P/r6+v/xMTE/+7u7f/x8fH/8fHw/8rKyv/n5+f/8/Py//Pz - 8//09PP/9PT0//T09P/09PT/9fX0//X19f/s7Ov/6urq/+bm5v/z8/P/9vb2//b29v/39/b/9/f3//f3 - 9//39/f/9/f3//f39//39/f/9/f3/+fn5//t7e3/9vb2//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4 - +P/4+Pj/+Pj4//v7+/8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLy8vL67Ozr/+zs6//t7ez/7e3s/+3t7f/u7u3/7u7t/+/v - 7v/v7+7/7+/v//Dw7//w8PD/8PDv//Hx8P/x8fH/8fHx//Ly8f/y8vH/8vLy//Pz8v/z8/P/8/Pz//T0 - 8//09PT/9PT0//T09P/19fT/9fX1//X19f/19fX/9vb1//b29f/29vb/9vb2//b29v/29vb/9/f2//f3 - 9//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//v7 - +/8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHLy8vL67Ozr/+3t7P/v7+7/7u7t/+3t7P/u7u3/7u7t/+/v7v/v7+7/7+/u//Dw - 7//w8O//8PDw//Hx8P/x8fD/8fHx//Ly8f/y8vH/8vLy//Pz8v/z8/L/8/Pz//Pz8//09PP/9PT0//T0 - 9P/09PP/8vLy//X19f/19fX/9fX1//X19f/29vX/9vb2//b29v/29vb/9vb2//b29v/39/b/9/f2//f3 - 9//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//v7+/8lJSU9AAAAEwAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHLy8vL66+vq/9PT0/+mpqb/29va/+3t7P/t7ez/7u7t/+7u7f/u7u3/7+/u/+/v7v/v7+//8PDv//Dw - 7//w8PD/8fHw//Hx8P/x8fH/8vLx//Ly8f/y8vL/8/Py//Pz8v/z8/P/8/Pz//T08//v7+7/09PT//T0 - 9P/w8O//7e3t//X19P/19fX/9fX1//X19f/29vX/9vb1//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 - 9v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//v7+v8lJSU9AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLy8vL66+vq/8vL - y/+RkZH/0NDQ/+zs6//t7ez/7e3s/+7u7f/u7u3/7u7t/9fX1v/Ly8r/29vb/8/Pzv/a2tn/1tbW/+Tk - 4//b29v/zMzL/9zc2//Q0ND/0tLS/97e3f/Pz8//7e3s/9vb2//X19b/vr6+/93d3f/b29v/yMjI/9PT - 0v/W1tb/0dHR/8/Pz//b29v/3d3c/8/Pz//i4uL/9fX1//X19f/29vX/9vb1//b29f/29vX/9vb2//b2 - 9v/29vb/9vb2//b29v/29vX/9vb1//r6+v8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLy8vH66urp/+np6P/e3t7/6urp/+zs - 6//s7Ov/7e3s/+3t7P/t7ez/7u7t/9nZ2f/b29r/4ODf/9LS0f/IyMj/w8PD/8nJyf/Pz8//zMzM/9PT - 0v+8vLz/wcHA/8XFxf/U1NT/4ODf/9XV1f/j4+P/wsLC/97e3f/V1dX/xcXF/8fHx//U1NT/zc3M/8fH - x//Nzc3/wMDA/8LCwv/g4OD/7+/v//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1 - 9f/19fX/9fX1//r6+v8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLy8fH66uno/+rq6f/r6+r/6+vq/+zs6//s7Ov/7Ozr/+3t - 7P/t7ez/7e3s/+Li4f/R0dH/7+/u/93d3P/W1tX/6urp/+Pj4//Y2Nf/2tra/+bm5f/m5ub/2tra/+Hh - 4P/i4uL/8vLx/+7u7v/e3t7/y8vK/8/Pzv/o6Oj/3d3c/+rq6f/s7Ov/5OTk/+zs6//m5ub/39/f/9vb - 2v/z8/L/9PTz//X19P/19fT/9fX0//X19P/19fT/9fX0//X19f/19fX/9fX1//X19P/19fT/9fX0//r6 - +v8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHLx8fH66eno/+rp6P/q6un/6+vq/+vr6v/r6+r/7Ozr/+zs6//s7Oz/7e3s/+np - 6P/h4eD/7u7t/+7u7f/u7u7/7+/u/+/v7v/v7+//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHx//Ly - 8f/v7+7/7+/v//Ly8f/y8vL/8/Py//Pz8v/z8/L/8/Pz//Pz8//z8/P/8/Pz//T08//09PP/9PTz//T0 - 8//09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//n5+f8lJSU9AAAAEwAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHLx8fD66ejn/+fn5v/e3t3/6eno/+vq6f/r6+r/6+vq/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3t/+7u - 7f/u7u3/7u7u/+/v7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw8P/w8PD/8fHw//Hx8P/x8fH/8fHx//Ly - 8f/y8vH/8vLx//Ly8v/y8vL/8vLy//Pz8v/z8/L/8/Py//Pz8//z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz - 8//z8/P/9PTz//T08//09PP/9PTz//T08//z8/P/8/Pz//n5+f8lJSU9AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLx8fD66Ojn/8jI - yP+Xl5f/0tLS/+rq6f/q6un/6+vq/+vr6v/r6+r/7Ozr/+zs6//t7ez/7e3s/+3t7P/t7e3/7u7t/+7u - 7f/u7u3/7+/u/+/v7v/v7+7/7+/v//Dw7//w8O//8PDv//Dw8P/x8fD/8fHw//Hx8P/x8fH/8fHx//Ly - 8f/y8vH/8vLx//Ly8f/y8vL/8vLy//Ly8v/y8vL/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz - 8v/z8/L/8/Py//Pz8v/z8/L/8/Py//n5+f8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLx8PD65+fm/9PT0/+hoaH/19fW/+np - 6P/q6un/6urp/+vq6f/r6+r/6+vq/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+7u7f/u7u3/7u7t/+7u - 7v/v7+7/7+/u/+/v7v/v7+//8PDv//Dw7//w8O//8PDv//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx - 8f/x8fH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly - 8v/y8vL/8vLy//n5+f8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAsAAAApAAAAUgAAAHLw8PD65+bl/+fn5v/o5+b/6Ojn/+no5//p6ej/6uno/+rq - 6f/q6un/6+vq/+vr6v/s7Ov/7Ozr/+zs6//t7ez/7e3s/+3t7P/t7e3/7u7t/+7u7f/u7u7/7+/u/+/v - 7v/v7+7/7+/v/+/v7//w8O//8PDv//Dw7//w8PD/8PDw//Hx8P/x8fD/8fHw//Hx8P/x8fH/8fHx//Hx - 8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//Ly8f/y8vH/8vLx//n5 - +P8lJSU9AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAsAAAApAAAAUgAAAHLw8PD65ubl/+fm5f/n5+b/6Ofm/+jo5//p6Of/6eno/+np6P/q6un/6urp/+vr - 6v/r6+r/7Ozr/+zs6//s7Ov/7Ozr/+3t7P/t7ez/7e3s/+3t7f/u7u3/7u7t/+7u7f/u7u7/7+/u/+/v - 7v/v7+7/7+/v/+/v7//w8O//8PDv//Dw7//w8O//8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx - 8P/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//j4+P8lJSU9AAAAEwAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAApAAAAUgAA - AHLw8O/65uXk/+bl5P/n5uX/5+fm/+jn5v/o6Of/6Ojn/+np6P/p6ej/6urp/+rq6f/q6un/6+vq/+vr - 6v/s7Ov/7Ozr/+zs6//s7Ov/7e3s/+3t7P/t7ez/7e3t/+7u7f/u7u3/7u7t/+7u7v/u7u7/7+/u/+/v - 7v/v7+7/7+/v/+/v7//v7+//8PDv//Dw7//w8O//8PDv//Dw7//w8PD/8PDw//Dw8P/w8PD/8fHw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHw//j4+P8lJSU9AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAoAAAAUQAAAHDy8vH65+fm/+fn - 5v/o5+b/6Ojn/+no5//p6ej/6eno/+rp6f/q6un/6+rp/+vr6v/r6+r/7Ozr/+zs6//s7Ov/7e3s/+3t - 7P/t7ez/7e3t/+7u7f/u7u3/7u7t/+7u7v/v7+7/7+/u/+/v7v/v7+7/7+/v//Dw7//w8O//8PDv//Dw - 7//w8PD/8PDw//Dw8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/x8fD/8fHx//Hx8f/x8fH/8fHx//Hx - 8f/x8fH/8fHx//Hx8f/x8fH/8fHx//n5+f8lJSU8AAAAEgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAkAAAASQAAAGWqqqqura2tsa2trbGtra2xra2tsa2t - rbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2t - rbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2t - rbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2trbGtra2xra2tsa2t - rbGtra2xsLCwrbu7u6MUFBQzAAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAYAAAAZAAAAMwAAAEYAAABOAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAA - AE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAA - AE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAA - AE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAATwAAAE8AAABPAAAASgAA - ADwAAAAiAAAACwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAMAAAAMAAAAGAAAACEAAAAlAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA - ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA - ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAA - ACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAmAAAAJgAAACYAAAAlAAAAIwAAABwAAAAQAAAABQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAABgAA - AAkAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAA - AAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAA - AAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAA - AAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACQAAAAcAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD////wAAAAAA8AAAD////wAAAAAA8AAAD8AAAAAAAAAH8AAAD4AAAAAAAAf/8AAAD4AAAAAAAAd/8A - AAD4AAAAAAAAQf8AAAD4AAAAAAAAAP8AAAD4AAAAAAAAAH8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8A - AAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAH8AAAD4AAAAAAAAAAcAAAD4AAAAAAAAAAMA - AAD4AAAAAAAAAAEAAAD4AAAAAAAAAAEAAAD4AAAAAAAAAAEAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAAAA - AAD4AAAAAAAAAAAAAAD4AAAAAAAAAAEAAAD4AAAAAAAAAAcAAAD4AAAAAAAAAAcAAAD4AAAAAAAAAAEA - AAD4AAAAAAAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAAAA - AAD4AAAAAAAAAAAAAAD4AAAAAAAAAAAAAAD4AAAAAAAAAAEAAAD4AAAAAAAAAAMAAAD4AAAAAAAAAB8A - AAD4AAAAAAAAAA8AAAD4AAAAAAAAAA8AAAD4AAAAAAAAAAcAAAD4AAAAAAAAAA8AAAD4AAAAAAAAAA8A - AAD4AAAAAAAAAB8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8A - AAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8A - AAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8A - AAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8A - AAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8A - AAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAD8AAAD4AAAAAAAAAH8A - AAD8AAAAAAAAAH8AAAD///////////8AAAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAARAAAAGQAAACIAAAAnAAAALgAAADIAAAA3AAAAOwAA - AD8AAAA/AAAAQAAAAEEBAQFJBgYGUAAAAEkAAABCAAAAOwAAADcAAAAzAAAALwAAACgAAAAiAAAAGQAA - ABIAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAEAAAABgAAAAYAAAAGAAAABgAA - AAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAALAAAADwAAABIAAAAVAAAAGwAA - ACEEBAQ2ICAgVS8vL2YKCgo5AAAAIwAAACQ8PDxneXl5qm1tbZtQUFB+Hh4eSQEBASIAAAAZAAAAFgAA - ABAAAAAMAAAACQAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAABMAAAAmkZGRTJOT - k02Tk5NNk5OTTZOTk02Tk5NNk5OTTZOTk02Tk5NNk5OTTZOTk02Tk5NNk5OTTZOTk02Tk5NNk5OTTZOT - k02Tk5NNeXl5VGFhYXiTk5O6srKy4rS0tOJubm5/DQ0NFQYGBhOTk5Oizs7O+tLS0v3Ozs75j4+Plx8f - HxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAA - ACoAAABQ7e3t3e3t7eDu7u7g7u7u4O/v7+Dv7+/g7+/v4PDw8ODw8PDg8fHx4PHx8eDx8fHg8vLy4PLy - 8uDy8vLg8vLy4PLy8uDx8fHg1NTU47GxsfDHx8f9ycnJ/snJyf2tra3rd3d3lmtra326urre1NTU/tfX - 1//Y2Nj/nJycoiYmJhYAAAAAAwMDDSAgICYMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAADUAAABm9vb2+/b29v/39/f/+Pj4//n5+f/6+vr/+vr6//r6+v/7+/v/+/v7//z8 - /P/8/Pz//f39//39/f/7+/v/8vLy//f39//7+/v/5eXl/7y8vP/Kysr/zMzM/87Ozv/Pz8//zs7O/dDQ - 0PzV1dX+2NjY/9ra2v/b29v/s7OzyW9vb2RCQkI3iYmJiLi4uNOKioqKKysrGgYGBgEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9vb2+/b29v/29vb/9/f3//n5+f/6+vr/+vr6//r6 - +v/7+/v/+/v7//z8/P/8/Pz//f39//z8/P/m5ub/wsLC/8nJyf/m5ub/y8vL/7y8vP/Nzc3/zs7O/9DQ - 0P/S0tL/1dXV/9fX1//Z2dn/29vb/93d3f/f39//2dnZ+cnJyeOysrLE0tLS6+Xl5f3V1dXuiYmJgi0t - LRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9vb2++Tk5P+/v7//8PDw//n5 - +f/6+vr/+vr6//r6+v/7+/v/+/v7//z8/P/8/Pz/+/v7/+vr6/+8vLz/x8fH/8bGxv+5ubn/wcHB/87O - zv/Pz8//0dHR/9TU1P/W1tb/2tra/9zc3P/d3d3/39/f/+Hh4f/i4uL/5OTk/+bm5v/n5+f/6urq/+3t - 7f/u7u7/xsbG2WFhYUsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9vb2++jo - 6P/Kysr/8fHx//n5+f/6+vr/+vr6//r6+v/7+/v/+/v7//z8/P/8/Pz/8/Pz/8fHx//FxcX/yMjI/8rK - yv/MzMz/z8/P/9DQ0P/S0tL/1dXV/93d3f/h393/3tvY/9za2P/c2tn/397d/+Xl5f/n5+f/5+fn/+np - 6f/r6+v/7e3t/+/v7//r6+v+oqKioTo6OiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn9vb2+/b29v/39/f/+Pj4//n5+f/6+vr/+vr6//r6+v/7+/v/+/v7//z8/P/8/Pz/7e3t/8DA - wP/Kysr/y8vL/83Nzf/Pz8//0dHR/9PT0//d3dz/29PM/8Cokf+1nYb/wLas/8W9tf+8rZ7/s5yF/7Oc - hv/Ds6P/4NrW/+zr6//u7u7/8PDw//Ly8v/j4+P6bGxsbREREQwAAAAAAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn9vb2+/b29v/19fX/+Pj4//n5+f/6+vr/+vr6//r6+v/7+/v/+/v7//z8 - /P/8/Pz/+fn5/9vb2/+/v7//zs7O/8/Pz//R0dH/1NTU/+Df3//Pvq3/onVI/7SUdf/WzcT/5t7Y/9a3 - l/+5ejv/rmUd/6NaEf+bWRf/o3VJ/8y7qv/x8fD/8/Pz//X19f/z8/P+tra2u0RERENAQEA5Pj4+PgYG - BgoAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9vb2+9/f3/+xsbH/7u7u//n5+f/5+fn/+vr6/+vr - 6//j4+P/4ODg/+Li4v/m5ub/4eHh/9vb2/+ysrL/0NDQ/9PT0//V1dX/3tzb/8axnf+SVRn/uZFp/+jm - 4//u6ub/y5dl/7ZqHv+2ah//t2wi/7RmGf+wXg3/o1QF/5VSEf/HsJn/8vDv//n5+f/6+vr/7u7u+dPT - 0+bb29vsysrK305OTj4AAAACAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9vb1++3t7P/X19f/8/Pz//n5 - +P/5+fn/+vr6/+np6f/R0dH/09PT/93d3f/BwcH/s7Oz/6qqqv+8vLz/09PT/9XV1f/Z2dn/0MK1/5dh - LP+rbTH/3c/B/+zr6v/Zu57/sF0M/69bCP+zZBX/uG4j/7x3Mv+8dzL/tmsg/6tfFP+cZS7/2su8//v7 - +//7+/v/+vr6/vf39/729vb/6urq+4mJiXcODg4LAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9vb1+/b2 - 9f/39/f/9/f3//j4+P/5+fn/+vr6//r6+v/r6+v/6+vr/9ra2v/BwcH/ysrK/8zMzP/W1tb/1tbW/9nZ - 2f/h397/nXBE/5lNAv/LpoL/5uXk/+Tb0/+/gUT/sV4M/7JjE/+1Zxn/tmkd/7huJf+7di//vXk0/7dt - I/+kWQ//pXZI//Px7v/6+vr/+Pj4//b29v/09PT/8PDw/rS0tLM9PT0iAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn9fX1+/Pz8//u7u7/9vb2//j4+P/5+fn/+vr6//r6+v/5+fn/+fn5/9fX1//Kysr/09PT/9XV - 1f/X19f/2dnZ/93d3P/Qxrz/jUwL/6ZWB//Ww7H/5OTk/97PwP+7eDX/tGYZ/7VoG/+1Zhj/s2MU/7Jh - Ef+zYxP/t20j/7lwJ/+tXw//llIO/9rMvv/39/f/9vb2//T09P/v7+/93Nzc7pWVlZA0NDQdAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn9fX1+93d3f+vr6//7Ozs//j4+P/4+Pj/+fn5//X19f/v7+//9/f3/8nJ - yf/Ozs7/1dXV/9fX1//a2tr/3Nzc/97d3P+uk3j/l0sA/69gEf/Z0Mj/4eHh/93RxP+/gEH/tWca/7Nk - Ff+xXw3/r1wI/65ZA/+uVwH/r1wH/7RnGf+1ah7/n1QI/7eWd//x7+7/8/Pz//Hx8f/R0dHfcnJyZw8P - DxEAAAABAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9fX1++/v7//g4OD/9PT0//j4+P/4+Pj/+fn5/+7u - 7v/f39//3t7e/7i4uP/FxcX/2dnZ/9ra2v/c3Nz/3t7e/9vZ1/+felb/n04A/7FjFf/Y0Mj/4ODg/+Da - 1P/FkFz/s2MT/7FfDf+vWgX/rlcB/65XAP+uVwD/rlcA/7BdCv+3bCD/qV8W/6l/Vf/q5uP/8fHx/+/v - 7//MzMzTXV1dOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9fX1+/T09P/29vb/9vb2//f3 - 9//4+Pj/+fn5/+rq6v/e3t7/39/f/9ra2v/IyMj/vr6+/9XV1f/f39//4uLi/9nV0v+XbUT/olIC/7Ji - E//Ux7v/3t7e/+Df3//Wwq7/s2ca/69aBv+uVwH/rlcB/65XAP+uVwD/rlcA/65YAf+zZRf/rWYg/6V5 - Tf/j3tn/7u7u/+zs7P/V1dXliIiIdkZGRiYfHx8JAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9fX1+/Dw - 8P/h4eH/9PT0//f39//39/f/+Pj4//f39//y8vL/9fX1//r6+v/4+Pj/1dXV/9HR0f/i4uL/5OTk/9rX - 1P+Zckv/olUH/7JiE//OtJz/29vb/97e3v/f3tz/y6N6/7x3Mv+6cyv/uW8m/7VnGf+xXwz/rlcB/65X - AP+wXw7/qmUf/6iAWP/i3tr/7Ozs/+rq6v/l5eX71tbW5re3t7FkZGREAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn9fX1+9vb2/+vr6//6+vr//f39v/39/f/+Pj4//n5+P/6+vr/+vr6//n5+f/x8fH/y8vL/9LS - 0v/m5ub/5+fn/+Df3v+kiGz/nFQM/7NlGP/DkmH/2dXP/+Li4v/l5eX/6Obl/+HRwv/QonT/y5Vf/8iP - Vv/FiEz/vXg0/7VoGv+uXQz/oV0Z/7KUd//l4+H/6enp/+fn5//l5eX/5OTk/9XV1ed5eXlbAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn9fX0+/Hx8f/o6Oj/9PTz//b29v/39/f/+Pj4//j4+P/5+fn/+vr6/+rq - 6v/Jycn/0dHR/+Li4v/o6Oj/6urq/+bl5f+5q5z/kVES/7FoIP/Ch0z/1sKv/+Hh4f/k5OT/6Ojo/+rp - 6f/cwqj/zpxr/8qTXf/Hi1H/woJB/714M/+uZh7/mFob/8OxoP/m5uX/5+fn/+Xl5f/j4+P/4uLi/87O - ztpxcXFEAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9PT0+/Pz8//19fT/9fX1//b29v/29vb/9/f3//j4 - +P/5+fn/+fn5/97e3v/Ozs7/5+fn/+np6f/r6+v/7e3t/+3t7f/Z19X/kGU6/6JkJ/+9ezv/xpBb/9jM - v//g39//5OTk/+fn5//j1sr/z6By/8eOVf/Ehkj/vns5/7dyLP+eXR3/mGxB/9nV0v/l5eX/5OTk/+Tk - 5P3a2trx2NjY77i4uLRRUVEmAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9PT0++np6P/T09P/8fHx//b2 - 9f/29vb/9/f3//f39//4+Pj/+fn5/+vr6//IyMj/6enp/+vr6//t7e3/7+/v//Ly8v/r6+v/q5iG/4tY - J/+rain/unYy/8WTYf/Uwa//3tvY/97Vzf/Yv6b/yZNf/8GBQf++ezf/tm8p/6ZhHP+NVh7/sp2J/+Hh - 4f/k5OT/4uLi/tjY2OuIiIh5iYmJZ25ubkciIiILAAAAAAAAAAAAAAAAAAAABwAAADYAAABn9PTz+9/f - 3/+4uLj/6+vr//X19f/19fX/9vb2//f39//4+Pj/+Pj4//X19f/MzMz/3d3d/+bm5v/k5OT/7+/v//X1 - 9f/39/f/3t3b/6SPev+IUBn/nVoW/65lHP+0bif/vH0+/7t3NP+6civ/t28m/7NqIP+rYhn/mVMO/4dL - D/+mjXT/2NXT/+Pj4//h4eH/4ODg+q2trasDAwMQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn8/Pz+/Hx8f/t7ez/8/Pz//T09P/19fX/9vb2//X19f/29vb/9/f3//f39//n5+f/u7u7/8DA - wP/FxcX/3Nzc//f39//5+fn/9vb2/9nX1f+agGb/gk0Y/5BMCP+bUQf/o1YJ/6ZZC/+mWQv/o1YK/5pQ - B/+PSQT/gkkS/51+YP/Sz8z/4eHh/+Hh4f/f39//3t7e+aysrKsJCQkUAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn8/Pz+/Hx8f/w8PD/8/Py//T09P/09PT/9fX1/97e3v/Pz8//ysrK/8rK - yv/R0dH/zMzM/8/Pz//Ozs7/sLCw//Hx8f/7+/v/+vr6//j4+P/h4OD/urCn/45sS/+DUSH/gUYL/4NF - B/+ERAf/gkYL/4NRIP+Pakb/vLGn/9fW1v/h4eH/4ODg/97e3v/c3Nz/29vb/9zc3PaIiIh0BgYGDAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8/Py++Li4f/FxcX/7Ozs//T08//09PT/9fX1/+/v - 7//j4+P/5+fn/9nZ2f/h4eH/3d3d/9nZ2f/Y2Nj/v7+///Pz8//6+vr/+Pj4//f39//z8/P/6unp/9PQ - zf+8sqn/qJWD/6GKdP+hinP/qJWC/7qwpv/Oy8f/3d3d/+Hh4f/f39//3t7e/93d3f/a2tr/2NjY/tzc - 3PmVlZV+CAgIDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8vLy++Pj4v/CwsH/7Ozr//Pz - 8//09PP/9PT0//X19P/29vb/9vb2//Dw8P/x8fH/+Pj4//j4+P/U1NT/29vb//n5+f/4+Pj/9vb2//X1 - 9f/y8vL/8PDw/+7u7v/s7Oz/5ubm/+Li4v/h4eH/4uLi/+Pj4//i4uL/4ODg/9/f3//g4OD/29vb/9TU - 1P/b29v/2tra9bW1ta8jIyMdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8vLy+/Dw - 8P/x8fD/8vLx//Pz8v/z8/P/9PTz//T09P/19fX/9vb2//b29v/39/f/+Pj3//j4+P/Z2dn/zs7O//T0 - 9P/29vb/8vLy/+np6f/v7+//7+/v/+zs7P/r6+v/6enp/+fn5//l5eX/5OTk/+Li4v/g4OD/3t7e/9/f - 3//X19f/yMjI/9LS0v/IyMj/oKCgsVlZWUEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn8vLy++7u7v/r6+v/8fHw//Ly8f/y8vL/8/Pz/+jo5//g4OD/4uLi/+Tk5P/p6en/3t7d/9fX - 1//b29v/xsbG/8LCwv/g4OD/wMDA/7m5uf+1tbX/2NjY/+vr6//o6Oj/5ubm/+bm5v/l5eX/5OTk/+Pj - 4//e3t7/29vb/93d3f/Ozs7/5eXl//r6+v/z8/P/GhoaOwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn8vLy+9vb2v+4uLj/6eno//Hx8f/y8vH/8/Py/+Tk5P/X19f/09PS/8zM - zP/W1tb/0dHR/9PT0//Nzc3/09PT/8TExP+wsLD/u7u7/83Nzf+6urr/xsbG/+rq6v/m5ub/5eXl/+Hh - 4f/Hx8f/xcXF/9ra2v/e3t7/2dnZ/9vb2//U1NT/4uLi//v7+//8/Pz/ICAgLwAAAAgAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8vLx++jo5//R0dH/7Ozs//Hx8P/x8fH/8vLx//Ly - 8v/z8/P/9PTz//T09P/19fT/9fX1//b29v/39/b/9/f3//b29v/n5+f/9PT0//f39//Y2Nj/z8/P/+np - 6f/m5ub/5ubm/83Nzf/j4+P/7+/v/8nJyf/c3Nz/29vb/9fX1//Ly8v/6Ojo//r6+v/8/Pz/ICAgLwAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8fHx++7u7f/v7+7/8PDv//Dw - 8P/x8fD/8vLx//Ly8f/z8/L/8/Pz//T09P/09PT/9fX1//X19f/29vb/9vb2//f39//39/f/+Pj4//j4 - +P/w8PD/0NDQ/8vLy//Ozs7/09PT/8rKyv/29vb/+fn5/97e3v/IyMj/zs7O/9fX1//r6+v/+Pj4//r6 - +v/7+/v/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8fHw++vr - 6v/j4+P/7e3t//Dw7//w8O//8fHw/+zs7P/p6en/6+vq/+zs7P/t7ez/7Ozr/+/v7v/w8O//9fX1/+/v - 7v/t7e3/7u7u/+/v7//09PT/7+/v/+jo6P/i4uL/19fX/+Tk5P/w8PD/8PDw/+7u7v/w8PD/+Pj4//n5 - +f/6+vr/+vr6//r6+v/7+/v/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn8fHw+9fX1/+tra3/5eXl/+/v7//w8O//8PDw/93d3P/U1NP/ysrK/9jY2P/Ozs3/1dXV/9bW - 1v/U1NT/7u7u/+Tk4//Pz8//1tbW/9zc3P/s7Oz/2dnZ/9LS0v/V1dX/zMzM/9LS0v/S0tL/0dHR/+zs - 7P/19fX/+fn5//n5+f/5+fn/+fn5//n5+f/7+/v/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn8PDv++rq6f/g4N//7Ozs/+7u7v/v7+7/7+/v/+zs7P/T09P/3Nzb/9zc - 3P/Q0ND/5ubm/9zc2//n5+f/5OTk/+zs7P/p6en/4ODg/9fX1//u7u7/5eXl/+bm5v/q6ur/3t7e/+np - 6f/k5OT/1dXV/+jo6P/39/f/+Pj4//j4+P/4+Pj/+Pj4//j4+P/6+vr/ICAgLwAAAAgAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn8PDv++zs6//t7ez/7e3s/+7u7f/u7u3/7+/u/+/v - 7//q6un/6+vq//Hx8P/o6Oj/7+/v//Ly8v/z8/P/8/Pz//T09P/09PT/8fHx//Dw8P/09PT/9vb1//b2 - 9v/29vb/9vb2//f39v/39/f/8/Pz//T09P/39/f/9/f3//f39//39/f/9/f3//f39//5+fn/ICAgLwAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn7+/v++bm5f/c3Nv/6+vq/+3t - 7P/u7u3/7u7t/+/v7v/v7+//8PDv//Dw8P/x8fD/8fHx//Ly8f/y8vL/8/Py//Pz8//z8/P/7u7u//Dw - 8P/y8vL/9PTz//X19f/19fX/9vb1//b29f/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb2//b2 - 9v/5+fn/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn7+/v+9fX - 1/+rq6v/5OTj/+3t7P/t7ez/7u7t/+Tk4//a2tr/3Nzb/+Dg3//l5eT/39/e/9/f3v/b29v/4uLh/+Hh - 4f/n5+b/1tbV/9ra2v/d3d3/2tra/9/f3//c3Nz/5OTj/9/f3v/s7Oz/9fX1//b29f/29vX/9vb1//b2 - 9v/29vb/9vb2//b29f/4+Pj/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn7+7u++np6P/l5eT/6+vq/+zs6//s7Ov/7e3s/+Hh4f/c3Nv/2trZ/83Nzf/R0dH/0dHR/9bW - 1f/Jycn/zMzM/93d3P/g4N//19fX/9LS0f/W1tb/0NDQ/9nZ2f/T09P/0dHR/8rKyv/p6en/8/Pz//X1 - 9P/19fT/9fX0//X19P/19fX/9fX0//X19P/4+Pj/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAADYAAABn7u7t++np6P/q6un/6+vq/+vr6v/s7Ov/7Ozs/+jo5//h4eH/6urp/+jo - 5//r6+v/5+fn/+vr6v/r6+v/6urq/+3t7f/w8PD/5+fm/+Xl5P/t7e3/7u7t/+/v7//v7+//7e3t/+vr - 6//z8/L/9PTz//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/39/f/ICAgLwAAAAgAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn7u3s++Dg3//Pz87/5+fm/+rq6f/r6+r/6+vq/+zs - 6//t7ez/7e3s/+3t7f/u7u3/7u7t/+/v7v/v7+7/7+/v//Dw7//w8O//8fHw//Hx8P/x8fH/8fHx//Ly - 8f/y8vH/8vLy//Ly8v/y8vL/8/Py//Pz8v/z8/L/8/Py//Pz8v/z8/L/8/Py//Pz8v/29vb/ICAgLwAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn7e3s+9fX1/+wsK//4uLh/+rq - 6f/q6un/6+vq/+vr6v/s7Ov/7Ozr/+3t7P/t7ez/7u7t/+7u7f/v7+7/7+/u/+/v7//w8O//8PDv//Dw - 7//x8fD/8fHw//Hx8P/x8fH/8fHx//Ly8f/y8vH/8vLx//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly - 8v/29vb/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADYAAABn7Ozs++bm - 5f/n5+b/6Ofm/+no5//p6ej/6urp/+rq6f/r6+r/7Ozr/+zs6//s7Ov/7e3s/+3t7P/u7u3/7u7t/+7u - 7v/v7+7/7+/u/+/v7//w8O//8PDv//Dw7//w8PD/8fHw//Hx8P/x8fD/8fHw//Hx8f/x8fH/8fHx//Hx - 8f/x8fH/8fHx//Hx8f/29vX/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA - ADYAAABn7Ozr++bl5P/n5uX/5+fm/+jo5//o6Of/6eno/+rq6f/q6un/6+vq/+zs6//s7Ov/7Ozr/+3t - 7P/t7ez/7e3t/+7u7f/u7u3/7u7u/+/v7v/v7+7/7+/v/+/v7//w8O//8PDv//Dw7//w8PD/8PDw//Dw - 8P/x8fD/8fHw//Hx8P/x8fD/8fHw//Hx8P/19fX/ICAgLwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABgAAADMAAABi3Nzc4tjY1+TY2Nfk2djY5NnZ2OTa2dnk2trZ5Nva2uTb29rk29vb5Nzc - 2+Tc3Nvk3Nzc5N3d3OTd3dzk3d3d5N3d3eTd3d3k3d3d5N7e3eTe3t3k3t7d5N7e3uTe3t7k39/e5N/f - 3uTf397k39/e5N/f3uTf39/k39/f5N/f3+Tf39/k39/f5N/f3+Tm5ubhGxsbKwAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACYAAABIWlpabltbW29bW1tvW1tbb1tbW29bW1tvW1tbb1tb - W29bW1tvW1tbb1tbW29bW1tvW1tbb1tbW29bW1tvW1tbb1tbW29bW1tvW1tbb1tbW29bW1tvW1tbb1tb - W29bW1tvW1tbb1tbW29bW1tvW1tbb1tbW29bW1tvW1tbb1tbW29bW1tvW1tbb1xcXG5nZ2diBwcHHgAA - AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAAWAAAAHAAAABwAAAAcAAAAHAAA - ABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAA - ABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAA - ABsAAAAWAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAA - AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAA - AAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAA - AAMAAAADAAAAAwAAAAMAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA///gAAAHAADwAAAAAAcAAOAA - AAAD/wAA4AAAAAI/AADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAACwAA4AAAAAAB - AADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAADAADgAAAAAAAAAOAA - AAAAAAAA4AAAAAAAAADgAAAAAAAAAOAAAAAAAAAA4AAAAAAAAADgAAAAAAMAAOAAAAAABwAA4AAAAAAD - AADgAAAAAAMAAOAAAAAABwAA4AAAAAAHAADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAA - AAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAP - AADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAPAA - AAAAHwAAKAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAANAAAAGQAAACMAAAAsAAAANQkJ - CUMDAwNAAAAAOwoKCkkmJiZhGBgYUQQEBDsAAAAvAAAAKAAAAB8AAAAVAAAACAAAAAAAAAAAAAAAAAAA - AAAAAAAEAAAAGIqKijWKioo2ioqKNoqKijaKioo2ioqKNoqKijaKioo2ioqKNoqKijaIiIg3h4eHOGNj - Y0R3d3d/n5+fv3Nzc38HBwcUeXl5ab6+vuq4uLjcbm5uYQAAAAUAAAADAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAA8AAABN8PDw6PHx8ery8vLq8/Pz6vPz8+r09PTq9PT06vX19er29vbq9vb26vb2 - 9ur19fXqzc3N7sLCwvvKysr+vr6+9Z2dnbK5ubnT1tbW/tnZ2f6QkJCDCgoKCmlpaT1iYmI3AQEBAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAFv29vb89vb2//j4+P/5+fn/+vr6//v7+//7+/v//Pz8//z8 - /P/x8fH/z8/P/+fn5//Ly8v/x8fH/87Ozv/R0dH+1NTU/tfX1/7a2tr/3d3d/s3NzeWoqKioz8/P4c7O - zuFycnJOAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAASAAAAW/Pz8/zFxcX/8vLy//n5+f/6+vr/+/v7//v7 - +//8/Pz/9fX1/8bGxv/IyMj/wcHB/8jIyP/Pz8//09PT/9jX1//c29v/3t3d/+Dg4P/j4+P/5eXl/ujo - 6P7s7Oz/7e3t/rCwsKoMDAwJAAAAAAAAAAAAAAAAAAAAAAAAABIAAABb9vb2/PHx8f/39/f/+fn5//r6 - +v/7+/v/+/v7//z8/P/i4uL/w8PD/8rKyv/Nzc3/0NDQ/9fX1//VzcX/xrWl/8vDvP/IvrX/wbGi/8zB - tf/l4uD/7e3t//Dw8P/p6en8cHBwWQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAFv19fX85OTk//b2 - 9v/5+fn/+fn5//b29v/29vb/9/f3//Hx8f/FxcX/z8/P/9HR0f/Z2Nf/xa+Y/62FXv/Zz8X/28Oq/71/ - Qf+uZBr/o1kQ/6ZzQf/b0MT/9PT0//X19f6+vr62l5eXbYCAgFYjIyMEAAAAAAAAAAAAAAASAAAAW/T0 - 8/zR0dH/9PTz//n5+f/39/f/2NjY/9nZ2f/Nzc3/vb29/7W1tf/T09P/19fX/8e1o/+fYyj/3M7B/+PU - xf+0ZRj/s2MU/7lvJv+5cir/r2IW/6RsNP/p4tv/+/v7/vb29v3x8fH7z8/P01RUVBsAAAAAAAAAAAAA - ABIAAABb9vb1/PX19f/39/f/+fn5//n5+f/z8/P/7e3t/8bGxv/Nzc3/1NTU/9fX1//d29n/l10j/8CQ - YP/m5uX/yJdm/7JhEf+0Zhj/tmgc/7lwJv+7dC7/rGAU/7iTbf/39vX/9/f3//T09P7h4eHwcnJyQwAA - AAAAAAAAAAAAEgAAAFvy8vL8y8vL//Ly8v/4+Pj/+fn5//T09P/t7e3/ysrK/9XV1f/Y2Nj/3Nzc/8S1 - pf+bTgP/y6qJ/+Pj4v/Fkl7/tWca/7JjEv+wXQr/r1oF/7NjEv+1aRz/oGEj/+nk3v/z8/P/4+Pj8Jqa - mnc/Pz8RAAAAAAAAAAAAAAASAAAAW/T09Pzq6ur/9fX1//j4+P/39/f/4ODg/9TU1P+9vb3/0dHR/93d - 3f/g4OD/r5R5/6VTBP/LrY7/4ODg/9CwkP+xYBD/r1oF/65XAP+uVwD/rlgC/7RmGP+iXhr/2s7C/+/v - 7/7Z2dnkWlpaLQAAAAAAAAAAAAAAAAAAABIAAABb9PT0/Ovr6//19fX/9/f3//j4+P/t7e3/8vLy//Dw - 8P/MzMz/4ODg/+Pj4/+rjnL/p1gJ/8addv/c3Nz/3trW/8CGTP+2ah7/tGYY/7BdCv+uVwD/sF0L/6Ni - If/Vyb3/7Ozs/uXl5fnCwsK9fX19SwAAAAAAAAAAAAAAEgAAAFvx8fH8x8fH//Dw8P/39/f/+Pj4//n5 - +f/5+fn/6+vr/8rKyv/k5OT/5+fn/7mol/+hWRH/voJG/9zW0f/k5OT/5+Th/9i4mP/LlWD/xotQ/714 - M/+wYhT/oGct/9zW0P/o6Oj/5eXl/uPj4/6goKB9AAAAAAAAAAAAAAASAAAAW/T08/z09PT/9fX1//b2 - 9v/39/f/+Pj4//f39//Kysr/5eXl/+rq6v/s7Oz/2dXS/5VeKf+6eTn/z66N/+De3P/m5ub/5NrP/82b - af/Fik7/vns4/6pnI/+ohGD/4uHg/+Xl5f7g4OD42dnZ8IiIiFIAAAAAAAAAAAAAABIAAABb8fHw/MvL - y//w8PD/9vb1//f39//4+Pj/+Pj4/9HR0f/p6en/7e3t//Hx8f/w8PD/rZiE/5leI/+2dDH/yKB2/9S+ - qP/QrYn/woVI/7t2Mf+qZB//k10n/8m/tf/j4+P/39/f96Kion2EhIRDR0dHEAAAAAAAAAAAAAAAEgAA - AFvy8vL85eXl//Ly8v/19fX/9vb2//b29v/39/f/5+fn/8TExP/Nzc3/6Ojo//j4+P/p5+b/oohu/4xP - E/+fVg7/ql8U/6xgE/+nWxD/mVIK/4lSG/+5qZn/4ODf/+Dg4P/X19fpY2NjNwAAAAAAAAAAAAAAAAAA - AAAAAAASAAAAW/Ly8vzq6ur/8vLy//T09P/y8vL/1dXU/9HR0f/R0dH/0NDQ/9HR0f/Gxsb/+fn5//n5 - +f/s7Oz/vLGm/5NvTf+HVCH/h1Ab/4lZKv+bfWD/zMbB/+Dg4P/f39//3Nzc/9vb2/23t7ekBwcHCQAA - AAAAAAAAAAAAAAAAABIAAABb7+/v/MXFxf/u7u3/9PTz//T09P/z8/P/8/Pz/+rq6v/v7+//39/f/+Dg - 4P/5+fn/9vb2//Pz8//v7+//5OTk/9fV0//Sz8z/19bU/9/e3v/h4eH/39/f/9ra2v/a2tr/1tbW7piY - mGIEBAQCAAAAAAAAAAAAAAAAAAAAEgAAAFvx8fH88fHw//Ly8f/z8/L/8/Pz//Dw8P/y8vL/9PT0//Hx - 8f/j4+P/0tLS//Hx8f/h4eH/29vb/+zs7P/q6ur/5+fn/+Xl5f/j4+P/4ODg/93d3f/Y2Nj/19fX/9jY - 2P6CgoJ0IyMjCQAAAAAAAAAAAAAAAAAAAAAAAAASAAAAW+/v7vzNzc3/7e3t//Ly8f/w8PD/2dnZ/9TU - 0//X19f/09PT/87Ozv/Ly8v/vLy8/7y8vP++vr7/1NTU/+fn5//l5eX/19fX/9PT0//f39//2tra/9bW - 1v/r6+v/+vr6/hsbGyUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAABb8PDv/N/f3//u7u7/8fHx//Ly - 8f/z8/L/9PTz//X19P/19fX/9vb2//f39//w8PD/9vb2/+fn5//W1tb/4+Pj/9/f3//b29v/5ubm/9TU - 1P/W1tb/0tLS//Hx8f/7+/v+GxsbIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAFvv7+/86Ojo/+/v - 7v/w8O//8fHw/+3t7P/t7e3/8PDv/+/v7//y8vL/9fX1//Dw8P/x8fH/8/Pz/+Li4v/X19f/1NTU/+3t - 7f/y8vL/4uLi/+zs7P/39/f/+vr6//r6+v4bGxsjAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAASAAAAW+3t - 7PzExMT/6urq/+/v7v/t7e3/1NTU/9LS0v/Q0ND/2dnZ/9bW1v/r6+v/19fX/9bW1v/n5+f/2NjY/9ra - 2v/Q0ND/1tbW/9bW1v/z8/P/+fn5//n5+f/5+fn/+vr6/hsbGyMAAAABAAAAAAAAAAAAAAAAAAAAAAAA - ABIAAABb7u7u/Ovr6v/t7ez/7u7t/+/v7v/n5+f/6eno/+Xl5f/t7e3/8PDw//Ly8f/y8vL/7Ozs//Dw - 8P/z8/L/9PT0//Pz8v/09PT/7u7u//b29v/39/f/9/f3//f39//5+fn+GxsbIwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAEgAAAFvs7Oz809PS/+rq6f/u7u3/7u7t/+zs6//t7ez/7u7u/+7u7v/v7+7/7+/v//Hx - 8f/n5+f/7+/v//Dw8P/x8fH/8vLy//Pz8//29vb/9vb2//b29v/29vb/9vb2//j4+P4bGxsjAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAASAAAAW+zs6/zV1dT/6eno/+zs6//r6+r/2NjY/9XV1f/U1NT/0tLS/9DQ - 0P/S0tL/4eHg/9HR0f/X19f/09PT/9PT0//T09L/39/f//T09P/19fT/9fX0//X19f/19fX/9/f3/hsb - GyMAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAABb7Ozr/Ojn5v/r6un/6+vq/+zs6//m5uX/6urp/+zs - 6//q6ur/7e3s/+zs7P/w8O//6enp/+3t7P/w8O//8PDw/+/v7v/x8fH/8/Pz//Pz8//09PP/9PTz//T0 - 8//29vb+GxsbIwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAFvp6Oj8vb29/+Xl5P/q6un/6+vq/+zs - 6//s7Oz/7e3s/+7u7f/u7u7/7+/u//Dw7//w8O//8PDw//Hx8P/x8fH/8fHx//Ly8f/y8vH/8vLy//Ly - 8v/y8vL/8vLy//X19f4bGxsjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAW+rq6fzn5uX/6Ofm/+np - 6P/q6un/6+vq/+zs6//s7Ov/7e3s/+3t7f/u7u3/7u7u/+/v7v/v7+//8PDv//Dw7//w8PD/8fHw//Hx - 8P/x8fD/8fHw//Hx8P/x8fD/9PT0/hsbGyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAABY4ODf693d - 3O3e3t3t397e7eDf3u3g4N/t4eHg7eHh4e3i4uHt4uLi7ePj4u3j4+Pt4+Pj7eTk4+3k5OTt5OTk7eXl - 5O3l5eTt5eXk7eXl5e3l5eXt5eXl7eXl5e3q6unrGRkZIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAA - ADRNTU1WTk5OV05OTldOTk5XTk5OV05OTldOTk5XTk5OV05OTldOTk5XTk5OV05OTldOTk5XTk5OV05O - TldOTk5XTk5OV05OTldOTk5XTk5OV05OTldOTk5XTk5OVlZWVk4FBQUSAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABgAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA - AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABwAAAAIAAAAAAAAAAAAA - AAD/8AADwAAAD8AAAAfAAAADwAAAA8AAAAPAAAAAwAAAAMAAAADAAAAAwAAAAcAAAADAAAAAwAAAAMAA - AADAAAADwAAAAcAAAAHAAAADwAAAB8AAAAfAAAADwAAAA8AAAAfAAAAHwAAAA8AAAAPAAAAHwAAAB8AA - AAfAAAAHwAAABygAAAAYAAAAMAAAAAEAIAAAAAAAYAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAFAAAAEQAAABwAAAAnCwsLPxMTE0gAAAAyQEBAakBA - QGkKCgo3AAAAJAAAABkAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAC3W1taV19fXl9fX15fY2NiX2NjYl9nZ - 2ZfZ2dmX2tral9nZ2ZeoqKiouLi45q2trdJkZGRPwMDA3tTU1P2IiIhYAwMDAxsbGwwAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAAE729vb99/f3//n5+f/6+vr/+/v7//z8/P/8/Pz/5eXl/+jo6P/Kysr/zMzM/9DQ - 0P/S0tL+2NjY/tzc3P+9vb3Cq6urm8bGxtJsbGwuAAAAAAAAAAAAAAAAAAAAAwAAAE7u7u7929vb//n5 - +f/6+vr/+/v7//z8/P/o6Oj/xMTE/8XFxf/Ly8v/0tLS/9rZ2f/c29r/3t3d/+Tk5P/m5ub/6+vr/+3t - 7f6hoaF5AAAAAAAAAAAAAAAAAAAAAwAAAE729vb99/f3//n5+f/6+vr/+/v7//z8/P/g4OD/yMjI/8/P - z//W1tb/yrmn/8CqlP/QwrT/tYpf/62AVP/Pva3/8PDw/+/v7/2Hh4dePT09HgYGBgIAAAAAAAAAAwAA - AE7u7u792tra//n5+f/y8vL/2tra/9nZ2f/Gxsb/xMTE/9XV1f/CrJb/tYhd/+fd1P+4byb/tmoe/7ds - Iv+mXBL/zLSd//r6+v/t7e334uLi8W1tbTEAAAAAAAAAAwAAAE719fX99PT0//j4+P/6+vr/8vLy/8/P - z//Pz8//19fX/9rX1P+aWBb/282//8+pg/+zZBX/tWYZ/7ZqHv+5cSj/o2Ad/+/r5//29vb/7Ozs+pSU - lGEAAAAAAAAAAwAAAE7u7u793Nzc//j4+P/19fX/6enp/8XFxf/Y2Nj/3Nzc/8KxoP+lVwn/3djU/9Cv - jf+zYxP/r1sH/65XAf+wXgv/rWIX/867p//x8fH/tLS0lA4ODgQAAAAAAAAAAwAAAE7z8/P98PDw//f3 - 9//09PT/6enp/+Xl5f/Ozs7/4uLi/7mjjf+qWwz/183E/93X0v+6dzP/tGQV/7BdCf+uVwD/r2QZ/8Wt - lv/s7Oz/z8/Pz5CQkEkAAAAAAAAAAwAAAE7t7e393d3d//f39v/4+Pj/+fn5/+fn5//U1NT/5+fn/8m+ - s/+kXRb/zayL/+Pj4//n4t7/0aV5/8eNVP+8djH/pV4X/9DEt//n5+f/5OTk/7m5uZgAAAAAAAAAAwAA - AE7x8fH96+vr//b29v/39/f/+fn5/9fX1//p6en/7e3t/+no6P+abkT/uns8/9TAq//i39z/1bKQ/8KE - Rf+0byr/nW9C/+Hg3//h4eH5v7+/sJSUlEsAAAAAAAAAAwAAAE7u7u794eHg//X19f/29vb/9/f3/+jo - 6P/Pz8//3d3d//f39//Vzsj/kF0r/6NcFP+waSH/rmQa/6JZEf+QWST/zMS9/+Hh4f/KysrSBgYGCQAA - AAAAAAAAAAAAAwAAAE7u7u795eXl//T09P/u7u7/2dnZ/9XV1f/U1NT/xcXF//b29v/4+Pj/3tvZ/6iQ - eP+Ta0L/lGpC/6eNdf/U0c//4ODg/9zc3P/b29v7gYGBQwAAAAAAAAAAAAAAAwAAAE7u7u395OTj//Pz - 8//09PT/9fX1//Pz8//4+Pf/1dXV//f39//x8fH/8PDw/+zs7P/m5ub/4+Pj/+Li4v/f39//1tbW/9LS - 0v+0tLSlICAgCAAAAAAAAAAAAAAAAwAAAE7r6+v939/f//Ly8f/s7Oz/29vb/9zc3P/W1tb/0NDQ/8bG - xv/AwMD/w8PD/+np6f/l5eX/1dXV/97e3v/b29v/2tra//n5+f8YGBgfAAAAAAAAAAAAAAAAAAAAAwAA - AE7u7u395+fm//Hx8P/y8vH/8/Pz//T09P/19fX/9vb2//Pz8//39/f/2tra/9ra2v/U1NT/8PDw/9PT - 0//W1tb/5ubm//v7+/8bGxsbAAAAAAAAAAAAAAAAAAAAAwAAAE7p6ej92dnZ//Dw7//q6ur/3Nzc/+Dg - 3//h4eH/6urq/+Tk4//j4+P/6urq/9zc3P/W1tb/4eHh//Dw8P/5+fn/+fn5//r6+v8bGxsbAAAAAAAA - AAAAAAAAAAAAAwAAAE7t7ez96eno/+7u7f/u7u7/4eHg/+Hh4f/p6ej/7Ozs/+/v7//m5ub/7+/v/+/v - 7//t7e3/6enp//Ly8v/39/f/9/f3//n5+P8bGxsbAAAAAAAAAAAAAAAAAAAAAwAAAE7n5+b91dXV/+3t - 7P/s7Ov/5eXl/+np6f/o6Oj/6Ojo/+zs6//j4+P/5+fn/+np6f/r6+v/8/Pz//b29f/29vb/9vb2//f3 - 9/8bGxsbAAAAAAAAAAAAAAAAAAAAAwAAAE7s6+v96eno/+zs6//p6ej/4ODf/9zc3P/e3t7/29va/+fn - 5v/d3d3/4ODg/+Pj4v/d3d3/8fHw//T09P/09PT/9PT0//b29v8bGxsbAAAAAAAAAAAAAAAAAAAAAwAA - AE7k5OT90tLR/+rq6f/r6+r/7Ozr/+3t7P/u7u3/7+/u//Dw7//w8PD/8fHw//Hx8f/y8vH/8vLx//Ly - 8v/y8vL/8vLy//T09P8bGxsbAAAAAAAAAAAAAAAAAAAAAwAAAE7p6ej95+fm/+jo5//q6un/6+vq/+zs - 6//t7ez/7e3t/+7u7f/v7+7/7+/v//Dw7//w8O//8PDw//Hx8P/x8fD/8fHw//Pz8/8bGxsbAAAAAAAA - AAAAAAAAAAAAAgAAAEGwsLCpr6+vqrCwr6qxsLCqsbGxqrKysaqysrKqsrKyqrOzsqqzs7Oqs7OzqrOz - s6q0tLOqtLSzqrS0tKq0tLSqtLS0qrq6uqUQEBAVAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAPAAAADwAA - AA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAA - AA0AAAACAAAAAAAAAADAAAEAgAAHAIAAAwCAAAMAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAA - AQCAAAEAgAABAIAAAwCAAAMAgAADAIAAAwCAAAMAgAADAIAAAwCAAAMAgAADAMAAAwAoAAAAEAAAACAA - AAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeIiIgbiIiIG4iIiBuIiIgbeHh4H1dX - VytLS0tJZmZmcDQ0NECPj4+eNDQ0NAAAABMAAAAHAAAAAAAAAAAAAAAy8/Pz8/b29vT39/f0+Pj49Pb2 - 9vTo6Oj0yMjI+srKyvzExMTg2tra/q6uroe5ubmNbGxsFAAAAAAAAAAAAAAAN+jo6P339/f/+vr6//v7 - +//Y2Nj/yMjI/9DQ0P/Ry8X/087K/9TNxv/o5+f+7e3t/pSUlEMAAAAAAAAAAAAAADfn5+f99/f3/+/v - 7//l5eX/ysrK/9PT0//BqI//0b6q/8CDRv+xZx//tYRU//Px8P7a2trHrq6uUgAAAAAAAAA36urq/ff3 - 9//29vb/2tra/9TU1P/V0cz/r3lE/9a8o/+zZBX/s2QU/7NoHP/Os5n/8PDw+7e3t28AAAAAAAAAN+/v - 7/329vb/7+/v/93d3f/W1tb/x7mr/7d9RP/b0sn/tmsg/7BcCP+wXAn/vZZv/+fn5/ahoaFNAAAAAAAA - ADfo6Oj99fX1//j4+P/p6en/39/f/9nUz/+rbS7/3NLI/+LXzP/JkVr/tW8p/8Goj//k5OT9ycnJrwAA - AAAAAAA35eXl/fPz8//39/f/6urq/9ra2v/w8PD/tJl//6puMv+/ilb/r2ol/6BvPv/b2Nb/xsbGpXd3 - dxUAAAAAAAAAN+Tk5P3y8vL/6+vr/+Dg4P/c3Nz/5ubm//T09P/JvbH/rpJ3/7eij//b2dj/3Nzc/8nJ - ybwGBgYDAAAAAAAAADfn5+f98fHw/+vr6//k5OT/3d3d/9PT0//Ozs7/5OTk/+Li4v/d3d3/2dnZ/+Xl - 5f5kZGQpAAAAAAAAAAAAAAA36urp/fDw7//w8PD/8fHx//Pz8//z8/P/8PDw/9zc3P/f39//5OTk/+Pj - 4//4+Pj+GxsbEgAAAAAAAAAAAAAAN+Li4v3t7ez/5ubm/9zc3P/j4+P/6enp/+bm5v/m5ub/4+Pj/+vr - 6//4+Pj/+fn5/hsbGxIAAAAAAAAAAAAAADfg4N/96+vq/+fn5v/h4eH/4ODf/+Xl5P/g4N//4uLh/+bm - 5v/19fX/9fX1//b29v4bGxsSAAAAAAAAAAAAAAA33t7e/enp6P/q6un/7Ozr/+3t7P/v7+7/7u7t//Dw - 8P/x8fD/8/Py//Pz8v/09PT+GxsbEgAAAAAAAAAAAAAANuTj4/Xk4+L25eXk9ufn5vbo6Of26eno9urq - 6fbq6ur26+vq9uvr6/br6+v27e3t9RoaGhEAAAAAAAAAAAAAABFGRkYvR0dHL0dHRy9HR0cvR0dHL0dH - Ry9HR0cvR0dHL0dHRy9HR0cvR0dHL0pKSi0EBAQFAAAAAIABAACAAQAAgAEAAIAAAACAAAAAgAAAAIAA - AACAAAAAgAAAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAA= - - - \ No newline at end of file diff --git a/tools/AddToChangelog/AddToChangelog/Program.cs b/tools/AddToChangelog/AddToChangelog/Program.cs deleted file mode 100644 index 5ab64361f68..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Windows.Forms; - -namespace AddToChangelog -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); - } - } -} diff --git a/tools/AddToChangelog/AddToChangelog/Properties/AssemblyInfo.cs b/tools/AddToChangelog/AddToChangelog/Properties/AssemblyInfo.cs deleted file mode 100644 index 5857e24764e..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AddToChangelog")] -[assembly: AssemblyDescription("An open source application designed to allow the /tg/station open source project to easily add changelog notes to the changelog.html file.")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Nanotrasen")] -[assembly: AssemblyProduct("AddToChangelog")] -[assembly: AssemblyCopyright("Copyright © 2013")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("3f069aeb-901f-4fc0-8104-29da028252dc")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/tools/AddToChangelog/AddToChangelog/Properties/Resources.Designer.cs b/tools/AddToChangelog/AddToChangelog/Properties/Resources.Designer.cs deleted file mode 100644 index b3b35d3f326..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.296 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace AddToChangelog.Properties -{ - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AddToChangelog.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/tools/AddToChangelog/AddToChangelog/Properties/Resources.resx b/tools/AddToChangelog/AddToChangelog/Properties/Resources.resx deleted file mode 100644 index af7dbebbace..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/tools/AddToChangelog/AddToChangelog/Properties/Settings.Designer.cs b/tools/AddToChangelog/AddToChangelog/Properties/Settings.Designer.cs deleted file mode 100644 index 5165895d5ab..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Properties/Settings.Designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.296 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace AddToChangelog.Properties -{ - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { - return defaultInstance; - } - } - } -} diff --git a/tools/AddToChangelog/AddToChangelog/Properties/Settings.settings b/tools/AddToChangelog/AddToChangelog/Properties/Settings.settings deleted file mode 100644 index 39645652af6..00000000000 --- a/tools/AddToChangelog/AddToChangelog/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/tools/AddToChangelog/AddToChangelog/bugfix.png b/tools/AddToChangelog/AddToChangelog/bugfix.png deleted file mode 100644 index 9934db406b1..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/bugfix.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/changelog.ico b/tools/AddToChangelog/AddToChangelog/changelog.ico deleted file mode 100644 index 34cc7b4d404..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/changelog.ico and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/experiment.png b/tools/AddToChangelog/AddToChangelog/experiment.png deleted file mode 100644 index b2a4f670a86..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/experiment.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/imageadd.png b/tools/AddToChangelog/AddToChangelog/imageadd.png deleted file mode 100644 index 308c1ae0a28..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/imageadd.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/imagedel.png b/tools/AddToChangelog/AddToChangelog/imagedel.png deleted file mode 100644 index b2bac2c45ab..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/imagedel.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/rscadd.png b/tools/AddToChangelog/AddToChangelog/rscadd.png deleted file mode 100644 index bcc4dc24b20..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/rscadd.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/rscdel.png b/tools/AddToChangelog/AddToChangelog/rscdel.png deleted file mode 100644 index e6f2d3228b8..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/rscdel.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/soundadd.png b/tools/AddToChangelog/AddToChangelog/soundadd.png deleted file mode 100644 index ea7f36c6ba3..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/soundadd.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/sounddel.png b/tools/AddToChangelog/AddToChangelog/sounddel.png deleted file mode 100644 index 1b9478f43e7..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/sounddel.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/tweak.png b/tools/AddToChangelog/AddToChangelog/tweak.png deleted file mode 100644 index 1a59de688d5..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/tweak.png and /dev/null differ diff --git a/tools/AddToChangelog/AddToChangelog/wip.png b/tools/AddToChangelog/AddToChangelog/wip.png deleted file mode 100644 index e22eb61b8fe..00000000000 Binary files a/tools/AddToChangelog/AddToChangelog/wip.png and /dev/null differ diff --git a/tools/AddToChangelog/icon.png b/tools/AddToChangelog/icon.png deleted file mode 100644 index 3c60e6745c7..00000000000 Binary files a/tools/AddToChangelog/icon.png and /dev/null differ diff --git a/tools/ss13_genchangelog.py b/tools/ss13_genchangelog.py index ff908ba20b6..ed76aa9c6c6 100644 --- a/tools/ss13_genchangelog.py +++ b/tools/ss13_genchangelog.py @@ -175,7 +175,6 @@ with open(args.targetFile.replace('.htm', '.dry.htm') if args.dryRun else args.t for _date in reversed(sorted(all_changelog_entries.keys())): entry_htm = '\n' - entry_htm += '\t\t
    \n' entry_htm += '\t\t\t

    {date}

    \n'.format(date=_date.strftime(dateformat)) write_entry = False for author in sorted(all_changelog_entries[_date].keys()): @@ -191,7 +190,6 @@ with open(args.targetFile.replace('.htm', '.dry.htm') if args.dryRun else args.t author_htm += '\t\t\t\n' if len(changes_added) > 0: entry_htm += author_htm - entry_htm += '\t\t
    \n' if write_entry: changelog.write(entry_htm)