Generalized fruit products properly.
@@ -127,7 +127,7 @@
|
|||||||
name = "\improper S'rendarr's Hand leaf"
|
name = "\improper S'rendarr's Hand leaf"
|
||||||
singular_name = "S'rendarr's Hand leaf"
|
singular_name = "S'rendarr's Hand leaf"
|
||||||
desc = "A poultice made of soft leaves that is rubbed on bruises."
|
desc = "A poultice made of soft leaves that is rubbed on bruises."
|
||||||
icon = 'icons/obj/harvest.dmi'
|
//icon = 'icons/obj/harvest.dmi'
|
||||||
icon_state = "shandp"
|
icon_state = "shandp"
|
||||||
heal_brute = 7
|
heal_brute = 7
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@
|
|||||||
name = "\improper Messa's Tear petals"
|
name = "\improper Messa's Tear petals"
|
||||||
singular_name = "Messa's Tear petals"
|
singular_name = "Messa's Tear petals"
|
||||||
desc = "A poultice made of cold, blue petals that is rubbed on burns."
|
desc = "A poultice made of cold, blue petals that is rubbed on burns."
|
||||||
icon = 'icons/obj/harvest.dmi'
|
//icon = 'icons/obj/harvest.dmi'
|
||||||
icon_state = "mtearp"
|
icon_state = "mtearp"
|
||||||
heal_burn = 7
|
heal_burn = 7
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
if(affecting.open == 0)
|
if(affecting.open == 0)
|
||||||
var/bandaged = affecting.bandage()
|
var/bandaged = affecting.bandage()
|
||||||
var/disinfected = affecting.disinfect()
|
var/disinfected = affecting.disinfect()
|
||||||
|
|
||||||
if(!(bandaged || disinfected))
|
if(!(bandaged || disinfected))
|
||||||
user << "\red The wounds on [M]'s [affecting.display_name] have already been treated."
|
user << "\red The wounds on [M]'s [affecting.display_name] have already been treated."
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -424,7 +424,7 @@
|
|||||||
/obj/item/toy/waterflower
|
/obj/item/toy/waterflower
|
||||||
name = "water flower"
|
name = "water flower"
|
||||||
desc = "A seemingly innocent sunflower...with a twist."
|
desc = "A seemingly innocent sunflower...with a twist."
|
||||||
icon = 'icons/obj/harvest.dmi'
|
//icon = 'icons/obj/harvest.dmi'
|
||||||
icon_state = "sunflower"
|
icon_state = "sunflower"
|
||||||
item_state = "sunflower"
|
item_state = "sunflower"
|
||||||
var/empty = 0
|
var/empty = 0
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
/obj/item/weapon/reagent_containers/food/snacks/grown
|
/obj/item/weapon/reagent_containers/food/snacks/grown
|
||||||
|
|
||||||
name = "fruit"
|
name = "fruit"
|
||||||
//icon = 'icons/obj/harvest.dmi' //Todo convert to greyscale
|
|
||||||
icon = 'icons/obj/hydroponics_products.dmi'
|
icon = 'icons/obj/hydroponics_products.dmi'
|
||||||
desc = "The product of some kind of plant." //Todo store descs for retrieval.
|
icon_state = "blank"
|
||||||
|
desc = "The product of some kind of plant."
|
||||||
|
|
||||||
var/plantname
|
var/plantname
|
||||||
var/datum/seed/seed
|
var/datum/seed/seed
|
||||||
@@ -37,8 +37,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
name = "[seed.seed_name]"
|
name = "[seed.seed_name]"
|
||||||
icon_state = "[seed.get_trait(TRAIT_PRODUCT_ICON)]"
|
update_icon()
|
||||||
color = "[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"
|
|
||||||
|
|
||||||
if(!seed.chems)
|
if(!seed.chems)
|
||||||
return
|
return
|
||||||
@@ -55,6 +54,26 @@
|
|||||||
if(reagents.total_volume > 0)
|
if(reagents.total_volume > 0)
|
||||||
bitesize = 1+round(reagents.total_volume / 2, 1)
|
bitesize = 1+round(reagents.total_volume / 2, 1)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/grown/update_icon()
|
||||||
|
if(!seed || !plant_controller || !plant_controller.plant_icon_cache)
|
||||||
|
return
|
||||||
|
overlays.Cut()
|
||||||
|
var/image/plant_icon
|
||||||
|
var/icon_key = "fruit-[seed.get_trait(TRAIT_PRODUCT_ICON)]-[seed.get_trait(TRAIT_PRODUCT_COLOUR)]-[seed.get_trait(TRAIT_PLANT_COLOUR)]"
|
||||||
|
if(plant_controller.plant_icon_cache[icon_key])
|
||||||
|
plant_icon = plant_controller.plant_icon_cache[icon_key]
|
||||||
|
else
|
||||||
|
plant_icon = image('icons/obj/hydroponics_products.dmi',"blank")
|
||||||
|
var/image/fruit_base = image('icons/obj/hydroponics_products.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]-product")
|
||||||
|
fruit_base.color = "[seed.get_trait(TRAIT_PRODUCT_COLOUR)]"
|
||||||
|
plant_icon.overlays |= fruit_base
|
||||||
|
if("[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf" in icon_states('icons/obj/hydroponics_products.dmi'))
|
||||||
|
var/image/fruit_leaves = image('icons/obj/hydroponics_products.dmi',"[seed.get_trait(TRAIT_PRODUCT_ICON)]-leaf")
|
||||||
|
fruit_leaves.color = "[seed.get_trait(TRAIT_PLANT_COLOUR)]"
|
||||||
|
plant_icon.overlays |= fruit_leaves
|
||||||
|
plant_controller.plant_icon_cache[icon_key] = plant_icon
|
||||||
|
overlays |= plant_icon
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M)
|
/obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M)
|
||||||
if(seed && seed.get_trait(TRAIT_JUICY) == 2)
|
if(seed && seed.get_trait(TRAIT_JUICY) == 2)
|
||||||
if(istype(M))
|
if(istype(M))
|
||||||
@@ -81,20 +100,36 @@
|
|||||||
..()
|
..()
|
||||||
if(seed) seed.thrown_at(src,hit_atom)
|
if(seed) seed.thrown_at(src,hit_atom)
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||||
..()
|
|
||||||
if(seed && seed.get_trait(TRAIT_PRODUCES_POWER) && istype(W, /obj/item/stack/cable_coil))
|
if(seed)
|
||||||
var/obj/item/stack/cable_coil/C = W
|
if(seed.get_trait(TRAIT_PRODUCES_POWER) && istype(W, /obj/item/stack/cable_coil))
|
||||||
if(C.use(5))
|
var/obj/item/stack/cable_coil/C = W
|
||||||
//TODO: generalize this.
|
if(C.use(5))
|
||||||
user << "<span class='notice'>You add some cable to the [src.name] and slide it inside the battery casing.</span>"
|
//TODO: generalize this.
|
||||||
var/obj/item/weapon/cell/potato/pocell = new /obj/item/weapon/cell/potato(get_turf(user))
|
user << "<span class='notice'>You add some cable to the [src.name] and slide it inside the battery casing.</span>"
|
||||||
if(src.loc == user && !(user.l_hand && user.r_hand) && istype(user,/mob/living/carbon/human))
|
var/obj/item/weapon/cell/potato/pocell = new /obj/item/weapon/cell/potato(get_turf(user))
|
||||||
user.put_in_hands(pocell)
|
if(src.loc == user && !(user.l_hand && user.r_hand) && istype(user,/mob/living/carbon/human))
|
||||||
pocell.maxcharge = src.potency * 10
|
user.put_in_hands(pocell)
|
||||||
pocell.charge = pocell.maxcharge
|
pocell.maxcharge = src.potency * 10
|
||||||
|
pocell.charge = pocell.maxcharge
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
else if(seed.get_trait(TRAIT_PRODUCT_ICON) == "mushroom7" && (istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy)))
|
||||||
|
user.show_message("<span class='notice'>You make planks out of \the [src]!</span>", 1)
|
||||||
|
for(var/i=0,i<2,i++)
|
||||||
|
var/obj/item/stack/sheet/wood/NG = new (user.loc)
|
||||||
|
NG.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
|
||||||
|
for (var/obj/item/stack/sheet/wood/G in user.loc)
|
||||||
|
if(G==NG)
|
||||||
|
continue
|
||||||
|
if(G.amount>=G.max_amount)
|
||||||
|
continue
|
||||||
|
G.attackby(NG, user)
|
||||||
|
user << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks."
|
||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/attack(var/mob/living/carbon/M, var/mob/user, var/def_zone)
|
/obj/item/weapon/reagent_containers/food/snacks/grown/attack(var/mob/living/carbon/M, var/mob/user, var/def_zone)
|
||||||
if(user == M)
|
if(user == M)
|
||||||
|
|||||||
@@ -32,39 +32,10 @@
|
|||||||
rtotal += round(potency/reagent_data[2])
|
rtotal += round(potency/reagent_data[2])
|
||||||
reagents.add_reagent(rid,max(1,rtotal))
|
reagents.add_reagent(rid,max(1,rtotal))
|
||||||
|
|
||||||
/obj/item/weapon/grown/log
|
|
||||||
name = "towercap"
|
|
||||||
name = "tower-cap log"
|
|
||||||
desc = "It's better than bad, it's good!"
|
|
||||||
icon = 'icons/obj/harvest.dmi'
|
|
||||||
icon_state = "logs"
|
|
||||||
force = 5
|
|
||||||
throwforce = 5
|
|
||||||
w_class = 3.0
|
|
||||||
throw_speed = 3
|
|
||||||
throw_range = 3
|
|
||||||
origin_tech = "materials=1"
|
|
||||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
|
||||||
|
|
||||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
||||||
if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy))
|
|
||||||
user.show_message("<span class='notice'>You make planks out of \the [src]!</span>", 1)
|
|
||||||
for(var/i=0,i<2,i++)
|
|
||||||
var/obj/item/stack/sheet/wood/NG = new (user.loc)
|
|
||||||
for (var/obj/item/stack/sheet/wood/G in user.loc)
|
|
||||||
if(G==NG)
|
|
||||||
continue
|
|
||||||
if(G.amount>=G.max_amount)
|
|
||||||
continue
|
|
||||||
G.attackby(NG, user)
|
|
||||||
usr << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks."
|
|
||||||
del(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/weapon/corncob
|
/obj/item/weapon/corncob
|
||||||
name = "corn cob"
|
name = "corn cob"
|
||||||
desc = "A reminder of meals gone by."
|
desc = "A reminder of meals gone by."
|
||||||
icon = 'icons/obj/harvest.dmi'
|
icon = 'icons/obj/trash.dmi'
|
||||||
icon_state = "corncob"
|
icon_state = "corncob"
|
||||||
item_state = "corncob"
|
item_state = "corncob"
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
//Attempts to offload processing for the spreading plants from the MC.
|
// Attempts to offload processing for the spreading plants from the MC.
|
||||||
// Processes vines/spreading plants.
|
// Processes vines/spreading plants.
|
||||||
|
|
||||||
#define PLANTS_PER_TICK 5
|
#define PLANTS_PER_TICK 5
|
||||||
#define PLANT_TICK_TIME 5
|
#define PLANT_TICK_TIME 10
|
||||||
|
|
||||||
// Debug for testing seed genes.
|
// Debug for testing seed genes.
|
||||||
/client/proc/show_plant_genes()
|
/client/proc/show_plant_genes()
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
if(!holder) return
|
if(!holder) return
|
||||||
|
|
||||||
if(!plant_controller.gene_tag_masks)
|
if(!plant_controller || !plant_controller.gene_tag_masks)
|
||||||
usr << "Gene masks not set."
|
usr << "Gene masks not set."
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -22,13 +22,13 @@
|
|||||||
var/global/datum/controller/plants/plant_controller // Set in New().
|
var/global/datum/controller/plants/plant_controller // Set in New().
|
||||||
|
|
||||||
/datum/controller/plants
|
/datum/controller/plants
|
||||||
var/list/plants = list() // All currently processing plants.
|
var/list/next_plants = list() // All queued plants.
|
||||||
var/list/seeds = list() // All seed data stored here.
|
var/list/seeds = list() // All seed data stored here.
|
||||||
var/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness.
|
var/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness.
|
||||||
var/list/plant_icon_cache = list() // Stores images of growth, fruits and seeds.
|
var/list/plant_icon_cache = list() // Stores images of growth, fruits and seeds.
|
||||||
var/list/plant_sprites = list() // List of all harvested product sprites.
|
var/list/plant_sprites = list() // List of all harvested product sprites.
|
||||||
var/list/plant_product_sprites = list() // List of all growth sprites plus number of growth stages.
|
var/list/plant_product_sprites = list() // List of all growth sprites plus number of growth stages.
|
||||||
var/processing = 0
|
var/processing = 0 // Off/on.
|
||||||
|
|
||||||
/datum/controller/plants/New()
|
/datum/controller/plants/New()
|
||||||
if(plant_controller && plant_controller != src)
|
if(plant_controller && plant_controller != src)
|
||||||
@@ -114,10 +114,13 @@ var/global/datum/controller/plants/plant_controller // Set in New().
|
|||||||
processing = 1
|
processing = 1
|
||||||
spawn(0)
|
spawn(0)
|
||||||
set background = 1
|
set background = 1
|
||||||
|
var/processed = 0
|
||||||
while(1)
|
while(1)
|
||||||
if(!processing)
|
if(!processing)
|
||||||
sleep(PLANT_TICK_TIME)
|
sleep(PLANT_TICK_TIME)
|
||||||
else
|
else
|
||||||
|
var/list/plants = next_plants
|
||||||
|
next_plants = list()
|
||||||
for(var/x=0;x<PLANTS_PER_TICK;x++)
|
for(var/x=0;x<PLANTS_PER_TICK;x++)
|
||||||
if(!plants.len)
|
if(!plants.len)
|
||||||
break
|
break
|
||||||
@@ -125,6 +128,10 @@ var/global/datum/controller/plants/plant_controller // Set in New().
|
|||||||
var/obj/effect/plant/plant = pick(plants)
|
var/obj/effect/plant/plant = pick(plants)
|
||||||
plants -= plant
|
plants -= plant
|
||||||
plant.process()
|
plant.process()
|
||||||
|
processed++
|
||||||
|
if(plants.len)
|
||||||
|
next_plants |= plants
|
||||||
|
sleep(PLANT_TICK_TIME - processed)
|
||||||
|
|
||||||
/datum/controller/plants/proc/add_plant(var/obj/effect/plant/plant)
|
/datum/controller/plants/proc/add_plant(var/obj/effect/plant/plant)
|
||||||
plants |= plant
|
next_plants |= plant
|
||||||
|
|||||||
@@ -81,7 +81,9 @@
|
|||||||
dat += "<td>Nutri</td><td>Water</td>"
|
dat += "<td>Nutri</td><td>Water</td>"
|
||||||
dat += "<td>Notes</td><td>Amount</td><td></td></tr>"
|
dat += "<td>Notes</td><td>Amount</td><td></td></tr>"
|
||||||
for (var/datum/seed_pile/S in piles)
|
for (var/datum/seed_pile/S in piles)
|
||||||
var/datum/seed/seed = S.seed_type
|
var/datum/seed/seed = plant_controller.seeds[S.seed_type]
|
||||||
|
if(!seed)
|
||||||
|
continue
|
||||||
dat += "<tr>"
|
dat += "<tr>"
|
||||||
dat += "<td>[seed.seed_name]</td>"
|
dat += "<td>[seed.seed_name]</td>"
|
||||||
dat += "<td>#[seed.uid]</td>"
|
dat += "<td>#[seed.uid]</td>"
|
||||||
|
|||||||
@@ -65,6 +65,14 @@
|
|||||||
|
|
||||||
/obj/effect/plant/New(var/newloc, var/datum/seed/newseed)
|
/obj/effect/plant/New(var/newloc, var/datum/seed/newseed)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
if(!plant_controller)
|
||||||
|
sleep(250) // ugly hack, should mean roundstart plants are fine.
|
||||||
|
if(!plant_controller)
|
||||||
|
world << "<span class='danger'>Plant controller does not exist and [src] requires it. Aborting.</span>"
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
if(!istype(newseed))
|
if(!istype(newseed))
|
||||||
newseed = plant_controller.seeds[DEFAULT_SEED]
|
newseed = plant_controller.seeds[DEFAULT_SEED]
|
||||||
seed = newseed
|
seed = newseed
|
||||||
|
|||||||
@@ -170,7 +170,7 @@
|
|||||||
/obj/item/weapon/reagent_containers/spray/waterflower
|
/obj/item/weapon/reagent_containers/spray/waterflower
|
||||||
name = "water flower"
|
name = "water flower"
|
||||||
desc = "A seemingly innocent sunflower...with a twist."
|
desc = "A seemingly innocent sunflower...with a twist."
|
||||||
icon = 'icons/obj/harvest.dmi'
|
//icon = 'icons/obj/harvest.dmi'
|
||||||
icon_state = "sunflower"
|
icon_state = "sunflower"
|
||||||
item_state = "sunflower"
|
item_state = "sunflower"
|
||||||
amount_per_transfer_from_this = 1
|
amount_per_transfer_from_this = 1
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 4.0 KiB |
@@ -812,9 +812,8 @@
|
|||||||
"pF" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/unsimulated/mask,/area/mine/unexplored)
|
"pF" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/unsimulated/mask,/area/mine/unexplored)
|
||||||
"pG" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso1)
|
"pG" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso1)
|
||||||
"pH" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/mask,/area/mine/unexplored)
|
"pH" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/mask,/area/mine/unexplored)
|
||||||
"pI" = (/obj/effect/plant,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
|
"pI" = (/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
|
||||||
"pJ" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso2)
|
"pJ" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso2)
|
||||||
"pK" = (/obj/effect/plant,/obj/machinery/light/small,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
|
|
||||||
"pL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/buildable{capacity = 1e+007; charge = 1e+007; cur_coils = 2; input_attempt = 1; input_level = 250000; output_level = 250000; RCon_tag = "Outpost - Mining"},/turf/simulated/floor/plating,/area/mine/living_quarters)
|
"pL" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes/buildable{capacity = 1e+007; charge = 1e+007; cur_coils = 2; input_attempt = 1; input_level = 250000; output_level = 250000; RCon_tag = "Outpost - Mining"},/turf/simulated/floor/plating,/area/mine/living_quarters)
|
||||||
"pM" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso3)
|
"pM" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/iso3)
|
||||||
"pN" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2)
|
"pN" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2)
|
||||||
@@ -1445,10 +1444,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababewewewewewewoiewiNnCeWkzolhikzhiiNhhewooohoPoQewabababababababababababababababababababababababababababababbkmQgygygygygygygygygygygygyonnFnGaaaaaaaaaaaaaaaeaemdoRoSoTmWoUosoVoWnaoXijoYoxoylylylylyoCoHpaoZoEpbpdpcoGpepgpfoGpipjoKabababauplpmababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababewewewewewewoiewiNnCeWkzolhikzhiiNhhewooohoPoQewabababababababababababababababababababababababababababababbkmQgygygygygygygygygygygygyonnFnGaaaaaaaaaaaaaaaeaemdoRoSoTmWoUosoVoWnaoXijoYoxoylylylylyoCoHpaoZoEpbpdpcoGpepgpfoGpipjoKabababauplpmababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababewoiewnCfAlTkzlSeWkCewhifAewlRpppppqewadababababababababababababababababababababababababababababbkbkgygygyprgygygygygygygygypsptaeaaaaaaaaaaaaaeaeaemdmdpupvmdmdpwpxpwmdpypzpApBpCpDgygygyoCphphpGoEpkpkpJoGpEpEpMoGoKoKpNpOaiaipPogabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababewoiewnCfAlTkzlSeWkCewhifAewlRpppppqewadababababababababababababababababababababababababababababbkbkgygygyprgygygygygygygygypsptaeaaaaaaaaaaaaaeaeaemdmdpupvmdmdpwpxpwmdpypzpApBpCpDgygygyoCphphpGoEpkpkpJoGpEpEpMoGoKoKpNpOaiaipPogabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababewoiewkzeWdolWhifAiNewoiewewkBhipppqpRadababababababababababababababababababababababababababababbkpSpTgypUpSpQgygygygygygygygypWpXaaaaaaaaaaaepYpZqalUlVqdqeqfmdqgqhqimdqjpzgygygygygygygyoCqkqlqmoCqnqoqpoEqqqrqsoGabauqtogquabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababewoiewkzeWdolWhifAiNewoiewewkBhipppqpRadababababababababababababababababababababababababababababbkpSpTgypUpSpQgygygygygygygygypWpXaaaaaaaaaaaepYpZqalUlVqdqeqfmdqgqhqimdqjpzgygygygygygygyoCqkqlqmoCqnqoqpoEqqqrqsoGabauqtogquabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababewoiewewewewewewewewewoiewvydVhidVpqqvadababababababababababababababababababababababababababababbkpSgygygypSpQgygygygygygygyqwqxqyqzqzqzqzqzqzqAqBqCqDqDqEqFqFmdqGqHqImdqJgygygygygypzpzpzoCoCoCoCoCoEoEoEoEoGoGoGoGauqtogpIababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababewoiewewewewewewewewewoiewvydVhidVpqqvadababababababababababababababababababababababababababababbkpSgygygypSpQgygygygygygygyqwqxqyqzqzqzqzqzqzqAqBqCqDqDqEqFqFmdqGqHqImdqJgygygygygypzpzpzoCoCoCoCoCoEoEoEoEoGoGoGoGauqtogadababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLaaaaaaaaaaqLababababababababababababababewoioioioioioioioioioioiewkBhijEhijJewadababababababababababababababababababababababababababababbkgygygygyqMqNgygygygygygygygyqOqPqPqPqPqPqPqPqPqOgygygygygygymdqQqRpwmdqSgygygygygyqTADqVaiaiaiaiqWaiaiaiaiaiqXAAACABogadabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLaaaaaaaaaaqLababababababababababababababewoioioioioioioioioioioiewkBhijEhijJewadababababababababababababababababababababababababababababbkgygygygyqMqNgygygygygygygygyqOqPqPqPqPqPqPqPqPqOgygygygygygymdqQqRpwmdqSgygygygygyqTADqVaiaiaiaiqWaiaiaiaiaiqXAAACABogadabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababewewewewewewewewewewewewewewoQrbrcewewadababababababababababababababababababababababababababababbkgygygygygygygygygygygygygyqwqCrdrerererererereqwqCgygygygygygypBrfpCrgrhrigygygygyonrjrkababababababababababrlrmrnroadabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababewewewewewewewewewewewewewewoQrbrcewewadababababababababababababababababababababababababababababbkgygygygygygygygygygygygygyqwqCrdrerererererereqwqCgygygygygygypBrfpCrgrhrigygygygyonrjrkababababababababababrlrmrnroadabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababadadadewpppphiewadadababababababababababababababababababababababababababababbkpSpTgygygygygygygygygygyaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkgygygygygygypBrppCgygygygyrqrrpzababababababababababpIadpKadpIabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababadadadewpppphiewadadababababababababababababababababababababababababababababbkpSpTgygygygygygygygygygyaaaaaaaaaaaaaaaabkbkbkbkbkbkbkbkgygygygygygypBrppCgygygygyrqrrpzababababababababababadadpIadadabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababadadadewrtrurtewadabababababababababababababababababababababababababababababbkpSgygygygygygygygygygygyaaaaaaaaaaaaaaaabkbkbkababababbkbkbkbkbkbkbkgyrvgygybkbkbkpzpzpzababababababababababababkDababpFababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababadadadewrtrurtewadabababababababababababababababababababababababababababababbkpSgygygygygygygygygygygyaaaaaaaaaaaaaaaabkbkbkababababbkbkbkbkbkbkbkgyrvgygybkbkbkpzpzpzababababababababababababkDababpFababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababadadewrwrboQewadabababababababababababababababababababababababababababababbkbkpVryrxgygygygygybkbkbkaaaaaaaaaaaaaaaaaaababababababababbkbkbkbkbkgyrvgygybkbkbkbkababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLqLabababababababababababababababababababababababababababababadadewrwrboQewadabababababababababababababababababababababababababababababbkbkpVryrxgygygygygybkbkbkaaaaaaaaaaaaaaaaaaababababababababbkbkbkbkbkgyrvgygybkbkbkbkababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababadadadrBrCrDadadababababababababababababababababababababababababababababababbkbkbkmRbkgygymQmQbkababaaaaaaaaaaaaaaaaaaababababababababababbkbkbkgyrvgygybkbkabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqLqLqLqLqLqLqLqLqLqLqLqLababqLqLqLqLqLqLqLqLqLqLqLqLqLqLababababababababababababababababababababababababababababababadadadrBrCrDadadababababababababababababababababababababababababababababababbkbkbkmRbkgygymQmQbkababaaaaaaaaaaaaaaaaaaababababababababababbkbkbkgyrvgygybkbkabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
|||||||