diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 07f562c4961..427b286800b 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -99,70 +99,6 @@ /mob/living/carbon/alien/RestrainedClickOn(var/atom/A) return -/mob/living/carbon/alien/humanoid/RangedAttack(var/atom/A) - if(!large && a_intent == "harm") - Neurotox(A) - return - else if(large && a_intent == "harm") - NeuroAOE(A) - return - -/mob/living/carbon/alien/humanoid/proc/Neurotox(atom/A) - if(world.time < next_attack) - return - - var/turf/T = get_turf(src) - var/turf/U = get_turf(A) // Get the tile infront of the move, based on their direction - - if(!isturf(U) || !isturf(T)) - return - - var/obj/item/projectile/bullet/neurotoxin/NT = new /obj/item/projectile/bullet/neurotoxin(loc) - NT.firer = src -// NT.def_zone = get_organ_target() - NT.original = A - NT.current = T - NT.yo = U.y - T.y - NT.xo = U.x - T.x - spawn(1) - NT.process() - next_attack = world.time + 60 - -/mob/living/carbon/alien/humanoid/proc/NeuroAOE(atom/A) - if(world.time < next_attack) - return - - var/direction = get_dir(src,A) - var/turf/T = get_turf(A) - var/turf/T1 = get_step(T,turn(direction, 90)) - var/turf/T2 = get_step(T,turn(direction, -90)) - - var/list/the_targets = list(T,T1,T2) - - for(var/a=0, a<5, a++) - spawn(0) - var/obj/effect/effect/water/D = new /obj/effect/effect/water( get_turf(src) ) - D.color = "#00FF21" - var/turf/my_target = pick(the_targets) - for(var/b=0, b<5, b++) - if(!step_towards(D,my_target)) return - if(!D) return -// D.reagents.reaction(get_turf(D)) - for(var/atom/atm in get_turf(D)) - if(!D) return - if(istype(atm, /mob/living/carbon/alien)) - return - if(istype(atm, /mob/living/carbon)) - var/mob/living/carbon/C = atm - C.Weaken(5) - C.adjustToxLoss(20) - C << "You were drenched with neurotoxin!" -// D.reagents.reaction(atm, TOUCH) // Touch, since we sprayed it. - if(D.loc == my_target) break - sleep(2) - next_attack = world.time + 60 - - // Babby aliens /mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A) A.attack_larva(src) diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index a37ac4c2ce4..76005df5f1f 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -23,7 +23,7 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va //world << "Room spawned at [start_loc.x],[start_loc.y],[start_loc.z]" if(!wall) - wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/effect/alien/resin) + wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/structure/alien/resin) if(!floor) floor = pick(/turf/simulated/floor,/turf/simulated/floor/engine) @@ -44,9 +44,9 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va if(x == 0 || x==x_size-1 || y==0 || y==y_size-1) - if(wall == /obj/effect/alien/resin) + if(wall == /obj/structure/alien/resin) T = new floor(cur_loc) - new /obj/effect/alien/resin(T) + new /obj/structure/alien/resin(T) else T = new wall(cur_loc) room_turfs["walls"] += T @@ -74,7 +74,7 @@ proc/admin_spawn_room_at_pos() if("Regular wall") wall=/turf/simulated/wall if("Resin wall") - wall=/obj/effect/alien/resin + wall=/obj/structure/alien/resin switch(alert("Floor type",null,"Regular floor","Reinforced floor")) if("Regular floor") floor=/turf/simulated/floor diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 32ea115a9f3..c3a05eae825 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -1,22 +1,20 @@ -/* Alien Effects! +/* Alien shit! * Contains: - * effect/alien + * structure/alien * Resin * Weeds - * Acid * Egg + * effect/acid */ -/* - * effect/alien - */ -/obj/effect/alien + +/obj/structure/alien icon = 'icons/mob/alien.dmi' /* * Resin */ -/obj/effect/alien/resin +/obj/structure/alien/resin name = "resin" desc = "Looks like some kind of thick resin." icon_state = "resin" @@ -25,54 +23,54 @@ anchored = 1 var/health = 200 var/resintype = null - -/obj/effect/alien/resin/New(location) +/obj/structure/alien/resin/New(location) relativewall_neighbours() ..() return -/obj/effect/alien/resin/Destroy() +/obj/structure/alien/resin/Destroy() var/turf/T = loc loc = null T.relativewall_neighbours() ..() -/obj/effect/alien/resin/Move() +/obj/structure/alien/resin/Move() ..() -/obj/effect/alien/resin/wall +/obj/structure/alien/resin/wall name = "resin wall" desc = "Thick resin solidified into a wall." - icon_state = "resinwall" //same as resin, but consistency ho! - -/obj/effect/alien/resin/wall/New() + icon_state = "wall0" //same as resin, but consistency ho! + resintype = "wall" + +/obj/structure/alien/resin/wall/New() relativewall_neighbours() ..() - -/obj/effect/alien/resin/membrane +/obj/structure/alien/resin/membrane name = "resin membrane" desc = "Resin just thin enough to let light pass through." - icon_state = "resinmembrane" + icon_state = "membrane0" opacity = 0 health = 120 + resintype = "membrane" -/obj/effect/alien/resin/membrane/New() +/obj/structure/alien/resin/membrane/New() relativewall_neighbours() ..() -/obj/effect/alien/resin/proc/healthcheck() +/obj/structure/alien/resin/proc/healthcheck() if(health <=0) - qdel(src) + del(src) -/obj/effect/alien/resin/bullet_act(obj/item/projectile/Proj) +/obj/structure/alien/resin/bullet_act(obj/item/projectile/Proj) health -= Proj.damage ..() healthcheck() -/obj/effect/alien/resin/ex_act(severity, target) +/obj/structure/alien/resin/ex_act(severity, target) switch(severity) if(1.0) health -= 150 @@ -83,12 +81,12 @@ healthcheck() -/obj/effect/alien/resin/blob_act() +/obj/structure/alien/resin/blob_act() health -= 50 healthcheck() -/obj/effect/alien/resin/hitby(atom/movable/AM) +/obj/structure/alien/resin/hitby(atom/movable/AM) ..() visible_message("[src] was hit by [AM].") var/tforce = 0 @@ -102,19 +100,18 @@ healthcheck() -/obj/effect/alien/resin/attack_hand(mob/living/user) +/obj/structure/alien/resin/attack_hand(mob/living/user) if(M_HULK in user.mutations) - user.visible_message("[user] destroys [src]!") health = 0 healthcheck() -/obj/effect/alien/resin/attack_paw(mob/user) +/obj/structure/alien/resin/attack_paw(mob/user) return attack_hand(user) -/obj/effect/alien/resin/attack_alien(mob/living/user) +/obj/structure/alien/resin/attack_alien(mob/living/user) if(islarva(user)) return user.visible_message("[user] claws at the resin!") @@ -125,121 +122,87 @@ healthcheck() -/obj/effect/alien/resin/attackby(obj/item/I, mob/living/user) +/obj/structure/alien/resin/attackby(obj/item/I, mob/living/user) health -= I.force playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) healthcheck() ..() -/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target, height=0) +/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density - + + /* * Weeds */ + #define NODERANGE 3 -/obj/effect/alien/weeds - name = "weeds" - desc = "Strange, alien-looking purple weeds." +/obj/structure/alien/weeds + gender = PLURAL + name = "resin floor" + desc = "A thick resin surface covers the floor." icon_state = "weeds" - anchored = 1 density = 0 layer = 2 var/health = 15 - var/obj/effect/alien/weeds/node/linked_node = null - -/obj/effect/alien/weeds/node - name = "purple sac" - desc = "A purple sac covering alien weeds." - icon_state = "weednode" - layer = 3 - luminosity = NODERANGE - var/node_range = NODERANGE - var/list/obj/effect/alien/weeds/connected_weeds - -/obj/effect/alien/weeds/node/New() - connected_weeds = new() - ..(src.loc, src) - -/obj/effect/alien/weeds/node/Destroy() - for(var/obj/effect/alien/weeds/W in connected_weeds) - processing_objects.Add(W) // Start processing the weeds so they lose health when there's no connected node - ..() - -/obj/effect/alien/weeds/process() - if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range)) - if(prob(50)) - health -= 1 - else if(prob(50)) - health -= 2 - else if(prob(25)) - health -= 3 - healthcheck() - -/obj/effect/alien/weeds/New(pos, var/obj/effect/alien/weeds/node/N) - ..() + var/obj/structure/alien/weeds/node/linked_node = null + +/obj/structure/alien/weeds/New(pos, node) + ..() + linked_node = node if(istype(loc, /turf/space)) - qdel(src) + del(src) return - - linked_node = N - if(linked_node) - linked_node.connected_weeds.Add(src) - - if(icon_state == "weeds")icon_state = pick("weeds", "weeds1", "weeds2") + if(icon_state == "weeds") + icon_state = pick("weeds", "weeds1", "weeds2") + fullUpdateWeedOverlays() spawn(rand(150, 200)) if(src) Life() - return -/obj/effect/alien/weeds/Destroy() - if(linked_node) - linked_node.connected_weeds.Remove(src) - linked_node = null - processing_objects.Remove(src) +/obj/structure/alien/weeds/Destroy() + var/turf/T = loc + loc = null + for (var/obj/structure/alien/weeds/W in range(1,T)) + W.updateWeedOverlays() ..() - -/obj/effect/alien/weeds/proc/Life() + +/obj/structure/alien/weeds/proc/Life() set background = BACKGROUND_ENABLED var/turf/U = get_turf(src) - if (istype(U, /turf/space)) + if(istype(U, /turf/space)) del(src) return - if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range) ) - healthcheck() - return - direction_loop: for(var/dirn in cardinal) - var/turf/T = get_step(src, dirn) - if (!istype(T) || T.density || locate(/obj/effect/alien/weeds) in T || istype(T.loc, /area/arrival) || istype(T, /turf/space)) + if (!istype(T) || T.density || locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space)) continue + if(!linked_node || get_dist(linked_node, src) > linked_node.node_range) + return + for(var/obj/O in T) if(O.density) continue direction_loop - new /obj/effect/alien/weeds(T, linked_node) - -/obj/effect/alien/weeds/ex_act(severity,target) - qdel(src) - -/obj/effect/alien/weeds/fire_act(null, temperature, volume) - if(temperature > T0C+200) - health -= 1 * temperature - healthcheck() + new /obj/structure/alien/weeds(T, linked_node) -/obj/effect/alien/weeds/attackby(obj/item/I, mob/user) + +/obj/structure/alien/weeds/ex_act(severity, target) + del(src) + + +/obj/structure/alien/weeds/attackby(obj/item/I, mob/user) if(I.attack_verb.len) visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") else @@ -253,72 +216,58 @@ playsound(loc, 'sound/items/Welder.ogg', 100, 1) health -= damage - healthcheck() - -/obj/effect/alien/weeds/proc/healthcheck() + healthcheck() + + +/obj/structure/alien/weeds/proc/healthcheck() if(health <= 0) - qdel(src) - -/obj/effect/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + del(src) + + +/obj/structure/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) health -= 5 healthcheck() - -/* - * Acid - */ -/obj/effect/alien/acid - name = "acid" - desc = "Burbling corrossive stuff. I wouldn't want to touch it." - icon_state = "acid" - density = 0 - opacity = 0 - anchored = 1 +/obj/structure/alien/weeds/proc/updateWeedOverlays() - var/atom/target - var/ticks = 0 - var/target_strength = 0 + overlays.Cut() + var/turf/N = get_step(src, NORTH) + var/turf/S = get_step(src, SOUTH) + var/turf/E = get_step(src, EAST) + var/turf/W = get_step(src, WEST) + if(!locate(/obj/structure/alien) in N.contents) + if(istype(N, /turf/simulated/floor)) + src.overlays += image('icons/mob/alien.dmi', "weeds_side_s", layer=2, pixel_y = 32) + if(!locate(/obj/structure/alien) in S.contents) + if(istype(S, /turf/simulated/floor)) + src.overlays += image('icons/mob/alien.dmi', "weeds_side_n", layer=2, pixel_y = -32) + if(!locate(/obj/structure/alien) in E.contents) + if(istype(E, /turf/simulated/floor)) + src.overlays += image('icons/mob/alien.dmi', "weeds_side_w", layer=2, pixel_x = 32) + if(!locate(/obj/structure/alien) in W.contents) + if(istype(W, /turf/simulated/floor)) + src.overlays += image('icons/mob/alien.dmi', "weeds_side_e", layer=2, pixel_x = -32) -/obj/effect/alien/acid/New(loc, target) - ..(loc) - src.target = target - if(isturf(target)) // Turf take twice as long to take down. - target_strength = 8 - else - target_strength = 4 - tick() +/obj/structure/alien/weeds/proc/fullUpdateWeedOverlays() + for (var/obj/structure/alien/weeds/W in range(1,src)) + W.updateWeedOverlays() -/obj/effect/alien/acid/proc/tick() - if(!target) - del(src) +//Weed nodes +/obj/structure/alien/weeds/node + name = "glowing resin" + desc = "Blue bioluminescence shines from beneath the surface." + icon_state = "weednode" + luminosity = 1 + var/node_range = NODERANGE - ticks += 1 - if(ticks >= target_strength) +/obj/structure/alien/weeds/node/New() + ..(loc, src) - for(var/mob/O in hearers(src, null)) - O.show_message("\green [src.target] collapses under its own weight into a puddle of goop and undigested debris!", 1) +#undef NODERANGE - if(istype(target, /turf/simulated/wall)) // I hate turf code. - var/turf/simulated/wall/W = target - W.dismantle_wall(1) - else - del(target) - del(src) - return - - switch(target_strength - ticks) - if(6) - visible_message("\green [src.target] is holding up against the acid!") - if(4) - visible_message("\green [src.target]\s structure is being melted by the acid!") - if(2) - visible_message("\green [src.target] is struggling to withstand the acid!") - if(0 to 1) - visible_message("\green [src.target] begins to crumble under the acid!") - spawn(rand(150, 200)) tick() /* * Egg @@ -332,7 +281,7 @@ #define MIN_GROWTH_TIME 1800 //time it takes to grow a hugger #define MAX_GROWTH_TIME 3000 -/obj/effect/alien/egg +/obj/structure/alien/egg name = "egg" desc = "A large mottled egg." icon_state = "egg_growing" @@ -342,20 +291,20 @@ var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive -/obj/effect/alien/egg/New() +/obj/structure/alien/egg/New() new /obj/item/clothing/mask/facehugger(src) ..() spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME)) Grow() -/obj/effect/alien/egg/attack_paw(mob/user) +/obj/structure/alien/egg/attack_paw(mob/user) if(isalien(user)) switch(status) if(BURST) user << "You clear the hatched egg." playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - qdel(src) + del(src) return if(GROWING) user << "The child is not developed yet." @@ -368,19 +317,20 @@ return attack_hand(user) -/obj/effect/alien/egg/attack_hand(mob/user) +/obj/structure/alien/egg/attack_hand(mob/user) user << "It feels slimy." -/obj/effect/alien/egg/proc/GetFacehugger() + +/obj/structure/alien/egg/proc/GetFacehugger() return locate(/obj/item/clothing/mask/facehugger) in contents -/obj/effect/alien/egg/proc/Grow() +/obj/structure/alien/egg/proc/Grow() icon_state = "egg" status = GROWN -/obj/effect/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining +/obj/structure/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining if(status == GROWN || status == GROWING) icon_state = "egg_hatched" flick("egg_opening", src) @@ -399,13 +349,13 @@ break -/obj/effect/alien/egg/bullet_act(obj/item/projectile/Proj) +/obj/structure/alien/egg/bullet_act(obj/item/projectile/Proj) health -= Proj.damage ..() healthcheck() -/obj/effect/alien/egg/attackby(obj/item/I, mob/user) +/obj/structure/alien/egg/attackby(obj/item/I, mob/user) if(I.attack_verb.len) visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") else @@ -423,21 +373,21 @@ healthcheck() -/obj/effect/alien/egg/proc/healthcheck() +/obj/structure/alien/egg/proc/healthcheck() if(health <= 0) if(status != BURST && status != BURSTING) Burst() else if(status == BURST && prob(50)) - qdel(src) //Remove the egg after it has been hit after bursting. + del(src) //Remove the egg after it has been hit after bursting. -/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 500) health -= 5 healthcheck() -/obj/effect/alien/egg/HasProximity(atom/movable/AM) +/obj/structure/alien/egg/HasProximity(atom/movable/AM) if(status == GROWN) if(!CanHug(AM)) return @@ -455,3 +405,72 @@ #undef MIN_GROWTH_TIME #undef MAX_GROWTH_TIME + +/* + * Acid + */ +/obj/effect/acid + gender = PLURAL + name = "acid" + desc = "Burbling corrossive stuff." + icon = 'icons/effects/effects.dmi' + icon_state = "acid" + density = 0 + opacity = 0 + anchored = 1 + unacidable = 1 + var/atom/target + var/ticks = 0 + var/target_strength = 0 + + +/obj/effect/acid/New(loc, targ) + ..(loc) + target = targ + + //handle APCs and newscasters and stuff nicely + pixel_x = target.pixel_x + pixel_y = target.pixel_y + + if(isturf(target)) //Turfs take twice as long to take down. + target_strength = 640 + else + target_strength = 320 + tick() + + +/obj/effect/acid/proc/tick() + if(!target) + del(src) + + ticks++ + + if(ticks >= target_strength) + target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!") + + if(istype(target, /turf/simulated/wall)) + var/turf/simulated/wall/W = target + W.dismantle_wall(1) + else + del(target) + + del(src) + return + + x = target.x + y = target.y + z = target.z + + switch(target_strength - ticks) + if(480) + visible_message("[target] is holding up against the acid!") + if(320) + visible_message("[target] is being melted by the acid!") + if(160) + visible_message("[target] is struggling to withstand the acid!") + if(80) + visible_message("[target] begins to crumble under the acid!") + + spawn(1) + if(src) + tick() \ No newline at end of file diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm index a45e2436b80..f1322e17ad3 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm @@ -22,7 +22,7 @@ "[buckled_mob.name] struggles to break free of the gelatinous resin...",\ "You struggle to break free from the gelatinous resin...",\ "You hear squelching...") - spawn(1200) + spawn(600) if(user && buckled_mob && user.buckled == src) buckled_mob.pixel_y = 0 unbuckle() @@ -51,11 +51,21 @@ M.loc = src.loc M.dir = src.dir M.update_canmove() - M.pixel_y = 6 + M.pixel_y += 1 + M.pixel_x += 2 + M.anchored = anchored src.buckled_mob = M src.add_fingerprint(user) + src.overlays += image('icons/mob/alien.dmi', "nestoverlay", layer=6) return +/obj/structure/stool/bed/nest/unbuckle() + if(buckled_mob) + buckled_mob.pixel_y -= 1 + buckled_mob.pixel_x -= 2 + overlays.Cut() + ..() + /obj/structure/stool/bed/nest/attackby(obj/item/weapon/W as obj, mob/user as mob) var/aforce = W.force health = max(0, health - aforce) diff --git a/code/game/smoothwall.dm b/code/game/smoothwall.dm index c9078fa9192..bcd9fa88a24 100644 --- a/code/game/smoothwall.dm +++ b/code/game/smoothwall.dm @@ -95,4 +95,18 @@ // DE-HACK /turf/simulated/wall/vault/relativewall() + return + + +//Xeno wall smoothing +/obj/structure/alien/resin/relativewall() + + var/junction = 0 //will be used to determine from which side the wall is connected to other walls + + for(var/obj/structure/alien/resin/W in orange(src,1)) + if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls + junction |= get_dir(src,W) + var/obj/structure/alien/resin/resin = src + resin.icon_state = "[resin.resintype][junction]" + return \ No newline at end of file diff --git a/code/modules/mining/surprises/vg.dm b/code/modules/mining/surprises/vg.dm index 120df968390..ade364ef084 100644 --- a/code/modules/mining/surprises/vg.dm +++ b/code/modules/mining/surprises/vg.dm @@ -120,14 +120,14 @@ w_cand -= weed_turf if(weed_turf.density) continue - if(locate(/obj/effect/alien) in weed_turf) + if(locate(/obj/structure/alien) in weed_turf) continue if(weed_turf && !egged) - new /obj/effect/alien/weeds/node(weed_turf) + new /obj/structure/alien/weeds/node(weed_turf) weeds += weed_turf break for(var/e=0;e= maxHealth - getCloneLoss()) adjustToxLoss(plasma_rate) else @@ -79,7 +79,7 @@ if(!environment) return - + var/loc_temp = T0C if(istype(loc, /obj/mecha)) var/obj/mecha/M = loc @@ -193,7 +193,7 @@ /mob/living/carbon/alien/setDNA() return - + /mob/living/carbon/alien/verb/nightvisiontoggle() set name = "Toggle Night Vision" set category = "Alien" @@ -243,7 +243,7 @@ Des: Removes all infected images from the alien. /mob/living/carbon/alien/larva/updatePlasmaDisplay() return - + #undef HEAT_DAMAGE_LEVEL_1 #undef HEAT_DAMAGE_LEVEL_2 #undef HEAT_DAMAGE_LEVEL_3 diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index c496d107000..4efc0c56dc6 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -23,25 +23,15 @@ Doesn't work on other aliens/AI.*/ set desc = "Plants some alien weeds" set category = "Alien" - if(locate(/obj/effect/alien/weeds/node) in get_turf(src)) + if(locate(/obj/structure/alien/weeds/node) in get_turf(src)) src << "There's already a weed node here." - return - - if(constructing) - src << "You are already constructing something." return - + if(powerc(50,1)) - constructing = 1 - stunned = 5 - src << "You start planting a weed node." - spawn(30) - adjustToxLoss(-50) - for(var/mob/O in viewers(src, null)) - O.show_message(text("[src] has planted some alien weeds!"), 1) - new /obj/effect/alien/weeds/node(loc) - constructing = 0 - stunned = 0 + adjustToxLoss(-50) + for(var/mob/O in viewers(src, null)) + O.show_message(text("[src] has planted some alien weeds!"), 1) + new /obj/structure/alien/weeds/node(loc) return /mob/living/carbon/alien/humanoid/verb/whisp(mob/M as mob in oview()) @@ -106,7 +96,7 @@ Doesn't work on other aliens/AI.*/ return adjustToxLoss(-200) - new /obj/effect/alien/acid(get_turf(O), O) + new /obj/effect/acid(get_turf(O), O) visible_message("[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!") else src << "Target is too far away." @@ -136,37 +126,24 @@ Doesn't work on other aliens/AI.*/ return /mob/living/carbon/alien/humanoid/proc/resin() // -- TLE - set name = "Secrete Resin (75)" + set name = "Secrete Resin (55)" set desc = "Secrete tough malleable resin." set category = "Alien" - if(powerc(75)) - if(constructing) - src << "You are already constructing something." - return - var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin door","resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist - - if(!choice || !powerc(75)) - return - - constructing = 1 - stunned = 5 - src << "You start shaping a [choice]." - spawn(60) - adjustToxLoss(-75) - for(var/mob/O in viewers(src, null)) - O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1) - switch(choice) - if("resin door") - new /obj/structure/mineral_door/resin(loc) - if("resin wall") - new /obj/effect/alien/resin/wall(loc) - if("resin membrane") - new /obj/effect/alien/resin/membrane(loc) - if("resin nest") - new /obj/structure/stool/bed/nest(loc) - constructing = 0 - stunned = 0 + if(powerc(55)) + var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist + + if(!choice || !powerc(55)) return + adjustToxLoss(-55) + for(var/mob/O in viewers(src, null)) + O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1) + switch(choice) + if("resin wall") + new /obj/structure/alien/resin/wall(loc) + if("resin membrane") + new /obj/structure/alien/resin/membrane(loc) + if("resin nest") + new /obj/structure/stool/bed/nest(loc) return /mob/living/carbon/alien/humanoid/verb/regurgitate() 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 b8f412a488e..a06482242c2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -7,7 +7,7 @@ max_plasma = 250 icon_state = "aliens_s" plasma_rate = 10 - + /mob/living/carbon/alien/humanoid/sentinel/large name = "alien praetorian" icon = 'icons/mob/alienlarge.dmi' @@ -23,8 +23,8 @@ maxHealth = 200 health = 200 move_delay_add = 1 - large = 1 - + large = 1 + /mob/living/carbon/alien/humanoid/sentinel/large/update_icons() lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again update_hud() //TODO: remove the need for this to be here @@ -38,7 +38,7 @@ icon_state = "prat_s" for(var/image/I in overlays_standing) overlays += I - + /mob/living/carbon/alien/humanoid/sentinel/New() var/datum/reagents/R = new/datum/reagents(100) reagents = R @@ -70,7 +70,7 @@ else healths.icon_state = "health6" - +/* /mob/living/carbon/alien/humanoid/sentinel/verb/evolve() // -- TLE set name = "Evolve (250)" set desc = "Become a Praetorian, Royal Guard to the Queen." @@ -89,4 +89,4 @@ new_xeno.mind.name = new_xeno.name del(src) return - \ No newline at end of file +*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index b8853854594..867804f87c2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -77,26 +77,15 @@ /mob/living/carbon/alien/humanoid/empress/verb/lay_egg() set name = "Lay Egg (250)" set desc = "Lay an egg to produce huggers to impregnate prey with." - set category = "Alien" - - if(locate(/obj/effect/alien/egg) in get_turf(src)) + set category = "Alien" + + if(locate(/obj/structure/alien/egg) in get_turf(src)) src << "There's already an egg here." return - - if(constructing) - src << "You are already constructing something." - return - - if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly. - constructing = 1 - stunned = 5 - src << "You start laying an egg." - spawn(30) - adjustToxLoss(-250) - for(var/mob/O in viewers(src, null)) - O.show_message(text("\green [src] has laid an egg!"), 1) - new /obj/effect/alien/egg(loc) - constructing = 0 - stunned = 0 + + if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly. + adjustToxLoss(-75) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\green [src] has laid an egg!"), 1) + new /obj/structure/alien/egg(loc) return - \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 6b74e420835..1652529c290 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -10,11 +10,10 @@ var/next_attack = 0 update_icon = 1 var/leap_on_click = 0 - var/constructing = 0 //This is fine right now, if we're adding organ specific damage this needs to be updated /mob/living/carbon/alien/humanoid/New() - var/datum/reagents/R = new/datum/reagents(100) + var/datum/reagents/R = new/datum/reagents(1000) reagents = R R.my_atom = src if(name == "alien") @@ -52,15 +51,15 @@ /mob/living/carbon/alien/humanoid/movement_delay() var/tally = 0 if (istype(src, /mob/living/carbon/alien/humanoid/queen)) - tally += 5 + tally += 4 if (istype(src, /mob/living/carbon/alien/humanoid/drone)) - tally += 2 + tally += 0 if (istype(src, /mob/living/carbon/alien/humanoid/sentinel)) - tally += 1 + tally += 0 if (istype(src, /mob/living/carbon/alien/humanoid/hunter)) - tally = -1 // hunters go supersuperfast + tally = -2 // hunters go supersuperfast return (tally + move_delay_add + config.alien_delay) - + /mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0) return 1 @@ -250,7 +249,7 @@ if (M_HULK in M.mutations)//M_HULK SMASH damage += 14 spawn(0) - Weaken(damage) // Why can a hulk knock an alien out but not knock out a human? Damage is robust enough. + Paralyse(1) step_away(src,M,15) sleep(3) step_away(src,M,15) @@ -259,7 +258,7 @@ if ((O.client && !( O.blinded ))) O.show_message(text("\red [] has punched []!", M, src), 1) if (damage > 9||prob(5))//Regular humans have a very small chance of weakening an alien. - Weaken(1,5) + Paralyse(2) for(var/mob/O in viewers(M, null)) if ((O.client && !( O.blinded ))) O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2) @@ -274,7 +273,7 @@ if ("disarm") if (!lying) if (prob(5))//Very small chance to push an alien down. - Weaken(2) + Paralyse(2) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) @@ -321,4 +320,4 @@ /mob/living/carbon/alien/humanoid/canBeHandcuffed() - return 1 + 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 082431574d4..2c4ba4a7e43 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -7,8 +7,6 @@ status_flags = CANPARALYSE heal_rate = 5 plasma_rate = 20 - move_delay_add = 2 - max_plasma = 1000 large = 1 /mob/living/carbon/alien/humanoid/queen/New() @@ -58,29 +56,19 @@ //Queen verbs /mob/living/carbon/alien/humanoid/queen/verb/lay_egg() - set name = "Lay Egg (250)" + set name = "Lay Egg (75)" set desc = "Lay an egg to produce huggers to impregnate prey with." set category = "Alien" - if(locate(/obj/effect/alien/egg) in get_turf(src)) + if(locate(/obj/structure/alien/egg) in get_turf(src)) src << "There's already an egg here." return - - if(constructing) - src << "You are already constructing something." - return - - if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly. - constructing = 1 - stunned = 5 - src << "You start laying an egg." - spawn(60) - adjustToxLoss(-250) - for(var/mob/O in viewers(src, null)) - O.show_message(text("[src] has laid an egg!"), 1) - new /obj/effect/alien/egg(loc) - constructing = 0 - stunned = 0 - return + + if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly. + adjustToxLoss(-75) + for(var/mob/O in viewers(src, null)) + O.show_message(text("[src] has laid an egg!"), 1) + new /obj/structure/alien/egg(loc) + return /mob/living/carbon/alien/humanoid/queen/large @@ -104,7 +92,7 @@ overlays += I - +/* /mob/living/carbon/alien/humanoid/queen/verb/evolve() // -- TLE set name = "Evolve (1000)" set desc = "The ultimate transformation. Become an alien Empress. Only one empress can exist at a time." @@ -134,3 +122,4 @@ src << "We already have an alive empress." return +*/ \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 9165334ab2d..5515c951514 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -2,7 +2,7 @@ name = "alien larva" real_name = "alien larva" icon_state = "larva0" - pass_flags = PASSTABLE + pass_flags = PASSTABLE | PASSMOB maxHealth = 30 health = 30 diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index 7d71cd3d029..64d74d916de 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -39,20 +39,19 @@ apply_damage(damage, BRUTE, affecting, armor_block) if (damage >= 25) visible_message("\red [M] has wounded [src]!") - apply_effect(rand(0.5,3), WEAKEN, armor_block) + apply_effect(4, WEAKEN, armor_block) updatehealth() if("disarm") - if (prob(80)) + var/randn = rand(1, 100) + if (randn <= 80) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - Weaken(rand(0.5,3)) + Weaken(5) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(text("\red [] has tackled down []!", M, src), 1) - if (prob(25)) - M.Weaken(rand(2,4)) else - if (prob(80)) + if (randn <= 99) playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) drop_item() visible_message(text("\red [] disarmed []!", M, src)) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 04821e153fd..1e695cc2f1c 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -1,6 +1,8 @@ /mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0)) return 1 + if(istype(mover) && mover.checkpass(PASSMOB)) + return 1 if(ismob(mover)) var/mob/moving_mob = mover if ((other_mobs && moving_mob.other_mobs)) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 526a631ef36..2fa168c2afc 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1505,8 +1505,8 @@ datum O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/effect/alien/weeds/)) - var/obj/effect/alien/weeds/alien_weeds = O + if(istype(O,/obj/structure/alien/weeds/)) + var/obj/structure/alien/weeds/alien_weeds = O alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it diff --git a/code/setup.dm b/code/setup.dm index 6fa44e39477..67b3535be1f 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -222,6 +222,7 @@ var/MAX_EXPLOSION_RANGE = 14 #define PASSGLASS 2 #define PASSGRILLE 4 #define PASSBLOB 8 +#define PASSMOB 16 //turf-only flags #define NOJAUNT 1 diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index fbd4e4100d3..203ac1ede50 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index 903e241c1dc..a5e120020a2 100644 Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 09b8f8068e9..3232b061196 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -10214,7 +10214,7 @@ "dOv" = (/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTH)"; icon_state = "pwall"; dir = 1},/area) "dOw" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHWEST)"; icon_state = "pwall"; dir = 10},/area) "dOx" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dOy" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dOy" = (/obj/structure/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned) "dOz" = (/turf/space,/area/mine/unexplored) "dOA" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/research_outpost/spectro) "dOB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/research_outpost/spectro) @@ -10239,10 +10239,10 @@ "dOU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dOV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area) "dOW" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area) -"dOX" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) -"dOY" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) +"dOX" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dOY" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned) "dOZ" = (/obj/machinery/door/airlock/hatch,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) -"dPa" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dPa" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "dPb" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "dPc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned) "dPd" = (/turf/simulated/mineral/random,/area/mine/explored) @@ -10302,7 +10302,7 @@ "dQf" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/mineral,/area/research_outpost/atmos) "dQg" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dQh" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned) -"dQi" = (/obj/item/stack/rods,/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dQi" = (/obj/structure/alien/weeds,/turf/simulated/floor,/area/mine/abandoned) "dQj" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/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/research_outpost/hallway) "dQl" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) @@ -10334,8 +10334,8 @@ "dQL" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/atmos) "dQM" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area) "dQN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned) -"dQO" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) -"dQP" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dQO" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"dQP" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "dQQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dQR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dQS" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway) @@ -10367,7 +10367,7 @@ "dRs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dRt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dRu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dRv" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) +"dRv" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned) "dRw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dRx" = (/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/research_outpost/hallway) "dRy" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway) @@ -10394,9 +10394,9 @@ "dRT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dRU" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dRV" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dRW" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned) -"dRX" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned) -"dRY" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned) +"dRW" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) +"dRX" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dRY" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) "dRZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/wood,/area/research_outpost/hallway) "dSa" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/research_outpost/hallway) "dSb" = (/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/wood,/area/research_outpost/hallway) @@ -10424,9 +10424,9 @@ "dSx" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) "dSy" = (/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dSz" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"dSA" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"dSA" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dSB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) -"dSC" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) +"dSC" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dSD" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry) "dSE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dSF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) @@ -10462,7 +10462,7 @@ "dTj" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dTk" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dTl" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) -"dTm" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned) +"dTm" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) "dTn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dTo" = (/obj/machinery/computer/shuttle_control/research{req_access_txt = "65"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry) "dTp" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/entry) @@ -10505,10 +10505,10 @@ "dUa" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dUb" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/turf/space,/area/mine/abandoned) "dUc" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned) -"dUd" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"dUd" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dUe" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned) -"dUf" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) -"dUg" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dUf" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dUg" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dUh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dUi" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry) "dUj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry) @@ -10551,10 +10551,10 @@ "dUU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dUV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dUW" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned) -"dUX" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"dUX" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dUY" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dUZ" = (/turf/simulated/floor/airless,/area/mine/abandoned) -"dVa" = (/obj/effect/alien/weeds,/turf/simulated/floor,/area/mine/abandoned) +"dVa" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) "dVb" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) "dVc" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned) "dVd" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned) @@ -10598,12 +10598,12 @@ "dVP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) "dVQ" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) "dVR" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) -"dVS" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) +"dVS" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned) "dVT" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) -"dVU" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) -"dVV" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dVU" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"dVV" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned) "dVW" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned) -"dVX" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) +"dVX" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "dVY" = (/turf/simulated/mineral,/area/mine/explored) "dVZ" = (/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/research_outpost/entry) "dWa" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/entry) @@ -10642,7 +10642,7 @@ "dWH" = (/obj/structure/table,/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) "dWI" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "dWJ" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned) -"dWK" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) +"dWK" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned) "dWL" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dWM" = (/turf/simulated/wall,/area/mine/unexplored) "dWN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area) @@ -10683,8 +10683,8 @@ "dXw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) "dXx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned) "dXy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned) -"dXz" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned) -"dXA" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) +"dXz" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned) +"dXA" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dXB" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dXC" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dXD" = (/turf/simulated/wall,/area/research_outpost/gearstore) @@ -10724,7 +10724,7 @@ "dYl" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor,/area/research_outpost/longtermstorage) "dYm" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) "dYn" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor,/area/mine/abandoned) -"dYo" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) +"dYo" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) "dYp" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dYq" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dYr" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/unexplored) @@ -10761,7 +10761,7 @@ "dYW" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area) "dYX" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned) "dYY" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) -"dYZ" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"dYZ" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) "dZa" = (/turf/simulated/wall,/area/mine/explored) "dZb" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "dZc" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -10796,7 +10796,7 @@ "dZF" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "dZG" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "dZH" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned) -"dZI" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"dZI" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dZJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) "dZK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned) "dZL" = (/obj/structure/ore_box,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) @@ -10824,7 +10824,7 @@ "eah" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) "eai" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) "eaj" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) -"eak" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) +"eak" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "eal" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned) "eam" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned) "ean" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned) @@ -13628,28 +13628,28 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNcdNddNcaaaaaaaaaaaaaaadLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndMxdLndLndLndMxdMxdLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndMxaaaaaadNedMOaabaabaabaabaabdLndLndLndLndMedNfdNgdNhdNidNjdNkdNldNmdNndNodNpdNqdNrdModNsdNtdModNudNvdNwdNxdNydNzdNAdNBdNCdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNEdNFdNEaabaaaaaaaaadLndLndLndLndLndLndLndLndLndLndLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndMxdMxdMxdMxdMxdLndLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaadMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdNHdNIdMedNJdNjdNKdNLdNMdNNdNOdNPdNQdNRdNSdNTdNUdNVdNWdMYdNXdNYdNZdOadObdOcdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOddOedOfdOgaabaaaaaadLndLndLndLndLndLndLndMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaadMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdNHdOhdMedOidNKdOjdOkdOldOmdOndOmdOodOmdOmdOmdOmdOpdOqdMYdOrdNYdOsdOtdOudNCdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOvdOvdOwdOxdOydNEaabaaaaaadLndLndLndLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdOzaabdMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdOAdOBdMedOCdODdOEdOFdOGdOHdOIdOJdOKdOLdOMdONdOmdOOdOPdMYdOQdORdOSdOTdMYdOUdOVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOWdOXdOYdOZdPadPbdPcaabaabdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPeaabdMdaaaaabaabaabaabaabdLndLYdLYdLYdLYdLYdPfdPgdLYdMRdMRdPhdPidPjdOmdPkdPldPmdPndPodPpdOmdPqdPrdPsdPtdPudPvdPwdMYdPxdPyaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPzdOvdPAdPBdPCdOydPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdOmdPRdPSdPTdPUdPVdPWdPXdPYdPZdQadQadQadQbdQcdQddQedQfdQfdQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQhdQidQjdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQkdQldQmdQndQodQpdQqdQrdQsdQtdQudQvdQwdQxdQydQzdQAdQBdQCdQDdQEdQFdQGdQadQHdQIdQJdQKdQadQLdPydPydPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQMdQNdQOdQPdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQQdQRdPGdQSdQTdQUdQVdQWdQXdQYdLYdQZdRadRbdRcdRddRedRfdRgdRhdOmdRidRjdRkdRldRldRmdRndRodRpdRqdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdRsdRtdRudPDdRvdRwdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdRxdQRdPGdQSdQTdRydRzdQWdRAdRBdLYdRCdRDdOmdREdOmdOmdOmdOmdRFdOmdRGdRHdQadRIdRJdRKdRLdRMdRNdROdRPdRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRQdRRdRSdRTdRUdRVdNcdPbdRWdPDdRXdRYdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModQRdPGdRZdQTdSadSbdQWdScdSddLYdSedSfdSgdShdSidSjdSkdOmdSldSmdSndSodSpdSqdSrdSsdStdSudRNdRrdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdSvdSwdRRdSxdSydSzdSAdSBdRWdSCdRYdRYdRXdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadSDdSEdSFdSGdSHdSIdSFdSJdSKdSLdSMdModSNdSOdLYdLYdLYdLYdLYdSPdSQdSRdShdSSdSjdSTdOmdSUdSVdSWdSXdSYdSZdTadTbdTcdTddTedTfdLYdTgdMMdLNdLNdLNdLNdLNdLNdLOdThaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTidSvdTjdSvdRSdRSdRvdTkdSydPDdQPdTldPDdRYdTmdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadTndTodTpdTqdTrdTrdTsdTtdTudTvdTwdTxdTydTzdTAdTBdTCdTDdTEdTFdTGdTHdTIdTJdTKdTLdOmdTMdTNdTOdTPdQadQadTQdQadQadQadTRdTSdTTdTUdTVdTWdTWdTXdTWdTWdTWdTYdMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTZdUadRSdUbdUcdRSdQjdUddSzdUedUfdUgdPDdPDdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadUhdUidTrdTrdTrdTrdUjdUkdUldUmdUndUodUpdUqdTAdUrdUsdUtdUudUvdUwdUxdUydUzdUAdUBdUCdUDdUAdUEdUFdUGdUHdUIdUJdUGdUKdUGdUAdULdUMdUNdUOdUPdUQdURdUSdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUUdUVdUWdRSdUcdUXdSxdUYdSydUZdPDdVadVbdPDdVcdRWdVddVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadVfdVgdTrdTrdVhdTrdVidVjdVkdVldVmdVndVodVpdTAdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdVBdVCdVDdVAdVEdVBdVFdVAdVBdVGdVHdVIdVJdVKdVLdVMdVNdVOdVPdVQdVQdVRdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdMxdMxdPDdRVdVSdVTdVUdUWdVVdSydSzdVWdNcdPbdVXdPDdVcdQPdRWdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndVYdVYdVYdVYdVYdVYdLndLndLndLndLndLndLnaaaaaaaaaaaadVZdWadTrdWbdWcdWddWedWfdWgdWhdWidWjdWkdWldTAdWmdWndWodWpdWpdWpdWpdWqdWrdWsdWtdWrdWudWvdWwdWudWxdWydWzdWxdWxdWAdWBdWCdWDdTWdWEdWFdTWdWGdVQdVQdWHdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdPDdPDdPDdPDdPDdRUdSydWIdVSdSydUddWJdVWdVWdSBdRWdVadPDdVcdQjdWKdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdVYdWLdWLdWLdWLdVYdVYdVYdLndLndLndLndWMdWNaaaaaaaaadWOdWPdSFdWQdWRdWRdWRdWRdWSdWTdWUdModModModTAdWVdWpdWWdWpdWXdWYdWZdXadWrdXbdXcdXddWudXedXfdXgdWxdXhdXidXjdWxdXkdXldWCdXmdXndTWdTWdTWdXodXpdXqdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdXrdPbdSzdXsdPDdXtdXudXvdPDdUedPDdXwdXxdXydPDdPbdXzdNFdXAdQjdQOdNFdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdLndLndXBdXCdLNdLNdLsdLNdMNdMOaabaabdXDdXEdXFdXGdXHdXIdXJdXKdXLdXMdXNdXOdXPdXQdXRdXSdXTdXUdXVdWrdXWdXXdXYdWudXZdYadYbdWxdYcdYddYedWxdYfdYgdYhdYidYjdYkdYldTWdTWdTWdTWdTWdYmdMyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdPDdXrdQjdPbdSxdUedXzdVSdPbdVSdQOdPbdPbdYndRWdPbdQjdQjdPDdNFdYodQjdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdYpdYqdYrdLnaaaaaaaaaaaaaaaaaaaabdXDdYsdYtdYudYvdYwdYxdYydYzdYAdYBdTAdWpdWWdWpdYCdWpdYDdYEdWrdYFdYGdYHdWudYIdYJdYKdWxdYLdYMdYNdWxdYOdYPdYQdYRdYSdYSdYTdXndYUdLrdLNdLNdYVdYWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdPDdXrdYXdQjdQjdUedQjdWKdRvdQjdYYdQOdWKdVXdNFdQjdYZdQPdPDdVSdNFdXzdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZadWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZbdVYdZcdZddVYdVYaaaaaaaaaaaaaaaaaaaabdXDdZedZfdZgdZhdZgdZidZjdXDdYzdZkdTAdZldZmdZndZodWpdZpdZqdWrdZrdZsdZtdWudZudZvdZwdWxdZxdZydZzdWxdZAdZBdXndZCdZDdZEdZDdXndZFdZGdMxaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdPDdXrdZHdSxdRUdPDdZIdPDdZJdZKdPDdSzdPDdZJdZKdPDdSydXzdPDdYndUgdNFdVadPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZMdZadZNdZadVYaaaaaaaaaaaaaaaaaaaaaaabdXDdZOdZjdZjdZPdZQdZRdZjdZSdYzdZTdTAdZUdZUdZUdZUdWpdZVdXUdWrdZWdZXdZYdWudZZeaaeabdWxeaceadeaedWxeafeageahdXndXndXndXneaieajdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdZIdPDeakdRWdSzdVadQPdSydVVdSydUgdSxdPDdZJealeameandPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZbdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaoeapeaqaaaaaaaaaaaaaaaaaaaaaaabaabdXDeareareaseateaudZjeaveawdYzeaxdTAdWLdWLdWLdWLdWpeayeazdWreaAeaBeaCdWueaDeaEeaFdWxeaGeaHeaIdWxeaJeaKeahdLndMxdLneaLeaMeaNdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdRWdVaeaOdUddOydSxdRWdPDdSydQPdPDeaPeaQeaQeaRdPDeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaTeaUeaVaaaaaaaaaaaaaaaaaaaabaabaabdXDdXDeaWeaXdXDeaYeaZebaeaZdXDebbdWLdWLdWLdWLdWLdWpdWpdWpdWrdWrdWrdWrdWudWudWudWudWxdWxdWxdWxdWxeaheahebcebddLIdLIebedZGdLndLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdVadPbdUgdRWdSydQPdUgdPDdZIdPDdPDdVcdNFeaQebfebgeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebhebiebjaaaaaaaaaaaaaaaaabebkeblebmebneboebpebqebrebsebtebuebvdXDebbdWLdWLdWLdWLdWLebwebxebydLndLndLndLndLndLndLndLndLndLndLndLndLndLnebzebAdZGebBdLndLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdPDdPDdPDdPDdPDdPDdPDdPDdZIdPDdVcdNFdVddNFeaRebCeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebEebFebGebGebGebGebGebGebHebIebJebKebKebLebMebNdXDebOebPebQdXDebbdWLdWLdWLdWLdWLeaTebiebRdLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLnebzebAdZGebSeaSebSdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzaaaaaaaaaaaaaaadOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdZIdZIdZIdZIdZIdZIdZIdZIdZIdZIdPDdVcdVddVddVddVedPDeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebTebUebUebUebUebUebUebUebUebTdWLdWLdWLdWLdWLdWLdXDeaZebVeaZdXDebWdWLdWLdWLdWLdWLebXebYebZdLIdLIdLIdLIecadLIdLIdLIdLIdLIecbeccecdecedZGeaSeaSeaSebSdWMdLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOvdOvdOwdOxdOXdNEaabaaaaaadLndLndLndLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdOzaabdMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdOAdOBdMedOCdODdOEdOFdOGdOHdOIdOJdOKdOLdOMdONdOmdOOdOPdMYdOQdORdOSdOTdMYdOUdOVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOWdYodYZdOZdZIdPbdPcaabaabdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPeaabdMdaaaaabaabaabaabaabdLndLYdLYdLYdLYdLYdPfdPgdLYdMRdMRdPhdPidPjdOmdPkdPldPmdPndPodPpdOmdPqdPrdPsdPtdPudPvdPwdMYdPxdPyaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPzdOvdPAdPBdPCdOXdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdOmdPRdPSdPTdPUdPVdPWdPXdPYdPZdQadQadQadQbdQcdQddQedQfdQfdQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQheakdQjdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQkdQldQmdQndQodQpdQqdQrdQsdQtdQudQvdQwdQxdQydQzdQAdQBdQCdQDdQEdQFdQGdQadQHdQIdQJdQKdQadQLdPydPydPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQMdQNdSCdPadPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQQdQRdPGdQSdQTdQUdQVdQWdQXdQYdLYdQZdRadRbdRcdRddRedRfdRgdRhdOmdRidRjdRkdRldRldRmdRndRodRpdRqdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdRsdRtdRudPDdUddRwdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdRxdQRdPGdQSdQTdRydRzdQWdRAdRBdLYdRCdRDdOmdREdOmdOmdOmdOmdRFdOmdRGdRHdQadRIdRJdRKdRLdRMdRNdROdRPdRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRQdRRdRSdRTdRUdRVdNcdPbdOYdPDdVVdVSdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModQRdPGdRZdQTdSadSbdQWdScdSddLYdSedSfdSgdShdSidSjdSkdOmdSldSmdSndSodSpdSqdSrdSsdStdSudRNdRrdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdSvdSwdRRdSxdSydSzdVUdSBdOYdVadVSdVSdVVdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadSDdSEdSFdSGdSHdSIdSFdSJdSKdSLdSMdModSNdSOdLYdLYdLYdLYdLYdSPdSQdSRdShdSSdSjdSTdOmdSUdSVdSWdSXdSYdSZdTadTbdTcdTddTedTfdLYdTgdMMdLNdLNdLNdLNdLNdLNdLOdThaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTidSvdTjdSvdRSdRSdUddTkdSydPDdPadTldPDdVSdWKdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadTndTodTpdTqdTrdTrdTsdTtdTudTvdTwdTxdTydTzdTAdTBdTCdTDdTEdTFdTGdTHdTIdTJdTKdTLdOmdTMdTNdTOdTPdQadQadTQdQadQadQadTRdTSdTTdTUdTVdTWdTWdTXdTWdTWdTWdTYdMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTZdUadRSdUbdUcdRSdQjdQOdSzdUedVXdQPdPDdPDdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadUhdUidTrdTrdTrdTrdUjdUkdUldUmdUndUodUpdUqdTAdUrdUsdUtdUudUvdUwdUxdUydUzdUAdUBdUCdUDdUAdUEdUFdUGdUHdUIdUJdUGdUKdUGdUAdULdUMdUNdUOdUPdUQdURdUSdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUUdUVdUWdRSdUcdXAdSxdUYdSydUZdPDdQidVbdPDdVcdOYdVddVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadVfdVgdTrdTrdVhdTrdVidVjdVkdVldVmdVndVodVpdTAdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdVBdVCdVDdVAdVEdVBdVFdVAdVBdVGdVHdVIdVJdVKdVLdVMdVNdVOdVPdVQdVQdVRdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdMxdMxdPDdRVdSAdVTdXzdUWdRXdSydSzdVWdNcdPbdUfdPDdVcdPadOYdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndVYdVYdVYdVYdVYdVYdLndLndLndLndLndLndLnaaaaaaaaaaaadVZdWadTrdWbdWcdWddWedWfdWgdWhdWidWjdWkdWldTAdWmdWndWodWpdWpdWpdWpdWqdWrdWsdWtdWrdWudWvdWwdWudWxdWydWzdWxdWxdWAdWBdWCdWDdTWdWEdWFdTWdWGdVQdVQdWHdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdPDdPDdPDdPDdPDdRUdSydWIdSAdSydQOdWJdVWdVWdSBdOYdQidPDdVcdQjdTmdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdVYdWLdWLdWLdWLdVYdVYdVYdLndLndLndLndWMdWNaaaaaaaaadWOdWPdSFdWQdWRdWRdWRdWRdWSdWTdWUdModModModTAdWVdWpdWWdWpdWXdWYdWZdXadWrdXbdXcdXddWudXedXfdXgdWxdXhdXidXjdWxdXkdXldWCdXmdXndTWdTWdTWdXodXpdXqdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdXrdPbdSzdXsdPDdXtdXudXvdPDdUedPDdXwdXxdXydPDdPbdRvdNFdUXdQjdSCdNFdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdLndLndXBdXCdLNdLNdLsdLNdMNdMOaabaabdXDdXEdXFdXGdXHdXIdXJdXKdXLdXMdXNdXOdXPdXQdXRdXSdXTdXUdXVdWrdXWdXXdXYdWudXZdYadYbdWxdYcdYddYedWxdYfdYgdYhdYidYjdYkdYldTWdTWdTWdTWdTWdYmdMyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdPDdXrdQjdPbdSxdUedRvdSAdPbdSAdSCdPbdPbdYndOYdPbdQjdQjdPDdNFdRYdQjdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdYpdYqdYrdLnaaaaaaaaaaaaaaaaaaaabdXDdYsdYtdYudYvdYwdYxdYydYzdYAdYBdTAdWpdWWdWpdYCdWpdYDdYEdWrdYFdYGdYHdWudYIdYJdYKdWxdYLdYMdYNdWxdYOdYPdYQdYRdYSdYSdYTdXndYUdLrdLNdLNdYVdYWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdPDdXrdYXdQjdQjdUedQjdTmdUddQjdYYdSCdTmdUfdNFdQjdUgdPadPDdSAdNFdRvdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZadWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZbdVYdZcdZddVYdVYaaaaaaaaaaaaaaaaaaaabdXDdZedZfdZgdZhdZgdZidZjdXDdYzdZkdTAdZldZmdZndZodWpdZpdZqdWrdZrdZsdZtdWudZudZvdZwdWxdZxdZydZzdWxdZAdZBdXndZCdZDdZEdZDdXndZFdZGdMxaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdPDdXrdZHdSxdRUdPDdOydPDdZJdZKdPDdSzdPDdZJdZKdPDdSydRvdPDdYndQPdNFdQidPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZMdZadZNdZadVYaaaaaaaaaaaaaaaaaaaaaaabdXDdZOdZjdZjdZPdZQdZRdZjdZSdYzdZTdTAdZUdZUdZUdZUdWpdZVdXUdWrdZWdZXdZYdWudZZeaaeabdWxeaceadeaedWxeafeageahdXndXndXndXneaieajdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdOydPDdRWdOYdSzdQidPadSydRXdSydQPdSxdPDdZJealeameandPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZbdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaoeapeaqaaaaaaaaaaaaaaaaaaaaaaabaabdXDeareareaseateaudZjeaveawdYzeaxdTAdWLdWLdWLdWLdWpeayeazdWreaAeaBeaCdWueaDeaEeaFdWxeaGeaHeaIdWxeaJeaKeahdLndMxdLneaLeaMeaNdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdOYdQieaOdQOdOXdSxdOYdPDdSydPadPDeaPeaQeaQeaRdPDeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaTeaUeaVaaaaaaaaaaaaaaaaaaaabaabaabdXDdXDeaWeaXdXDeaYeaZebaeaZdXDebbdWLdWLdWLdWLdWLdWpdWpdWpdWrdWrdWrdWrdWudWudWudWudWxdWxdWxdWxdWxeaheahebcebddLIdLIebedZGdLndLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdQidPbdQPdOYdSydPadQPdPDdOydPDdPDdVcdNFeaQebfebgeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebhebiebjaaaaaaaaaaaaaaaaabebkeblebmebneboebpebqebrebsebtebuebvdXDebbdWLdWLdWLdWLdWLebwebxebydLndLndLndLndLndLndLndLndLndLndLndLndLndLnebzebAdZGebBdLndLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdPDdPDdPDdPDdPDdPDdPDdPDdOydPDdVcdNFdVddNFeaRebCeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebEebFebGebGebGebGebGebGebHebIebJebKebKebLebMebNdXDebOebPebQdXDebbdWLdWLdWLdWLdWLeaTebiebRdLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLnebzebAdZGebSeaSebSdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzaaaaaaaaaaaaaaadOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydOydOydOydOydOydOydOydOydOydOydPDdVcdVddVddVddVedPDeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebTebUebUebUebUebUebUebUebUebTdWLdWLdWLdWLdWLdWLdXDeaZebVeaZdXDebWdWLdWLdWLdWLdWLebXebYebZdLIdLIdLIdLIecadLIdLIdLIdLIdLIecbeccecdecedZGeaSeaSeaSebSdWMdLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDeanecfecgdPDdPDeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebJechechechechechechechechebDebJdWLdWLdWLdWLdWLdWLeciecjeckeclecmecndWLdWLdWLdWLebyebyebydLndLndMxdMxdMxdMxdMxdMxdMxdMxecoecpecqecreaSebSeaSeaSebSdLndLndLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxeaSeaSeaSdPDeaQeaQdVddPDeaSeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLaaaaaaaaaaaaaaaaaaaaaaaadVYdVYdVYdVYdVYdVYdVYdVYdWLdWLdWLdWLdWLdWLeciecseckdWLdWLdWLdVYdVYdLndLndLndLndMxdMxdMxdMxdMxdMxdMxdWMebSeaSecteaSebSeaSeaSeaSdLndLndLndLndLndMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxeaSeaSeaSdPDecuecvecudPDeaSeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLaaaaaaaaaaaaaaaaaaaaaaaadVYdVYdVYdLndLndLndLndVYdVYdVYdWLdWLdWLdWLdWLecwdWLdWLdWLdWLdVYdLndLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdWMdMxeaSebBdMxdLndMxdMxdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa