From 9c879031ebf29ce3715e0286d519d9f44fe453f8 Mon Sep 17 00:00:00 2001 From: BurgerLUA Date: Mon, 1 Oct 2018 13:25:18 -0700 Subject: [PATCH] Infestation Overhaul (#5243) Overview Makes it so that the infestation overhaul is better coded and works better with any station. Instead of picking from a set of 8 areas (2 which don't exist) it picks from any of the station areas without players currently in them. It also removes some of the more dumber spawns (yithians who exist in the sea, and diyaabs which I don't fucking know.), and replaces them with even dumber spawns such as BLUESPACE BEARS and HIVEBOTS. Details Spawns are based on event severity. A minor severity spawns mice and lizards. A moderate one spawns space bats and baby slimes. A major one spawns bluespace bears and hivebots. The chosen spawns can be any area on the station, however some places are limited. The limitation is based on area as well as if there are any players currently present in the area. Don't want bluespace bears to teleport on people. --- code/game/area/areas.dm | 16 +- code/modules/events/event_container.dm | 84 +++--- code/modules/events/infestation.dm | 279 +++++------------- .../living/simple_animal/friendly/slime.dm | 2 +- .../mob/living/simple_animal/hostile/bear.dm | 2 +- .../burgerbb-infestation_overhaul.yml | 39 +++ .../Event Probabilities.xlsx | Bin 48192 -> 53620 bytes 7 files changed, 175 insertions(+), 247 deletions(-) create mode 100644 html/changelogs/burgerbb-infestation_overhaul.yml diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 8a395730de5..9c84353c5f5 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -406,7 +406,7 @@ var/list/mob/living/forced_ambiance_list = new //A useful proc for events. //This returns a random area of the station which is meaningful. Ie, a room somewhere -/proc/random_station_area() +/proc/random_station_area(var/filter_players = FALSE) var/list/possible = list() for(var/Y in the_station_areas) if(!Y) @@ -420,12 +420,26 @@ var/list/mob/living/forced_ambiance_list = new continue if (istype(A, /area/constructionsite)) continue + if (istype(A, /area/turbolift)) + continue //Although hostile mobs instadying to turrets is fun //If there's no AI they'll just be hit with stunbeams all day and spam the attack logs. if (istype(A, /area/turret_protected) || LAZYLEN(A.turret_controls)) continue + if(filter_players) + var/should_continue = FALSE + for(var/mob/living/carbon/human/H in human_mob_list) + if(!H.client) + continue + if(A == get_area(H)) + should_continue = TRUE + break + + if(should_continue) + continue + possible += A return pick(possible) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 43d5c0d0d59..3b916b0adb8 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -127,57 +127,59 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT severity = EVENT_LEVEL_MUNDANE available_events = list( // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 120), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 15)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence", /datum/event/brand_intelligence, 15, list(ASSIGNMENT_JANITOR = 20), 1), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 10), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation", /datum/event/infestation, 60, list(ASSIGNMENT_JANITOR = 20, ASSIGNMENT_SECURITY = 10)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 75, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_GARDENER = 20)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Clogged Vents", /datum/event/vent_clog, 55), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "False Alarm", /datum/event/false_alarm, 100), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Drop", /datum/event/supply_drop, 80), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "CCIA General Notice", /datum/event/ccia_general_notice, 300) + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 120), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 15)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence", /datum/event/brand_intelligence, 15, list(ASSIGNMENT_JANITOR = 20), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 10), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 75, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_GARDENER = 20)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Clogged Vents", /datum/event/vent_clog, 55), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "False Alarm", /datum/event/false_alarm, 100), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Drop", /datum/event/supply_drop, 80), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "CCIA General Notice", /datum/event/ccia_general_notice, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane Vermin Infestation",/datum/event/infestation, 60, list(ASSIGNMENT_JANITOR = 15, ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 15)) + ) /datum/event_container/moderate severity = EVENT_LEVEL_MODERATE available_events = list( - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 200), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 50, list(ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 60), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 50, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_JANITOR = 20)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 100), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 80), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 45, ASSIGNMENT_CYBORG = 25, ASSIGNMENT_ENGINEER = 6, ASSIGNMENT_SCIENTIST = 6)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 40, list(ASSIGNMENT_ENGINEER = 13)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_CYBORG = 20),1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Containment Error - Virology", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 15, ASSIGNMENT_CYBORG = 20),1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Containment Error - Xenobiology", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENTIST = 15, ASSIGNMENT_CYBORG = 20),1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 100), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 1),0,10,125, list("Extended")), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 50, list(ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Moderate Spider Infestation",/datum/event/spider_infestation/moderate,50, list(ASSIGNMENT_SECURITY = 25)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 12), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Major Vermin Infestation", /datum/event/infestation, 60, list(ASSIGNMENT_JANITOR = 15, ASSIGNMENT_SECURITY = 15)) + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 200), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 50, list(ASSIGNMENT_SECURITY = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 60), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 50, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_JANITOR = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 100), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 80), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 45, ASSIGNMENT_CYBORG = 25, ASSIGNMENT_ENGINEER = 6, ASSIGNMENT_SCIENTIST = 6)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_shower, 40, list(ASSIGNMENT_ENGINEER = 13)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_CYBORG = 20),1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Containment Error - Virology", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 15, ASSIGNMENT_CYBORG = 20),1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Containment Error - Xenobiology", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENTIST = 15, ASSIGNMENT_CYBORG = 20),1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 100), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 1),0,10,125, list("Extended")), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 50, list(ASSIGNMENT_SECURITY = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Moderate Spider Infestation", /datum/event/spider_infestation/moderate, 50, list(ASSIGNMENT_SECURITY = 25)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 12), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Moderate Vermin Infestation", /datum/event/infestation/moderate, 30, list(ASSIGNMENT_JANITOR = 15, ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 15)) ) /datum/event_container/major severity = EVENT_LEVEL_MAJOR available_events = list( - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 135), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 40, list(ASSIGNMENT_ENGINEER = 5,ASSIGNMENT_SECURITY = 5), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 50, list(ASSIGNMENT_SECURITY = 10), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 40, list(ASSIGNMENT_ENGINEER = 10),1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 75, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_GARDENER = 20), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 20, list(ASSIGNMENT_MEDICAL = 15), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation",/datum/event/spider_infestation, 25, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 5), 1) + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 135), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 40, list(ASSIGNMENT_ENGINEER = 5,ASSIGNMENT_SECURITY = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 50, list(ASSIGNMENT_SECURITY = 10), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 40, list(ASSIGNMENT_ENGINEER = 10),1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 75, list(ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_GARDENER = 20), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 20, list(ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spider Infestation", /datum/event/spider_infestation, 25, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Major Vermin Infestation", /datum/event/infestation/major, 15, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 10)) ) #undef ASSIGNMENT_ANY diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index b14ec08cbeb..13227fda206 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -1,216 +1,89 @@ -//Infestation event now has two modes. -//Mundane event spawns some creatures in a place, and tells you which and where. -//Moderate event spawns twice the amount of two types of creatures, in two places. And tells you where but not what spawns - - -#define LOC_KITCHEN 0 -#define LOC_ATMOS 1 -#define LOC_INCIN 2 -#define LOC_CHAPEL 3 -#define LOC_LIBRARY 4 -#define LOC_HYDRO 5 -#define LOC_VAULT 6 -#define LOC_CONSTR 7 -#define LOC_TECH 8 -#define LOC_ARMORY 9 -#define LOC_DORMS 10 -#define LOC_FITNESS 11 -#define LOC_HOLODECK 12 -#define LOC_DISPOSAL 13 -#define LOC_CARGO 14 -#define LOC_MEETING 15 -#define LOC_LOCKER 16 -#define LOC_XENO 17 - - -#define VERM_MICE 0 -#define VERM_LIZARDS 1 -#define VERM_SPIDERS 2 -#define VERM_DIYAAB 3 -#define VERM_BATS 4 -#define VERM_YITHIAN 5 -#define VERM_TINDALOS 6 +#define INFESTATION_MICE "mice" +#define INFESTATION_LIZARDS "lizards" +#define INFESTATION_SPACE_BATS "space bats" +#define INFESTATION_SPIDERLINGS "spiderlings" +#define INFESTATION_HIVEBOTS "hivebots" +#define INFESTATION_SLIMES "slimes" /datum/event/infestation + startWhen = 1 announceWhen = 10 endWhen = 11 - var/location - var/numlocs = 0 - var/list/locstrings = list() - var/vermin - var/vermstring - var/spawn_area_type - var/list/turf/simulated/floor/turfs - no_fake = 1 + var/area/chosen_area + var/event_name = "Slime Leak" + var/chosen_mob = INFESTATION_SLIMES + var/chosen_verb = "have leaked into" + var/list/chosen_mob_types = list() + var/list/possible_mobs = list( + INFESTATION_MICE = 1, + INFESTATION_LIZARDS = 1 + ) + +/datum/event/infestation/moderate + possible_mobs = list( + INFESTATION_SPACE_BATS = 1, + INFESTATION_SPIDERLINGS = 1 + ) +/datum/event/infestation/major + possible_mobs = list( + INFESTATION_HIVEBOTS = 1, + INFESTATION_SLIMES = 1 + ) + +/datum/event/infestation/setup() + choose_area() + choose_mobs() /datum/event/infestation/start() - locstrings = new/list(2) - choose_location() - spawn_creatures() - if (severity == EVENT_LEVEL_MODERATE) - choose_location() - spawn_creatures() + spawn_mobs() +/datum/event/infestation/proc/choose_area() + chosen_area = random_station_area(TRUE) +/datum/event/infestation/proc/choose_mobs() + chosen_mob = pickweight(possible_mobs) + switch(chosen_mob) + if(INFESTATION_HIVEBOTS) + event_name = "Minor Hivebot Invasion" + chosen_verb = "have invaded" + chosen_mob_types += /mob/living/simple_animal/hostile/hivebot/tele + if(INFESTATION_SPACE_BATS) + event_name = "Space Bat Nest" + chosen_verb = "have been breeding in" + for(var/i = 1, i < rand(3,5),i++) + chosen_mob_types += /mob/living/simple_animal/hostile/scarybat + if(INFESTATION_LIZARDS) + event_name = "Lizard Nest" + chosen_verb = "have been breeding in" + for(var/i = 1, i < rand(6,8),i++) + chosen_mob_types += /mob/living/simple_animal/lizard + if(INFESTATION_MICE) + event_name = "Mouse Nest" + chosen_verb = "have been breeding in" + var/list/rat_breeds = list( + /mob/living/simple_animal/mouse/gray = 4, + /mob/living/simple_animal/mouse/brown = 2, + /mob/living/simple_animal/mouse/white = 1 + ) + for(var/i = 1, i < rand(6,12),i++) + chosen_mob_types += pickweight(rat_breeds) + if(INFESTATION_SLIMES) + event_name = "Slime Leak" + chosen_verb = "have leaked into" + for(var/i = 1, i < rand(2,4),i++) + chosen_mob_types += /mob/living/carbon/slime/ + if(INFESTATION_SPIDERLINGS) + event_name = "Spiderling Infestation" + chosen_verb = "have burrowed into" + for(var/i = 1, i < rand(3,6),i++) + chosen_mob_types += /obj/effect/spider/spiderling + chosen_mob_types += /obj/effect/spider/eggcluster -/datum/event/infestation/proc/choose_location() - - location = rand(0,17) - turfs = list() - numlocs++ - switch(location) - if(LOC_KITCHEN) - spawn_area_type = /area/crew_quarters/kitchen - locstrings[numlocs] = "the kitchen" - if(LOC_ATMOS) - spawn_area_type = /area/engineering/atmos - locstrings[numlocs] = "atmospherics" - if(LOC_INCIN) - spawn_area_type = /area/maintenance/disposal - locstrings[numlocs] = "waste disposal" - if(LOC_CHAPEL) - spawn_area_type = /area/chapel/main - locstrings[numlocs] = "the chapel" - if(LOC_LIBRARY) - spawn_area_type = /area/library - locstrings[numlocs] = "the library" - if(LOC_HYDRO) - spawn_area_type = /area/hydroponics - locstrings[numlocs] = "hydroponics" - if(LOC_VAULT) - spawn_area_type = /area/security/nuke_storage - locstrings[numlocs] = "the vault" - if(LOC_CONSTR) - spawn_area_type = /area/construction - locstrings[numlocs] = "the construction area" - if(LOC_TECH) - spawn_area_type = /area/storage/tech - locstrings[numlocs] = "technical storage" - if(LOC_ARMORY) - spawn_area_type = /area/security/armoury - locstrings[numlocs] = "the armoury" - if(LOC_DORMS) - spawn_area_type = /area/crew_quarters/sleep - locstrings[numlocs] = "the dormitories" - if(LOC_FITNESS) - spawn_area_type = /area/crew_quarters/fitness - locstrings[numlocs] = "the fitness room" - if(LOC_HOLODECK) - spawn_area_type = /area/holodeck/alphadeck - locstrings[numlocs] = "the holodeck" - if(LOC_DISPOSAL) - spawn_area_type = /area/quartermaster/office - locstrings[numlocs] = "the cargo disposals office" - if(LOC_CARGO) - spawn_area_type = /area/quartermaster/loading - locstrings[numlocs] = "the cargo bay" - if(LOC_MEETING) - spawn_area_type = /area/bridge/meeting_room - locstrings[numlocs] = "the command meeting room" - if(LOC_LOCKER) - spawn_area_type = /area/crew_quarters/locker - locstrings[numlocs] = "the locker room" - if(LOC_XENO) - spawn_area_type = /area/rnd/xenobiology - locstrings[numlocs] = "xenobiology" - - - for(var/areapath in typesof(spawn_area_type)) - var/area/A = locate(areapath) - for(var/turf/simulated/floor/F in A.contents) - if(turf_clear(F)) - turfs += F - - -/datum/event/infestation/proc/spawn_creatures() - var/list/spawn_types = list() - var/max_number - vermin = rand(0,6) - switch(vermin) - if(VERM_MICE) - spawn_types = list(/mob/living/simple_animal/mouse/gray, /mob/living/simple_animal/mouse/brown, /mob/living/simple_animal/mouse/white) - max_number = 16 - //Large quantities of mice aren't a potential lag issue since they decompose to - //inert skeletons now - vermstring = "mice" - if(VERM_LIZARDS) - spawn_types = list(/mob/living/simple_animal/lizard) - max_number = 12 - vermstring = "lizards" - if(VERM_SPIDERS) - spawn_types = list(/obj/effect/spider/spiderling) - max_number = 5 - vermstring = "spiders" - if (VERM_DIYAAB) - spawn_types = list(/mob/living/simple_animal/hostile/diyaab) - max_number = 4 - vermstring = "strange creatures" - if (VERM_BATS) - spawn_types = list(/mob/living/simple_animal/hostile/scarybat) - max_number = 4 - vermstring = "space bats" - if (VERM_YITHIAN) - spawn_types = list(/mob/living/simple_animal/yithian) - max_number = 7 - vermstring = "strange creatures" - if (VERM_TINDALOS) - spawn_types = list(/mob/living/simple_animal/tindalos) - max_number = 7 - vermstring = "strange creatures" - - - if (severity == EVENT_LEVEL_MODERATE) - max_number *= 2 - var/num = rand(2,max_number) - - while(turfs.len > 0 && num > 0) - var/turf/simulated/floor/T = pick(turfs) - - turfs.Remove(T) - num-- - - if(vermin == VERM_SPIDERS) - var/obj/effect/spider/spiderling/S = new /obj/effect/spider/spiderling(T) - S.amount_grown = 1 - S.growth_rate = (rand(50,300)/1000)//At most, they grow at 30% the usual rate. As low as 1/20th - if (severity == EVENT_LEVEL_MODERATE) - S.growth_rate *= 2//They grow faster on the higher severity event - else - var/spawn_type = pick(spawn_types) - new spawn_type(T) +/datum/event/infestation/proc/spawn_mobs() + for(var/spawned_mob in chosen_mob_types) + new spawned_mob(chosen_area.random_space()) /datum/event/infestation/announce() - if (severity == EVENT_LEVEL_MODERATE) - command_announcement.Announce("Bioscans indicate that large numbers of lifeforms have been breeding in [locstrings[1]] and [locstrings[2]]. Clear them out, before this starts to affect productivity.", "Vermin infestation", new_sound = 'sound/AI/vermin.ogg') - else - command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding in [locstrings[1]]. Clear them out, before this starts to affect productivity.", "Vermin infestation", new_sound = 'sound/AI/vermin.ogg') - - -#undef LOC_KITCHEN -#undef LOC_ATMOS -#undef LOC_INCIN -#undef LOC_CHAPEL -#undef LOC_LIBRARY -#undef LOC_HYDRO -#undef LOC_VAULT -#undef LOC_CONSTR -#undef LOC_TECH -#undef LOC_ARMORY -#undef LOC_DORMS -#undef LOC_FITNESS -#undef LOC_HOLODECK -#undef LOC_DISPOSAL -#undef LOC_CARGO -#undef LOC_MEETING -#undef LOC_LOCKER -#undef LOC_XENO - -#undef VERM_MICE -#undef VERM_LIZARDS -#undef VERM_SPIDERS -#undef VERM_DIYAAB -#undef VERM_BATS -#undef VERM_YITHIAN -#undef VERM_TINDALOS + command_announcement.Announce("Bioscans indicate that [chosen_mob] [chosen_verb] [chosen_area]. Clear them out before this starts to affect productivity.", event_name, new_sound = 'sound/AI/vermin.ogg') diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index 62e6212e5d6..763e921e83e 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -43,7 +43,7 @@ add_overlay("aslime-:33") -/mob/living/simple_animal/slime/adult/death() +/mob/living/simple_animal/adultslime/death() var/mob/living/simple_animal/slime/S1 = new /mob/living/simple_animal/slime (src.loc) S1.icon_state = "[src.colour] baby slime" S1.icon_living = "[src.colour] baby slime" diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 23e122ec470..5c48a8cb889 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -489,7 +489,7 @@ //Used to move to a new part of the station when it sees another bear, or it hasnt found any prey /mob/living/simple_animal/hostile/bear/spatial/proc/teleport() if (stat == CONSCIOUS) - var/area/A = random_station_area() + var/area/A = random_station_area(TRUE) //Don't teleport to areas with players in them. var/turf/target = A.random_space() teleport_to(target) diff --git a/html/changelogs/burgerbb-infestation_overhaul.yml b/html/changelogs/burgerbb-infestation_overhaul.yml new file mode 100644 index 00000000000..3a689a5330d --- /dev/null +++ b/html/changelogs/burgerbb-infestation_overhaul.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +################################# + +# Your name. +author: BurgerBB + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Event infestations can now target anywhere on the station, as long there are no occupents." + - tweak: "Removed yithians and diyaabs from infestation events and replaced them with slimes and hivebots." + \ No newline at end of file diff --git a/tools/Event Probabilities/Event Probabilities.xlsx b/tools/Event Probabilities/Event Probabilities.xlsx index 8341cc91d8d7e2dbbe1556ab2ebd0d0668297335..4ec362dae9747aeff5fd5e756c585627dbe2ad1d 100644 GIT binary patch literal 53620 zcmeIb2|Sc*_&;1xWQn38GN!bMkjhp}p|WI&B8o|o$}+a>%&9CT*|HQdN0AUBTec}q zmc$fA*0IYvG?*E)y$@}Jelq{hulJn)`_7!t)0uSNxBL0t*LHvJ>v|qtO(tgEWvr~M z%Uryqw3g9)_<--O){^E9W-ga)Egipq*(2d{rPBrQRxI9DCBayr6~W{dy5sey?nC_%s=_hKI9>B`d$f>QtZan|CqiVlh`Hr>3)- zQjTwNWmg$Hoys1dFpP1&+dC-EX*tlY8BuOLxhE*1;k>&@$icwR^|_qKx$7%qb2<7& z>i@>v?ozL=WHoUA=hIt(tCQz^k9Lq8;QG<;a%<1=yuJ0Vg5OL~__0KS%Omkb`Ink=k&nrGw208BhqEL*1gJJeiY4pxqrEG(QHC1?LPi&{b( z!FKCF?Dj!1IovtE^1~j@7m`HuZtLW+#F`JY-w0HsVDqcn%0EdwN^!qm2zis3#f#p$ z>yf4IU)vxgrLZv56FtNWs+2M+9)%{ffLAFz$k@qLJba19F0L!u@zcy z0v2YAE-s|jK)tC+ND8TbKWVCPcjNd7h>A~wcsi1%xTsT6Fv@gUk{Dq$212Fy_ZL#h zNXh^VO?9<_6Liu?CE?R$E@*G+2ndd!1eK7h`>otdSm5{?SzxX(rS|xWkDI5fLAkAu zkR%E)aTuJ4K^YSA`aQ-W)QNrwc?=0@&yY04VyJj5FtrRM*>f|MT-}C$)}M#Uqqe}Q z)d=`m5<<4n1{VYCtB1uI;3$M>Z_LJLe#)B~hG3fDO<4R;OOk9}E4g}wK^v|$yBNg?IBgZ&hr^hWFab3>s#V>mMDqzhuqewdyS%`Ow?Uba8SMOtQQh8e| z)zEgZ0@F5f+k}WJ^u~%l1;JT@kkn2bfEK2N9E|Y7nc=XfyzxDVxQu>caO0HVI0i9^ zhT}#--dGGM*V}ZQQXkL~jO$_&RF?DO_T}~u@d@z@@eT3U_0jdy_0{#aV~bziDOkGA zN5)6ON6825v&To&N8YD*C8>{4G2LtFL7chlU$@;xjA)HLzxsN_{q?K$E<@{&84fpy zZ802f6gzL&nqerC?s_^y&15{^H1tK+<>DVwC+>=kb6@{G#++pUi0jAxJM zGGjI4Fk>@YW7cFs=p03o>~IHr^H)o_Sl-Rwf_Km}WQJ<>1$5l5GFj`n+gI$mrE22L9}zQu zOp2j1J1%MiW7sCSS*Y8o^b@5z!P#IZ@C29x90)!RehU`I8Lp#{N{1XJ$HqvS+%oKt z$J9>j-Wwa;*r4Zt`>5ag>OdSf*_9AgQNsO@yNf%FyN)}H`wMpf_Z#jM?m?Zg&Uk7t z2)Ud(O~jNC`VrLOLKp?#S&DAR11Xe2yhz?&o?q}|xc6mn;%f-GYZTMnAB;gjwxd8? zC{TTWa7BM`6Sm?r;R1!U$D4BcApCe7By#p&K4L3|H@YB6q+#rKk}aaWKr_i79p_!7 ziIRMj^7$TFpX}oA5Bzbpb8SfPdF3#Od+L9GyilFk=>@fhc$nEHIv zl#-$vt_bMZ%gyO1m7U5vRh}q60YQU%lAwWTPtVph`lRy6md3n&!5RJ&`Vw%gyiZ|F z8>OwROl9mChQ#M5HD9U5HCPcczGGF~tDpp8k}Q+GE1L?RGOx0r@;c>B${Um^UrY(9 zCwzvgXV6Z{@EenG4RUb5P(3nqCOT<1xX7*OMT=tVFnXoV(^?%fHkC^%pOrrYBk-x* zQ@*EiIxan7tgr1cpZDnveNvu5B#WAeV`Y+2aP=+gzZy`MrUg<@JQO>47IL z-NeFiom;!lc-TVG^`7n6h|}$DMIN4>I9CBBM{*I-;)tNeZ6~#0j>?y>EL~uh}K;Jl*z4`Uj=n_IkmaCTXdR>+M2>31|eEs|E3@-8!j8 zHfkqXp**n@4e6lg0wq$@Mg3MyTullFWhWyYI-Jd|3g$1rU{fL(Vw<@JnA<5jqOfa46s!% z+b-N|la=wR9gX|k4s%m2Zi5sT!t+}oAttNzXn%uj<92=7mZSQzwU0+#vFPf~4`i`U z3prm^wLlRy;O0vTTrxiVJ-jpY%GJ#o#SaRkrQGi~ZVt}*Dg!TGNFOz3nIh;=+q%2S zg)veYZ*PTc7zh#K4_SLZgx|!X+`Yz)iLw1D4HHJ^Xft|z3P zakk4Y`1GXjtl712HQx`iP|)@^9~~tfn9YoYy=dB}+YA{2;R=&lo}rY`QhLh92`cX9 zhmM*nUo?O5Lgq|Clg!xy`vRwp+EKQqYaFIBdLjtx=7~g2qrawyG+}Z;FFy$w(X_y; zRZ(%cU9oMgdY|T8C{}6ZwE)+e=u%86v1Ky90!hd_9v#AZE0kG1l%pzig=i>SG7PD7 zrl52Ghchv@8P->9WwoNxbM*3#N6oqK46P{JJm89zX!EU4Y>BE*tT2?WvRgfG^{0l) zwxtjO!A~894jfqHk51Lr3rDIKNqw9rW0Dqa zoA>r^x`9@nkV^OAeL_dN&Grc$>%O*6NWD9LpOB`bO`KC9a1oP9a992}c5xGcEr}We z`uw<0L)>U>)DW=dvo~wvzU6NyLc-T0x<#u#v5ib_8>tzQ@GO!;OPkDDk75~P*r!-{GO4`nDqC+7zF)P~q%0h6J%jLJMUAJ|0 z*cSe`B+G^@NfD7?E4tSBwKRT{iEt0??xWv z9zA~vhAvpHJ79At;x%^`=c9X4=7G?8_(B1Ep|)iw{`qxhWuP_t*qqj0@?9Le%$qJsljKCeEd^*DOR^8?=cuW=zf58__>>nO!}c9iV^ zp_Ilt?*=D<@MBdKST0X|Pxoq8CC@M89Lyl4DsOunf&b<1`cPR67MqAvB)cMTkk}g? zgmfjiJkp&4CVy#OFY98seJ7$;Wz6$+4W+MsJw(#2BpzkC1#fp7`3dP^zw3HZOkoAl zKdH?Nui6tN%3il+bKO=Z=`B3cTdUi0M626!MXO_vjrd@WdQmNEhG3t`4&ypVBMze< z?!dsMQI;=i_({n0=$&g-qu9F!Hz?(g$q`yLZ2}h}iKvWc-elW6B)p)|!<`jf>e#Q2 zIyiJcNfBFQ8Hazn7vVOz7vJ#D1vBwBS_``ds+=^HHmrOY6Dzu3EKFJ{WxgD+50Ea zzSxkh^K5OK0MmU`d=K*~*hmwyB5D0uwgVTB&C@j( z7{~Q=$hhZ)`pF$}u(!c72gl9BeQ2Tu2N#=gr##^5@02|-m>+fQMbQ^vprcv~26}r( z$ucZ&pd`nVIvv+HddI9@=T=c68sowx%N1NG6~+-qYXe5pIpaoif$L!D#f>G7r0Qrf z$p-nCz)HDZO*}w3zazEUD>E!zqTi>JU-lkg3roBb*9#05%C5;IjA!mAt%nrnT!vfd zJL1aU4kd}8F&JlABKg9n4g}^N986;(fdzz*-Ig!Hqc;qW%3|{gi@5T&2O+&zso5SbSW+~^Q*t_JEkCU)jW*x3&a+X?byUq|N9#N* z^g58vQ90wd%w32P`O*?94hg4CQcs9Cod5&FmpP@Er66bJgwUM9!Ti42Pe% zPIP|$(m zb#F3)V@+50KF+NFs4IPSo+H$?jZqkRpy1o@;|`dLh>CaQUC$o`Sb4q374e5c`P`!TwOl!hF4qCbIeh5XJE?)OOL+7dKta4tib1vF9xW*Og+DEVxXf==a|2z zJabRqcxYn-FsffEGQ0H)trxd|+X!W&Ww@H*yFNpOpqt_pCjb?P^zI6uZ=jU~4IhN8 zlHaD_ zM2%HL72#j1k#Nct2nae2IQNPufGg`BPXs9ufGGi|JO^Mp zkoNuxM3AIcNh%6jn-K?BLl!v$4*m`EVEuR^%CPldt9Lsp2XfJw)g|Tg6X5;-kr3|6_r&xn9Kix z62X5GFO)(yyr}DOQFo3f%9)NfC2TaCf(71H>c{%QQDbRZ!G<#XiLw`UA=|>??6#=k z)ig^2$j=lYKOW6UX%9BEWDZR3d&5!whAj+;fW(d+ne{!5$K6%HeK9c3+MXk9reEyhd^Zc;~ zR|p&G`WU4;x)FWfKHqY~j~#FjZz|DBsYy3Yrs&Jt3Cf-O^})eOn9_>+JQ+n(AZ9}D zNtqrPpXeJH?HezHA3lq@Z%peKTcI(=Z7|@1M;jJB81}~?-DU#7U>$#tps1gQH(-*y z&1>6%lnhVbNwR>y68T=^m{eu`nHV8plR1j!3m}I#65GmBGbSvX!GRe|P714?*k7xs2VK!E^B02 z2F!aB0&dZz_=6vfAEVj4x#c(DA=XwTP^mlaR~~Di^GG~(AU}oN=I?TZir>(CtPjft z#bC?sAC&btJa?dei1iQ_RQhG=R|BoS9J1G8ZU=*0h_zS?sPy9G5<4{b08=dml{RCS z)G9cD$^U}ZHXJk^Vg}^_6LPw~ z(5!4-$fS%L@4)8+6H4GwU0{Vb$%8o^j!Muvp5R7>R~0s~9b03CmxerWpEg6xh|kPR zLcShA{xX2P>e7&pOTT(u2S9$u5|MWTZnPPg(fg$#pJWx=Q4c_WYl+aC05_To%xHp4Ug6CNk9gHH!_|_*)nA-cOFXHb z;}o`OK-?t3U@*aSQ^JYp1S4YuUY`qRpm=)|zBQXv26i6N6W^w{%R*0Ly`JbPz1^`1 zM-?scxFNYkx9Cq=t(FyJ#o0UBkSIy*}2q!La`m%(X={Kt{b^2#!r{ATw#Od#ko}GUE zQm1dxKRf*cOPxN~^vv|5b(b>zv@-kWnc(6~u69EaQH4;v~NjSSJK`$l2SV8@c zQ>28R*i}7A&bpmib>h3l*h(`Qt^c!_82fiSUr=$kQej)FrZQSDv|j%aOtRNhw3Yi! z)cWx%s2vjxJ1-ilCwkW*IYc8l?8<=1{yL)qwX_fF#rxDA?NfiA{d6a51*7$U7L!Yx zgMh_!vZO~d3!c+sl-rs@lv$Qy@d1DPDP+`IE&hg6_!iN~b)pf{qET$g;k%L}we_~f zCf@#_5&J>&#y*X^`!uTquG?8#tGUP|ygR%!=O!bQa6mxsv+(9bwSYubjl|<`5|wu) zYNRCI{h($!uq8)t$7G%GojQ@4x~zx7f&v0{v7Dk#Axrb)cQ^;=(uO|-x3T{PWG1++ zg)Y2p=)oID7v3Ip;ayA@-tF{QA14@H;+;pAc>fu=8#?pRpF-N{8l2I3e*FF)K`^as z{8=X0>lrrZR7gVM%(PL5=t>^E=|04(jv1~mMomSD~O&G0z5#Rq8 z5WKWLsKupaQ(f>-LubfRS%Wk%IbVWUm9s~0+{ zCGjR`2GqsA>lTz`AIS6N{c%ozg*L)TIMtkBqL84^R=4fQfc9tmpeWyo7G<^{85sL% zW81o2Hgyu4>qJ)$ggtcHF(Fq`tvqc5_Wf}nw24L%He8O7xg51-ApE+M`iTM__Xph; zU~+DV@{e4NJ2W=ncD6=Lwx++6#^Hj5oo%ZXYsa%fyw9k`|2PghN|V!Z#5hr_IZ;I+ zQP@N;eAK7Tkpw^op$9q;J6@&|RPhx=cEtqnutEbVB{EMrv^J1l{imF?w5R zPTaPn)omY{C!v1=W?hG%U~2pNI(XrP;E&Xt-^@fTf$EHM)KyFTmV2_eOuP6_phw-- z0H>DU@`M(bz4Q=Diz4bUIO5y!`QoZLJM(_|oeAHQmKIl;Lgi@~?jVcr$?qqfi-iJCg*v?-B8~3Eg$NC5A>ai6&Zjf ziK0h$7>#L-@V|}*u!I<33F-12jK;J}_^+b@Ea8lcHlxSSJfp+Uc+=x&AoTbd5Iydk ziyn9GPmf6|qsN{9378Z6@t#I%kll2+Xaqgb>CgjR5(*xaQdL%TP9tkz3BNF-} zFi!|Vf%uy)YhFzcbQbhLmqibBMsz@jq(`}-^hl^AJrepSU=EM#Mgc~YuE?Izn0AZ! zucHAhAqH5&Mtby$(U^7#|8+EgB_#eK0%3L+jHJiKqUkYU44#I;(*U{AzoNMQuj6S@ z44!7TtZW_y$>3>bYx#b~CDRp=F&fj-2TMeQ!PETW2qTZ4t?Iwtn8DL5Jh5W%G_;3( z44&p|5IGyGGkBUg=cEjtX7)Im!PETWbpBtbUcM#?EO8nPp5_-z_^(qhUzc!+(_rv4 zjC`7(j~Vz?DiR}~h9=_+LJyO;#Iz+KpC*IB(=d3NCGrPfbN(2O{|~4ax}an5Gz^~R zcPX!od>Wd}Vn#jk;rm0*nSlw?pbzIDDGWb>wRJZM0f!3Vt z72(;cm+`eP5l1A z;O|KW1qt8k;AmM9-h`QInt&eO4&Z|FqQ!4?L3z>Q>ps7xYw`72P}8*tjzB%( z{F<)C#cDxK*Z&^qK)IqjP;^IoXt($hF&fX7zW%f%|2lNQ5_$uxLR+8u+a+W)4$=O( zg#S7kb&j4u(J+XHeP7%l0QJ^fG=&I@n@OPFgEo6*aXSW-*wI!QEpBM$6>}|aet~pp z+G4K7?ITccO-nxgPM+r!b1iPx{|wB!?m-X$XS$p}qcKps|05Lo*U60rUB#8h)?{eA}>EjRgF7b{7RDWE;E{4I2}C6&LGP}-8p-%2QL zN#$=P^iRM%AYTHV`!tx}N*!&&^KYS}eHzSfp`(2o%x|HieHzSfp`#~coKwv8I|)V8 zquelhBy@=|0|&!11*U(3K$v}y4uhuw9xU{yd75bkPxI{+UGsP}22V5lVzGsUC_TP_ zK^FlJKl@1^ED<^ePjh*p*wN!h|9y&!!PC&52Yh`l9)qW$-2?yYG{)BlEdGCZ8VsIB zeD{Kb#DAT7`6_lxoCbrZF8!f13X^$ zhtx56n*SGg8VZA_Vem9dd%fJ9Y|#6@3}##9j4Z3^~!Q5Xcg>gl!K zmc+&1vbEf#+&&|uq}8MXcm>vZ(NI0n#okF*`;_JO;;ya5SIS|r;IbvxKadDWLT6Y&HcU^5lAw7WD?LjbS25Lp_6&qI^|=16U6 zt8)?T1>}*2E^Xy&l&8(XzFU?iRWZI3RmyBfmL{=(3g}Kb(>C#h40^yTp$m^U^xUEt zJ>tQb^f!yYiZ`fx5)i#+dZ4zV3u+)Gf62;K0wfPFU0)cJ{`yW(%R`-V?XBVoFuGI` zs8(J&)aCTZhX6hD!I(6SDvkiE*gy}|XXt{OE>+B-M?M&nrcp(}D`MzU#pm=uT}zLA z9H2)&7?Y+^MKYj@?eswHK^N3?sbU^I^1+z&PgPU`ydsDmRrCgGtC#K-U(q8UEcD0+ zW70IL*bS)SdwQTgMiJOwJ%*h7?b|4im&A2yr&0Dw~&XV9#k;h7CKFO8O9Q+ z^lbQAFV|DobG=NdLZ`_uqgfi1o{e6c*Uc0o^ojH`k|kH^*~qmKu3^`6mY3io zeQ0lL1`2_!K$O6zTi~7^lrJr~(H5K}6iy@u-+&>!$*rF5l*wusk~)TfBB^^GA>gC| zi<5Bb^dzyrAA%;!=b{kagvJ;ufrP_I8bT;zq{bdoQ=q{J0zvM_X(NzSOdhDjYkG>{ zHvI*TpyCaQt@V$h3NC|0bhzmuf^hP1zo)X?} z?rs#grxyhil|*f!GU;lvu;Smkgl#Ncwv5Aqb(yXv6Ep8JR#w(!E?!bv%V<7Zf$y%? zk}fa@E5}O~7EX?mPzMWZN6Fd0?2&M_v6h(m`yG@fTd5THstz7ke<_c<4Zb(`jU4r{ zO%yt(_L$3BNM!tdOU#{z9i_c*QJ!Vc{akyW3;4>(i^cb>l*)QDP_<@VZJT{D(*_>n zJI|ksn8mYd6{l$LyYNQV{(+}Cf98qOdtqqywI9`1ZFPyW)^^{>@%W(MVb_xz1=Xwr z&Wn{MEuW04GTsf&E?{oh9Y@JDLF)vp(Kg|1n&|d@w;c20^!7a*;UadF=Hjw2%MGd~ zw=x1Id1f$3dorZ;9Js?>%a<*J0q<7~950zUSeWZOIb622bey?!-&0!pEr&SBE6H4& z(BN>Udb2R8S3dhTmrD64X9T2uI^%3OI;yabJQ=aNSXJ9yQzWgV-Q&yHVBYg*@!Xum z6H|l!v0%?}WF7-jZ@JMB1Kr(wp!&6&jL^}& zLXXEq${S9s=Bg9%&~cVi>+by9(VH2cCS8NuO>o{8JA5XoL^^I~Wi~OL-!JT-uNP5v zVtb~v-yA+7a9l4I?f6jhb5=ZyxSo%!bUgEOKi_dl^Av?^x6Tpn ztVl3^=v=PJoi>iXU8gK3j?d#_pCutigj zzgjKqh}{0(VO_Eq@B8MLY+KKc`V?waYX@Jn<5&eC4*TWz_|D3nTx!Ws>J` z_Eh-;uP~k=X1RNQ!t&Z3P0Sk(MVL;Xhllh>3~<6#<+U*$gEoW{+5fEB9`^h^+HqRw z#g*i4zs8sFzjuktd>P_fZq9cto_%M~c=t~Kv80la#z@2Be~j+!nn-Fgo478pKlo;* za8u!qBjr?`d=Y{Ki0_;*8a)o35qXbwmNzn2EL&F0vY5zoeiL~oH*1SoSx-CFV*5af zn|z&eqZjv2b#6-5TJD_CC(~g{=3Qz<2D|TmFdYgKeYdY!ZSb6x%sv?Y zUhR;iDK7WND+YVmk9^6lQx-6nvGBWneyxzC!O5&kt~x6vIdRJCz+HtRm=zn8HXM4v z%~Ale=j{>g>AiPirS&`8Vj%^&BP%WW&91izG+c)n<7(cSmE8V#y)mw$&-+0H+(3*= zUt6@270bQbQy8Tev&sFcr_>46soMwFKegYPZRuyiKC<7)s7nj`0Y7okow?=U)qfeUH_Oe|@-*)jCI_q@|9seczyBtYWglgCHhX65<=`1k&4DW47>>Lm#{L5R zE}f@rqnyz;BcEFjl`CQ`rPpk{5!}^&c0(TQ;<`%x0>dqkVLLE+EdKg)8%{$VD-*ko zQ+C(nO$q$BK9+sXi*JjbJUrq!5M$(Y*Ki;x0E`k$(-$MQWsy$QR&g(TRXYG>*05%7;yaS6;cD+c*~_gL2&Ikn(@B*fM- zE+w&RCtmcH+ONMVSuP+oM3HMc;X!)U4_`hbhyg3FqO<`)+{U_?AaecmKj&dEs~NL< zC+x5-;A@WPygQ)Uej`3@*G;vMl$3QbDYvJVmB(?j2XA&ezR4C1_EEd3WpHaVDyF{* zZGFJWh&|ML%=dKd#w|=4H!>-@H_-@GlZJVCxa^yiT)uKlw`>U61orWKuFiY*#YxH^ zMEAc4Pp~?41pDr!TNmhDNp@^|JGqu zG6AoBpkb|(WApiF+30eAgNj4(8jhRogfp*2zPtR{*T6;jNfKXtK!yI^3+81TJcg_l zaHd-y@BT-0+VkAoqjxm5YRT9QZ6kJhp0Ryoskb?2(M@~R6;016Xbyz>)Jt{q`BRO9 z_z6K-trMP`;-b{HY3o~6jc&gAR;;JDQ2%0;TcKbRf6$}K^R|R-qi=7YyIFLC<7C4P zLYH)xSK5Qo!pbwKFQ6IdqtEm1QUY9FGXVep?D{u-h5oC*p9uiIFTkwFPYXp|DU;&x zN1Vf)bAmo_k}7{vugO1AV8JD9y={$_^@YpuFH=~)7QLMp{NsGgC&)@YBcon%AH*z# zE=avQxql~{Ou-(GRdI#>LkD!l`2@B1gk1CGa~}CP6}mkJ zPrOlNGCp+;_R#r`)C@M32?D<6NVnoe2c58L`^F7J<4|eYsBpL2gvvNI?<3wv5h;oL z(9+XAc`aNs2(iO2+cyLEzkgAL*nt*b;rSK>9bR)?ihJcdAPBlRrDtar82@a~c56WqOTcHPSnTgghjW+K54_s6ym6{XaT)sw}rmvq+HcKTV+W8%XQ~({H1i%rRU%iAxnN~hfDR3w?eA#9fjrJy%N5PAc4ZQ zA_a84?md0K!t)XPxsky!P)vcXuIrYoi1+27_0U@)nlLH0)7vQ`koKG9;_)w2!{7%` z7XypW!kPe!7tR81WapwW5D(Dej0()w$->qNdeY6#!qH?#7jyKhwVC#CkXBI4BE+uL zIUHiW+QJmPRrrL`OObZl4@JC%8OR-lHla@fnDsmY?q*t+YfH!37Nr{8t18#M9V!^W zb|a|V&uzETMbwQ0C)TP+b)0``Y#sWKlf(Wv8y>w=0ZbnsT4>`mLT%qORo#=~O}N#> z6lD{a%Iv<}@uX~7XIkAJsZ~OD72xgN$E?o{=n^xjVbq5LKYl{76UFL7PnL0;2p^Q`@N$y=ZH89ch>KA?FkA$%=I&duT2 zvlT_3yJPzV%)OUG)jpOd!$M9X1A9v9vBbYONJqQW_C6d4j{>dkpD>et%HA(pqp0fN z5k|%~bPkkz^n~4&Or1Da2Gi--TmJembP{CqW#tUg?N{$U6a`Rz!Zf3H%UAF&`x$fR zX`YQ612Fag1db2*|J)A{ftx#+xy%Hf-@nYp-t$MHjp^r(A_M&1xpDl@2!8%3v{CU) z{QvWFw`~3>zuXPXACNZYm!FOq%yxNt+AW& zCOdP*4G-8%YTPDFx{gK?#K=AswQ0 zNO%47c@}BBdw=^s=X_(F@4RE|wU*5J%sKD6?(4qiGq(Jd!$)ur96fOCz<~pl2P}D1 zU)mo$aNrTzfde=Pjvcyn$<)MB$HY=o+3voMg*vOPu@ObwkwXlz2M&Sx|L?#5!5T3 zxFs6eQ6i$pIv(Gawa+TXd$=^IArkQoFlS0To&5N156O`loUe@CJjt13sa%|9=aAap zWUt_ryQuo=axy{G*QYm<)$C^76L54nQ_GK(7!ed!hKUlU9ZWXUxf(*)bi|{L;DntY z=fjFwDVvPTKA+#e&c&W=TM;=qQL~w0Z8o_^QbWY>@mxcML0gfUz%pLrcg{x=b|n2> z&HcE+-dP)xi`W~EggP4bDrXy4KE0#2Jl#rAy;h=j@d=-p$6K=pt+EbBg+8dI9?`w1 zRx+E4vE=P^(fzutuK}w+6a5`u2d|i0_K_FGqlu2!<4-lk8C%kGoTkZoZQ6M0L#bZB zzr~xo_w=40w0Ll9kdS}r=z#;9n}-j`?+e+SYwXl>zz?s2h{OOPt7)!dWWmM?eg3~t z{U02kdqhtQkddokKlx-*YR$cR@oTr=>5Erv#H5NSm7O0*cVXpt$I}pZm(i1)Rwi;g zEa_6>yjI)UE$BU3O}X%$EA81CTmkA_oAf84D`r;c=jhBs5N2t8mDtu_=f5t5OJ25P zurBdEmztma;z~^~HKJ)+{LN`3s|wL^oJ5i*XNAHas(zHY*`u|Taq#O!rHS+>uk(0g zM+1=&F0COiM^1@&@Le5m49Bas(9&zqaI7|>oL?rorgV=_|Fu@MIX{)1rnb?$S@DQ6 zoOMSQ*~n@|Dy}n297xG3+Sqv))wf*JpQ7w4d5>45R!`NqJ|j==0om*KAPGPZ8b1O? zL=GP~Ky={PL0cm>RGiqDnj31Fni@ixZ98TTg7gOF{?Gm|E#Q+uCHqN<#m5_N4W(ur zPV!I8bQ=`Ij3b;M+z+~NRSW%=Q~#u)B7e<0Ka;HUQtubZJc~MAY|@u#$cgmuw53nD zrdjLUHAI{I@Trd4@nna*JEfUW z`-POqNx!=zhVAjfS~BK=FR>bt+!P{BxbBJ%MS}7up1$y{-!v?GWxypQu-@Q5fN_>% z>dQwo@rR{!*QajL`(yX(tkykWAVFRXT)j~{T^B--#Z6cmDRT5uB~DceUjK!gj|wz# z5O-5!PV!j0^5ulEn&%lXoU}jJ+g9}%nSI`Lv%EUHZAb)|{&ydu@8r)&1t7}~U>FO` z06w(WdlHltOgq?5JIB1;yuB<$gGnpeERV;}m0*0)u(g!p8r}KIiZ`5{2VcF~bQ=01 z%IGlMaf~$=xxCihZ6jRPcJ@$uIFDM*k-+N@ume+S^VR5p zzotCvG$v(>X}SC}G`aTR%c-u?MTZ-%%45vQ)L&_e#T&Wx?ZhjUYa@xT7!GRHqvc_7 zGaw|0g@x|D|JaYtHTgO>U5nVS5nI2FO*Ow^c2J{{{?4QIa*cW=Z;ss9;Mcqq{YS}o5DFsW z`B4;JSMG#|G-vq-oV8pcX_e$wx$A3=c0y95J?5$5QE#*r*Bj-HTrVv+6L}WMw*KZ=9odo$-#YW{VGzQFxPTdt`V!Mnhv0<}y}$WAng!ckS_G zlOHp24i{T>Nm&?hyH59y5(f=E&v7z*Rgz$e5P4SKN1rdV(YGR-=k0#P>_hh9(5e+> z_Gsc_4)4htiHVGoTlGAH6vVs|odT?!IVlzP_dY5d5Hm5TB1IZSe|z03kmjW07=HNH znOy2t3VzG9Gme#m235KzeTP0{6K|qLt(c>!&J))ZQa*9j^?PccBFll`x0W0}o>oM~ zqnW6j5bLt|iWfntUDVT{w%}IwN54K1H;X6)etix7zyVy8Ut8R}W3HpEWNEH%qGtg? zAxNBIKzGGIi2K8&A|9Xgy-VH z{`C2#1k4u&1m2DcfnqN8r*2M8aq?*g-}tBQ*@4>Ei2`&)oL)*Z-QQT@^(!atl9K zF{E0$$f@;=x^#$I@5ZV06C~lS%C8Pl8`-_6K00toL`GI(OxeS)_kJwKaMlYnW>6IJpqN=HvkDQj!zV|3nC7SI-u95OV-nrq`g0gG|+DonC;vTU+Q+UtZZEISP zrIRFwB$2Av@rmWC5vjN{M`bqaLLwEe6Lkf8@OiXQ+uh4JhuwaijwI*4cLz=ak$MoH zX#|42uXbA0B~kt?)ww1F<|7XYPi88D_c;9$btH_8cklL#<07Z-WIX0Ii8ofecg}Sz z=vYBA*ZU$%TR-oIhRTIj*tv;HwA$QwSWenZxfO)1xE`eaR`k^ysoqNF*|%AT*lKN` z#Z8->t*|rIp=}p6IDFj*owb@pg~jS~XR>#(!u$2I!IEpT45Me`2vpsAx@mjk0zI`L&IKQdV+{)RN3~o62BJnE`}XHuSjG4gh6@;TTqy@Wei7t%>Rk-C zxTm9IX|Y8K;D4OoAq0O@)FQMGv1Une#nP^LB*1fxfPdI(>j9!sxQ9 z^{Ho)8zo6ei_y;ZvzF71C1LiGVHocNLNrU|XM`fX+QMj>LR<_lFmO4_Ndl`;( z#$aB%(i!7yj%{3Xtg7wsvbfQU5OQh0&U0r!9DCxQ|4#S9!(KYCDyjF>F=wktNZoqE z&N3w`rV~&HENQrE$vZf4P*RVZvVC1(9F|RxKTKV_7_32}iaL1QLncZq$bYVOpNjnU_I6Y@^X#YYoY z+_=|ne?enYwLNutx{pYBoJ&CHR@u?Sr4FJ}4TDA3!bD9ss>=Zt+?I@K*NQ%U&7iH2M^%-QAwYXW7V~FMfjDei`N{a?_mu` z_}Ov>u^+5RysR((>b=YS@i|^ng}0CWDbvRfU8(Hw%c{bmmetJ~&^(x4de9EQ>a4q5 zjL6!=a=avxd?TPP{n|})0fzAB=9$iGE0dFDQyVMu?kc`z(n-Re_;ecsNX^oG$$ zcf6qt+v$nGP`Q}mrJt!HF81SJdIpEzJ;IXqdTeuw+=2JzNes(2U#z7OnkU#)AxEBy z=3TPVM4X-KIHZ7|;bx5AGx&~!_1nO*`lpt44Ew z8VCzdtNM1${;L?m9A-|Gl#NPP!&}MkQmS#Z@};#NTe)_dz@}|+m@3y_ zE#OjUy?SMs=lGinlSkjfn{)%j=@vN6jxjzhCcawu&EazoSM;#W<(tGGV3?P`6d7dfO zoZkFcsa`sAQReCoFsTbxBi{CS_*q$}==IgNqUC*GVit>7E;F zkqi#+U6RJl@Y(g`r}FX2 ziGf+w!Qv3UOdT~-P4a}0nos!2Ml-CwKbI?sZwcdE94S?kFJ`iAm3&8BXM4b{kTlUD zAoc7wX4lM{ZZ+>^_!>FL^kyum;@6MW#d0gR)YYd{E6Y9Ry?clsVSj^HVfuJ?;Ut&u zV%voY%aBj6Qo{@7DZ+h2-+#SenWFtP>({+W1DkfMO&9|Hh5=gc0eH613zHW9oqUO`^ zt8bC|3A}uP&j}CEE^r*4k>U+bCk{=z9{RH5mUsupdnw+|W7MapZL#aKnv4o!bkZX1 zq*!Kym_mvudEoOkrr^AosOVnxaS z7$elbf8>b^zHYb~rGu1sN(J{wg3)Ol&jLy5u9>ehD(#{;b(9^s=4i+I;<+=9znytQ zh%T1r=0%Sq7@*tcjXf|jhfN?naAGJ^b*;PnazGtr*J{I3n?S6EGmhBP$Mad{-@=aN zUtmb;A;HN%ehd3%vf_i?s&bq2;ak4VJ;m-M&dS0Is5obwN9Br9wrWz_73>c$Oh)Sv? zmhH~FaQbA^Obv5W(1$Uuvpg11nY5pA>#9k+hF+PK(d?PY z_NnfcvGslY>Ui`;cZ+k6F=@MQS{#wkv_Bl)c+|+>fg=^WFM@X{VW5}o@kH#c<3*1Z zsmJkM4dl;py|>Q!f>~iuKpt|XM0VgH2{XsjPj~DUL>@4mEUeBLn_ub(b}BATEMV6% z^B-Yaj^k0&Y!7AfVRA4{HW_sCJuuRhdF^POLADYTSL%cq<**geW8J(K#yNv-d($st zPrL`eJ)9)fzyBq}+D)}gAvw6H`=UG(<1BIAMWJNn4zZH%Ve|>~n}mm%1j@^HfTZ|IeFl~DOCEku(UJMfmwFt^;^CX7jT_5Q#KDSNA(5x$xy`_ z(77q6sHbyfHsXn)4*OwKho`6aBL6B%lDC4 zmnKawOgHm)xmE?e!2uNu&9O#;8F?I9jH&;o8t*@@PX zS7O8_MAq!;f0KZV&<$jz&pzv zL=XJW<2bt-+t(A6<$akm#EpKo@D=xHpg|$QTBZ=vvvypYBWv;PS=R67Jam&x5_M;V zf|e6P1xIL-qQ8Y{TDbn4FnU=lePYm|mJ1I#hb_ud^oDbpjxvWZ#0beha`5sM#Xg}X ztR&y#M6EH>(u*V{WU}ir|_p$qh4xH^k-eUvnm z;k%Q?nf)t`2K&@6I%^%DHtXj9P z8B&buIMw7O(Q^{~MtEyex~_uxN3d9NibdAOM0&~`W>zbz{ zvR6pX)O0es%w>I{HNxZxK6#n050=R0+Ctr>jlR0x9&oCHi2ffHMXfROYa;723wd%w z?LB47&qu)0ORZ(=3rW1>J)18XogG(yP7JveN}EO(yUc3MhH8TS)_(|;{B)t2Z8eQv z`w_npG3t^%YeG^L-Bac?J6(~4CF0`zGCalx8P4Xi?zp}-AK^?_x{>*uE?i`DX==4| z;ef`=%ViUcw9lL~<~Z8NiRp{R=nV%}mcE;sx&TQxP1apD63V1kkrM+kvv)T)2ft#8 zlzhcD(fk_dizQN4ylgS^{jEl(Np#stxz3kO=hdl2IkyS=7|qS4Nvuh-9!KXd8UYdX zfdA&YEG=6sO#O^PBt46uH?G}S>Z{P~d_j!XZNL`O^_^Fi`m0)F$g;2|H;|n%!kckPFY=n?z!^3=i;#!&Z9_hrPIl<^ zldtAsxnz>}Yz%}Vi6~bFO=E;zY@ zQ)b*-THDdOdEaHTN9f_)&vq?4fh!$RPAh9jo{pu6UEuHv-5%0O^j$= zmMddPMf|rGEi>z5oeBu&T9JNT3v3%Rj&!YEAluFOi0pYZ z=f?wQ@7&`pHCr^+wQ0BG!<<N&7OVl?kg={qW*@nl;qD)Ap%(*=q$+F9oVf zikA}t+a@zjTx>TSiZsd1dL@IX_#bZmn~1Uxi;Fn`D4m`wf$M$xbJ3wV4#*rUV%_VUWAyv z=Et>-T9R)@OJRI(m#5AWbT1ttBPPMckUe~wB&a1%{6YnE zt^&b_4j3F5<`^e1E@Pa-Fu)+f@X=$pb&Ig*)n}*kdzmAOouHp|T&~nps4DW3s{3Gl z>Dm6XxMzdTDxYmWYsB29`a1izX?eNp%foKUf^Oy5?55dGx3AtmGUti^sPt>Ss*9>jF#-27rXg2FLt&h-A8uZ#E3BbY@J7TECPrytVkj1 z&*=3Ju@?>xJ=N0Xtzx3o6-i>E3?)UAZdDa5orqxxPSCV_VU?>sadm?JEA6b(SW%&$ zz);PZ)qB>_-yAh|P0@Dab&S9*?QNPi`o|xH+sfQ6U)LkT2>;)CJ`)oTKDP;od>2o%jWjPyUb2hWx zSpvyNup+(>k0~2IOIOzCn@7AOnka( zszDlx>{PK|lPy|dRgW5KrZs=gtT(1@Ef7-|nrf-BHZt=Biz7RjSynffGyL=080jIu z76r=lNUQ}wZ#_awlu%RU7h_&hiFJpZGyOxk_O3!O3v0dc~dXX2Uh}LJms@eVpZ>+UKy1 zW=N7gE{VUsE9?AOnTk2usugqHU1B=vQPx}l6ME$}dTB=eMhLq1|MXrUV zDBl#i@*bmpT3P>-xxbOFN*{*e2jzP|J119Hl*1boBFRf5Il(a*S%*#%D^b4Ow-z<2 z#3EG&CXo$pckBh9xb$d=+D93u@wHu3mb&wLEq!9Ro?yMaV0e;TJq#H|71nm4Bgf3}zh3){&1V%9MMn`Mm0K zu!X|(cTU}#`q8K%tRn;>&m*y>29~g!jbJ(dvFi zd=bCa+^>c(=2auj>AwHC*}CGIV&^H9%is?z;13_5KPYv2-{G_Jxzf}36N%O&j;FNF zCdbOHBrw&l`Bk};CFXHxN%n^&E7MyV&n!*&@sF_`&wFPz`TBAJS5ge~8`_T~2?rR( z&iQo&vW6R(aoK*+?Km4aA-X_;?)MSL=Hkq9u3~ArV|!`$@Qe(xdZ~W=CthRA<(J;9 zy>A-^B6tcNn?ADlrVR)jEt;G)PISD**t=qHuZ14H_AbS-sA(mC`lR7A8-I>*wGxuZ zMx#C9$reTzSXl6c>?ZpD{P%UWj_?7o`h7aQ=ZY2*;I zW_FwkRhfA5Db>1S;961N%&TsK=s5Wm3~LwJw7G?p=+-8|l8G{e_%ag9v7dIMy7iHM z@#WVMwKO5?_OZSN3j->H4MEAau-;V@m(O1zvl7kPug zcII$AE`FnJus-iKheCe(4?P{%Ko9SMTZ09q3+d%8XQ&`!62))oT zd`6O3{rkQ6D&)6c{zF3v|zECH>Z>075HO|U@3N)$XiVvG9i2Ycq zF}1PG4~(>kmKEDIi>=SBD3LU?Wr~mrBu}4+F(I|Q?{-@1Xn-3o1ucZPTojUWtkx;F z&h)ezU0))r@D1Zf(=aINi@HC3*(KZh)zm^<_hqg}e;niiz^-M*@LdmJmhnn1C<9Y{c z-B{A_n89yC>kF3Cr>;K46k3T3&$})ud(V2-KxuLrL{mk~W~K>)Y|M$Z z=@g!gr4o(wGA$F{E4^~E=8Ja4L9H?NjMy8sw_-V6`09m z%yC#VX>ieh)1o-{q1!&U_*Qyj=lmKE;kvHj+03}1mnS$odTyEZR;exDaZ7WV3P3U} zQtqbbAy1dpaHT%7X@I1GsTpQ1-L8)^7k!l6x{zPhmSv~<(bc&xWH_&^rY>g}-7I|0 zL_av&Z(T})^t7cdCTxwWAJ0P<{>T>kPP#s1ZN|CYS%DvRlXYk0tkLOg6k?V$WsUWK zgsrTo#`ojoQ_G47t|ALB4Y8u=UJcnLAsN~acV+RWYpppm&PTNmR152B7u*o37*Kmi z`_hAPm2cI`&0{y<9+dD#Urjt@qWPTYha6VEQ;l!<OKyk%EZMwTY7 zWZNbR^9C<}e*Mhb>2uq1dC1XO=lV~}7!TCh?2Y7kykRHgWx=>}OUjTEzwXfe697L#`iufD#*oaOxF zljIYY>t|u$E$p5AAl(+8N077S^e@jGe5UyF3I=V*w|LSHD(p%9&wFxI@mL9N&mWH~;Wm}J}wHf~X- z01#JG7_p9-3Wf_heU_;izQ8@~xboUf*7=KaPnS^9m7%f346(t>6vkd`#gSF1rG+V1 zd)gj{3V$TmUX^Y{eu)tkMS-8&I^Ey}qdj~vaO3?w%Sa-N1^flc__Z*77yq6_bNm`3 z>%1GIm#x-HgYAmVp`7!W1%2^+t1R8RTWI9F=hBry6v6bZrlKj>Wm_4+{dSo(pYsp$ zC_&@4RY%~4^+~4$hWpWFVt7oNEbUV5TkKP48tM+mV_K4B%8tFXw~I%*ZD6=PE>WI8 z-(6mDv!drx%<5FR`T>AFUjq$ACKRZhp~Q_Q*G0B2^c@S3Ti@A4B{zgq3OR1#dv0Hq zc}u16wbv@Ig>`8}3W}bIoTA-wx64sA~=T5l2(iTO$Y)qPA9 zli;iEO!d_z^L8Axxxikf$g3VIbCKD@`kB-}ojzBG$3=XLq#Ja9=JsOcpw(>ZhrWtI zrooMrc`JoI*;&XePawRPeE~~0vF>}zhR2kdL6C^s{pK3q=d6MCx?>*1vSE(Wprez77TI8ITh(9^ztJw87aIKy}A$3k7;0+BBp(Xe;Nj*hzYYTaX%%; z9WlgRG`5a(INq&1*h8`!C?~AT%py-RF;pCeg)51zv?m{c$D6d`21m-w2l5P^YZ)ud zXjw|t7@R8e3}#+woRL(m#~DD)Y_;w08e#2 z+{MBXo~gk#ght#UT~w`IO2iEQ9ev`SzvsqsX;{o;oGEV?RiJeR3y1z+e*DO));4h= z(;jEUDxJ=O$o(ApjpwhF9rE&{*a8O93)8(cC90S@>XGx!p1tVP=czT97C6;}-x+!5 z?&!sMs%u;ai3tFrqW`3~%iQSkYIQ<`x~iyklGP{KmnqiF?hu;==-9xRqQ*^ai3Pjo#uBeODG@}Qpul2cKB^~z9={NDb znc!v+QQ1{g~P90Kr5^>elP zj6^Xrj6R!*FAJ!zY=a`c58u`~hIDVVMpG`VszOpjp zP@-BES=@bJw(PI}%fGOGL_|?!Invj@zG~K@g}#0n(^%+QNn27u^hkmCQRmtoIWJ_2 z310!7FiU6C%aFj#oJhy>i=S#bg`D%oUDCwMbW5Ihv*=l{Fly=-RB3&|WfXk#ktu}r z26K+c6WhtVh|=^)z5E2u>mF24mISr&!eaO7QdA;S63}0BQY>tIwXv_g zns?M=$t}JPr4_9+@HJWrYo>>)60{A}%oA7QPuIRMIj6LEF(xCUm``zWR4<VoU1!T`0Z-*a~_X^xKnyUYB}Rps?FIv?iBuc)g{yAC0OqK=*tte&3|LjmyAC( zD_vT9n5$zTqCLazOVVtc*epHG8&PJPjUI-@ z-zoq}(q>Ohvput=Y}_@?{$c5^1R-mAdgl+*80g#@{uA{f)j$8~+*nnZqm@MO*?>xP zvIK557NY<4)XoK6Xp5_OA2P7xaWmgq>3x#_heNZqrrwt?i&L{&k7fOVm(-;!Hhu6f z$_{hm=hp6@8*_K8uzIz6QMjInkN29b`~*wopDG+nCN{)b;g!sEV~HBMnXvC}N9~hL*d7t@8HTx$yysnCzu9qi2wl8EK&-5^s6VCfhw6hJ~8teYD(XYwxQDNn55z~^o-$|NZY-8m)WTP@wv?t)V&NZCn zGi1}P{IC~ok00+j*r~rAjOcF%0So><&*hUi}Pib>Z$m`t#& z=*fRYkcX@*>B`+d$@SVV@~V8Z_2h_)Or|*Jc`ojGG9~|+s6*OZPxYJwZ{=%J>1)R) z_)9cagCG7}SyDtdX}p;O5ND<14{{KF;Cx@h63Gt!uJHQ=>SqZJ2ME2thkx%sn-L~O z)XwnB3Sa_Q_}&9A#PrFm4$u6BS~t`09tqejqNk;)iD^;WpeBLcxkM51wz_-;k8jZh zAb2j@?LW<)wY)6MF@~==cjBKZDoVk!NQDSeS?+UP16uRM&e2oIjid zweu;z28QSYS(CmD&jf#ONF#e!Kq=}dLoMpbBe}$IQwBjLo!m9YQ=~*w1#?2FA>{`$B!!x zc{Bhq*Dl)V0X^cqGENhRw6-AhPKycN{qxRBT%*~69>Sec_@+r@7vKVEFsZ+JNV1QAP1O5eHrr3|LexHA?xEA90{Toz-K66c+ zTj7!=4L=&gTsu6b13U@=!bIU01p?2}!*bk+dcKUJn4V7cB|AD?^?-mib_<=ZUz0WU5!5L~+y& zjG`}4W32JuC~>Is{Hh$^Uz7t}YgdCHZtZ>*4vPG34Fb=cMa3;_ot;B(YY+%GwBI@? zz}VIxBpk2{Z|EN3_G)ljxV-}G)gWZuKM1g^!FXW@vR|wV1Jbqzfpw`M>pmtrsB>Ii zR{35_VMkx&_w5_f$V_!BschfE7j?~p+C zuA}e31f*{Oky^;U4KM^5fMzWOg z`=7!ZCEi{3e-y9%(D^%9;#9z)>Ucc7Kw5bSpfe)LX#;dU3?=U(A`akBE!osOJXhP={iKNAMAr>I@oEIhj#xiMm^h2w>izn|ozpr! zhR|#hIwK3I1i?6@Zqg+Lqwl!r0Q6T~pjsz__nO)aO4o3r*Yu^(b*P_SSvw6m1} zIch8Q#j+bjH)qcQb+>Q&DXfg=9fn*`7fT#5Qlg7KYT+&H@D@w!JO9CtjliUD$&^8s zg!iEY`)H$|10c|j?XOT9-(a6Rc7osvuxrB;c~q*btM~85DXVSG1M@WM?)|E#+ zj|+c`pH~A92SP<1zN=qp&vT2O zZafNzo@K%4djqMvDZVBCSbMw>E>5cidkCWCdyh>MR%pO*2_mKr@f4gRO)oo?3h-1? z2Jah4vWcXyd>>aRAg)7dj()mhC?`BZD2ueKp7-DwiU*eK#>2@~p=n$OKS|F*R&e5p zUdRsW^l?lb@ch7Dv(WpozAEnWmbFyoDX@lw1Z|m=EoZ}ygbJc z1Wb_1ecp7&*FfH*-7gAl_0nr=E1j!UJi6n9CtAI-xT)jK<6M(zUU?YAJsFm=JR!fN zVWEBkQZg5vQ4>nZDL~0UusR|jG^CbRpq9sPAd7waXyV)F;4MQ8{1*JP7Xg$Eb}j^J zvBNd%K32p_XVeQ0swEUbN&@D9ZyD%24y^JcEMNA?n;FRMNs5G?3w|%ewzdE#)kYt6 zthAyYAFgJI@;!Q3hD-uzYc%Y2I<-GEIf@je`Yzy5)GOl+8$O<6_fZ0W-xk;oB{0Gl z2t3ywUqXh{Isxnr46xWX(E!LuosTaG17yHCNHn0fQeV$8N7yslSHLPD<3)6n^T|Wz zI7kCAl7)L%)sL;Vl`(c`@u~=x8y9 zDPyh#^uC3FN#5Xn&!B%K2BeDDCXb|uUPOam-?9$_V9PV1(GiiN8t}I&X*@QD09A}5 zk3ZM@LToDiNA}iGiQ{Np>+C1qcx>K?s-zXvCKrVwq=@cxAM@vOMPm9jBwK~P=`oyY zXIx>uOr1td8GuOE!x?b|nb7wAg&y_DyiQ8wE>)|l^g2h~s zsG{gd3@JsRWO^SE*U|cE>9bmBDVY3%qGf9mQMn#^^}S}I`WxU^(r^(2sFY@o32&XI zUJ~ppO}#V@m2O|Nl@{D+0)X5XVfs={H2}#4Lk>JcwSthz_gl8ooO%#6X}jnG$Aar7 zpc`BR+&ARfkm!U8`? zesW;FgvIAuIb5VVXq^HSayj|@p^o~8f_+;`RPNbX^%oKPmXA5%L(#A*25@e#PJswB4A8dKxKKTcQZi~D z{7*3cn<}?e4geTZ!A>CT*a8}Wj0K<&olqR62>WcYy#Qo0cpTElRhZ^O2i$j#qY7}2 z{^#*O`vSa;m~yfLFeBrt*l#(i`W_%ZK!g);c7lxNF@|V^zvsb$PR4m5pai{d!X6`Y zcyJIwaEBg#XrD!4-ETh+sq%N{fPKY{A^x8YU;F#{{!ecIZ~5I;*!`C+`cD=MYWPn* z^51r-|DD@ECXxU?kws3UfcT|-0sQIzgg=0-{p%%Lj*U5j1h5xUV2^g$G! z3u!DcV^P#$7f9U+~n)kAj7oWq8ntjN) z$N9bKo;6mhs_g*BUT^wWfg4}*-3iXF9%CrP-SaI8f)0CC3{;~rhHzTY_I^DBC9=H; zxF?I0v~HpHUJ&0G-z{5v{4OOb{zaHn+&D8K;${O<#Ri{4ZKH$ggLp#G(u z0Wftd1mFV#%mtho&Z9e^4tO{!>jVKZ3@LHIpEOwz^f*C%$mk2hGHQwaT7^@w=pR$? zpFsi~Pim4Ir9b;j)G-?QA^^|ZPQZOuB5+!`Nu7q|eztQQU`)RrLpO#%N$_jOr_-=Q zptdZOQP$X6ev(#My}cPX9QoXL=8D{v#AV-?KRkRm@P`wLkIfu-==-X>xOg)+*t_4z z$uIFM4^h8S@w4{o#r72nW1V>CJ3Il|^I{#f2y-5V`UaI$W3K9UTl{SQNz`B0-y6~B zjk&#r9*;Ac`}&Ib)C$FB6S}_T`9h*@ub&94_@stU!^mOvxZDN`Fmp|gJVAkH#wk}= z>eluy)V+E!;3?ucF|x&1F0FI$cJKtLdb(OZ=l~(t1ti@fy|t$oMdAbv&7ncN7U;ye zS^kmfSXpm75YX^>VyntJ=%~)VYbN643F&KO^BCE?Gt#kUM4bE(TaV79)j(1XEK1c2 z&x>vF4!a5d{Oat>|9y~TS@;%sdTS>>Nw8scqruQUzwBw&!JA_q5#Ek5GC_JW(D6pW zG$B|&8w)Nu&^dN?;XkHF%@@HyJb#^MQ~_3G$n{RJh(GfnNlm+WdvYE)y-bj|JrnUf z12J@%E2$=2!)|L>%Re$3J`5XJauyN`c|{}G;zi+)xuFnKNW2{5Xx7v)p z+#8EEldrN~1peQAu7k}y&3#Zhh@|GbMXs%%V*yNuGER^;|FNN)W2hrRwuQwbK4s3+ z^I?r_&&l-C^JW}S2JVf|#OT}=Zr=fZ)nLDove&k8feY0u_@Y#OB{eEutR9gS25Syc zirkf9fMgzHHZ9700SF;N13RGjzCB=H6P0*vc=gbNKYoIB)R{bM#PhufJKm`IR=dX}!YfO`REN5h_Nlby={7g=7yvs>`D<6L3AW1ni13r#Zu0k~Tg-*!1 zKwLKSJpVC{2Gru3?VW`kX$<)kYQOJbA`kzM@d0W?B)=r7Mm9W(TD~2Yt{4eK)Qc=} ztn^SKwz92*#f8>^lmhKAEet+j)0j8>DY91_=H5_XMo~NY!D_2q1!vzug(JDBtRbOo1e4k;6aOKw$G5q1N`xT6`mBi{)R$U z$S_I|MhdVcSaj=%kQmJA);=2z1I++edOkolE;9rOvxAGM*jbPNlmbI2BxGc~bLKt` zT;nA|osbow5+BjfJ$z@5%bswZu;dCb+^UH-P-_r?6jh2;gK%v@FBo>?s?8o;1qlC(S)n6CJ^>vb;Mo4dK|qKagmS|#PeM~+f9U^p*?-a% zNKSuy49;9zgL`}oWk6K!QJWJZ0=@?Wa&!*az|BB7iDg^Ywu68^4NQ%iQASKzi*V)z z&UU@tzt?*h_JE^1{%3W%-ZU5b^V{HUUjoSipeL{xWGEE&{wKQlm*f#-UDqVm@P*GOYgz=|7hQxw6sUDdodrCOy}XyM1(T`uvX+XVaD((8 z%?+=zoxlGVTNTzW%-0}`{gy2EJM?yfZAKwGGsuzMdY}EDf+7@(B0~#by5;=tM!PULDNU2X4+fEu>(X!}RCXW~V#E-?y?DuuLz&JHR<1 zh6!=7oxR~an5-EFc*~v&Uu?I_t7G zOKsbBRbam_dT#S}7{C7zSSZj&p>y^E-hOx6qZS&d>Eb=1x3xQO}dgP1l}`g zd+7fb@83b09XkPYDU`7zI{^3EO-p;STy7Q^CjQ0Lu*S9=6I3P*D$4)B4F0mLf27l> zn;Og;M|-)qOQ5}+e~0YvRVT!+cd86X-8)%e4+{q>m2>j@RONbM?o^R*^^b+G1DAHI z3^>g9Xl=ov8JpLo6-M0|n?1A*_;5DQ_6~6QBz0@|YsXCuh5!)<)xlm+hsu%N3B*>> zbz7jam8IaKCrP;4>I=GESE`Zr?}g@!!&}T13SWmDZ+@h1JlPh91(b&eaPLYRYDD|+ zxYNSQ8;bh136Y;)c}77w2fQCeiBaqtV!sXTHq>KV*{m_^o*^&jG194eP{NfK;`o!ram)AH~~Cf_sesJs*M#n1=S%ag<7g4DaWnY7D4a**OqY z8j(V!kpXded+v6P0DdD-70~ViCXc9Qw8nm^Jx3=SVzJD>LR4=z$!^tNPze4k^1p`S zKB#WNmZO9E81Q!xVki{>He%NTs$KXSwN3-09@Ywl3Ml!KftI1F4k|nLB|bglzpTE8 zvy6hA*^A1TYwBb8gL}9g&^}&`R&0YhDF#vpS+aqAY4=Ltvgnyr-ZJ7*mq@$4jAqU;&1G{T(<;Gv1oWBl?4th!jFpyq@ z>+u~IhF0$OKsCgsKqK#0OTgW|or>reGr={*cFu-8U>EyQ{hS^8vkzCg3T|o!u9)2)d>=~ru<*4!GACGemyQRDlRbB)tk@@AgtZ$pzNhG&Gm4H_ZLU| z9c}hm93stsb%*W2KYAGoyPikgm`dXPtNdoE$0@cumnFTaK((6JFXbtxMSTKg@3@EN( z9!OUUH>#M^7t(%@5oivdq%*HMpvfXV|yLY_s@XYSuorR+PgmJ zcR{_&=o~nQ{w6sv8T2qY#`oszmOgHzD(G=<(d(VM3#Q7ga2FUe6RM%M%BcN~dlbli z?WM-`$G`PUdr;ZMSNLq@3yXw5b1z6kFhv!RjMB64*{b38sIV*^Wa%>EhCc`GY}!tF z@|%1B?sr(W5Pajp_Sw|BjJ>QKRpY~E*ioM`Xmf*R>{gQ!#qgGkpoZ%|nFuEOC{hYX zzzE30E06gk|F{Fp2|=w0*ud6h%66#$UmTqyCj6a$t&thS)-{f=&xVu__q#!Z9pd_^ zN+9(s+<>hpS~7%70Jy~u_J?@$XnG{|g(7j|c)t1`KW1HM4X9%bUE6?~1@5EU#ux`# zSbl8p1dcr0`xbQavs>(Vz- zfiIz4v$tB#6-8kvH9(aJd}9H^3liMg6YiXy`pXp*wD`WXz0LP`GQRgNvi-((yF7N$ zAN3$a$YCaH^0!r?YqxnZ6L4KdZQ`6g@aJA~1VoZi2vcSV-)O*8e`jTY!4QGo`hpL! zLl&WD;U-%GFgSEC1GySZoFEDZuG4k|+8u<+81&%Z$QWXm`R%mzw-X&Cs=3dSN#)MM zzikMb%y7qD&=A!{MXEx*2Dnz@1+;XFuR`L)fjiEf&Jl|JZVB{je-_mr+m&ah0p7y) z8S3tWP&rleJ#$~*5mE{2aH#7;X!G4l9)+}}$PFLV-K06V`Ta%i8K(ssI6pu_|Bdd$ z*4v`j)DT<&goN57fbN4s$-uWCsP@`+8*RICgD)ANT`f??-~9r;ojka=vjWH}K&x#c zk813LJD$Ot0_!H)U(gHs)YrJ-`wieA`${2j-z{YL_Z?g$jpNHF5q{t{7hF5f zZ@<0wIv_*|CgG;n3I(Lny#*zFpDO@&W}%_Kb!H*0Yg zrUoBO0ljZ+Vp3sa0eZ}MyD$0M({N7EX98dU;9mjRW$`fa|A&_jy7qLbw^_(P>teg* z_%|hQKCl?xbOF?VH=1^fE6DTUq+g#6u6{pl3jb;-&~NP>Z(2kJoE8s2`!e_yf-Q2h z)sO2{aA<)m>^*yc?6a2B?!wBM8na>P36zl8Zcwt)#sI!HqQeAw+U`?`6yyeLdB9qxKM@$IJ5cGqp4bgN+f)6P4Xw*Xq$#CUgi#N6^M$bx{eesNhGa}zYt+$@TL-W1ul z`PP(X1gVCLZ)YC#Zptscs~z`-Iqh;$%XZ@3=?sGYbQh{WJ&FCa`dRuf?_q#*k<{)?fZyXloj)7oupRae6o_ijK;E*It#+Le&{|`-c^m~8-9ECp<<2`3 zjA``ZwRV@?8<$YU_eVDdr5F$VA`$dP!`2H#pz_%BM!}Aea$#S@sPF^5rLBuK=tU~1 znuC|P#tVwMKR04wu-h$%emywcd`bW}P4gK0sshL`km@%znn3rww3PTou*FtqaVIVy z?E*HNqu}29Yt{AZHrsUpr2OnXZm=W4SJ=Dk0b>Wm9dzOWlK}61KoK%Axq}4TG-Sto zJ2*1|-&mEf4}ma7C3ZYv_}vT$YT#Uz1N)pt7|QkD?`RU}co9ziS^mG@|JF`62*W0V zkaxHBzgr!EcW%4~ONrazmKorD1JHXn`-e9U4xPO86QZop>p!4pJwO7zCWBNp)q$@Z zpt7N0v0b3&gXUg(%?I5f!0*+-6DASXQ1XYXik&x&{=fFVJe`^TC9w^+ZU5JXx_{&IF0qa`Pi5hYsI4u%B@pt5wkb zW3>vd3RQBEhwi+?Sb71qDDZF0&W2Wy4{?H$>b{I}pi&SW)Ilq!6H2Jt+!|*pm)P5jA68GuJfal za;XAUKEkSdqOTQ27Nu?fWia>$&&5Lj&Dm&sC|9LK0>EnN*{Ar)1U6c zV-B@8#eqvC4M8qFmWH5ALRhigKiuci8aRgNe$|C?M55EgJZkWRr5GBB^Blx+PiFNA zUqH=|m1TzE%;G>n2oMzEk;8RxzK~s>QHO%zqy*ZEaT|%;3|M$G&LLMl9+5ebb+V7; zhfcG1)V}{b<`mT@i&j$=p$%%I{gC29CK?^mw+Jl5hal13ENpsse{c5e9xYvBpbj zV(Wpz1%x-+%TL7iXkUO%IQn+0V5nz9d8&RVg4@!_-}kOL!fF;`z=!eybnS>M&|v^} znt`MafI4zTROZFO=sa}!mjYrL(1O8dxG7g07RH5Q0(R*OuotIrO^PBfzBi1R0%~0O2JCya{C44fXng zMzE3#u7tac$+M8qSWbkz0~wJVhV=y0xIw2W=b_UTOv**H56EXgFfNAMK?yMwB;hp< zveZf*JZF1~D<0mM6e0N7uOjx`vGbr*CKNC6u_jo_5b;97gzbqVBeO<%GON_j5(&^` z?g|@@M*RI`bAjp^kO4lp?LZdoQJz+H2q&%p(vA<jShA3uE~{J_oj1X~53EJ7=)o@< zB=?YyvGD0F$B#ig74Zo420|fdo@h9M_)qyVVlqA(UgEbIoIj6J93Wy~CX^&$HBYd} zBHmnR`5p6Y<%!G516<+T8sJ3yRf4lH-!&l89B~d{2%lId4yA*4kiH2oI6$)zy=K8+ z;1js$*z+jICay?98LU%{jaZQvLIZ?`MJ*m566-vqY$<6}SX6qRI8NVB>?Kbj#Pi?i z*c|g6C!$13JRO^!RhwaUSMUxIkVu^TLZ<0VaHHNlVxJf#PJ(=18J>&=+(TCRH*rE* zY|Kd=@>o5xHr7x0?FjVt5~e$ZMNkLVgRR7h(8|7NB%z8HXO?&JUCsVAy_~CEpY+PV zS{S}>MCrJmXT&WZLmkrtZpTvA^ffJNSb8q^mw&R{J}&?AC4bzQui*N2kMNx&vnMU( zk$=8Ry3$hKDXQS?r}5${`sw5{G1sR`>P9(@=7$umd^Q~ru3gTpBko{E3*oxI%0ZWJ zIr;t3@?>RkZzBiY!Ilbig+O_7ol3KYYLB(EUutJsrjuBpZhh<{i^&GNR8zjyKcn~J zFDmTtKp9r(y1;m|k7aP1ZKr6ktQx+P`SHpkLt|NVW`rcSeIVEUAUsXxJ<=r1mT+Q9+-n*_xjYVopfM5oFK=!rWZ>NGhH-u%(eX&!T`<@~E&x~f=Df(>BjKie{UC1~4 z1WoQqQd^51Xq5Fnx0K_x3yQ-zZsdRVpV2@tM*}Nrb8?8K;pOP;hmUlof55h_%p7G} z@NbsqU75h~`V-`caB9~e2L_uV1Aqf-3fF>NgA=4$t;I z``vk7j)&Tym8YVi`YCu2s6EUi*X;?o)x0ZZ9~ZMC>Q1;EcAZ?pT(uGwi5*l-6J|rs z0)d-rkj&cJ!q82Eyr$H|3DbkqD_Z6CwqV=G*Zs1YAS(Y4O;>0OmIo;Kib4{{$~bqG zz^>NxCf~okTs~9qpf)wNCD^Q_IEN)aln9-)azkVfd6}#8o zU)5Xm*uq1HC(M12upT)D^dLY*NUUScm3aZU40;51T~+`g zzXDK6N-vQgEp&VDSg2dEuzL)=Rc9=M9-9P@X!glthH3Iz+K0%5EBH@SB z)=D@qv6#7bybJI>6ORx)@4Z5KHWSh6HyidK&nU6WP|Dsdd`E}!9m)hf0bDO2FtUsZ zhc>!SPf3;O#n?-3G`sOaxSHMoPA&%z_lKTOgn9eXf;ecZqk`m!1 z@WC8|u-nYFY9|lX$FcOSyGQcQz$BYNtw61+{5#$22T0umHq-k>jQ7vj5+= zmN_!QZiM-SiHh>xApc`!OVwP1_$1O%wvgj`s4kD0%n4a%% zZ!uWqjZm@B@Vk>30WLY&7|mGwG-`abLA};@D%mq?Ab71QZQA3$r;FrTgFHl?OojHJn<3OEupU|g zfIGogSk}V>^DRdyskRr5@`*@1*muz7i0F`GGnobp(FrI)H{*Pb(|G`7_tjL+lZ|te zhyQV;^&K)PSR_j2190MWpWwz@m_$!8G^WcxzYNf1{~5}gkg1snf=&DtC4k)yce;}t zbvCRr3QE#Yh)FBn)}*+zM5qi+v+Xo}gzi@w%QaxMfVrDo12j}cS|2wg zv;sy3XiL7y@orZQ3IOr2(%hH0N>(jCA{|gHO*Re?+InPzA#v*gae<;_xCd|yUD)_u zuf8$*_$hPUJS*8K3rO;>1hvt_l2wU^Dn?oC(aC9y_JT_Wt%*y%!T@tO9T0aQC#LA) zuc7L;$@Lnrvt<2Mwxb48jMIVN@fgQX6=+L7xFP29R7dt3+%M1(kr)K8VE*0NTm4JQsQ z4U3q|#d=M59rwGe+ywV_Yp)M$6La=U8%2`*apVBz319}r{^h6hn1v922??p~I3GQT z^feqg6y5_xg#B8SeV7cCL2sBJ8SxN$E&K0>r{HXk4TLcN{wheKY@;)#h@Gk`PkDL7 zH!cV#h5M^43NX)VvmQl+>Qp3fR8Y8!7)AI&k{zSr2_UIUKsg$-Ap6h83qr0eM57pu zf@5`pivnCjDwE>YX)cwBX>kkRjH-W>I-||-qHM0 z8znDu8gh--BJ`lI!DD>x*k&v63v6{l5Fi9W`T&fFs3$U?VD{m9BFtGS0-mEs($6*o z1f@e2(gfuu=_3L=KsE~-EIp9Vk~fFT5qT0(eZ(R`w;|GkwvX~QEI{I@Oa%7boiPmQ zxTj0O@HyqsWXgfF^^mL;P_nMuj8`C)Z|7ljo%B#Jlqx|r1J9MosinNEcPfBWS}Zh0 zW`^I88SRijV}dFYK5?US9)600Dy-~gP@x82OnmX~rljt@E?UJyX-I;A<0A<|svjcd zf*G0nPZ)qL&jYC;g2UW*^B41yo1h+1e30sc2on@al%JBK4dr7HonjZiU{92eK^~euAZ$C+fyh;?01b=>a6mbnZ5vsxz`UJ!Fw73}9c!DY zCGBpNmOnt_V zi)bsgWB;~tTr$D5lz=PZdT>{aMNF^C!>a;cuiG4#NGTV}ezh#S5Goi}g&~Nl8UQ+i zvLN;qBW3Y<_yB{k(<5xxWx%I7-=jcQ%@qRr$1Y4UY9o=_DQa{b!bNP9ZXp0E+#e!j zMND$>j;1)reW|N91w{m|>y4%o$rzkuivl(`Mmc~~oI;YWJu9X@YVz5QGZCA|{0F<; zG1E07QW&5aNH$m)!a1^dRaclalU3@V;v{~o-Jy(9ijjy31LVRfn~|FNz$+vP)7n~q z)SW_4Np1!EoJ2H$T*m|shaCfUC|Ms>WvDq!9ILLU{`*)ZLpEg7AONrPzU3XC9%N-<;^1vZo! zOccJ8)CFn>$O4t+c@e`qRa#Q9$uN_MZ3|AW$K@VHE6`hqveo=|H^nZ6==oRva0rGetZSd{XO^>lfi zLPKmyrjc;|_zyND!sbfzo62&w&<>2REN4=s(dGek775d(nXYmKw$zd2xBU-PEDg-V{GIW6cyoW)D_Ff-KyQd zt#yrZKrCY#4)nYTQSa^|Dc8a;ixJgB0s`@W#8Sv>9G*0ns}aRO#AYaAfVuyw(NY6x z0K1FeNtK|7Pjx?&7``0AT- z#7K@X)ey0&7s*ZKp!&L7c1j4iIetjGa+e=rFS_8@ua<4Vmo2+jHrrEU9K@}_tR}`lekEtJEA;UeMGb86%u|EgbG?n1F=Dw#%l|=wB zI2Y65&&479n(SnM8h+GmCDT*@-1LGkD51~3xnGNX~qF9fyv=?=z(*$7tU!At(-wzY)XnXwxzA4RDwwa)cKHw8%SVVwa%+1d-mt zFE~e_v8nPpGQ~K{LphtUJ;^nxc!DTZ!j<>{2s75eh)@yZF@qfWCTn9z!&4m&cB2uy zMktNWqnIKad{3KeL~i(~w2aqQAmBNX%?zObF@9XUvsy_3Q0)ofa?bYBWu{y9q!o=> z65t3Mc}1uXk}VF{Dh5V;GrNZ%d5W+_E6M)z<{1_xNL?bAWTh6=BOrhs;|?ehWJjs| zc0+cXBk^kPyU&d6W|-- z4KgFKt@RrP+YaOSg%Ukx3~su7^?1TWxf*1~Xs=-rpQ}Wr8P|U?VZ37o6)jQ%W?1F5 zqxKV*-}}mPXs*GK{!rYhb4q0D_0BYZssPdHhblB=0RlS#`y>erVCFWcJm6Lp)9)2w zm8la-TnvJMM?2O-$BaGw5>5{+eUUoBL?N3nOPUZO%n}0I;+gj|t(WVjyUG?@kBrtq zqEXWZya0L6zd7HqMDP`){X9x?y%5|&N!0~0ZmMPnPXgA)3;@)_A|tO5yp)dnCCu&d z3>qX#t(|H5EV+c)6#+YVZcOXp=>lp2aUdf%$Lr%bu%iN()#rd(cQnE0q0WoE4~kB6 z(1d}glRE}kGY&->%IQ>V(sZ!&`?V{U?+YkKJ$`pFwZlS)O|Vp|VaY)xqp`Q6Co&C0 zv_)Af2ZlpN7r_oiFO!^@B^PjCf$2W7_;N6Dtkf=L5_RJcM`vC^N@S9@0}|kZ3pIm@ z8y$nO{utZFRqBx;`Ea7Dk)qs>1@^d*f(v5^u=H5f(P*xZjPA=xZPN)EPkVsBB( ztm%m%tw!Jy!Nfg3pQF)yzw`jmyYq+0FRj5$Ch)A?=jq-&) zeGY?pp;95rbJPda=|LeA8Ha3&HNPPnxB&D_%VF4)g^};DU>%!~kZatcmldr5Sw{^{ z)?EhmBzm=RmjhY2->3_h;HgSFBEnQ;QR`A)7GR7^q6cblP?_nE>t9Ov-lTVp%3+ zt0-gAACEwuX~J9}@3^@>%1EeFf_7lb0(uZ~Tv7`&_Xx0~tp$~wG2&BjiAu?stguGM zNu3E=q+$yvikdJwS*>D)GtnjQDr z=^l(>?hL^}M$He}NPnw{`(S59sfb5kkB5oJ@G_g8!K-#ABLiJ|G&}mpzz^vRw~>yn ztZR14UA@D3&y*Phc~?CKzblUfyw4bQ~%xG!&7%E`ge3jfaKn9gZtXS&zk?zn@rshz#K)M*=Q(Woh$D{pbY*Z*(-vGzC7 zd@IBIo<22WTaIhk-7ts0o=y(lq{x%7>&(m?BR=b5zwK%6t|hjox@e~B8yIabR`fUD z3T>R15SS>%vr~uHvp&%;RqBIgitn|R_7TVa3Dw``>2mz2p0PW zrQeh2O5UUG>9_eezT$d+@OPmN-f5pD>fe@pE|XytTD~?2m3ladHl=G8_v^A<+a0&g z*u1#lqK)d=YW{_LZ>7Ioy11|9*Pp?IPJil3g=-9a{VPoCgmn2ik@q=n$L(cL8C`Qs zUZa}5=jV_54re8~5SPYFlO-;?FRUM0uKOZTv~9qCroLA}hsiR&Gx@5Yau%IG+0EZ} z;7ehfNSvHRa?tAUj>3UqmsTG=rI|A%nU%p=_q@J=E7$~FW4vqqQ?>P0&Lj>F#vBd~ z9=PJPwY2FWYtwB<4;`~bp5?ed&-cp~o|kI5%6~Y}LOV>$w!fCR6eQNYxSwNY_|)HK zy;-Tj*j#98xplsS!7(dW*VOoU5#yIb>la;aA3muRelezN&)WUnZ+l*Dob^Dn_g7wn z6D^6~uIk|r--g>Jsgc8t#`<>j)laKV3?8E|x^TEt=8ERCj4COST>Hwl!F>vwZ%Pl# z4A)ikyENODJSZ)-e|d1wR-tW>acV=zC+h{dCAF^;7gT&pbriAMFLamx;EAE(@Rx1L1{---?wS%Dj`Jem!QBj}#CS zw%^>PTB5c4-sI=(*j_Di*}e6^UB2npc13mH*s2>Gw0gadvHmF{B!FSH{;jA5BHkTwAzu|oIEkIklCiOY}V{raaQKi_W(Hq2W z7{cuV{tK*SCCj|c&OS7&{U!g_f+qxi`YYz=>0pEU0a@p~rDE~@^8?e~-Z7q*`OU~I zR*om+-tEhOo@4B>eI7k4kXOEpbIZf@vwyZv@}K#pwr9=f)SR1^u~shOR(8c}m+!XO z;9H+?a1xAx;2#p0HKoW;K+ z2}^4Pp3AGV3;uAG`|b8tk71K*d7m!lft zpZL|OGg4Q6i5SdQI1^-%xsFFob?Y4US6yxC?NzQ{BLi;DO)T*{BeBqFp^tu`+! z%$AsZ&@>A?uh7s}Ta&I%e@%f!OUlTkS&v?zvN`Rw%79S+?)Qe~8{ z_MYz-J00@puN)(X6WT)&S;NzRA9!{-q)S8ElJr$U%3CElR`Yhw)E>cX-3l7_EF-5c0(4rvLB*Eu$;^~SvCY_s}94HACm6V9STqSxx?Yg#*XQns5 z7SCYE@1a8b{4;hI-_X?;G}8ZhD|&`7Kd*RG+>2GGi=!5V+vit3SvTWl?fRYBHdh6MA;O`5PcRVf#>V4ogE&maEhPz2k`?^GX= z{=h5C?Pg5-`PJ0W z`SsxI1dpk`ldF4-W_t+qwS4y%l9qU=l-bgLtUBXepHOXsfQNXoGN(1CNY<3&zgesk zQ4T!i?>cwIrmIi=EWa<>>pkxl_s2WJg_q20`#W_Tvl`y|$uHN~f2iS`km7FR9d4Y~ zB`%tscbeYBoeOSjS*}4l0MpzO*co% zdjk6-&DMsE>|9U|KivFDpIY*2XbHcTP(^axh6l-V+=V)og-Y#R5|39~=%g&@*znNz z%)H@0r_hgo5bB*~{On_|W=L0a$}+Lnx2LsB)+S_svI*4>6H?qa^M0ON;`s;ilgkgh z{TQc^ez)BGj@V6Ojr~cvN?I3WCmCxG+6PCNi^;TYZC;|~PV?0}CYjSAV7aQLz-nbq zNX-q81r2f2jA@HrxMoKs4&~IlY4*%f>j}30`g3!pN_*}%%|)w2KRo@%ZNYHiX|AFj zk}op^vYo9rM4v3*)*m+byY-Et@)IitE)2P3FBn*#r?clU_QcSoqMfc`74zTmxLX$s{4D6wesXbW-EaGTT{Ao2a@1(?frrwrU9G)K?JjzM zf4QhwsrLKrvj(2M#W}AUWa?wyhVr!~bo`lZ$KjSwn_M{*vz31N>u*+-76lhK+8AYL zanjWK*Jo$B6mBVeU9h?R`u)p zuk~a8Bjd%%2>XrRAH4Q>8voI1X=5oy+dB`Zn~uX1ioDlW4KIU0!7ZGOm^horJ9PZ` z|JQgdT^k-iv#pSsmDxVIXU>H-pK#lim$v8^DGR!kec(9ZYGJlvu7u`=?1ecI7Iu&M z!mOkJF6sFwm~(ZYZ{D(#DOLwRA6hDSW^sM;L9@o)u?ckEZ;ytYPl?MO{yG17^&=kF zr6*!C+_m%g4X;@HKQ^nm&vT&u)Z%3~B;~gxFCDz|ak2bsaUVf}<}V9h&a977p>-dC7gq#b^f571vEy20E|8``;Mx8pLwK0jn_D|bOQHXcy)l3*sAUQ~Ss5-{$aWhCN7*#2Zi#!H z?Ch-$+u2#6XHPiJii!YvmO@*7=`^$H!KDu zw!_gw_U2~$96@qeI83zujW)8H|GP=^uF;~kEgn>#v46Dz{MtohgV z{K2Krqy^J?Ejo5bzQOWfK*yuzHs-{C@hD^0)ORW6mKhjz$}A3!*`sE3h>uv4qqDX7 zgo|;DZC%rGg@a@1^C=wsqi+2PTQqtxtYwUyz~~|v`!Ia59310HVq}Dk zF{