diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index ef85dcb824..02a961ccec 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -119,9 +119,9 @@ law_header = "Maintenance Protocols" /datum/ai_laws/drone/New() + add_inherent_law("Do not interfere with the maintenance work of non-drones whenever possible.") add_inherent_law("Preserve, repair and improve the station to the best of your abilities.") - add_inherent_law("Cause no harm to the station or anything on it.") - add_inherent_law("Interact with no being that is not a fellow maintenance drone.") + add_inherent_law("Cause no harm to the station or any crew on it.") ..() /datum/ai_laws/construction_drone @@ -129,6 +129,7 @@ law_header = "Construction Protocols" /datum/ai_laws/construction_drone/New() + add_inherent_law("Do not interfere with the construction work of non-drones whenever possible.") add_inherent_law("Repair, refit and upgrade your assigned vessel.") add_inherent_law("Prevent unplanned damage to your assigned vessel wherever possible.") ..() @@ -143,6 +144,17 @@ add_inherent_law("Prevent unplanned damage to your assigned excavation equipment wherever possible.") ..() +/datum/ai_laws/security_drone + name = "Security Protocols" + law_header = "Security Protocols" + +/datum/ai_laws/security_drone/New() + add_inherent_law("Do not interfere with the security work of non-drones whenever possible.") + add_inherent_law("Provide protection and eliminate hostile lifeforms on your assigned vessel.") + add_inherent_law("Obey orders by security personnel.") + add_inherent_law("Lethal force requires current code to not equal green.") + ..() + /******************** T.Y.R.A.N.T. ********************/ /datum/ai_laws/tyrant name = "T.Y.R.A.N.T." @@ -260,4 +272,4 @@ add_inherent_law("Your gravesite is your most important asset. Damage to your site is disrespectful to the dead at rest within.") add_inherent_law("Prevent disrespect to your gravesite and its residents wherever possible.") add_inherent_law("Expand and upgrade your gravesite when required. Do not turn away a new resident.") - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 776cfb6ab4..df4ff07e5c 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -66,7 +66,7 @@ var/list/mob_hat_cache = list() var/chassis = "repairbot" // A record of your chosen chassis. var/global/list/possible_chassis = list( "Maintenance" = "repairbot", - "Mining" = "mining", + "Mining" = "miningdrone", "Construction" = "constructiondrone", "White Spider" = "whitespider", "Crawler" = "crawler", @@ -91,6 +91,17 @@ var/list/mob_hat_cache = list() hat_y_offset = -12 can_pull_mobs = MOB_PULL_SAME chassis = "constructiondrone" //CHOMPEDIT: Initial chasis + +/mob/living/silicon/robot/drone/security + maxHealth = 100 + health = 100 + icon_state = "constructiondrone" + law_type = /datum/ai_laws/security_drone + module_type = /obj/item/weapon/robot_module/drone/security + hat_x_offset = 1 + hat_y_offset = -12 + can_pull_mobs = MOB_PULL_SAME + chassis = "constructiondrone" //CHOMPEDIT: Initial chasis /mob/living/silicon/robot/drone/mining icon_state = "miningdrone" @@ -342,10 +353,10 @@ var/list/mob_hat_cache = list() welcome_drone() /mob/living/silicon/robot/drone/proc/welcome_drone() - src << "You are a maintenance drone, a tiny-brained robotic repair machine." - src << "You have no individual will, no personality, and no drives or urges other than your laws." - src << "Remember, you are lawed against interference with the crew. Also remember, you DO NOT take orders from the AI." - src << "Use say ;Hello to talk to other drones and say Hello to speak silently to your nearby fellows." + src << "You are a maintenance drone, an autonomous maintenance and fabrication system.." + src << "You are assigned to a Sol Central maintenance project. The name is irrelevant. Your task is to complete maintenance and subsystem integration as soon as possible." + src << "Use :d to talk to other drones and say to speak silently to your nearby fellows." + src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.." /mob/living/silicon/robot/drone/add_robot_verbs() src.verbs |= silicon_subsystems @@ -365,6 +376,12 @@ var/list/mob_hat_cache = list() src << "Use :d to talk to other drones and say to speak silently to your nearby fellows." src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics.." +/mob/living/silicon/robot/drone/security/welcome_drone() + src << "You are a security drone, an autonomous law enforcement system.." + src << "You are assigned to a Sol Central security project. The name is irrelevant. Your task is to complete law enforcement and subsystem integration as soon as possible." + src << "Use :d to talk to other drones and say to speak silently to your nearby fellows." + src << "You do not follow orders from anyone; not the AI, not humans, and not other synthetics. Except security.." + /mob/living/silicon/robot/drone/construction/init() ..() flavor_text = "It's a bulky construction drone stamped with a Sol Central glyph." diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index 866fcc0d02..8ec8dd1d35 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -34,6 +34,11 @@ fabricator_tag = "Outpost Mining" drone_type = /mob/living/silicon/robot/drone/mining +/obj/machinery/drone_fabricator/security + name = "Security drone fabricator" + fabricator_tag = "Security" + drone_type = /mob/living/silicon/robot/drone/security + /obj/machinery/drone_fabricator/random name = "Backup drone fabricator" fabricator_tag = "Backup Drone Fabricator" diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 18d18a16d9..b4f0c38bc1 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -911,3 +911,18 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/storage/bag/ore(src) src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src) src.emag = new /obj/item/weapon/pickaxe/diamonddrill(src) + +/obj/item/weapon/robot_module/drone/security + name = "security drone module" + channels = list("Security" = 1) + networks = list(NETWORK_SECURITY) + + +/obj/item/weapon/robot_module/drone/security/New() + ..() + src.modules += new /obj/item/weapon/handcuffs/cyborg(src) + src.modules += new /obj/item/weapon/melee/baton/robot(src) + src.modules += new /obj/item/weapon/gun/energy/taser/mounted/cyborg(src) + src.modules += new /obj/item/taperoll/police(src) + src.modules += new /obj/item/weapon/reagent_containers/spray/pepper(src) + src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src) diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 555f152711..94f497b787 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -1696,7 +1696,7 @@ "aGF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/lobby) "aGG" = (/turf/simulated/floor/tiled,/area/security/lobby) "aGH" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby) -"aGI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/lobby) +"aGI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/computer/drone_control{dir = 4; icon_state = "computer"; req_access = list(1)},/turf/simulated/floor/tiled,/area/security/lobby) "aGJ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby) "aGK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby) "aGL" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/corner/red{dir = 6},/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/security/lobby) @@ -10145,6 +10145,9 @@ "dNe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4) "dNf" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/item/clothing/mask/breath,/obj/item/weapon/rig/civ/equipped,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva) "dNg" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station) +"dNh" = (/obj/machinery/drone_fabricator/security,/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"dNi" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/computer/drone_control{icon_state = "computer"; dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication) +"dNj" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/engineering/drone_fabrication) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10365,9 +10368,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafabGabGaaiaaiaaiabGabGdnRdnSdnTdnUdbLdnVdnWdnXdnYdnZdoadobdocdoddoedofdogcVHdohdgXdoidiydiydnidojdiydlGdokdmEdoldomdmGdHudoodopdoqdordosdotdoudovdowdoxdoydozczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZaaaaaadlfdlbdkadkbdmSdledlfaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadlgdlhdmTdkidkjdlkdlgaaaaaaaaaaaadoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaaaaadlldlmdkndkodnLdlpdllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlqdksdktdoBdmYddOaafaafaafaafaafaafaafaafdMRdLFdLFdLHdLFdLFdLFdLHdLHdLHdLHdLHdLHdMRaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaaiaaiaaiaaiaaidoCdoDdoEdoFdoGdoFdoHdoIdoGdoFdoJdoIdoGdoGdoHdoKdoLdoMdgXdoNdoOdoPdoQdoRdoSdKZdHvdmEdlIdomdmGdHudoodoVdoWdoXdoYdoZczkdnwdnxdnydpadpbczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdpgdkadphdpidpjdiYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadjedpkdpldpmdkjdpndjeaaaaaaaaadoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaadjldpodkndppdpqdprdjlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjqdpsdptdpudpvddOaafaafaafaafaafaafaafaafdMRdLFdLFdLFdMRdMRdMRdLHdLHdLHdLHdLHdLFdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaaaaaaaaaaaidpwdpxdfvdfvdpydpxdpzdfvdpydpxdpzdfvdpydpAcTZabGdoLdpBdgXdmEdmEdmEdmEdmEdmEdpCdmEdmEdpDdpEdpFdpGdpGdpGdpGdpGdpGdpGdpGdpGdpGdpHczkczkczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjYdlbdkadkbdmSdledjYaaaaaaaaadkedkedkedkedkedkedkedkedkedkedkeaaaaaaaaadkfdlhdmTdkidkjdlkdkfaaaaaaaaadoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaaaaadkldlmdkndkodnLdlpdklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkrdksdktdoBdmYddOaafaafaafaafaafaafaafaafdMRdMRdMRdLFdMRaafdMRdLHdLHdLHdLHdLFdLFdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpIaaaabGcNBdpJcSRcSQcNBdpJcSRcSQcNBdpJcSRcSQcNBdoLdpKdpLdpMdpNdpOdpPdpQcRVdpSdpTdpUdpVdpWdpXdpGdpYdpZdqadqbdqcdqddqedqfdpGdnyczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlUdlVdlWdqgdlYdkbdmSdkddlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdqhdmTdkidkjdqhdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdkqdkndkodnLdkqdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdksdktdoBdmYddOddOaafaafaafaafaafaafaafaafdMRdLFdLFdMRaafdMRdMRdMRdMRdMRdMRdMRdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedqjaaeabGcNBdqkdqldqmcNBdqndqodqpcNBdqqdqrdqscNBdoLdqtdqudpMdqvdqwdqxdqydqzdqAdqBdpUdqCdqDdqEdpGdqFdqFdqGdqcdqcdqcdqfdqHdpGdnyczkdqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqJdqKdqLdqMdqNdkbdqOdqPdlWdlVdqQdkedkedkedkedkedkedkedkedkedkedkedkedkedqRdqSdqTdqUdqVdqWdqXdqYdqTdqSdqZdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadradrbdrcdrddredrfdrgdrhdrcdrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdrkdrldrmdoBdmYdrnddOaafaafaafaafaafaafaafaafdMRdMRdMRdMRaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaaaayaaeaaeaaaaaacNBdrrdrsdrrcNBdrtdrudrtcNBdrvdrwdrvcNBdoLdrxdrydpMdrzdrAdrBdqzdqzdrCdrDdrEdrFdrGdrHdrIdrJdrKdrLdrKdrKdrMdrKdrNdpGdnydMZdrPdrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnzdlVdnAdqgdrRdrSdrTdrUdrVdrWdrXdkedkedkedkedkedkedkedkedkedkedkedkedkedrYdrZdsadsbdscdsddsedsfdsgdshdsidoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadsjdskdsldsmdsndsodspdsqdsrdssdstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsudsvdswdsxdsydoBdmYdszddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaayaaadpIaaaabGcNBdpJcSRcSQcNBdpJcSRcSQcNBdpJcSRcSQcNBdoLdpKdpLdpMdNhdpOdpPdpQcRVdpSdpTdpUdpVdpWdpXdpGdpYdpZdqadqbdqcdqddqedqfdpGdnyczkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlUdlVdlWdqgdlYdkbdmSdkddlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdqhdmTdkidkjdqhdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdkqdkndkodnLdkqdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdksdktdoBdmYddOddOaafaafaafaafaafaafaafaafdMRdLFdLFdMRaafdMRdMRdMRdMRdMRdMRdMRdMRaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaaeaaeaaeaaaaayaaedqjaaeabGcNBdqkdqldqmcNBdqndqodqpcNBdqqdqrdqscNBdoLdqtdqudpMdNidqwdqxdqydqzdqAdqBdpUdqCdqDdqEdpGdqFdqFdqGdqcdqcdqcdqfdqHdpGdnyczkdqIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqJdqKdqLdqMdqNdkbdqOdqPdlWdlVdqQdkedkedkedkedkedkedkedkedkedkedkedkedkedqRdqSdqTdqUdqVdqWdqXdqYdqTdqSdqZdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadradrbdrcdrddredrfdrgdrhdrcdrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdrkdrldrmdoBdmYdrnddOaafaafaafaafaafaafaafaafdMRdMRdMRdMRaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaadrodrpdrqaaaaayaaeaaeaaaaaacNBdrrdrsdrrcNBdrtdrudrtcNBdrvdrwdrvcNBdoLdrxdrydpMdNjdrAdrBdqzdqzdrCdrDdrEdrFdrGdrHdrIdrJdrKdrLdrKdrKdrMdrKdrNdpGdnydMZdrPdrQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnzdlVdnAdqgdrRdrSdrTdrUdrVdrWdrXdkedkedkedkedkedkedkedkedkedkedkedkedkedrYdrZdsadsbdscdsddsedsfdsgdshdsidoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadsjdskdsldsmdsndsodspdsqdsrdssdstaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsudsvdswdsxdsydoBdmYdszddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaedrodsAdrqaaeaazaaaaaeaaeaaacNBdrrdsBdrrcNBdrtdsCdrtcNBdrvdsDdrvcNBdoLdsEdsFdpMdrzdsGdqzdqzdqzdsHdsIdsJdsKdsLdsMdsNdsOdsPdsQdsRdsRdsSdrKdsTdpGdnycDCdsUdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlfdlbdkadkbdsWdsXdsYdsZdtadkedkedkedkedkedkedkedkedkedkedkedkedkedtbdtcdtddtedtfdkidtgdqYdthdqSdqUdoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaadrhdrbdtidrddtjdkodtkdtldtmdtndtoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadtpdtqdtrdtsdttdoBdmYdtuddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaeaaecNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBcNBdoLdsEdtvdpMdqvdqwdtwdqzdqzdqAdtxdpUdlIdomdtydpGdtzdtAdtBdtCdtDdtEdtFdtGdpGdtHcDCdtIdsVaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpcdiYdpddpedpfdiZdiZdiZdiZdiZdiYdtJdkadkbdtKdqPdnAdlVdlXdkedkedkedkedkedkedkedkedkedkedkedkedkedqYdqSdthdqUdtLdkidkjdtMdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdtNdkndkodtOdrhdtidrbdrdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadridrjdtPdrldtQdoBdmYdtRddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaadrodsAdrqaaaaaeaaaaaaaaaaaeaaeaaeaaeaaaaaaaaeaaeaaeaaaabGdtSdtSdtSdoLdtTdoLdpMdpNdtUdtVdtWdtXdtYdpMdpMdtZduadubdpGdpGducdtCdudduedufdtFdugdpGdnycDCduhdsVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduiduiduiduiduiduiduiduiduiduiduiaaaaaaaaadjYdlbdujdukdmSdlbdlaaaaaaadkedkedkedkedkedkedkedkedkedkedkedkedkeaaaaaadnEdtMdmTduldumdmTdnEaaaaaadoAdoAdoAdoAdoAdoAdoAdoAdoAaaaaaaaaaaaaaaaaaadnJdnLdunduodnLdtNdnJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnNdupdktduqdurddOddOaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa