Mining chargers, fruit slices, windoors (#1897)

A bugfix pack of various unrelated stuff. I just poked through the issues list and cherrypicked stuff that looked quick or within my knowledge

Adds some Mech charging pads to the mining outpost. Two inside, one outside near the drills.
I also tweaked the charging pad sprite to remove the background. Basically it had a normal floor tile built into the sprite, which looked dumb on any other kind of floor. i made that part transparent. And the ones in the robotics lab didn't have an actual floor tile under them because of that, someone was lazy when mapping. so i fixed that too.

Fixes fruit slices being inedible. Someone was using Round when dividing their reagents. Protip: never round reagent amounts. the system handles decimals just fine. There was also an error with the loop

Fixes being unable to build multiple windoors on a tile.I fixed it so you can do so, but they cant stack ontop of each other (or existing windows). I also made sure they can't be rotated to stack onto existing border items. And added another rotate verb for windoor assemblies, and fixed their missing ON_BORDER flag.

Nerfed the hallucination chance of paroxetine, to make it less of a meme when prescribed clinically.

Fixes the engiborg inflatables dispenser permanantly breaking if you allow it to run out. That was my fault

fixes #990
fixes #862
fixes #1875
fixes #1842
fixes #1742
This commit is contained in:
NanakoAC
2017-03-18 20:04:13 +02:00
committed by skull132
parent 161457b079
commit fa12422854
9 changed files with 123 additions and 34 deletions
@@ -17,6 +17,7 @@ obj/structure/windoor_assembly
density = 0
dir = NORTH
w_class = 3
flags = ON_BORDER
var/obj/item/weapon/airlock_electronics/electronics = null
@@ -261,18 +262,60 @@ obj/structure/windoor_assembly/Destroy()
//Rotates the windoor assembly clockwise
/obj/structure/windoor_assembly/verb/revrotate()
set name = "Rotate Windoor Assembly"
//These directions are fucked up, apparently dm rotates anticlockwise by default
/obj/structure/windoor_assembly/verb/rotate()
set name = "Rotate Windoor Clockwise"
set category = "Object"
set src in oview(1)
var/targetdir = turn(src.dir, 270)
for(var/obj/obstacle in get_turf(src))
if (obstacle == src)
continue
if((obstacle.flags & ON_BORDER) && obstacle.dir == targetdir)
usr << span("danger", "You can't turn the windoor assembly that way, there's already something there!")
return
if (src.anchored)
usr << "It is fastened to the floor; therefore, you can't rotate it!"
return 0
if(src.state != "01")
update_nearby_tiles(need_rebuild=1) //Compel updates before
src.set_dir(turn(src.dir, 270))
src.set_dir(targetdir)
if(src.state != "01")
update_nearby_tiles(need_rebuild=1)
update_icon()
return
//Rotates the windoor assembly anticlockwise
/obj/structure/windoor_assembly/verb/revrotate()
set name = "Rotate Windoor Anticlockwise"
set category = "Object"
set src in oview(1)
var/targetdir = turn(src.dir, 90)
for(var/obj/obstacle in get_turf(src))
if (obstacle == src)
continue
if((obstacle.flags & ON_BORDER) && obstacle.dir == targetdir)
usr << span("danger", "You can't turn the windoor assembly that way, there's already something there!")
return
if (src.anchored)
usr << "It is fastened to the floor; therefore, you can't rotate it!"
return 0
if(src.state != "01")
update_nearby_tiles(need_rebuild=1) //Compel updates before
src.set_dir(targetdir)
if(src.state != "01")
update_nearby_tiles(need_rebuild=1)
+11 -10
View File
@@ -226,19 +226,20 @@
qdel(src)
return
else if(seed.get_trait(TRAIT_FLESH_COLOUR))
user << "You slice up \the [src]."
var/slices = rand(3,5)
var/reagents_to_transfer = round(reagents.total_volume/slices)
for(var/i=i;i<=slices;i++)
var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed)
if(reagents_to_transfer) reagents.trans_to_obj(F,reagents_to_transfer)
qdel(src)
return
if (reagents.total_volume)
user << "You slice up \the [src]."
var/slices = rand(3,5)
var/reagents_to_transfer = reagents.total_volume/slices
for(var/i=0;i<slices;i++)
var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed)
reagents.trans_to_obj(F,reagents_to_transfer)
qdel(src)
return
..()
/obj/item/weapon/reagent_containers/food/snacks/grown/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
/obj/item/weapon/reagent_containers/food/snacks/grown/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
. = ..()
if(seed && seed.get_trait(TRAIT_STINGS))
if(!reagents || reagents.total_volume <= 0)
return
+8 -7
View File
@@ -429,8 +429,9 @@ var/list/name_to_material
if(!is_reinforced())
user << "<span class='warning'>This material is not reinforced enough to use for a door.</span>"
return
if((locate(/obj/structure/windoor_assembly) in T.contents) || (locate(/obj/machinery/door/window) in T.contents))
failed_to_build = 1
for(var/obj/obstacle in T)
if((obstacle.flags & ON_BORDER) && obstacle.dir == user.dir)
failed_to_build = 1
if(failed_to_build)
user << "<span class='warning'>There is no room in this location.</span>"
return 1
@@ -757,7 +758,7 @@ var/list/name_to_material
flags = MATERIAL_PADDING
hardness = 1
weight = 1
/material/hide/corgi
name = "corgi hide"
stack_type = /obj/item/stack/material/animalhide/corgi
@@ -767,17 +768,17 @@ var/list/name_to_material
name = "cat hide"
stack_type = /obj/item/stack/material/animalhide/cat
icon_colour = "#444444"
/material/hide/monkey
name = "monkey hide"
stack_type = /obj/item/stack/material/animalhide/monkey
icon_colour = "#914800"
/material/hide/lizard
name = "lizard hide"
stack_type = /obj/item/stack/material/animalhide/lizard
icon_colour = "#34AF10"
/material/hide/xeno
name = "alien hide"
stack_type = /obj/item/stack/material/animalhide/xeno
@@ -800,7 +801,7 @@ var/list/name_to_material
integrity = 70
stack_origin_tech = list(TECH_MATERIAL = 2)
door_icon_base = "stone"
/material/bone/necromancer
name = "cursed bone"
weight = 20
@@ -299,7 +299,7 @@
/obj/item/weapon/inflatable_dispenser/proc/try_deploy_inflatable(var/turf/T, var/mob/living/user)
if (deploying)
return
deploying = 1
var/newtype
if(mode) // Door deployment
if(!stored_doors)
@@ -317,9 +317,10 @@
if(T && istype(T))
newtype = /obj/structure/inflatable/wall
deploying = 1
user.visible_message(span("notice", "[user] starts deploying an inflatable"), span("notice", "You start deploying an inflatable [mode ? "door" : "wall"]!"))
playsound(T, 'sound/items/zip.ogg', 75, 1)
if (do_after(user, 20, needhand = 0))
if (do_after(user, 15, needhand = 0))
new newtype(T)
if (mode)
stored_doors--
@@ -543,7 +543,7 @@
else
if(world.time > data + ANTIDEPRESSANT_MESSAGE_DELAY)
data = world.time
if(prob(90))
if(prob(96))
M << "<span class='notice'>Your mind feels much more stable.</span>"
else
M << "<span class='warning'>Your mind breaks apart...</span>"
+40
View File
@@ -0,0 +1,40 @@
################################
# 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
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: Nanako
# 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.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- bugfix: "Fixed being unable to build multiple windoors on different sides of the same tile. Also prevented stacking windoors."
- tweak: "Reduced the hallucination chance of paroxetine."
- tweak: "Added some exosuit charging pads to the mining outpost."
- bugfix: "Fixed sliced fruit being inedible and the slices just vanishing."
- bugfix: "Fixed the engiborg inflatables dispenser permanantly breaking if it ran out once."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

+1 -1
View File
@@ -3630,7 +3630,7 @@
"brP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/locker)
"brQ" = (/turf/simulated/wall/r_wall,/area/maintenance/locker)
"brR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/locker)
"brS" = (/obj/machinery/mech_recharger,/turf/simulated/floor/plating,/area/assembly/chargebay)
"brS" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/assembly/chargebay)
"brT" = (/obj/structure/sign/poster{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/quartermaster/loading)
"brU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/assembly/chargebay)
"brV" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Maintenance"; req_access = list(31)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/quartermaster/loading)
+13 -10
View File
@@ -1205,10 +1205,10 @@
"xi" = (/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/outpost/mining_west)
"xj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/dorms)
"xk" = (/obj/machinery/light{dir = 1},/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/structure/table/steel_reinforced,/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTHWEST)"; icon_state = "warning_dust"; dir = 9},/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"xl" = (/obj/machinery/mining/drill,/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"xl" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/machinery/mech_recharger,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"xm" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"xn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"xo" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTHEAST)"; icon_state = "warning_dust"; dir = 5},/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"xo" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTHEAST)"; icon_state = "warning_dust"; dir = 5},/obj/machinery/mining/drill,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"xp" = (/obj/structure/table/rack,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/weapon/mining_scanner,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"xq" = (/obj/machinery/suit_cycler/mining,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"xr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west)
@@ -1267,7 +1267,7 @@
"ys" = (/obj/machinery/light_switch{pixel_x = 25; pixel_y = -9},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 10},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"yt" = (/obj/machinery/cell_charger,/obj/structure/table/steel_reinforced,/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (SOUTHWEST)"; icon_state = "warning_dust"; dir = 10},/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"yu" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/outpost/mining_west)
"yv" = (/obj/machinery/mining/brace,/obj/effect/floor_decal/industrial/warning/dust,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"yv" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/machinery/mining/drill,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"yw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/eva)
"yx" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/mining_west)
"yy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/eva)
@@ -1373,7 +1373,7 @@
"Au" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"Av" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_west)
"Aw" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"Ax" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"Ax" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (EAST)"; icon_state = "warning_dust"; dir = 4},/obj/machinery/mining/brace,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"Ay" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"Az" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"AA" = (/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Crew Area Hallway"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
@@ -1497,7 +1497,7 @@
"CO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Airlock West"; dir = 4},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall)
"CP" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"},/turf/simulated/floor/plating,/area/outpost/mining_main/west_hall)
"CQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/mining_main/east_hall)
"CR" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/outpost/mining_main/east_hall)
"CR" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (SOUTHEAST)"; icon_state = "warning_dust"; dir = 6},/obj/machinery/mining/brace,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"CS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/mining_main/east_hall)
"CT" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/tiled,/area/outpost/mining_main/refinery)
"CU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/outpost/mining_main/refinery)
@@ -1575,6 +1575,9 @@
"Eo" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/atmospherics)
"Ep" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics)
"Eq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics)
"Er" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/machinery/mining/brace,/turf/simulated/floor/tiled/airless{tag = "icon-asteroidfloor"; icon_state = "asteroidfloor"},/area/mine/explored)
"Es" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/outpost/mining_main/west_hall)
"Et" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/outpost/mining_main/east_hall)
"Ey" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/outpost/mining_main/refinery)
"EI" = (/turf/simulated/wall/r_wall,/area/outpost/mining_main/east_hall)
"EO" = (/obj/machinery/mineral/stacking_unit_console,/turf/simulated/wall/r_wall,/area/outpost/mining_main/refinery)
@@ -1753,13 +1756,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnW
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWnWabababababnWnWnWnWnWnWnWnWnWnWnWwzwBwzacacbdbdbdbdbdbdbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababxbababxDxDxDxDvQxDbdbdbdbdmRbdbdaaaaaaaaaaaaaaaaaaaaaaababababababababababababbdbdactkacacacbdbdbdbdbdababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWabababnWnWnWnWnWnWnWnWnWnWnWnWnWabababababnWnWnWnWnWnWnWnWnWacacwAacwAacacacacacacbdbdbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababsBababxDwSxcxDvRxdacacacacvSacbdbdaaaaaaaaaaaaaaaaaaaaababababababababababababbdbdactkacacacacbdbdbdbdbdbdababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWababababababnWnWnWnWnWnWnWnWnWnWabababababnWnWnWnWnWnWnWnWnWacacacacacacacacxexexeacbdbdbdababababababababababababababababababababababababababababababababababababababababababababababababababababababababsBababxDxawZvYvUxfacacacacacacacacacaaaaaaaaaaaaaaaaaaaaababababababkDmRmRmRmRmRacactkacacacacacacacbdabbdbdabababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWababababababababnWnWnWnWnWnWnWababababababnWnWnWnWnWnWnWnWnWacacacacacacacacxgxixhacbdbdbdababababababababababababababababababababababababababababababbdbdbdbdbdbdbdababababababababababababababababababxDxXxDxDxDxDxDxDvRxjacacacacacacacacacacacaaaaaaaaaaaaaaaaaaabababababmRxkvqxlxlxoacpctXofacacacacacacacahabbdababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWababababababnWnWnWnWnWnWnWababababababnWnWnWnWbdacybybybybybybxsxrxtybybybybybacacacbdabababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdabababababababababababxDxDxDxDxyxxxzxDwSxAxDvQxDyjyjxBxFxEyjacacacacacacaaaaaaaaaaaaaaaaaaabababbdmRxHlGxIxIxJacsaxKuIxMxLxLxLxNacacacacacbdabababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWababababababnWnWnWnWnWnWnWabababababnWnWbdbdbdacybwqwtwsxPxOwwwvwyxQxSxRxVxTvqvqofbdbdbdbdabababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdabababababababxDxYydycyhyeyixDxawZwIvUxDykylwMymwMypacacacacacacacaaaaaaaaaaaaaaaaaabdbdbdmRytpXyvyvoAacsayUyTyyywyTyTyzacacacacacbdababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWababababababababnWnWnWnWnWnWnWababababababnWnWnWnWnWnWnWnWnWacacacacacacacacxgxixhacbdbdbdababababababababababababababababababababababababababababababbdbdbdbdbdbdbdababababababababababababababababababxDxXxDxDxDxDxDxDvRxjacacacacacacacacacacacaaaaaaaaaaaaaaaaaaabababababmRxkvqxlyvxoacpctXofacacacacacacacahabbdababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWababababababnWnWnWnWnWnWnWababababababnWnWnWnWbdacybybybybybybxsxrxtybybybybybacacacbdabababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdabababababababababababxDxDxDxDxyxxxzxDwSxAxDvQxDyjyjxBxFxEyjacacacacacacaaaaaaaaaaaaaaaaaaabababbdmRxHlGlGxIAxacsaxKuIxMxLxLxLxNacacacacacbdabababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWababababababnWnWnWnWnWnWnWabababababnWnWbdbdbdacybwqwtwsxPxOwwwvwyxQxSxRxVxTvqvqofbdbdbdbdabababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdabababababababxDxYydycyhyeyixDxawZwIvUxDykylwMymwMypacacacacacacacaaaaaaaaaaaaaaaaaabdbdbdmRytpXpXErCRacsayUyTyyywyTyTyzacacacacacbdababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWabababnWnWnWnWnWnWnWnWabababnWnWabbdbdbdacybwTwVwUyByAwYwXyDyCyIyEyNyLyPyOxJbdbdbdbdbdbdabababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdababababababxDyQydyRyQyVyWxDxDxDxDvRxDykznznxnxmyXacacacacacacacaaaaaaaaaaaaaaaaaaacacacacacacacacacacmTyUxpxpxpxqyTyZyYxLxNacqwmRbdabababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWabababnWnWnWnWnWnWnWnWnWnWnWnWnWabbdbdbdacybxuxwxvzbzazgzfzizhxSzjzszkzuztxJbdbdbdbdbdbdbdbdbdabababababababababababababababababbdbdbdmRbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdabababxDzvzxzwzzzyzCxUxZxWyfyaxDykznygyoynzHacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacacacAdAdzJzIyUzKyryqysyTyTyTyTzLacacacbdbdabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWnWnWnWnWnWnWnWnWnWnWnWababbdbdbdacybyuyxzMxPzNzSwVzTybybybybybybztxJacacacacacacacbdbdbdbdabababababababababababababababbdbdacvSacacacacacacacacpcofacacacacacacbdbdbdbdbdababxDxDxDxDxDxDxDzVzXzWzVzXxDyjyjyjAcyjyjyjAfAeacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacAgzIyFyHyGAiyJyJyKyMAjAlAkAmzLacacacagbdabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWnWnWnWnWnWnWnWabababbdbdacybySApAoyBAqArxGxCzczezdAtAsAvAuqHpFpFpFpFpFqnacbdbdbdbdbdbdababababababababababababbdbdbdacqvpFpFpFpFpFpFpFpFqGqHpFpFpFpFqnacbdbdbdbdbdabababababyjzmzlzoznznzpznznzrzqAxAwABAAACACAEADxFxEAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFzJAHAGAIAOzBzAzEzDzFzFzGAJALAKANAMacacacagbdabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWnWnWnWnWnWnWnWabababbdbdacybySApAoyBAqArxGxCzczezdAtAsAvAuqHpFpFpFpFpFqnacbdbdbdbdbdbdababababababababababababbdbdbdacqvpFpFpFpFpFpFpFpFqGqHpFpFpFpFqnacbdbdbdbdbdabababababyjzmzlzoznznzpznznzrzqEsAwABAAACACAEADxFxEAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFzJAHAGAIAOzBzAzEzDzFzFzGAJALAKANAMacacacagbdabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWnWnWabababbdbdacybybybybybybybybybybAQybybybyblGxJacacacacacpBacacacacbdbdbdbdababababababababababbdbdacacacpBacacacacacacacacmToAacacacacpBacbdbdbdbdbdbdbdbdbdabyjyjyjyjARzPzOzQzQzQzRASzQAUATAWzUAZAYzYAYzZzZzZAazZzZzZAbzZzZzZAazZzZzZBaAhBaBcBbBdAOBeAnyryryrAjBgBfBiBhvqvqofacbdbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanWnWabababbdbdacacacacacacacacacacacacBlBolGlGlGxJacrJacacacpGpFpFqnacbdbdbdbdababababababababababbdacacqvpFqracacacacbdacacrJacacacacacacpBacbdbdbdbdbdbdbdbdbdbdbdbdbdyjAyAzznznznznBpznBqBsBrBtznBvBuxFxEBwBwBwBwBwBwBwBwBwBwBwBwBwBwBwzJAHBxBzByAPAOyUyTyTyTyTyTyTyTyTBApXBBoAacagbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbdbdbdbdbdbdbdbdbdacacacacmTpXpXpXBDBEbdmRbdbdacacacacpBacbdbdbdbdbdabababababbdbdbdbdbdacqvqracacacbdbdbdbdbdbdmRbdbdbdbdbdacpBacbdbdbdbdbdbdmRbdbdbdbdbdCuCuBFBGBFCxCxCzBHCxCxCxBJBLBJyjBMacacacaaaaaaaaafaaaaaaafaaaaaaaaaaafaaBNzIAVAXBOCHBQBRBRBTBSBYBVCaBZCbCbCbacacbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1771,7 +1774,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdmRbdbdabababababababababababababababababababababababababbdbdbdbdbdacpBacacacacacacacacDBpXpXpXpXpXpXoAacacacacacacacaaaaaaaaaaaaafCBCBCBCBCBzJAHBxDCAOCnClClClCrCqCqDHEyDIDgCNacacjamRabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdababababababababababababababababababababababababababababbdbdbdbdacpGpFpFpFpFpFpFpFpFDJpFpFpFpFpFpFpFpFDKacacacacacacaaaaaaaaaaafCBCBCBCBCBDLaaBNzIDMCDAOAOAOCFCECGCGCUDPDgCNacacacbdabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababbdbdbdbdbdababababababababababababababababababababababababababababababababbdbdbdbdacacacacacacacacacacacacacacacacacacactkacpcofacacacpzacaaaaaaCgCBCBCBCBCBCgaaaaaaEIDQBUCLCKDSDRDTEODACTDgCNacacacbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdmRjbDUDWDVDXDWDWDWDYDWDZDZDZDZDZDZDZDZDZDZDZDZEbEaCRAOCSAOCZEcEfEdEhEgDgCNacbdbdbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdmRjbDUDWDVDXDWDWDWDYDWDZDZDZDZDZDZDZDZDZDZDZDZEbEaEtAOCSAOCZEcEfEdEhEgDgCNacbdbdbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdacacacmToAacacacpzacafaaaaaaaaaaaaaaaaaaaaaaEiEIAdzJzIAdDgDgDgDgDgDgDgCNacbdabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdacacacafaaaaaaaaaaaaaaaaaaaaaaEkEjuPuPuPuPuPuPuPuPuPuPuPElacbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbdbdbdbdbdbdbdbdbdbdbdbdbdacrJacacaaaaaaaaaaaaaaaaaaaaaaaapzbdbdbdbdbdbdbdbdbdbdbdbdbdbdababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa