From 1e00e6a6f48bef1f8159201bf8b139a636e8d03a Mon Sep 17 00:00:00 2001 From: PhantornRU Date: Mon, 29 Jan 2024 19:46:17 +1000 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D1=80=D0=B5=D0=B7=D0=B0=D0=B5?= =?UTF-8?q?=D0=BC=20=D1=80=D0=B0=D0=BD=D0=B3=D0=B8=20=D0=B2=20=D0=BD=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=20=D0=B8=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=D0=BE=20=D0=BD?= =?UTF-8?q?=D0=B8=D1=85=20=D0=BD=D0=B5=20=D0=B2=D1=81=D0=BF=D0=BE=D0=BC?= =?UTF-8?q?=D0=B8=D0=BD=D0=B0=D0=B5=D0=BC,=20=D0=BF=D0=BE=D1=88=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=BE=D0=BD=D0=B8=20=D0=BD=D0=B0=D1=85=D1=83=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_ss220/modular_ss220.dme | 1 - modular_ss220/ranks/_ranks.dm | 5 - modular_ss220/ranks/_ranks.dme | 9 -- modular_ss220/ranks/code/accessory.dm | 115 --------------- modular_ss220/ranks/code/accessory_random.dm | 76 ---------- .../ranks/code/accessory_security.dm | 104 -------------- modular_ss220/ranks/code/accessory_single.dm | 133 ------------------ .../ranks/code/accessory_supervisor.dm | 31 ---- modular_ss220/ranks/code/job/security_rank.dm | 22 --- .../ranks/code/job/supervisor_rank.dm | 4 - .../ranks/icons/clothing/attachments.dmi | Bin 620 -> 0 bytes .../clothing/mob/attachments_overlay.dmi | Bin 390 -> 0 bytes 12 files changed, 500 deletions(-) delete mode 100644 modular_ss220/ranks/_ranks.dm delete mode 100644 modular_ss220/ranks/_ranks.dme delete mode 100644 modular_ss220/ranks/code/accessory.dm delete mode 100644 modular_ss220/ranks/code/accessory_random.dm delete mode 100644 modular_ss220/ranks/code/accessory_security.dm delete mode 100644 modular_ss220/ranks/code/accessory_single.dm delete mode 100644 modular_ss220/ranks/code/accessory_supervisor.dm delete mode 100644 modular_ss220/ranks/code/job/security_rank.dm delete mode 100644 modular_ss220/ranks/code/job/supervisor_rank.dm delete mode 100644 modular_ss220/ranks/icons/clothing/attachments.dmi delete mode 100644 modular_ss220/ranks/icons/clothing/mob/attachments_overlay.dmi diff --git a/modular_ss220/modular_ss220.dme b/modular_ss220/modular_ss220.dme index 8e0f223a9a41..53a170e02283 100644 --- a/modular_ss220/modular_ss220.dme +++ b/modular_ss220/modular_ss220.dme @@ -77,7 +77,6 @@ #include "phrases/_phrases.dme" #include "species_whitelist/_species_whitelist.dme" #include "antagonists/_antagonists.dme" -#include "ranks/_ranks.dme" // --- PRIME --- // // #define MODPACK_MAIN_ONLY diff --git a/modular_ss220/ranks/_ranks.dm b/modular_ss220/ranks/_ranks.dm deleted file mode 100644 index 26e86adf3823..000000000000 --- a/modular_ss220/ranks/_ranks.dm +++ /dev/null @@ -1,5 +0,0 @@ -/datum/modpack/ranks - name = "Ранги и погоны" - desc = "Добавление рангов и погонов зависимых от наигранных часов игрока." - author = "PhantomRU" - diff --git a/modular_ss220/ranks/_ranks.dme b/modular_ss220/ranks/_ranks.dme deleted file mode 100644 index 9373b88e1eb1..000000000000 --- a/modular_ss220/ranks/_ranks.dme +++ /dev/null @@ -1,9 +0,0 @@ -#include "_ranks.dm" - -#include "code/job/security_rank.dm" -#include "code/job/supervisor_rank.dm" -#include "code/accessory_random.dm" -#include "code/accessory_security.dm" -#include "code/accessory_single.dm" -#include "code/accessory_supervisor.dm" -#include "code/accessory.dm" diff --git a/modular_ss220/ranks/code/accessory.dm b/modular_ss220/ranks/code/accessory.dm deleted file mode 100644 index cd31c5f3b298..000000000000 --- a/modular_ss220/ranks/code/accessory.dm +++ /dev/null @@ -1,115 +0,0 @@ -// ================================= -// Награды выдаваемые за часы проведенные в отделе -// ================================= -/obj/item/clothing/accessory/rank - name = "голографические погоны" - desc = "Погоны выдаваемые при выслуге лет. Наденьте их и каждый увидит ваше звание. \nИдентификатор принадлежности:" - icon = 'modular_ss220/ranks/icons/clothing/attachments.dmi' - icon_override = 'modular_ss220/ranks/icons/clothing/mob/attachments_overlay.dmi' - icon_state = "holobadge" - item_state = "" // No inhands - item_color = "holobadge" - slot_flags = SLOT_FLAG_TIE - w_class = WEIGHT_CLASS_TINY - slot = ACCESSORY_SLOT_DECOR - allow_duplicates = FALSE // Allow accessories of the same type. - var/datum/mind/owner - var/saved_real_name - var/list/exp_types - var/add_job_req_exp = FALSE - var/list/rank_exp_order_dict // Rank and exp map hours from which it will be awarded - -/obj/item/clothing/accessory/rank/Initialize(mapload) - . = ..() - inv_overlay = image("icon" = 'modular_ss220/ranks/icons/clothing/mob/attachments_overlay.dmi', "icon_state" = "[item_color? "[item_color]" : "[icon_state]"]") - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - make_owner(H) - get_rank_name(H) - -// ============= Attach&Pick ============= -/obj/item/clothing/under/attach_accessory(obj/item/clothing/accessory/A, mob/user, unequip = FALSE) - if(istype(A, /obj/item/clothing/accessory/rank)) - var/obj/item/clothing/accessory/rank/attachment = A - if(!attachment.check_allowed_to_attach(user, src)) - return FALSE - . = ..() - -// Clothing equip at human -/obj/item/clothing/accessory/rank/attached_equip(mob/user) - if(user && user.mind == owner) - var/new_name = get_rank_name(user) - saved_real_name = user.real_name - user.rename_character(user.real_name, new_name) - else if(has_suit) - to_chat(user, span_warning("[src.name] не признали в вас владельца и слетели.")) - has_suit.detach_accessory(src, null) - user.unEquip(src) - return FALSE - . = ..() - -// Clothing drop from human -/obj/item/clothing/accessory/rank/attached_unequip(mob/user) - if(user && user.mind == owner) - user.rename_character(user.real_name, saved_real_name) - . = ..() - -/obj/item/clothing/accessory/rank/on_attached(obj/item/clothing/under/S, mob/user as mob) - attached_equip(user) - . = ..() - -/obj/item/clothing/accessory/rank/on_removed(mob/user) - attached_unequip(user) - . = ..() - -/obj/item/clothing/accessory/rank/proc/check_allowed_to_attach(mob/user, obj/item/clothing/under/uniform) - if(!ishuman(loc)) - to_chat(user, span_warning("[src.name] не фиксируют признаков жизни и деактивируются!")) - return FALSE - - var/mob/living/carbon/human/H = user - if(H.w_uniform != uniform) - to_chat(user, span_warning("[src.name] не фиксируют признаков жизни и деактивируются!")) - return FALSE - - if(!user.mind) - to_chat(user, span_warning("[src.name] слетели с [user], не зафиксировав в нём отклика разума.")) - return FALSE - - if(user.mind == owner) - return TRUE - - if(!owner) - to_chat(user, span_warning("[src.name] привязан к [user].")) - make_owner(user) - return TRUE - - to_chat(user, span_warning("При приближении к цели, [src.name] деактивируется!")) - return FALSE - -/obj/item/clothing/accessory/rank/proc/make_owner(mob/user) - owner = user.mind - desc = "[initial(desc)] [get_rank_name(user)]" - - -// ============= Initial Name ============= -/obj/item/clothing/accessory/rank/proc/get_rank_name(mob/user) - var/exp_sum = 0 - var/datum/job/job_req - if(add_job_req_exp) - job_req = SSjobs.GetJob(user.job) - var/list/play_records = params2list(user.client.prefs.exp) - for(var/exp_type in exp_types) - if(!(exp_type in play_records)) - continue - exp_sum += (text2num(play_records[exp_type]) - (job_req ? job_req.exp_map[exp_type] : 0)) / 60 // Конвертируем из минус в часы - - var/choosen_rank - for(var/rank in rank_exp_order_dict) - if(exp_sum >= rank_exp_order_dict[rank]) - choosen_rank = rank - else - break - - var/rank_name = "[choosen_rank] [user.real_name]" - return rank_name diff --git a/modular_ss220/ranks/code/accessory_random.dm b/modular_ss220/ranks/code/accessory_random.dm deleted file mode 100644 index 323cdaebc7eb..000000000000 --- a/modular_ss220/ranks/code/accessory_random.dm +++ /dev/null @@ -1,76 +0,0 @@ -// ================================= -// Выбор рандомных званий для точечного спавна -// Например для педалей -// ================================= -/obj/item/clothing/accessory/rank/random - icon_state = "holobadge_rank" - item_state = "gold_id" - item_color = "holobadge_rank" - var/list/possible_ranks_list = list("Специалист") - -// ============= Initial Name ============= -/obj/item/clothing/accessory/rank/random/get_rank_name(mob/user) - if(length(possible_ranks_list)) - return user.real_name - var/new_rank_name = pick(possible_ranks_list) - return "[new_rank_name] [user.real_name]" - -// ======================================== -/obj/item/clothing/accessory/rank/random/enlisted - name = "голографические погоны офицера" - possible_ranks_list = list( - "Рядовой", - "Ефрейтор", - "Мл. Сержант", - "Сержант", - "Ст. Сержант", - "Старшина", - ) - -/obj/item/clothing/accessory/rank/random/officer - name = "голографические погоны старшего офицера" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - possible_ranks_list = list( - "Прапорщик", - "Ст. Прапорщик", - "Мл. Лейтенант", - "Лейтенант", - "Ст. Лейтенант", - "Капитан", - "Майор", - ) - -/obj/item/clothing/accessory/rank/random/command - name = "голографические погоны командования" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - possible_ranks_list = list( - "Подполковник", - "Полковник", - "Генерал-Майор", - "Генерал-Лейтенант", - "Генерал-Полковник", - "Верховный Генерал", - ) - -/obj/item/clothing/accessory/rank/random/warden - name = "голографические погоны смотрителя" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - possible_ranks_list = list( - "Смотритель", - "Надзиратель" , - "Координатор", - "Верховный Надзиратель", - ) - -/obj/item/clothing/accessory/rank/random/detective - name = "голографические погоны детектива" - possible_ranks_list = list( - "Сыщик", - "Следователь", - "Ст. Следователь", - "Специалист Бюро", - "Инспектор", - ) diff --git a/modular_ss220/ranks/code/accessory_security.dm b/modular_ss220/ranks/code/accessory_security.dm deleted file mode 100644 index b0ed1b04d55e..000000000000 --- a/modular_ss220/ranks/code/accessory_security.dm +++ /dev/null @@ -1,104 +0,0 @@ -// ================================= -// Воинские и офицерские звания -// ================================= -// Officer -/obj/item/clothing/accessory/rank/sec - name = "голографические погоны офицера" - icon_state = "holobadge_rank" - item_state = "gold_id" - item_color = "holobadge_rank" - exp_types = list(EXP_TYPE_SECURITY) - rank_exp_order_dict = list( - "Рядовой" = 0, - "Ефрейтор" = 10, - "Мл. Сержант" = 25, - "Сержант" = 50, // На момент написания, у среднего СБшника было примерно ~50-100~ часов - "Ст. Сержант" = 100, - "Старшина" = 250, - - // Гвардейский состав типа УАУ ОНИ ДО СЮДА ДОШЛИ ПОГЧАМП У НЕГО 1000 часов СБ!!! - // Не думаю что когда-нибудь вообще их увижу. Но да, они считаются очень крутыми. - // Если кто-то до этого дойдет - я хочу пожать лично ему руку. Особенно до прапорщика или старшины - "Гвардии Рядовой" = 600, - "Гвардии Ефрейтор" = 1000, - "Гвардии Сержант" = 1500, - "Гвардии Старшина" = 2000, - ) - -// Detective -/obj/item/clothing/accessory/rank/sec/detective - name = "голографические погоны детектива" - add_job_req_exp = TRUE - rank_exp_order_dict = list( - "Рядовой" = 0, - "Ефрейтор" = 5, - "Мл. Сержант" = 10, - "Сержант" = 20, - "Ст. Сержант" = 40, - "Старшина" = 70, - - // Дослужился до дековских и полицейских званий - "Сыщик" = 100, - "Следователь" = 200, - "Ст. Следователь" = 400, - "Специалист Бюро" = 700, - "Инспектор" = 1000, - "Начальник Исследовательского Бюро" = 3000, // Большие часы. Большое название. - ) - -// Warden -/obj/item/clothing/accessory/rank/sec/warden - name = "голографические погоны смотрителя" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - add_job_req_exp = TRUE - rank_exp_order_dict = list( - "Сержант" = 0, - "Ст. Сержант" = 5, - "Старшина" = 20, - "Прапорщик" = 50, - "Ст. Прапорщик" = 250, - - // Уникальные звания, до которых никто не дойдет. - "Смотритель" = 500, - "Надзиратель" = 1000, - "Координатор" = 2000, - "Верховный Надзиратель" = 3000, // Нафармил - ) - -// HOS -/obj/item/clothing/accessory/rank/sec/officer - name = "голографические погоны старшего офицера" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - exp_types = list(EXP_TYPE_SECURITY, EXP_TYPE_COMMAND) - add_job_req_exp = TRUE - rank_exp_order_dict = list( - "Мл. Лейтенант" = 0, - "Лейтенант" = 50, - "Ст. Лейтенант" = 150, - "Капитан" = 300, - "Майор" = 500, - - // Увидеть такого ГСБ - прожить жизнь не зря. - "Гвардии Лейтенант" = 1000, - "Гвардии Капитан" = 2000, - "Гвардии Майор" = 3000, - ) - -// Special for spawns -/obj/item/clothing/accessory/rank/sec/officer/supreme - name = "голографические погоны высшего командования" - rank_exp_order_dict = list( - "Подполковник" = 0, - "Полковник" = 10, - "Генерал-Майор" = 25, - "Генерал-Лейтенант" = 50, - "Генерал-Полковник" = 100, - "Верховный Генерал" = 200, - - "Гвардии Полковник" = 400, - "Гвардии Генерал" = 800, - - "Маршал" = 1000, - ) diff --git a/modular_ss220/ranks/code/accessory_single.dm b/modular_ss220/ranks/code/accessory_single.dm deleted file mode 100644 index 6dca653fde9e..000000000000 --- a/modular_ss220/ranks/code/accessory_single.dm +++ /dev/null @@ -1,133 +0,0 @@ -// ================================= -// Одиночные звания для точечного спавна -// Например для педалей -// ================================= -/obj/item/clothing/accessory/rank/single - icon_state = "holobadge_rank" - item_state = "gold_id" - item_color = "holobadge_rank" - var/rank_name = "Специалист" - -// ============= Initial Name ============= -/obj/item/clothing/accessory/rank/single/get_rank_name(mob/user) - var/new_rank_name = "[rank_name] [user.real_name]" - return new_rank_name - -// ============ Рядовой состав ============ -/obj/item/clothing/accessory/rank/single/enlisted - name = "голографические погоны офицера" - rank_name = "Кадет" - -/obj/item/clothing/accessory/rank/single/enlisted/private - rank_name = "Рядовой" - -/obj/item/clothing/accessory/rank/single/enlisted/corporal - rank_name = "Ефрейтор" - -/obj/item/clothing/accessory/rank/single/enlisted/sergeant/lance - rank_name = "Мл. Сержант" - -/obj/item/clothing/accessory/rank/single/enlisted/sergeant - rank_name = "Сержант" - -/obj/item/clothing/accessory/rank/single/enlisted/sergeant/senior - rank_name = "Ст. Сержант" - -/obj/item/clothing/accessory/rank/single/enlisted/sergeant/major - rank_name = "Старшина" - -// ============ Офицерский состав ============ -/obj/item/clothing/accessory/rank/single/officer - name = "голографические погоны старшего офицера" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - rank_name = "Офицер" - -/obj/item/clothing/accessory/rank/single/officer/prapor - rank_name = "Прапорщик" - -/obj/item/clothing/accessory/rank/single/officer/prapor/senior - rank_name = "Ст. Прапорщик" - -/obj/item/clothing/accessory/rank/single/officer/lieutenant/sub - rank_name = "Мл. Лейтенант" - -/obj/item/clothing/accessory/rank/single/officer/lieutenant - rank_name = "Лейтенант" - -/obj/item/clothing/accessory/rank/single/officer/lieutenant/senior - rank_name = "Ст. Лейтенант" - -/obj/item/clothing/accessory/rank/single/officer/captain - rank_name = "Капитан" - -/obj/item/clothing/accessory/rank/single/officer/major - rank_name = "Майор" - -// ============ Командование ============ -/obj/item/clothing/accessory/rank/single/command - name = "голографические погоны командования" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - rank_name = "Командир" - -/obj/item/clothing/accessory/rank/single/command/podpolk - rank_name = "Подполковник" - -/obj/item/clothing/accessory/rank/single/command/polk - rank_name = "Полковник" - -/obj/item/clothing/accessory/rank/single/command/gen - rank_name = "Генерал" - -/obj/item/clothing/accessory/rank/single/command/gen/maj - rank_name = "Генерал-Майор" - -/obj/item/clothing/accessory/rank/single/command/gen/lieut - rank_name = "Генерал-Лейтенант" - -/obj/item/clothing/accessory/rank/single/command/gen/polk - rank_name = "Генерал-Полковник" - -/obj/item/clothing/accessory/rank/single/command/gen/supreme - rank_name = "Верховный Генерал" - -// ============ Смотритель ============ -/obj/item/clothing/accessory/rank/single/warden - name = "голографические погоны смотрителя" - icon_state = "holobadge_rank_officer" - item_color = "holobadge_rank_officer" - rank_name = "Надзиратель" - -/obj/item/clothing/accessory/rank/single/warden/keeper - rank_name = "Смотритель" - -/obj/item/clothing/accessory/rank/single/warden/coord - rank_name = "Координатор" - -/obj/item/clothing/accessory/rank/single/warden/overseer - rank_name = "Верховный Надзиратель" - -// ============ Детектив ============ -/obj/item/clothing/accessory/rank/single/detective - name = "голографические погоны детектива" - rank_name = "Детектив" - -/obj/item/clothing/accessory/rank/single/detective/sleuth - rank_name = "Сыщик" - -/obj/item/clothing/accessory/rank/single/detective/investigator - rank_name = "Следователь" - -/obj/item/clothing/accessory/rank/single/detective/investigator/senior - rank_name = "Ст. Следователь" - -/obj/item/clothing/accessory/rank/single/detective/specialist - rank_name = "Специалист Бюро" - -/obj/item/clothing/accessory/rank/single/detective/inspector - rank_name = "Инспектор" - -// ============ Прочее ============ -/obj/item/clothing/accessory/rank/single/specialist - rank_name = "Специалист" diff --git a/modular_ss220/ranks/code/accessory_supervisor.dm b/modular_ss220/ranks/code/accessory_supervisor.dm deleted file mode 100644 index 79497c3ae925..000000000000 --- a/modular_ss220/ranks/code/accessory_supervisor.dm +++ /dev/null @@ -1,31 +0,0 @@ -// ================================= -// Звания наблюдателей за станцией -// ================================= -// BlueShield -/obj/item/clothing/accessory/rank/blueshield - icon_state = "holobadge_rank_officer" - item_state = "gold_id" - item_color = "holobadge_rank_officer" - exp_types = list(EXP_TYPE_SECURITY, EXP_TYPE_COMMAND) - rank_exp_order_dict = list( - // Блющилд имеет сумму опытов, от того и начинает с нуля. - "Мл. Сержант" = 0, - "Сержант" = 20, - "Ст. Сержант" = 50, - "Старшина" = 100, - "Мл. Лейтенант" = 200, - "Лейтенант" = 250, - "Ст. Лейтенант" = 400, - "Капитан" = 500, - "Майор" = 800, - - // Блющилд дослужился до 1000? Шо ж... А теперь пускай попробует это! - "Гвардии Рядовой" = 1000, - "Гвардии Ефрейтор" = 1250, - "Гвардии Сержант" = 1500, - "Гвардии Старшина" = 1750, - "Гвардии Прапорщик" = 2000, - "Гвардии Лейтенант" = 2250, - "Гвардии Капитан" = 2500, - "Гвардии Майор" = 3000, - ) diff --git a/modular_ss220/ranks/code/job/security_rank.dm b/modular_ss220/ranks/code/job/security_rank.dm deleted file mode 100644 index 77301bd327b6..000000000000 --- a/modular_ss220/ranks/code/job/security_rank.dm +++ /dev/null @@ -1,22 +0,0 @@ -// Security -// /datum/job/officer/equip(mob/living/carbon/human/H, visualsOnly, announce) -// . = ..() -// if(flag == JOB_CADET) -// return -// var/accessory = new /obj/item/clothing/accessory/rank/sec(H) -// H.equip_or_collect(accessory, SLOT_HUD_IN_BACKPACK) - -// /datum/job/detective/equip(mob/living/carbon/human/H, visualsOnly, announce) -// . = ..() -// var/accessory = new /obj/item/clothing/accessory/rank/sec/detective(H) -// H.equip_or_collect(accessory, SLOT_HUD_IN_BACKPACK) - -// /datum/job/warden/equip(mob/living/carbon/human/H, visualsOnly, announce) -// . = ..() -// var/accessory = new /obj/item/clothing/accessory/rank/sec/warden(H) -// H.equip_or_collect(accessory, SLOT_HUD_IN_BACKPACK) - -// /datum/job/hos/equip(mob/living/carbon/human/H, visualsOnly, announce) -// . = ..() -// var/accessory = new /obj/item/clothing/accessory/rank/sec/officer(H) -// H.equip_or_collect(accessory, SLOT_HUD_IN_BACKPACK) diff --git a/modular_ss220/ranks/code/job/supervisor_rank.dm b/modular_ss220/ranks/code/job/supervisor_rank.dm deleted file mode 100644 index f51b17b24cee..000000000000 --- a/modular_ss220/ranks/code/job/supervisor_rank.dm +++ /dev/null @@ -1,4 +0,0 @@ -// /datum/job/blueshield/equip(mob/living/carbon/human/H, visualsOnly, announce) -// . = ..() -// var/accessory = new /obj/item/clothing/accessory/rank/blueshield(H) -// H.equip_or_collect(accessory, SLOT_HUD_IN_BACKPACK) diff --git a/modular_ss220/ranks/icons/clothing/attachments.dmi b/modular_ss220/ranks/icons/clothing/attachments.dmi deleted file mode 100644 index 26911bed6990dc6a5d7b64ebf5cbc8290f8d9113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmV-y0+aoTP)))BvDTINWP{;{X5v0d!JMQvg8b*k%9#0El{2 zSad{Xb7OL8aCB*JZU6vyoKseCa&`CgQ*iP1YFH7XT6gNud|w5xf8Z0cA-1U+H}!_PrKP+*EuC z2T$&~@7^IH`o%fF_+pv?zv9*txRWQmmhH1AxK5sM zW$lY6)O*6T@8_Q2I-w9LDdPnSt`iCrY3&^_W$O!jiMUfppzFTB4DC}SWpDtI*5UpC z{NN0i!zFU@{_HX+g=iE5Sad{Xb7OL8aCB*J zZU6vyoKseCa&`CgQ*iP1Ga{>Do024Mzrw#Hc`v3p{h)G02R9J=W)-eu)FbsuZ2k1^X z0Z}ecLJts$``@W56Se9fi>m7If7^RXyxJnb&x9;}YUES7ifpr;|3QCsz;b`j!8@R+ z0XOe}t$Kd|0MHQIReaq8qn)K&XZ`UR(=b=Kufz07*qoM6N<$f{^f_c>n+a