diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index be70e217c3e..d9c1ec53ea7 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1351,6 +1351,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station has_gravity = 0 sound_env = SPACE +/area/holodeck/source_chess + name = "\improper Holodeck - Chessboard" + + //Engineering /area/engineering/ diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index eb432d63c1b..e06c9dbc007 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1445,3 +1445,77 @@ force = 1 throwforce = 1 drop_sound = 'sound/items/drop/box.ogg' + +////////////////////////////////////////////////////// +// Chess Pieces // +////////////////////////////////////////////////////// + +/obj/item/toy/chess + name = "chess piece" + desc = "This should never display." + icon = 'icons/obj/chess.dmi' + w_class = ITEMSIZE_SMALL + force = 1 + throwforce = 1 + drop_sound = 'sound/items/drop/glass.ogg' + +/obj/item/toy/chess/pawn_white + name = "blue pawn" + desc = "A large pawn piece for playing chess. It's made of a blue-colored glass." + description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them." + icon_state = "w-pawn" +/obj/item/toy/chess/pawn_black + name = "purple pawn" + desc = "A large pawn piece for playing chess. It's made of a purple-colored glass." + description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them." + icon_state = "b-pawn" +/obj/item/toy/chess/rook_white + name = "blue rook" + desc = "A large rook piece for playing chess. It's made of a blue-colored glass." + description_info = "The Rook can move any number of vacant squares vertically or horizontally." + icon_state = "w-rook" +/obj/item/toy/chess/rook_black + name = "purple rook" + desc = "A large rook piece for playing chess. It's made of a purple-colored glass." + description_info = "The Rook can move any number of vacant squares vertically or horizontally." + icon_state = "b-rook" +/obj/item/toy/chess/knight_white + name = "blue knight" + desc = "A large knight piece for playing chess. It's made of a blue-colored glass. Sadly, you can't ride it." + description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle." + icon_state = "w-knight" +/obj/item/toy/chess/knight_black + name = "purple knight" + desc = "A large knight piece for playing chess. It's made of a purple-colored glass. 'Just a flesh wound.'" + description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle." + icon_state = "b-knight" +/obj/item/toy/chess/bishop_white + name = "blue bishop" + desc = "A large bishop piece for playing chess. It's made of a blue-colored glass." + description_info = "The Bishop can move any number of vacant squares in any diagonal direction." + icon_state = "w-bishop" +/obj/item/toy/chess/bishop_black + name = "purple bishop" + desc = "A large bishop piece for playing chess. It's made of a purple-colored glass." + description_info = "The Bishop can move any number of vacant squares in any diagonal direction." + icon_state = "b-bishop" +/obj/item/toy/chess/queen_white + name = "blue queen" + desc = "A large queen piece for playing chess. It's made of a blue-colored glass." + description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically." + icon_state = "w-queen" +/obj/item/toy/chess/queen_black + name = "purple queen" + desc = "A large queen piece for playing chess. It's made of a purple-colored glass." + description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically." + icon_state = "b-queen" +/obj/item/toy/chess/king_white + name = "blue king" + desc = "A large king piece for playing chess. It's made of a blue-colored glass." + description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose." + icon_state = "w-king" +/obj/item/toy/chess/king_black + name = "purple king" + desc = "A large king piece for playing chess. It's made of a purple-colored glass." + description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose." + icon_state = "b-king" \ No newline at end of file diff --git a/code/game/turfs/flooring/flooring_decals.dm b/code/game/turfs/flooring/flooring_decals.dm index a6f576084e1..0fe768f9447 100644 --- a/code/game/turfs/flooring/flooring_decals.dm +++ b/code/game/turfs/flooring/flooring_decals.dm @@ -715,6 +715,54 @@ var/list/floor_decals = list() /obj/effect/floor_decal/sign/p icon_state = "white_p" +/obj/effect/floor_decal/sign/small_a + icon_state = "small_a" + +/obj/effect/floor_decal/sign/small_b + icon_state = "small_b" + +/obj/effect/floor_decal/sign/small_c + icon_state = "small_c" + +/obj/effect/floor_decal/sign/small_d + icon_state = "small_d" + +/obj/effect/floor_decal/sign/small_e + icon_state = "small_e" + +/obj/effect/floor_decal/sign/small_f + icon_state = "small_f" + +/obj/effect/floor_decal/sign/small_g + icon_state = "small_g" + +/obj/effect/floor_decal/sign/small_h + icon_state = "small_h" + +/obj/effect/floor_decal/sign/small_1 + icon_state = "small_1" + +/obj/effect/floor_decal/sign/small_2 + icon_state = "small_2" + +/obj/effect/floor_decal/sign/small_3 + icon_state = "small_3" + +/obj/effect/floor_decal/sign/small_4 + icon_state = "small_4" + +/obj/effect/floor_decal/sign/small_5 + icon_state = "small_5" + +/obj/effect/floor_decal/sign/small_6 + icon_state = "small_6" + +/obj/effect/floor_decal/sign/small_7 + icon_state = "small_7" + +/obj/effect/floor_decal/sign/small_8 + icon_state = "small_8" + /obj/effect/floor_decal/sign/dock icon_state = "white_d" diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm index 1cd3ddf51d1..e30a6f049c0 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -62,6 +62,7 @@ "Theatre" = new/datum/holodeck_program(/area/holodeck/source_theatre), "Meetinghall" = new/datum/holodeck_program(/area/holodeck/source_meetinghall), "Courtroom" = new/datum/holodeck_program(/area/holodeck/source_courtroom, list('sound/music/traitor.ogg')), + "Chessboard" = new/datum/holodeck_program(/area/holodeck/source_chess), "Turn Off" = new/datum/holodeck_program(/area/holodeck/source_plating, list()) ) diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index f4abcc9e0ff..ad679ec8919 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -111,6 +111,18 @@ if(prob(10)) add_overlay("asteroid[rand(0,9)]") +/turf/simulated/floor/holofloor/bmarble + name = "marble" + icon = 'icons/turf/flooring/misc.dmi' + icon_state = "darkmarble" + initial_flooring = /decl/flooring/bmarble + +/turf/simulated/floor/holofloor/wmarble + name = "marble" + icon = 'icons/turf/flooring/misc.dmi' + icon_state = "lightmarble" + initial_flooring = /decl/flooring/wmarble + /obj/structure/holostool name = "stool" desc = "Apply butt." diff --git a/html/changelogs/billybangles-chessboard.yml b/html/changelogs/billybangles-chessboard.yml new file mode 100644 index 00000000000..f51e69fc67e --- /dev/null +++ b/html/changelogs/billybangles-chessboard.yml @@ -0,0 +1,27 @@ +################################ +# 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 +################################# + +author: Billy Bangles +delete-after: True + - rscadd: "Adds a chessboard holodeck program and a set of chess pieces" + - imageadd: "Adds a set of small floor decals numbered 1 to 8 and letters A to H" diff --git a/icons/obj/chess.dmi b/icons/obj/chess.dmi new file mode 100644 index 00000000000..bc2e6aca442 Binary files /dev/null and b/icons/obj/chess.dmi differ diff --git a/icons/turf/flooring/decals.dmi b/icons/turf/flooring/decals.dmi index 7c5d6d149d8..66e365251a7 100644 Binary files a/icons/turf/flooring/decals.dmi and b/icons/turf/flooring/decals.dmi differ diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index 7d0d531f406..8d40ebf0329 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -2280,22 +2280,61 @@ "RR" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_station/start) "RS" = (/turf/space,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/syndicate_station/start) "RT" = (/turf/space,/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/plating/airless/carry,/area/skipjack_station/start) +"RU" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"RV" = (/obj/item/toy/chess/rook_black,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"RW" = (/obj/effect/floor_decal/sign/small_8,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"RX" = (/obj/item/toy/chess/bishop_black,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"RY" = (/obj/item/toy/chess/knight_black,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"RZ" = (/obj/item/toy/chess/king_black,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Sa" = (/obj/item/toy/chess/queen_black,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sb" = (/obj/item/toy/chess/knight_black,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Sc" = (/obj/item/toy/chess/bishop_black,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sd" = (/obj/item/toy/chess/rook_black,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Se" = (/obj/item/toy/chess/pawn_black,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sf" = (/obj/effect/floor_decal/sign/small_7,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Sg" = (/obj/item/toy/chess/pawn_black,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Sh" = (/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Si" = (/obj/effect/floor_decal/sign/small_6,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Sj" = (/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sk" = (/obj/effect/floor_decal/sign/small_5,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Sl" = (/obj/effect/floor_decal/sign/small_4,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Sm" = (/obj/effect/floor_decal/sign/small_3,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Sn" = (/obj/item/toy/chess/pawn_white,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"So" = (/obj/effect/floor_decal/sign/small_2,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Sp" = (/obj/item/toy/chess/pawn_white,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sq" = (/obj/item/toy/chess/rook_white,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sr" = (/obj/effect/floor_decal/sign/small_1,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"Ss" = (/obj/item/toy/chess/bishop_white,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"St" = (/obj/item/toy/chess/knight_white,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Su" = (/obj/item/toy/chess/king_white,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sv" = (/obj/item/toy/chess/queen_white,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Sw" = (/obj/item/toy/chess/knight_white,/turf/simulated/floor/holofloor/bmarble,/area/holodeck/source_chess) +"Sx" = (/obj/item/toy/chess/bishop_white,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Sy" = (/obj/item/toy/chess/rook_white,/turf/simulated/floor/holofloor/wmarble,/area/holodeck/source_chess) +"Sz" = (/obj/effect/floor_decal/sign/small_a,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SA" = (/obj/effect/floor_decal/sign/small_c,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SB" = (/obj/effect/floor_decal/sign/small_b,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SC" = (/obj/effect/floor_decal/sign/small_e,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SD" = (/obj/effect/floor_decal/sign/small_d,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SE" = (/obj/effect/floor_decal/sign/small_g,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SF" = (/obj/effect/floor_decal/sign/small_f,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) +"SG" = (/obj/effect/floor_decal/sign/small_h,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaeafaeaeaeaeaeaeagahaiahaiahahaiahaiahagbkbkbkbkbkbkaOaLaAajagananclalalalalalalalagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauambAbxbxbxbxbxbDawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaeaeaeaeaeaeaxaeagaiazayazayazayazayahagbkbkbkbkbkbkaOaLaAakagananctaBaBaBaBaBaBaBagaoaDaoaoaoaoaoaoaDaoagapapapapapapapapapapagavauambBaFaFaFaFaFbCawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaxaeaeaeaeaeaeaeaeagatayaHaCaIaCaIaKazahagbkaVbmaWbmaXaOaLaAakagananaJalaPalaBaQaZaYagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavavaRbBaFaFaFaFaFbCawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaeaeaeafaeaeaeaeagaUbabbaSaTaTaUaNazaiagbcbrbqbvbqbsaOaLaAakagaManbdbebfbHbgclbhbiagaoaoaoaDaoaoaDaoaoaoagapapapapapapapapapapagavauambBaFaFaFaFaFbCawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeafaeaeaeafaeaeaeagaUaUaUaUbjbjaUaNayahagblbrbqbvbqbsaOaLaAakagananbnbobobobpclbtbNagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauamcacbcbcbcbcbccawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaeaeaeaeaeaeaeaeagaUaUaUaUbjbjaUbGazaiagblbrbqbvbqbsaOaLaAakagananbubybzbybwclbtbNagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauamaqarararararasawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaeaeaeaxaeaeaeafagaUbEbFaSaTaTaUaNayaiagbIbrbqbvbqbsaOaLaAakagaManbObQbzbQbRclbtbNagaoaoaoaDaoaoaDaoaoaoagapapapapapapapapapapagavauamaEaFaFaFaFaFaGawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaxaeaeaeaeaeaeaeagbVaybJbKbLbKbLbMazahagbkbUbSbWbSbXaOaLaAakagananbYbzbzbzbNclbtbNagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavavbZaEaFaFaFaFaFaGawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeaeaeaeaeaeaeaeaeagaiazayazayazayazazaiagbkbkbkbkbkbkaOaLaAakagananbObQbzbQbRclbtbNagaoaDaoaoaoaoaoaoaDaoagapapapapapapapapapapagavauamaEaFaFaFaFaFaGawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadafaeaeaeaxaeaeaeaeaxagahaiahaiahahaiahaiahagbTbkbkbkbkbkaOaLaAakaganancncrbPcrcsclcBcuagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauamcIcKcKcKcKcKcOawaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcdcdcdcdcdcdcdcdcdcdabcdcdcdcdcdcdcdcdcdcdabcdcdcdcdcdcdcdcdcdcdabcecececececececececeabcecececececececececeabcecececececececececeabcecececececececececeabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabacacacacacacacacacacabaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadRURURURURURURURURURUagaeaeaeafaeaeaeaeaeaeagahaiahaiahahaiahaiahagbkbkbkbkbkbkaOaLaAajagananclalalalalalalalagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauambAbxbxbxbxbxbDawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadRWRVRYRXSaRZScSbSdRUagaeaeaeaeaeaeaeaeaxaeagaiazayazayazayazayahagbkbkbkbkbkbkaOaLaAakagananctaBaBaBaBaBaBaBagaoaDaoaoaoaoaoaoaDaoagapapapapapapapapapapagavauambBaFaFaFaFaFbCawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSfSeSgSeSgSeSgSeSgRUagaeaxaeaeaeaeaeaeaeaeagatayaHaCaIaCaIaKazahagbkaVbmaWbmaXaOaLaAakagananaJalaPalaBaQaZaYagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavavaRbBaFaFaFaFaFbCawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSiShSjShSjShSjShSjRUagaeaeaeaeaeafaeaeaeaeagaUbabbaSaTaTaUaNazaiagbcbrbqbvbqbsaOaLaAakagaManbdbebfbHbgclbhbiagaoaoaoaDaoaoaDaoaoaoagapapapapapapapapapapagavauambBaFaFaFaFaFbCawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSkSjShSjShSjShSjShRUagaeaeafaeaeaeafaeaeaeagaUaUaUaUbjbjaUaNayahagblbrbqbvbqbsaOaLaAakagananbnbobobobpclbtbNagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauamcacbcbcbcbcbccawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSlShSjShSjShSjShSjRUagaeaeaeaeaeaeaeaeaeaeagaUaUaUaUbjbjaUbGazaiagblbrbqbvbqbsaOaLaAakagananbubybzbybwclbtbNagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauamaqarararararasawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSmSjShSjShSjShSjShRUagaeaeaeaeaeaxaeaeaeafagaUbEbFaSaTaTaUaNayaiagbIbrbqbvbqbsaOaLaAakagaManbObQbzbQbRclbtbNagaoaoaoaDaoaoaDaoaoaoagapapapapapapapapapapagavauamaEaFaFaFaFaFaGawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSoSnSpSnSpSnSpSnSpRUagaeaeaxaeaeaeaeaeaeaeagbVaybJbKbLbKbLbMazahagbkbUbSbWbSbXaOaLaAakagananbYbzbzbzbNclbtbNagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavavbZaEaFaFaFaFaFaGawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSrSqStSsSvSuSxSwSyRUagaeaeaeaeaeaeaeaeaeaeagaiazayazayazayazazaiagbkbkbkbkbkbkaOaLaAakagananbObQbzbQbRclbtbNagaoaDaoaoaoaoaoaoaDaoagapapapapapapapapapapagavauamaEaFaFaFaFaFaGawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadRUSzSBSASDSCSFSESGRUagafaeaeaeaxaeaeaeaeaxagahaiahaiahahaiahaiahagbTbkbkbkbkbkaOaLaAakaganancncrbPcrcsclcBcuagaoaoaoaoaoaoaoaoaoaoagapapapapapapapapapapagavauamcIcKcKcKcKcKcOawaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeeeeeeeeeeeeeeeeeeeeabcdcdcdcdcdcdcdcdcdcdabcdcdcdcdcdcdcdcdcdcdabcdcdcdcdcdcdcdcdcdcdabcecececececececececeabcecececececececececeabcecececececececececeabcecececececececececeabaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcfcfcfcfcfcfcfcfcfcfagcgcgcgcgcgcgcgcgcgcgagchcicicicicicicicichagcpcocCdxdydxcDdzdydzagcqcqcqcqcqcqcqcqcqcqagcwcvcRdfdgdgdgdgdgeaagcxcxcycycycycycycycyawaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcfcfcfczcfcfcfcfczcfagcgcAcgcgcgcgcAcgcgcgagdkdkdkdkdkdkdociciciagcpcocCdFcFdFcFdGcFdGagcqcqcHcqcqcqcqcqcqcqagcwcvcRdpcJcJcJcJcJduagcycycycycLcLcLcycycyawaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcfcfcfcfcfcfcfcfcfcfagcgcgcgcgcgcgcgcgcMcgagcWdwdAdBdAdhcVciciciagcpcpdCdFcFdydydycFdGagcqcqcqcqcqcqcPcQcqcqagcwcwdHdpcJcJcJcJcJduagcycycycScTcTcTcycycyawaaaa