From 0cbb1ef05a0cdeb85ac711498047790eac7ffa5d Mon Sep 17 00:00:00 2001 From: Jared Miller Date: Thu, 12 Feb 2026 19:31:07 -0500 Subject: [PATCH] Add initial source download --- .itch.toml | 4 + README.md | 44 + art.py | 1250 + art/blob_shadow.psci | 122 + art/default_player_stand.psci | 33 + art/game_object_default.psci | 694 + art/hello1.psci | 8265 ++++++ art/loc_marker.psci | 81 + art/new.psci | 9631 +++++++ art/owell.ed | Bin 0 -> 252 bytes art/trigger_default.psci | 226 + art/world_properties_object.psci | 117 + art_export.py | 57 + art_import.py | 88 + artscripts/c64_ed_to_orig.arsc | 28 + artscripts/c64_fade.arsc | 28 + artscripts/conway.arsc | 39 + artscripts/dissolv.arsc | 23 + artscripts/evap.arsc | 14 + artscripts/hello1.arsc | 202 + artscripts/mutate.arsc | 13 + audio.py | 145 + binds.cfg.default | 177 + build_mac.sh | 7 + build_windows.bat | 37 + camera.py | 303 + charset.py | 191 + charsets/agat.char | 9 + charsets/agat.png | Bin 0 -> 953 bytes charsets/amiga_topaz.char | 10 + charsets/amiga_topaz.png | Bin 0 -> 2276 bytes charsets/apple2.char | 12 + charsets/apple2.png | Bin 0 -> 1537 bytes charsets/atari.char | 11 + charsets/atari.png | Bin 0 -> 682 bytes charsets/atari_st.char | 11 + charsets/atari_st.png | Bin 0 -> 4068 bytes charsets/bbc_master.char | 18 + charsets/bbc_master.png | Bin 0 -> 2365 bytes charsets/c64_edscii.char | 16 + charsets/c64_edscii.png | Bin 0 -> 773 bytes charsets/c64_petscii.char | 16 + charsets/c64_petscii.png | Bin 0 -> 1678 bytes charsets/c64_real_shifted.char | 12 + charsets/c64_real_shifted.png | Bin 0 -> 1298 bytes charsets/c64_real_unshifted.char | 12 + charsets/c64_real_unshifted.png | Bin 0 -> 1340 bytes charsets/commodore_pet.char | 13 + charsets/commodore_pet.png | Bin 0 -> 827 bytes charsets/cpc.char | 17 + charsets/cpc.png | Bin 0 -> 2691 bytes charsets/dos.char | 11 + charsets/dos.png | Bin 0 -> 1666 bytes charsets/dos40.char | 19 + charsets/dos40.png | Bin 0 -> 1336 bytes charsets/dos_basic.char | 6 + charsets/dos_basic.png | Bin 0 -> 9117 bytes charsets/intellivision.char | 27 + charsets/intellivision.png | Bin 0 -> 1226 bytes charsets/jpetscii.char | 20 + charsets/jpetscii.png | Bin 0 -> 2773 bytes charsets/msx.char | 12 + charsets/msx.png | Bin 0 -> 2532 bytes charsets/osamu-micro.char | 4 + charsets/osamu-micro.png | Bin 0 -> 41133 bytes charsets/pacman.char | 9 + charsets/pacman.png | Bin 0 -> 1021 bytes charsets/sharp.char | 26 + charsets/sharp.png | Bin 0 -> 3557 bytes charsets/speccy.char | 10 + charsets/speccy.png | Bin 0 -> 12231 bytes charsets/teletext_uk.char | 13 + charsets/teletext_uk.png | Bin 0 -> 2434 bytes charsets/ui.char | 9 + charsets/ui.png | Bin 0 -> 14899 bytes charsets/ultima4.char | 20 + charsets/ultima4.png | Bin 0 -> 15041 bytes code_of_conduct.txt | 28 + collision.py | 577 + cursor.py | 376 + docs/bugs.txt | 17 + docs/bugs/jesper_sarnesjo.txt | 50 + docs/bugs/playscii_gl_errors.txt | 61 + docs/bugs/terryc.txt | 37 + docs/bugs/v21.txt | 5 + docs/bugs/zensaiyuki.txt | 51 + docs/design/early_notes.txt | 87 + docs/design/mock1.png | Bin 0 -> 51599 bytes docs/design/mock2.png | Bin 0 -> 50487 bytes docs/design/old/20150101.txt | 29 + docs/design/old/art_class.txt | 62 + docs/design/psmock3_full.png | Bin 0 -> 152215 bytes docs/design/psmock3_statusbar.png | Bin 0 -> 3214 bytes docs/docs_todo.txt | 11 + docs/feedback.txt | 21 + docs/html/art_converters.jpg | Bin 0 -> 56287 bytes docs/html/art_crt_off.png | Bin 0 -> 1838 bytes docs/html/art_crt_on.jpg | Bin 0 -> 15397 bytes docs/html/art_layermenu.jpg | Bin 0 -> 45781 bytes docs/html/art_mask1.png | Bin 0 -> 11819 bytes docs/html/art_mask2.png | Bin 0 -> 12087 bytes docs/html/art_mask3.png | Bin 0 -> 12077 bytes docs/html/art_mask4.png | Bin 0 -> 11164 bytes docs/html/art_mask5.png | Bin 0 -> 11491 bytes docs/html/art_menubar.jpg | Bin 0 -> 11634 bytes docs/html/art_picker.jpg | Bin 0 -> 45658 bytes docs/html/art_statusbar1.jpg | Bin 0 -> 10618 bytes docs/html/art_statusbar2.jpg | Bin 0 -> 14751 bytes docs/html/darkgrey.css | 130 + docs/html/exidy_sorcerer_converted.png | Bin 0 -> 5033 bytes docs/html/exidy_sorcerer_orig.jpg | Bin 0 -> 20367 bytes docs/html/game_collision.jpg | Bin 0 -> 66803 bytes docs/html/game_cronotest.png | Bin 0 -> 21799 bytes docs/html/game_flood.png | Bin 0 -> 3670 bytes docs/html/game_maze.png | Bin 0 -> 24119 bytes docs/html/game_menubar.jpg | Bin 0 -> 13155 bytes docs/html/game_platso.png | Bin 0 -> 10284 bytes docs/html/game_propseditor.jpg | Bin 0 -> 62522 bytes docs/html/game_shmup.png | Bin 0 -> 8086 bytes docs/html/howto_art.html | 477 + docs/html/howto_game.html | 507 + docs/html/howto_main.html | 197 + docs/html/logo_bg_tile.png | Bin 0 -> 20969 bytes docs/html/pslogo_w_text2.png | Bin 0 -> 28566 bytes docs/html/speccy.png | Bin 0 -> 415 bytes docs/html/tool_erase.png | Bin 0 -> 210 bytes docs/html/tool_grab.png | Bin 0 -> 207 bytes docs/html/tool_paint.png | Bin 0 -> 201 bytes docs/html/tool_paste.png | Bin 0 -> 227 bytes docs/html/tool_rotate.png | Bin 0 -> 221 bytes docs/html/tool_select.png | Bin 0 -> 168 bytes docs/html/tool_select_add.png | Bin 0 -> 183 bytes docs/html/tool_select_sub.png | Bin 0 -> 178 bytes docs/html/tool_text.png | Bin 0 -> 215 bytes docs/links.txt | 106 + docs/thanks.txt | 64 + docs/todo.txt | 9 + docs/ui.txt | 93 + docs/uvs.txt | 81 + edit_command.py | 252 + formats/in_ans.py | 182 + formats/in_ata.py | 67 + formats/in_bitmap.py | 195 + formats/in_bitmap_2color.py | 86 + formats/in_bitmap_sequence.py | 116 + formats/in_edscii.py | 92 + formats/in_endoom.py | 42 + formats/in_txt.py | 32 + formats/out_ans.py | 62 + formats/out_ata.py | 35 + formats/out_endoom.py | 38 + formats/out_gif.py | 15 + formats/out_png.py | 81 + formats/out_png_set.py | 170 + formats/out_txt.py | 29 + framebuffer.py | 122 + game_hud.py | 45 + game_object.py | 1209 + game_room.py | 195 + game_util_objects.py | 431 + game_world.py | 1173 + games/crawler/art/maze1.psci | 2431 ++ games/crawler/art/maze2.psci | 5431 ++++ games/crawler/charsets/jpetscii_crawler.char | 24 + games/crawler/charsets/jpetscii_crawler.png | Bin 0 -> 27784 bytes games/crawler/scripts/crawler.py | 54 + games/crawler/scripts/line_tester.py | 57 + games/crawler/scripts/player.py | 58 + games/crawler/scripts/topview.py | 123 + games/crawler/start.gs | 68 + games/cronotest/art/bed.psci | 1832 ++ games/cronotest/art/chest.psci | 320 + games/cronotest/art/chrono_bg.psci | 24224 +++++++++++++++++ games/cronotest/art/crono_stand_back.psci | 488 + games/cronotest/art/crono_stand_front.psci | 488 + games/cronotest/art/crono_stand_right.psci | 488 + games/cronotest/art/crono_walk_back.psci | 2853 ++ games/cronotest/art/crono_walk_front.psci | 2853 ++ games/cronotest/art/crono_walk_right.psci | 2853 ++ games/cronotest/art/frontwall.psci | 12122 +++++++++ games/cronotest/art/railing.psci | 1124 + games/cronotest/art/urn.psci | 392 + games/cronotest/palettes/chrono_bg.png | Bin 0 -> 381 bytes games/cronotest/palettes/crono_sprite.png | Bin 0 -> 170 bytes games/cronotest/scripts/cronotest_classes.py | 31 + games/cronotest/start.gs | 163 + games/cronotest/test1.gs | 116 + games/fireplace/art/credit.psci | 871 + games/fireplace/art/help.psci | 4231 +++ games/fireplace/palettes/fireplace.png | Bin 0 -> 906 bytes games/fireplace/scripts/fireplace.py | 265 + games/fireplace/sounds/music_howto.txt | 1 + games/fireplace/start.gs | 49 + games/flood/scripts/game.py | 133 + games/flood/start.gs | 87 + games/maze/art/artifact.psci | 33 + games/maze/art/ax.psci | 33 + games/maze/art/bg1.psci | 14434 ++++++++++ games/maze/art/bg2.psci | 14434 ++++++++++ games/maze/art/bg3.psci | 4114 +++ games/maze/art/debris.psci | 33 + games/maze/art/horiztrig_sm.psci | 70 + games/maze/art/key.psci | 33 + games/maze/art/lock.psci | 33 + games/maze/art/npc.psci | 33 + games/maze/art/outsideBG.psci | 1474 + games/maze/art/player_stand.psci | 33 + games/maze/art/portal.psci | 123 + games/maze/art/portalBG.psci | 12034 ++++++++ games/maze/art/portalgate.psci | 1006 + games/maze/art/ruinBG.psci | 7234 +++++ games/maze/art/seaBG.psci | 10834 ++++++++ games/maze/art/southBG2.psci | 6754 +++++ games/maze/art/vertrig.psci | 214 + games/maze/scripts/hud.py | 27 + games/maze/scripts/objects.py | 232 + games/maze/scripts/player.py | 55 + games/maze/scripts/rooms.py | 26 + games/maze/sounds/artifact.ogg | Bin 0 -> 26944 bytes games/maze/sounds/break.ogg | Bin 0 -> 13439 bytes games/maze/sounds/caves.ogg | Bin 0 -> 195496 bytes games/maze/sounds/credits.txt | 8 + games/maze/sounds/pickup.ogg | Bin 0 -> 5077 bytes games/maze/sounds/portal.ogg | Bin 0 -> 31834 bytes games/maze/start.gs | 767 + games/platso/art/monster_stand.psci | 147 + games/platso/art/platworld.psci | 24034 ++++++++++++++++ games/platso/art/player_stand.psci | 177 + games/platso/art/player_walk.psci | 663 + games/platso/art/warptrigger.psci | 243 + games/platso/scripts/platso.py | 142 + games/platso/start.gs | 156 + games/shmup/art/asteroid.psci | 81 + games/shmup/art/bg_frame.psci | 14794 ++++++++++ games/shmup/art/blockline_horiz.psci | 394 + games/shmup/art/boom.psci | 1545 ++ games/shmup/art/enemy1.psci | 81 + games/shmup/art/enemy2.psci | 147 + games/shmup/art/enemy_proj.psci | 87 + games/shmup/art/player.psci | 459 + games/shmup/art/player_proj.psci | 123 + games/shmup/art/spawn_area.psci | 346 + games/shmup/scripts/shmup.py | 240 + games/shmup/start.gs | 139 + games/wildflowers/scripts/flower.py | 169 + games/wildflowers/scripts/frond.py | 136 + games/wildflowers/scripts/petal.py | 125 + games/wildflowers/scripts/ramps.py | 112 + games/wildflowers/scripts/wildflowers.py | 88 + games/wildflowers/start.gs | 30 + grid.py | 108 + image_convert.py | 252 + image_export.py | 158 + input_handler.py | 1212 + key_shifts.py | 44 + lab_color.py | 62 + license.txt | 21 + palette.py | 280 + palettes/ansi-240.png | Bin 0 -> 4493 bytes palettes/ansi.png | Bin 0 -> 189 bytes palettes/apple2.png | Bin 0 -> 355 bytes palettes/arne16.png | Bin 0 -> 291 bytes palettes/atari.png | Bin 0 -> 2122 bytes palettes/bw.png | Bin 0 -> 854 bytes palettes/c64_edscii.png | Bin 0 -> 245 bytes palettes/c64_original.png | Bin 0 -> 232 bytes palettes/c64_pepto.png | Bin 0 -> 298 bytes palettes/cpc.png | Bin 0 -> 1676 bytes palettes/dawnbringer16.png | Bin 0 -> 922 bytes palettes/doom.png | Bin 0 -> 774 bytes palettes/dpaint.png | Bin 0 -> 744 bytes palettes/ega.png | Bin 0 -> 255 bytes palettes/gameboy.png | Bin 0 -> 195 bytes palettes/hercules.png | Bin 0 -> 90 bytes palettes/heretic.png | Bin 0 -> 1914 bytes palettes/intellivision.png | Bin 0 -> 475 bytes palettes/macintosh2.png | Bin 0 -> 194 bytes palettes/mspaint.png | Bin 0 -> 215 bytes palettes/msx.png | Bin 0 -> 173 bytes palettes/nes.png | Bin 0 -> 451 bytes palettes/pacman.png | Bin 0 -> 220 bytes palettes/pico8.png | Bin 0 -> 380 bytes palettes/quake.png | Bin 0 -> 1666 bytes palettes/sharecart1000.png | Bin 0 -> 330 bytes palettes/speccy.png | Bin 0 -> 267 bytes palettes/teletext.png | Bin 0 -> 190 bytes playscii.cfg.default | 46 + playscii.py | 1228 + playscii_linux.sh | 2 + playscii_linux.spec | 48 + playscii_mac.spec | 67 + profile | 2 + renderable.py | 483 + renderable_line.py | 494 + renderable_sprite.py | 132 + requirements.txt | 5 + selection.py | 76 + shader.py | 154 + shaders/cursor_f.glsl | 12 + shaders/cursor_v.glsl | 35 + shaders/framebuffer_f.glsl | 13 + shaders/framebuffer_f_crt.glsl | 101 + shaders/framebuffer_v.glsl | 8 + shaders/lines_3d_v.glsl | 31 + shaders/lines_f.glsl | 11 + shaders/lines_v.glsl | 31 + shaders/renderable_f.glsl | 52 + shaders/renderable_v.glsl | 46 + shaders/sprite_f.glsl | 15 + shaders/sprite_v.glsl | 30 + texture.py | 40 + ui.py | 791 + ui/bgnoise.xcf | Bin 0 -> 132719 bytes ui/bgnoise_alpha.png | Bin 0 -> 61589 bytes ui/icon.png | Bin 0 -> 250 bytes ui/logo.png | Bin 0 -> 76149 bytes ui/playscii.icns | Bin 0 -> 118364 bytes ui/playscii.ico | Bin 0 -> 67646 bytes ui/tool_erase.png | Bin 0 -> 1006 bytes ui/tool_fill_bg.png | Bin 0 -> 256 bytes ui/tool_fill_char.png | Bin 0 -> 255 bytes ui/tool_fill_fg.png | Bin 0 -> 252 bytes ui/tool_grab.png | Bin 0 -> 207 bytes ui/tool_paint.png | Bin 0 -> 201 bytes ui/tool_paste.png | Bin 0 -> 227 bytes ui/tool_rotate.png | Bin 0 -> 221 bytes ui/tool_select.png | Bin 0 -> 168 bytes ui/tool_select_add.png | Bin 0 -> 183 bytes ui/tool_select_sub.png | Bin 0 -> 178 bytes ui/tool_text.png | Bin 0 -> 215 bytes ui_art_dialog.py | 770 + ui_button.py | 162 + ui_chooser_dialog.py | 483 + ui_colors.py | 11 + ui_console.py | 538 + ui_dialog.py | 455 + ui_edit_panel.py | 493 + ui_element.py | 474 + ui_file_chooser_dialog.py | 464 + ui_game_dialog.py | 198 + ui_game_menu_pulldown_item.py | 345 + ui_info_dialog.py | 133 + ui_list_operations.py | 14 + ui_menu_bar.py | 307 + ui_menu_pulldown.py | 182 + ui_menu_pulldown_item.py | 769 + ui_object_panel.py | 227 + ui_popup.py | 681 + ui_status_bar.py | 476 + ui_swatch.py | 408 + ui_tool.py | 549 + ui_toolbar.py | 120 + vector.py | 208 + version | 1 + win_copy_include | 6 + win_xcopy_exclude | 1 + win_xcopy_include | 10 + zip_build.bat | 10 + zip_src.sh | 14 + zip_src_include | 26 + 360 files changed, 227491 insertions(+) create mode 100644 .itch.toml create mode 100644 README.md create mode 100644 art.py create mode 100644 art/blob_shadow.psci create mode 100644 art/default_player_stand.psci create mode 100644 art/game_object_default.psci create mode 100644 art/hello1.psci create mode 100644 art/loc_marker.psci create mode 100644 art/new.psci create mode 100644 art/owell.ed create mode 100644 art/trigger_default.psci create mode 100644 art/world_properties_object.psci create mode 100644 art_export.py create mode 100644 art_import.py create mode 100644 artscripts/c64_ed_to_orig.arsc create mode 100644 artscripts/c64_fade.arsc create mode 100644 artscripts/conway.arsc create mode 100644 artscripts/dissolv.arsc create mode 100644 artscripts/evap.arsc create mode 100644 artscripts/hello1.arsc create mode 100644 artscripts/mutate.arsc create mode 100644 audio.py create mode 100644 binds.cfg.default create mode 100755 build_mac.sh create mode 100644 build_windows.bat create mode 100644 camera.py create mode 100644 charset.py create mode 100644 charsets/agat.char create mode 100644 charsets/agat.png create mode 100644 charsets/amiga_topaz.char create mode 100644 charsets/amiga_topaz.png create mode 100644 charsets/apple2.char create mode 100644 charsets/apple2.png create mode 100644 charsets/atari.char create mode 100644 charsets/atari.png create mode 100644 charsets/atari_st.char create mode 100644 charsets/atari_st.png create mode 100644 charsets/bbc_master.char create mode 100644 charsets/bbc_master.png create mode 100644 charsets/c64_edscii.char create mode 100644 charsets/c64_edscii.png create mode 100644 charsets/c64_petscii.char create mode 100644 charsets/c64_petscii.png create mode 100644 charsets/c64_real_shifted.char create mode 100644 charsets/c64_real_shifted.png create mode 100644 charsets/c64_real_unshifted.char create mode 100644 charsets/c64_real_unshifted.png create mode 100644 charsets/commodore_pet.char create mode 100644 charsets/commodore_pet.png create mode 100644 charsets/cpc.char create mode 100644 charsets/cpc.png create mode 100644 charsets/dos.char create mode 100644 charsets/dos.png create mode 100644 charsets/dos40.char create mode 100644 charsets/dos40.png create mode 100644 charsets/dos_basic.char create mode 100644 charsets/dos_basic.png create mode 100644 charsets/intellivision.char create mode 100644 charsets/intellivision.png create mode 100644 charsets/jpetscii.char create mode 100644 charsets/jpetscii.png create mode 100644 charsets/msx.char create mode 100644 charsets/msx.png create mode 100644 charsets/osamu-micro.char create mode 100644 charsets/osamu-micro.png create mode 100644 charsets/pacman.char create mode 100644 charsets/pacman.png create mode 100644 charsets/sharp.char create mode 100644 charsets/sharp.png create mode 100644 charsets/speccy.char create mode 100644 charsets/speccy.png create mode 100644 charsets/teletext_uk.char create mode 100644 charsets/teletext_uk.png create mode 100644 charsets/ui.char create mode 100644 charsets/ui.png create mode 100644 charsets/ultima4.char create mode 100644 charsets/ultima4.png create mode 100644 code_of_conduct.txt create mode 100644 collision.py create mode 100644 cursor.py create mode 100644 docs/bugs.txt create mode 100644 docs/bugs/jesper_sarnesjo.txt create mode 100644 docs/bugs/playscii_gl_errors.txt create mode 100644 docs/bugs/terryc.txt create mode 100644 docs/bugs/v21.txt create mode 100644 docs/bugs/zensaiyuki.txt create mode 100644 docs/design/early_notes.txt create mode 100644 docs/design/mock1.png create mode 100644 docs/design/mock2.png create mode 100644 docs/design/old/20150101.txt create mode 100644 docs/design/old/art_class.txt create mode 100644 docs/design/psmock3_full.png create mode 100644 docs/design/psmock3_statusbar.png create mode 100644 docs/docs_todo.txt create mode 100644 docs/feedback.txt create mode 100644 docs/html/art_converters.jpg create mode 100644 docs/html/art_crt_off.png create mode 100644 docs/html/art_crt_on.jpg create mode 100644 docs/html/art_layermenu.jpg create mode 100644 docs/html/art_mask1.png create mode 100644 docs/html/art_mask2.png create mode 100644 docs/html/art_mask3.png create mode 100644 docs/html/art_mask4.png create mode 100644 docs/html/art_mask5.png create mode 100644 docs/html/art_menubar.jpg create mode 100644 docs/html/art_picker.jpg create mode 100644 docs/html/art_statusbar1.jpg create mode 100644 docs/html/art_statusbar2.jpg create mode 100755 docs/html/darkgrey.css create mode 100644 docs/html/exidy_sorcerer_converted.png create mode 100644 docs/html/exidy_sorcerer_orig.jpg create mode 100644 docs/html/game_collision.jpg create mode 100644 docs/html/game_cronotest.png create mode 100644 docs/html/game_flood.png create mode 100644 docs/html/game_maze.png create mode 100644 docs/html/game_menubar.jpg create mode 100644 docs/html/game_platso.png create mode 100644 docs/html/game_propseditor.jpg create mode 100644 docs/html/game_shmup.png create mode 100644 docs/html/howto_art.html create mode 100644 docs/html/howto_game.html create mode 100644 docs/html/howto_main.html create mode 100644 docs/html/logo_bg_tile.png create mode 100644 docs/html/pslogo_w_text2.png create mode 100644 docs/html/speccy.png create mode 100644 docs/html/tool_erase.png create mode 100644 docs/html/tool_grab.png create mode 100644 docs/html/tool_paint.png create mode 100644 docs/html/tool_paste.png create mode 100644 docs/html/tool_rotate.png create mode 100644 docs/html/tool_select.png create mode 100644 docs/html/tool_select_add.png create mode 100644 docs/html/tool_select_sub.png create mode 100644 docs/html/tool_text.png create mode 100644 docs/links.txt create mode 100644 docs/thanks.txt create mode 100644 docs/todo.txt create mode 100644 docs/ui.txt create mode 100644 docs/uvs.txt create mode 100644 edit_command.py create mode 100644 formats/in_ans.py create mode 100644 formats/in_ata.py create mode 100644 formats/in_bitmap.py create mode 100644 formats/in_bitmap_2color.py create mode 100644 formats/in_bitmap_sequence.py create mode 100644 formats/in_edscii.py create mode 100644 formats/in_endoom.py create mode 100644 formats/in_txt.py create mode 100644 formats/out_ans.py create mode 100644 formats/out_ata.py create mode 100644 formats/out_endoom.py create mode 100644 formats/out_gif.py create mode 100644 formats/out_png.py create mode 100644 formats/out_png_set.py create mode 100644 formats/out_txt.py create mode 100644 framebuffer.py create mode 100644 game_hud.py create mode 100644 game_object.py create mode 100644 game_room.py create mode 100644 game_util_objects.py create mode 100644 game_world.py create mode 100644 games/crawler/art/maze1.psci create mode 100644 games/crawler/art/maze2.psci create mode 100644 games/crawler/charsets/jpetscii_crawler.char create mode 100644 games/crawler/charsets/jpetscii_crawler.png create mode 100644 games/crawler/scripts/crawler.py create mode 100644 games/crawler/scripts/line_tester.py create mode 100644 games/crawler/scripts/player.py create mode 100644 games/crawler/scripts/topview.py create mode 100644 games/crawler/start.gs create mode 100644 games/cronotest/art/bed.psci create mode 100644 games/cronotest/art/chest.psci create mode 100644 games/cronotest/art/chrono_bg.psci create mode 100644 games/cronotest/art/crono_stand_back.psci create mode 100644 games/cronotest/art/crono_stand_front.psci create mode 100644 games/cronotest/art/crono_stand_right.psci create mode 100644 games/cronotest/art/crono_walk_back.psci create mode 100644 games/cronotest/art/crono_walk_front.psci create mode 100644 games/cronotest/art/crono_walk_right.psci create mode 100644 games/cronotest/art/frontwall.psci create mode 100644 games/cronotest/art/railing.psci create mode 100644 games/cronotest/art/urn.psci create mode 100644 games/cronotest/palettes/chrono_bg.png create mode 100644 games/cronotest/palettes/crono_sprite.png create mode 100644 games/cronotest/scripts/cronotest_classes.py create mode 100644 games/cronotest/start.gs create mode 100644 games/cronotest/test1.gs create mode 100644 games/fireplace/art/credit.psci create mode 100644 games/fireplace/art/help.psci create mode 100644 games/fireplace/palettes/fireplace.png create mode 100644 games/fireplace/scripts/fireplace.py create mode 100644 games/fireplace/sounds/music_howto.txt create mode 100644 games/fireplace/start.gs create mode 100644 games/flood/scripts/game.py create mode 100644 games/flood/start.gs create mode 100644 games/maze/art/artifact.psci create mode 100644 games/maze/art/ax.psci create mode 100644 games/maze/art/bg1.psci create mode 100644 games/maze/art/bg2.psci create mode 100644 games/maze/art/bg3.psci create mode 100644 games/maze/art/debris.psci create mode 100644 games/maze/art/horiztrig_sm.psci create mode 100644 games/maze/art/key.psci create mode 100644 games/maze/art/lock.psci create mode 100644 games/maze/art/npc.psci create mode 100644 games/maze/art/outsideBG.psci create mode 100644 games/maze/art/player_stand.psci create mode 100644 games/maze/art/portal.psci create mode 100644 games/maze/art/portalBG.psci create mode 100644 games/maze/art/portalgate.psci create mode 100644 games/maze/art/ruinBG.psci create mode 100644 games/maze/art/seaBG.psci create mode 100644 games/maze/art/southBG2.psci create mode 100644 games/maze/art/vertrig.psci create mode 100644 games/maze/scripts/hud.py create mode 100644 games/maze/scripts/objects.py create mode 100644 games/maze/scripts/player.py create mode 100644 games/maze/scripts/rooms.py create mode 100644 games/maze/sounds/artifact.ogg create mode 100644 games/maze/sounds/break.ogg create mode 100644 games/maze/sounds/caves.ogg create mode 100644 games/maze/sounds/credits.txt create mode 100644 games/maze/sounds/pickup.ogg create mode 100644 games/maze/sounds/portal.ogg create mode 100644 games/maze/start.gs create mode 100644 games/platso/art/monster_stand.psci create mode 100644 games/platso/art/platworld.psci create mode 100644 games/platso/art/player_stand.psci create mode 100644 games/platso/art/player_walk.psci create mode 100644 games/platso/art/warptrigger.psci create mode 100644 games/platso/scripts/platso.py create mode 100644 games/platso/start.gs create mode 100644 games/shmup/art/asteroid.psci create mode 100644 games/shmup/art/bg_frame.psci create mode 100644 games/shmup/art/blockline_horiz.psci create mode 100644 games/shmup/art/boom.psci create mode 100644 games/shmup/art/enemy1.psci create mode 100644 games/shmup/art/enemy2.psci create mode 100644 games/shmup/art/enemy_proj.psci create mode 100644 games/shmup/art/player.psci create mode 100644 games/shmup/art/player_proj.psci create mode 100644 games/shmup/art/spawn_area.psci create mode 100644 games/shmup/scripts/shmup.py create mode 100644 games/shmup/start.gs create mode 100644 games/wildflowers/scripts/flower.py create mode 100644 games/wildflowers/scripts/frond.py create mode 100644 games/wildflowers/scripts/petal.py create mode 100644 games/wildflowers/scripts/ramps.py create mode 100644 games/wildflowers/scripts/wildflowers.py create mode 100644 games/wildflowers/start.gs create mode 100644 grid.py create mode 100644 image_convert.py create mode 100644 image_export.py create mode 100644 input_handler.py create mode 100644 key_shifts.py create mode 100644 lab_color.py create mode 100644 license.txt create mode 100644 palette.py create mode 100644 palettes/ansi-240.png create mode 100644 palettes/ansi.png create mode 100644 palettes/apple2.png create mode 100644 palettes/arne16.png create mode 100644 palettes/atari.png create mode 100644 palettes/bw.png create mode 100644 palettes/c64_edscii.png create mode 100644 palettes/c64_original.png create mode 100644 palettes/c64_pepto.png create mode 100644 palettes/cpc.png create mode 100644 palettes/dawnbringer16.png create mode 100644 palettes/doom.png create mode 100644 palettes/dpaint.png create mode 100644 palettes/ega.png create mode 100644 palettes/gameboy.png create mode 100644 palettes/hercules.png create mode 100644 palettes/heretic.png create mode 100644 palettes/intellivision.png create mode 100644 palettes/macintosh2.png create mode 100644 palettes/mspaint.png create mode 100644 palettes/msx.png create mode 100644 palettes/nes.png create mode 100644 palettes/pacman.png create mode 100644 palettes/pico8.png create mode 100644 palettes/quake.png create mode 100644 palettes/sharecart1000.png create mode 100644 palettes/speccy.png create mode 100644 palettes/teletext.png create mode 100644 playscii.cfg.default create mode 100755 playscii.py create mode 100755 playscii_linux.sh create mode 100644 playscii_linux.spec create mode 100644 playscii_mac.spec create mode 100755 profile create mode 100644 renderable.py create mode 100644 renderable_line.py create mode 100644 renderable_sprite.py create mode 100644 requirements.txt create mode 100644 selection.py create mode 100644 shader.py create mode 100644 shaders/cursor_f.glsl create mode 100644 shaders/cursor_v.glsl create mode 100644 shaders/framebuffer_f.glsl create mode 100644 shaders/framebuffer_f_crt.glsl create mode 100644 shaders/framebuffer_v.glsl create mode 100644 shaders/lines_3d_v.glsl create mode 100644 shaders/lines_f.glsl create mode 100644 shaders/lines_v.glsl create mode 100644 shaders/renderable_f.glsl create mode 100644 shaders/renderable_v.glsl create mode 100644 shaders/sprite_f.glsl create mode 100644 shaders/sprite_v.glsl create mode 100644 texture.py create mode 100644 ui.py create mode 100644 ui/bgnoise.xcf create mode 100644 ui/bgnoise_alpha.png create mode 100644 ui/icon.png create mode 100644 ui/logo.png create mode 100644 ui/playscii.icns create mode 100644 ui/playscii.ico create mode 100644 ui/tool_erase.png create mode 100644 ui/tool_fill_bg.png create mode 100644 ui/tool_fill_char.png create mode 100644 ui/tool_fill_fg.png create mode 100644 ui/tool_grab.png create mode 100644 ui/tool_paint.png create mode 100644 ui/tool_paste.png create mode 100644 ui/tool_rotate.png create mode 100644 ui/tool_select.png create mode 100644 ui/tool_select_add.png create mode 100644 ui/tool_select_sub.png create mode 100644 ui/tool_text.png create mode 100644 ui_art_dialog.py create mode 100644 ui_button.py create mode 100644 ui_chooser_dialog.py create mode 100644 ui_colors.py create mode 100644 ui_console.py create mode 100644 ui_dialog.py create mode 100644 ui_edit_panel.py create mode 100644 ui_element.py create mode 100644 ui_file_chooser_dialog.py create mode 100644 ui_game_dialog.py create mode 100644 ui_game_menu_pulldown_item.py create mode 100644 ui_info_dialog.py create mode 100644 ui_list_operations.py create mode 100644 ui_menu_bar.py create mode 100644 ui_menu_pulldown.py create mode 100644 ui_menu_pulldown_item.py create mode 100644 ui_object_panel.py create mode 100644 ui_popup.py create mode 100644 ui_status_bar.py create mode 100644 ui_swatch.py create mode 100644 ui_tool.py create mode 100644 ui_toolbar.py create mode 100644 vector.py create mode 100644 version create mode 100644 win_copy_include create mode 100644 win_xcopy_exclude create mode 100644 win_xcopy_include create mode 100644 zip_build.bat create mode 100755 zip_src.sh create mode 100644 zip_src_include diff --git a/.itch.toml b/.itch.toml new file mode 100644 index 0000000..60e7fb4 --- /dev/null +++ b/.itch.toml @@ -0,0 +1,4 @@ + +[[actions]] +name = "play" +path = "playscii/playscii_linux.sh" diff --git a/README.md b/README.md new file mode 100644 index 0000000..1099bbc --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# PLAYSCII - an ASCII art and game creation tool + +Playscii (pronounced play-skee) is an art, animation, and game creation tool. +The latest version will always be available here: + +* [http://jp.itch.io/playscii](http://jp.itch.io/playscii) +* [https://heptapod.host/jp-lebreton/playscii](https://heptapod.host/jp-lebreton/playscii) + +Playscii's main website is here: + +* [https://jplebreton.com/playscii/](https://jplebreton.com/playscii/) + +## Offline documentation + +Playscii now includes its own HTML documentation, which you can find in the +docs/html/ subfolder of the folder where this README resides. + +## Online documentation + +The latest version of the HTML documentation resides here: + +[https://jplebreton.com/playscii/howto_main.html](https://jplebreton.com/playscii/howto_main.html) + +## Bugs + +If you run into any issues with Playscii, please report a bug here: + +[https://heptapod.host/jp-lebreton/playscii/issues](https://heptapod.host/jp-lebreton/playscii/issues) + +## Roadmap + +For possible future features see Playscii's Trello: + +[https://trello.com/b/BLQBXn5H/playscii](https://trello.com/b/BLQBXn5H/playscii) + +Please don't take anything there as a promise, though. If you'd find something +on there especially valuable, feel free to vote or comment! + +## Contact + +If you've made something cool with Playscii and/or have any suggestions on how +to improve it, please let JP know! + +[https://jplebreton.com/#contact_email](https://jplebreton.com/#contact_email) diff --git a/art.py b/art.py new file mode 100644 index 0000000..6edfb09 --- /dev/null +++ b/art.py @@ -0,0 +1,1250 @@ +import os.path, json, time, traceback +import random # import random only so art scripts don't have to +import numpy as np + +from edit_command import CommandStack, EntireArtCommand +from image_export import write_thumbnail + +# X, Y, Z +VERT_LENGTH = 3 +# 4 verts in a quad +VERT_STRIDE = 4 * VERT_LENGTH +# elements: 3 verts per tri * 2 tris in a quad +ELEM_STRIDE = 6 +# UVs: 2 floats per vert * 4 verts in a quad +UV_STRIDE = 2 * 4 + +# starting document defaults +DEFAULT_CHARSET = 'c64_petscii' +DEFAULT_PALETTE = 'c64_original' +DEFAULT_WIDTH, DEFAULT_HEIGHT = 40, 25 +DEFAULT_ART_FILENAME = 'new' + +DEFAULT_FRAME_DELAY = 0.1 +DEFAULT_LAYER_Z = 0 +DEFAULT_LAYER_Z_OFFSET = 0.5 + +ART_DIR = 'art/' +ART_FILE_EXTENSION = 'psci' + +THUMBNAIL_CACHE_DIR = 'thumbnails/' + +ART_SCRIPT_DIR = 'artscripts/' +SCRIPT_FILE_EXTENSION = 'arsc' + +# flip/rotate UV constants +UV_NORMAL = 0 +UV_ROTATE90 = 1 +UV_ROTATE180 = 2 +UV_ROTATE270 = 3 +UV_FLIPX = 4 +UV_FLIPY = 5 +# (flip X & Y is identical to rotate 180) +# not sure what to call these, but - results for X and Y flip of rotated chars: +UV_FLIP90 = 6 +UV_FLIP270 = 7 + +uv_names = { + UV_NORMAL: 'Normal', + UV_ROTATE90: 'Rotate 90', + UV_ROTATE180: 'Rotate 180', + UV_ROTATE270: 'Rotate 270', + UV_FLIPX: 'Flip X', + UV_FLIPY: 'Flip Y', + UV_FLIP90: 'Flipped90', + UV_FLIP270: 'Flipped270' +} + +uv_types = { + UV_NORMAL: (0, 0, 1, 0, 0, 1, 1, 1), + UV_ROTATE90: (0, 1, 0, 0, 1, 1, 1, 0), + UV_ROTATE180: (1, 1, 0, 1, 1, 0, 0, 0), + UV_ROTATE270: (1, 0, 1, 1, 0, 0, 0, 1), + UV_FLIPX: (1, 0, 0, 0, 1, 1, 0, 1), + UV_FLIPY: (0, 1, 1, 1, 0, 0, 1, 0), + UV_FLIP90: (0, 0, 0, 1, 1, 0, 1, 1), + UV_FLIP270: (1, 1, 1, 0, 0, 1, 0, 0) +} + +# reverse dict for easy (+ fast?) lookup in eg get_char_transform_at +uv_types_reverse = { + uv_types[UV_NORMAL]: UV_NORMAL, + uv_types[UV_ROTATE90]: UV_ROTATE90, + uv_types[UV_ROTATE180]: UV_ROTATE180, + uv_types[UV_ROTATE270]: UV_ROTATE270, + uv_types[UV_FLIPX]: UV_FLIPX, + uv_types[UV_FLIPY]: UV_FLIPY, + uv_types[UV_FLIP90]: UV_FLIP90, + uv_types[UV_FLIP270]: UV_FLIP270 +} + + +class Art: + """ + Art asset: + Contains the data that is modified by user edits and gets saved to disk. + Data stored as arrays that TileRenderables use to populate their buffers. + + assumptions: + - an Art contains 1 or more frames + - each frame contains 1 or more layers + - each layer is a rectangular grid of Width * Height tiles + - each tile has: character, foreground color, background color, & transform + - char/color tile values are expressed as indices into charset / palette + - all layers in an Art are the same dimensions + """ + quad_width,quad_height = 1.0, 1.0 + "size of each tile in world space" + log_size_changes = False + recalc_quad_height = True + log_creation = False + + def __init__(self, filename, app, charset, palette, width, height): + "Creates a new, blank document with given parameters." + self.valid = False + if filename and not filename.endswith('.%s' % ART_FILE_EXTENSION): + filename += '.%s' % ART_FILE_EXTENSION + self.filename = filename + self.app = app + # save "time loaded" for menu sorting + self.time_loaded = 0 + self.charset, self.palette = charset, palette + self.command_stack = CommandStack(self) + self.unsaved_changes = False + self.width, self.height = width, height + # selected char/fg/bg/xform + self.selected_char = self.charset.get_char_index('A') or 2 + self.selected_fg_color = self.palette.lightest_index + self.selected_bg_color = self.palette.darkest_index + self.selected_xform = UV_NORMAL + # camera position - updated in Art.update, saved in .psci + self.update_saved_camera(self.app.camera) + # set True when camera "zoom extents" toggles on + self.camera_zoomed_extents = False + # cached camera position from before "zoom extents" invoked + self.non_extents_camera_x = self.non_extents_camera_y = 0 + self.non_extents_camera_z = self.app.camera.start_zoom + # list of char/fg/bg arrays, one for each frame + self.chars, self.fg_colors, self.bg_colors = [], [], [] + # char transforms: UV coords, plus map (unused by renderer) for fast access + self.uv_mods, self.uv_maps = [], [] + # table of {frame_number: bool} changed frames, processed each update() + self.char_changed_frames, self.uv_changed_frames = {}, {} + self.fg_changed_frames, self.bg_changed_frames = {}, {} + self.renderables = [] + "List of TileRenderables using us - each new Renderable adds itself" + self.instances = [] + "List of ArtInstances using us as their source" + # init frames and layers - ArtFromDisk has its own logic for this + self.init_layers() + self.init_frames() + # support non-square characters: + # derive quad_height from chars aspect; quad_width always 1.0 + if self.recalc_quad_height: + self.quad_height *= self.charset.char_height / self.charset.char_width + # running scripts and timing info + self.scripts = [] + self.script_rates = [] + self.scripts_next_exec_time = [] + # tell renderables to rebind vert and element buffers next update + self.geo_changed = True + # run update once before renderables initialize so they have + # something to bind + self.first_update() + if self.log_creation and not self.app.game_mode: + self.log_init() + self.valid = True + + def log_init(self): + self.app.log('created new document:') + self.app.log(' character set: %s' % self.charset.name) + self.app.log(' palette: %s' % self.palette.name) + self.app.log(' width/height: %s x %s' % (self.width, self.height)) + self.app.log(' frames: %s' % self.frames) + self.app.log(' layers: %s' % self.layers) + + def init_layers(self): + self.layers = 1 + # current layer being edited + self.active_layer = 0 + # lists of layer Z values and names + self.layers_z = [DEFAULT_LAYER_Z] + self.layers_visibility = [True] + self.layer_names = ['Layer 1'] + + def init_frames(self): + self.frames = 0 + # current frame being edited + self.active_frame = 0 + # list of frame delays + self.frame_delays = [] + # add one frame to start + self.add_frame_to_end(DEFAULT_FRAME_DELAY, False) + # clear our single layer to a sensible BG color + self.clear_frame_layer(0, 0, bg_color=self.palette.darkest_index) + + def first_update(self): + self.update() + + def insert_frame_before_index(self, index, delay=DEFAULT_FRAME_DELAY, log=True): + "Add a blank frame at the specified index (len+1 to add to end)." + self.frames += 1 + self.frame_delays.insert(index, delay) + tiles = self.layers * self.width * self.height + shape = (self.layers, self.height, self.width, 4) + fg, bg = 0, 0 + if self.app.ui: + fg = self.app.ui.selected_fg_color + bg = self.app.ui.selected_bg_color + new_char = np.zeros(shape, dtype=np.float32) + new_fg = np.full(shape, fg, dtype=np.float32) + new_bg = np.full(shape, bg, dtype=np.float32) + new_uv = np.full(shape, UV_NORMAL, dtype=np.uint32) + self.chars.insert(index, new_char) + self.fg_colors.insert(index, new_fg) + self.bg_colors.insert(index, new_bg) + self.uv_maps.insert(index, new_uv) + # UV init is more complex than just all zeroes + self.uv_mods.insert(index, self.new_uv_layers(self.layers)) + # all but lowest layer = transparent + for l in range(1, self.layers): + self.clear_frame_layer(index, l, 0, fg) + self.mark_all_frames_changed() + # set new frame as active + if self.app.ui and self is self.app.ui.active_art: + self.app.ui.set_active_frame(index) + if log: + self.app.log('Created new frame at index %s' % str(index)) + + def add_frame_to_end(self, delay=DEFAULT_FRAME_DELAY, log=True): + "Add a blank frame at the end of the current animation." + self.insert_frame_before_index(self.frames, delay, log) + + def duplicate_frame(self, src_frame_index, dest_frame_index=None, delay=None): + "Create a duplicate of given frame at given index." + # stick new frame at end if no destination index given + dest_frame_index = dest_frame_index if dest_frame_index is not None else self.frames + # copy source frame's delay if none given + delay = delay or self.frame_delays[src_frame_index] + self.frames += 1 + self.frame_delays.insert(dest_frame_index, delay) + # copy source frame's char/color arrays + self.chars.insert(dest_frame_index, self.chars[src_frame_index].copy()) + self.uv_mods.insert(dest_frame_index, self.uv_mods[src_frame_index].copy()) + self.uv_maps.insert(dest_frame_index, self.uv_maps[src_frame_index].copy()) + self.fg_colors.insert(dest_frame_index, self.fg_colors[src_frame_index].copy()) + self.bg_colors.insert(dest_frame_index, self.bg_colors[src_frame_index].copy()) + self.mark_all_frames_changed() + # set new frame as active + if self is self.app.ui.active_art: + self.app.ui.set_active_frame(dest_frame_index-1) + self.app.log('Duplicated frame %s at frame %s' % (src_frame_index+1, dest_frame_index)) + + def delete_frame_at(self, index): + "Delete frame at given index." + self.chars.pop(index) + self.fg_colors.pop(index) + self.bg_colors.pop(index) + self.uv_mods.pop(index) + self.uv_maps.pop(index) + self.frames -= 1 + self.mark_all_frames_changed() + if self is self.app.ui.active_art: + self.app.ui.set_active_frame(index) + + def move_frame_to_index(self, src_index, dest_index): + "Move frame at given index to new given index." + char_data = self.chars.pop(src_index) + fg_data = self.fg_colors.pop(src_index) + bg_data = self.bg_colors.pop(src_index) + uv_data = self.uv_mods.pop(src_index) + uv_map_data = self.uv_maps.pop(src_index) + self.chars.insert(dest_index, char_data) + self.fg_colors.insert(dest_index, fg_data) + self.bg_colors.insert(dest_index, bg_data) + self.uv_mods.insert(dest_index, uv_data) + self.uv_maps.insert(dest_index, uv_map_data) + self.mark_all_frames_changed() + + def add_layer(self, z=None, name=None): + "Add a new layer with given Z with given name." + # offset Z from last layer's Z if none given + z = z if z is not None else self.layers_z[-1] + DEFAULT_LAYER_Z_OFFSET + # index isn't user-facing, z is what matters + index = self.layers - 1 + # duplicate_layer increases self.layers by 1 + self.duplicate_layer(index, z, name) + for frame in range(self.frames): + self.clear_frame_layer(frame, self.layers-1, 0) + # set new layer as active + if self is self.app.ui.active_art: + self.app.ui.set_active_layer(index+1) + + def duplicate_layer(self, src_index, z=None, new_name=None): + "Duplicate layer with given index. Duplicate uses given Z and name." + def duplicate_layer_array(array): + src_data = np.array([array[src_index]]) + return np.append(array, src_data, 0) + for frame in range(self.frames): + self.chars[frame] = duplicate_layer_array(self.chars[frame]) + self.fg_colors[frame] = duplicate_layer_array(self.fg_colors[frame]) + self.bg_colors[frame] = duplicate_layer_array(self.bg_colors[frame]) + self.uv_mods[frame] = duplicate_layer_array(self.uv_mods[frame]) + self.uv_maps[frame] = duplicate_layer_array(self.uv_maps[frame]) + self.layers += 1 + z = z if z is not None else self.layers_z[src_index] + self.layers_z.append(z) + self.layers_visibility.append(True) + new_name = new_name or 'Copy of %s' % self.layer_names[src_index] + self.layer_names.append(new_name) + # rebuild geo with added verts for new layer + self.geo_changed = True + # set new layer as active + if self is self.app.ui.active_art: + self.app.ui.set_active_layer(self.layers - 1) + # don't log new layers created on the fly in game mode + if not self.app.game_mode: + self.app.log('Added new layer %s' % new_name) + self.set_unsaved_changes(True) + + def clear_frame_layer(self, frame, layer, bg_color=0, fg_color=None): + "Clear given layer of given frame to transparent BG + no characters." + # "clear" UVs to UV_NORMAL + for y in range(self.height): + for x in range(self.width): + self.uv_mods[frame][layer][y][x] = uv_types[UV_NORMAL] + self.uv_maps[frame][layer][y][x] = UV_NORMAL + self.chars[frame][layer][y][x] = 0 + self.fg_colors[frame][layer][y][x] = fg_color or 0 + self.bg_colors[frame][layer][y][x] = bg_color + # tell this frame to update + self.char_changed_frames[frame] = True + self.fg_changed_frames[frame] = True + self.bg_changed_frames[frame] = True + self.uv_changed_frames[frame] = True + + def delete_layer(self, index): + "Delete layer at given index." + for frame in range(self.frames): + self.chars[frame] = np.delete(self.chars[frame], index, 0) + self.fg_colors[frame] = np.delete(self.fg_colors[frame], index, 0) + self.bg_colors[frame] = np.delete(self.bg_colors[frame], index, 0) + self.uv_mods[frame] = np.delete(self.uv_mods[frame], index, 0) + self.uv_maps[frame] = np.delete(self.uv_maps[frame], index, 0) + self.layers_z.pop(index) + self.layers_visibility.pop(index) + self.layer_names.pop(index) + self.layers -= 1 + self.geo_changed = True + self.mark_all_frames_changed() + if self.active_layer > self.layers - 1: + self.app.ui.set_active_layer(self.layers - 1) + self.set_unsaved_changes(True) + + def set_charset(self, new_charset, log=False): + "Set Art to use given character set (referenced by object, not name)." + if new_charset is self.charset: + return + self.charset = new_charset + if self.recalc_quad_height: + self.quad_width = 1.0 + self.quad_height = 1.0 * (self.charset.char_height / self.charset.char_width) + self.set_unsaved_changes(True) + self.geo_changed = True + if log: + self.app.ui.message_line.post_line('Character set changed to %s' % self.charset.name) + + def set_charset_by_name(self, new_charset_name): + charset = self.app.load_charset(new_charset_name) + self.set_charset(charset) + self.app.ui.popup.set_active_charset(charset) + + def set_palette(self, new_palette, log=False): + "Set Art to use given color palette (referenced by object, not name)." + if new_palette is self.palette: + return + self.palette = new_palette + self.set_unsaved_changes(True) + if log: + self.app.ui.message_line.post_line('Color palette changed to %s' % self.palette.name) + + def set_palette_by_name(self, new_palette_name): + palette = self.app.load_palette(new_palette_name) + self.set_palette(palette) + self.app.ui.popup.set_active_palette(palette) + + def set_active_frame(self, new_frame): + "Set frame at given index for active editing in Art Mode." + new_frame %= self.frames + # bail if frame is still the same, eg we only have 1 frame + if new_frame == self.active_frame: + # return whether or not we actually changed frames + return False + self.active_frame = new_frame + # update our renderables + for r in self.renderables: + r.set_frame(self.active_frame) + return True + + def set_active_layer(self, new_layer): + "Set layer at given index for active editing in Art Mode." + self.active_layer = min(max(0, new_layer), self.layers-1) + + def crop(self, new_width, new_height, origin_x=0, origin_y=0): + x0, y0 = origin_x, origin_y + x1, y1 = x0 + new_width, y0 + new_height + crop_x = new_width < self.width + crop_y = new_height < self.height + for frame in range(self.frames): + for array in [self.chars, self.fg_colors, self.bg_colors, + self.uv_mods, self.uv_maps]: + if crop_x: + array[frame] = array[frame].take(range(x0, x1), axis=2) + if crop_y: + array[frame] = array[frame].take(range(y0, y1), axis=1) + + def expand(self, new_width, new_height, bg_fill): + x_add = new_width - self.width + y_add = new_height - self.height + #print('%s expand: %sw + %s = %s, %sh + %s = %s' % (self.filename, + # self.width, x_add, new_width, self.height, y_add, new_height)) + def expand_array(array, fill_value, stride): + # add columns (increasing width) + if x_add > 0: + # before height has changed, take care not to append + # incorrectly sized columns + h = new_height if new_height < self.height else self.height + add_shape = (self.layers, h, x_add, stride) + add = np.full(add_shape, fill_value, dtype=np.float32) + array = np.append(array, add, 2) + # add rows (increasing height) + if y_add > 0: + add_shape = (self.layers, y_add, new_width, stride) + add = np.full(add_shape, fill_value, dtype=np.float32) + array = np.append(array, add, 1) + # can't modify passed array in-place + return array + for frame in range(self.frames): + self.chars[frame] = expand_array(self.chars[frame], 0, 4) + fg, bg = 0, 0 + if self.app.ui: + fg = self.app.ui.selected_fg_color + # fill with BG color? ResizeArtDialog can specify this + # if not, blank bg for all new tiles (original default behavior) + if bg_fill: + bg = self.app.ui.selected_bg_color + self.fg_colors[frame] = expand_array(self.fg_colors[frame], fg, 4) + self.bg_colors[frame] = expand_array(self.bg_colors[frame], bg, 4) + self.uv_mods[frame] = expand_array(self.uv_mods[frame], uv_types[UV_NORMAL], UV_STRIDE) + self.uv_maps[frame] = expand_array(self.uv_maps[frame], UV_NORMAL, 4) + + def mark_frame_changed(self, frame): + "Given frame at given index as changed for next render." + self.char_changed_frames[frame] = True + self.fg_changed_frames[frame] = True + self.bg_changed_frames[frame] = True + self.uv_changed_frames[frame] = True + + def mark_all_frames_changed(self): + "Mark all frames as changed for next render." + for frame in range(self.frames): + self.mark_frame_changed(frame) + + def resize(self, new_width, new_height, origin_x=0, origin_y=0, bg_fill=False): + """ + Crop and/or expand Art to new given dimensions, with optional new + top left tile if cropping. Calls crop() and expand(), so no need to + call those directly. + """ + if new_width < self.width or new_height < self.height: + self.crop(new_width, new_height, origin_x, origin_y) + if new_width > self.width or new_height > self.height: + self.expand(new_width, new_height, bg_fill) + self.width, self.height = new_width, new_height + # tell all frames they've changed, rebind buffers + self.geo_changed = True + self.mark_all_frames_changed() + + def build_geo(self): + """ + (Re)build the vertex and element arrays used by all layers. + Run if the Art has untracked changes to size or layer count. + """ + shape = (self.layers, self.height, self.width, VERT_STRIDE) + self.vert_array = np.empty(shape, dtype=np.float32) + all_elems_size = self.layers * self.width * self.height * ELEM_STRIDE + self.elem_array = np.empty(shape=all_elems_size, dtype=np.uint32) + # generate geo according to art size + # vert_index corresponds to # of verts, loc_index to position in array + # (given that each vert has 3 components) + vert_index = 0 + elem_index = 0 + for layer in range(self.layers): + for tile_y in range(self.height): + for tile_x in range(self.width): + # vertices + left_x = tile_x * self.quad_width + top_y = tile_y * -self.quad_height + right_x = left_x + self.quad_width + bottom_y = top_y - self.quad_height + x0,y0 = left_x, top_y + x1,y1 = right_x, top_y + x2,y2 = left_x, bottom_y + x3,y3 = right_x, bottom_y + # Z of all layers is 0, layer Z set in shader + verts = [x0, y0, 0] + verts += [x1, y1, 0] + verts += [x2, y2, 0] + verts += [x3, y3, 0] + self.vert_array[layer][tile_y][tile_x] = verts + # vertex elements + elements = [vert_index, vert_index+1, vert_index+2] + elements += [vert_index+1, vert_index+2, vert_index+3] + self.elem_array[elem_index:elem_index+ELEM_STRIDE] = elements + elem_index += ELEM_STRIDE + # 4 verts in a quad + vert_index += 4 + + def new_uv_layers(self, layers): + "Return given # of layer's worth of vanilla UV array data." + shape = (layers, self.height, self.width, UV_STRIDE) + array = np.zeros(shape, dtype=np.float32) + # default new layer of UVs to "normal" transform + uvs = uv_types[UV_NORMAL] + for layer in range(layers): + for y in range(self.height): + for x in range(self.width): + array[layer][y][x] = uvs + return array + + def is_tile_inside(self, x, y): + "Return True if given x,y tile coord is within our bounds." + return 0 <= x < self.width and 0 <= y < self.height + + # get methods + def get_char_index_at(self, frame, layer, x, y): + "Return character index for given frame/layer/x,y tile." + return int(self.chars[frame][layer][y][x][0]) + + def get_fg_color_index_at(self, frame, layer, x, y): + "Return foreground color index for given frame/layer/x,y tile." + return int(self.fg_colors[frame][layer][y][x][0]) + + def get_bg_color_index_at(self, frame, layer, x, y): + "Return background color index for given frame/layer/x,y tile." + return int(self.bg_colors[frame][layer][y][x][0]) + + def get_char_transform_at(self, frame, layer, x, y): + "Return character transform enum for given frame/layer/x,y tile." + # read from mapping, rather than casting raw UV coords for tuple key + return self.uv_maps[frame][layer][y][x][0] + + def get_tile_at(self, frame, layer, x, y): + """ + Return (char index, fg color index, bg color index, transform) tuple + for given frame/layer/x,y tile. + """ + char = self.get_char_index_at(frame, layer, x, y) + fg = self.get_fg_color_index_at(frame, layer, x, y) + bg = self.get_bg_color_index_at(frame, layer, x, y) + xform = self.get_char_transform_at(frame, layer, x, y) + return char, fg, bg, xform + + # set methods + def set_char_index_at(self, frame, layer, x, y, char_index): + "Set character index for given frame/layer/x,y tile." + self.chars[frame][layer][y][x] = char_index + # next update, tell renderables on the changed frame to update buffers + self.char_changed_frames[frame] = True + + def set_color_at(self, frame, layer, x, y, color_index, fg=True): + """ + Set (fg or bg) color index for given frame/layer/x,y tile. + Foreground or background specified with "fg" boolean. + """ + if color_index is None: return + # modulo to resolve any negative indices + if 0 < color_index >= len(self.palette.colors): + color_index %= len(self.palette.colors) + # no functional differences between fg and bg color update, + # so use the same code path with different parameters + update_array = self.fg_colors[frame] if fg else self.bg_colors[frame] + update_array[layer][y][x] = color_index + self.fg_changed_frames[frame] = True + self.bg_changed_frames[frame] = True + + def set_all_non_transparent_colors(self, new_color_index): + """ + Set color index for all non-transparent (index 0) colors on all tiles + on all frames and layers. + """ + for frame, layer, x, y in TileIter(self): + # non-transparent color could be FG or BG + char, fg, bg, xform = self.get_tile_at(frame, layer, x, y) + change_fg = bg == 0 + self.set_color_at(frame, layer, x, y, new_color_index, change_fg) + + def set_all_bg_colors(self, new_color_index, exclude_layers=[]): + "Set background color index for all tiles on all frames and layers." + for frame, layer, x, y in TileIter(self): + # exclude all layers named in list + if self.layer_names[layer] in exclude_layers: + continue + self.set_color_at(frame, layer, x, y, new_color_index, fg=False) + + def set_char_transform_at(self, frame, layer, x, y, transform): + """ + Set character transform (X/Y flip, 0/90/180/270 rotate) for given + frame/layer/x,y tile. + """ + self.uv_mods[frame][layer][y][x] = uv_types[transform] + # keep mapping, used only for quick access, in sync + self.uv_maps[frame][layer][y][x] = transform + self.uv_changed_frames[frame] = True + + def set_tile_at(self, frame, layer, x, y, char_index=None, fg=None, bg=None, + transform=None, set_all=False): + """ + Convenience function for setting all tile attributes (character index, + foreground and background color, and transofmr) at once. + """ + # speedier path if we know all tile attributes will change, + # eg command undo/apply + if set_all: + self.set_char_index_at(frame, layer, x, y, char_index) + self.set_color_at(frame, layer, x, y, fg, True) + self.set_color_at(frame, layer, x, y, bg, False) + self.set_char_transform_at(frame, layer, x, y, transform) + return + if char_index is not None: + self.set_char_index_at(frame, layer, x, y, char_index) + if fg is not None: + self.set_color_at(frame, layer, x, y, fg, True) + if bg is not None: + self.set_color_at(frame, layer, x, y, bg, False) + if transform is not None: + self.set_char_transform_at(frame, layer, x, y, transform) + + def flip_all_xforms(self, flip_dict): + # kinda ugly brute force approach: individually set all tiles in all + # layers in all frames :/ + for frame in range(self.frames): + for layer in range(self.layers): + for y in range(self.height): + for x in range(self.width): + self.set_char_transform_at(frame, layer, x, y, flip_dict[self.get_char_transform_at(frame, layer, x, y)]) + + def flip_horizontal(self, frame, layer): + "Mirrors Art left-to-right." + command = EntireArtCommand(self) + command.save_tiles(before=True) + for a in [self.chars, self.fg_colors, self.bg_colors, self.uv_mods, self.uv_maps]: + a[frame][layer] = np.fliplr(a[frame][layer]) + if self.app.ui.flip_affects_xforms: + flips = { + UV_NORMAL: UV_FLIPX, + UV_FLIPX: UV_NORMAL, + UV_FLIPY: UV_ROTATE180, + UV_ROTATE180: UV_FLIPY, + UV_ROTATE90: UV_FLIP90, + UV_FLIP90: UV_ROTATE90, + UV_ROTATE270: UV_FLIP270, + UV_FLIP270: UV_ROTATE270 + } + self.flip_all_xforms(flips) + self.mark_frame_changed(frame) + self.set_unsaved_changes(True) + command.save_tiles(before=False) + self.command_stack.commit_commands([command]) + + def flip_vertical(self, frame, layer): + "Flips Art upside down." + command = EntireArtCommand(self) + command.save_tiles(before=True) + for a in [self.chars, self.fg_colors, self.bg_colors, self.uv_mods, self.uv_maps]: + a[frame][layer] = np.flipud(a[frame][layer]) + if self.app.ui.flip_affects_xforms: + flips = { + UV_NORMAL: UV_FLIPY, + UV_FLIPY: UV_NORMAL, + UV_FLIPX: UV_ROTATE180, + UV_ROTATE180: UV_FLIPX, + # vertical flip of rotated characters: use inverted (180) "flip" + UV_ROTATE90: UV_FLIP270, + UV_FLIP270: UV_ROTATE90, + UV_ROTATE270: UV_FLIP90, + UV_FLIP90: UV_ROTATE270 + } + self.flip_all_xforms(flips) + self.mark_frame_changed(frame) + self.set_unsaved_changes(True) + command.save_tiles(before=False) + self.command_stack.commit_commands([command]) + + def shift(self, frame, layer, amount_x, amount_y): + "Shift + wrap art on given frame and layer by given amount in X and Y." + for a in [self.chars, self.fg_colors, self.bg_colors, self.uv_mods, self.uv_maps]: + a[frame][layer] = np.roll(a[frame][layer], amount_x, 1) + a[frame][layer] = np.roll(a[frame][layer], amount_y, 0) + self.mark_frame_changed(frame) + + def shift_all_frames(self, amount_x, amount_y): + "Shift + wrap art in X and Y on all frames and layers." + for frame in range(self.frames): + for layer in range(self.layers): + self.shift(frame, layer, amount_x, amount_y) + + def update_saved_camera(self, camera): + self.camera_x, self.camera_y, self.camera_z = camera.x, camera.y, camera.z + + def update_selected_tile_attributes(self): + self.selected_char = self.app.ui.selected_char + self.selected_fg_color = self.app.ui.selected_fg_color + self.selected_bg_color = self.app.ui.selected_bg_color + self.selected_xform = self.app.ui.selected_xform + + def changed_this_frame(self): + return self.geo_changed or \ + True in self.char_changed_frames.values() or \ + True in self.fg_changed_frames.values() or \ + True in self.bg_changed_frames.values() or \ + True in self.uv_changed_frames.values() + + def update(self): + self.update_scripts() + # update our camera if we're active + if not self.app.game_mode and self.app.ui and self.app.ui.active_art is self: + self.update_saved_camera(self.app.camera) + self.update_selected_tile_attributes() + # update our renderables if they're on a frame whose char/colors changed + if self.geo_changed: + self.build_geo() + for r in self.renderables: + if self.geo_changed: + r.update_geo_buffers() + self.geo_changed = False + do_char = self.char_changed_frames[r.frame] + do_uvs = self.uv_changed_frames[r.frame] + do_fg = self.fg_changed_frames[r.frame] + do_bg = self.bg_changed_frames[r.frame] + if do_char or do_fg or do_bg or do_uvs: + r.update_tile_buffers(do_char, do_uvs, do_fg, do_bg) + # update instances if we chaned + if self.changed_this_frame() and self.instances: + for instance in self.instances: + if instance.update_when_source_changes: + instance.restore_from_source() + # empty table of changed frames + for f in range(self.frames): + self.char_changed_frames[f] = False + self.fg_changed_frames[f] = False + self.bg_changed_frames[f] = False + self.uv_changed_frames[f] = False + self.updated_this_tick = True + + def save_to_file(self): + """ + Write this Art to disk. + Build a dict serializing all this art's data and write it to a file. + """ + # if trying to save to a dir that doesn't exist, switch file to the + # Art Mode documents dir, which we should assume does exist + filedir = os.path.dirname(self.filename) + if not os.path.exists(filedir): + #self.app.log('Tried to save to directory %s which does not exist!' % filedir, error=True) + new_path = self.app.documents_dir + ART_DIR + os.path.basename(self.filename) + self.set_filename(new_path) + start_time = time.time() + # cursor might be hovering, undo any preview changes + for edit in self.app.cursor.preview_edits: + edit.undo() + d = {'width': self.width, 'height': self.height, + 'charset': self.charset.name, 'palette': self.palette.name, + 'active_frame': self.active_frame, + 'active_layer': self.active_layer, + 'camera': (self.camera_x, self.camera_y, self.camera_z), + 'selected_char': int(self.selected_char), + 'selected_fg_color': int(self.selected_fg_color), + 'selected_bg_color': int(self.selected_bg_color), + 'selected_xform': int(self.selected_xform) + } + # preferred character set and palette, default used if not found + # remember camera location + # frames and layers are dicts w/ lists of their data + a few properties + frames = [] + for frame_index in range(self.frames): + frame = { 'delay': self.frame_delays[frame_index] } + layers = [] + for layer_index in range(self.layers): + layer = {'z': self.layers_z[layer_index], + 'visible': int(self.layers_visibility[layer_index]), + 'name': self.layer_names[layer_index] + } + tiles = [] + for y in range(self.height): + for x in range(self.width): + char = int(self.chars[frame_index][layer_index][y][x][0]) + fg = int(self.fg_colors[frame_index][layer_index][y][x][0]) + bg = int(self.bg_colors[frame_index][layer_index][y][x][0]) + # use get method for transform, data's not simply an int + xform = int(self.get_char_transform_at(frame_index, layer_index, x, y)) + tiles.append({'char': char, 'fg': fg, 'bg': bg, 'xform': xform}) + layer['tiles'] = tiles + layers.append(layer) + frame['layers'] = layers + frames.append(frame) + d['frames'] = frames + # MAYBE-TODO: below gives not-so-pretty-printing, find out way to control + # formatting for better output + json.dump(d, open(self.filename, 'w'), sort_keys=True, indent=1) + end_time = time.time() + self.set_unsaved_changes(False) + #self.app.log('saved %s to disk in %.5f seconds' % (self.filename, end_time - start_time)) + self.app.log('saved %s' % self.filename) + # remove old thumbnail + thumb_dir = self.app.cache_dir + THUMBNAIL_CACHE_DIR + if os.path.exists(self.filename): + old_thumb_filename = thumb_dir + self.app.get_file_hash(self.filename) + '.png' + if os.path.exists(old_thumb_filename): + os.remove(old_thumb_filename) + # write thumbnail + new_thumb_filename = thumb_dir + self.app.get_file_hash(self.filename) + '.png' + write_thumbnail(self.app, self.filename, new_thumb_filename) + # thumbnail write process actually sets active frame! set it back + for r in self.renderables: + r.set_frame(self.active_frame) + + def ALT_save_to_file(self): + # TEST alt save format research + # main idea: save flat lists of char/fg/bg/xform per-frame-per-layer + # savetest.psci: 500x300x5, 38s vs 8.6s save, 63MB vs 33MB (vs 11MB w/ indent=None) + # TODO: + # - test read perf too + # - save version checking (if none found in PSCI, assume v1) + # - support multiple save+load code paths for different save versions + def get_flat_int_list(layer_array): + return list(map(int, layer_array.flatten()))[::4] + start_time = time.time() + d = {'width': self.width, 'height': self.height, + 'charset': self.charset.name, 'palette': self.palette.name, + 'active_frame': self.active_frame, + 'active_layer': self.active_layer, + 'camera': (self.camera_x, self.camera_y, self.camera_z) + } + frames = [] + for frame_index in range(self.frames): + frame = { 'delay': self.frame_delays[frame_index] } + layers = [] + for layer_index in range(self.layers): + layer = {'z': self.layers_z[layer_index], + 'visible': int(self.layers_visibility[layer_index]), + 'name': self.layer_names[layer_index] + } + # compile lists-of-ints for chars, colors, xforms + layer['chars'] = get_flat_int_list(self.chars[frame_index][layer_index]) + layer['fgs'] = get_flat_int_list(self.fg_colors[frame_index][layer_index]) + layer['bgs'] = get_flat_int_list(self.bg_colors[frame_index][layer_index]) + layer['xforms'] = get_flat_int_list(self.uv_maps[frame_index][layer_index]) + layers.append(layer) + frame['layers'] = layers + frames.append(frame) + d['frames'] = frames + json.dump(d, open(self.filename + '2', 'w'), sort_keys=True, indent=None) + end_time = time.time() + self.app.log('ALT saved %s to disk in %.5f seconds' % (self.filename, end_time - start_time)) + + def set_unsaved_changes(self, new_status): + "Mark this Art as having unsaved changes in Art Mode." + if new_status == self.unsaved_changes: + return + self.unsaved_changes = new_status + self.app.update_window_title() + + def set_filename(self, new_filename): + "Change Art's filename to new given string." + # append extension if missing + if not new_filename.endswith('.' + ART_FILE_EXTENSION): + new_filename += '.' + ART_FILE_EXTENSION + # if no dir given, assume documents/art/ dir + if os.path.basename(new_filename) == new_filename: + new_dir = self.app.documents_dir + # documents/game/art if game loaded + if self.app.gw.game_dir is not None: + new_dir = self.app.gw.game_dir + new_dir += ART_DIR + new_filename = new_dir + new_filename + # TODO: check if file already exists? warn user? + # (probably better to do this in new art / save as + self.filename = new_filename + + def run_script(self, script_filename, log=True, allow_undo=True): + """ + Run a script on this Art. Scripts contain arbitrary python expressions, + executed within Art's scope. Don't run art scripts you don't trust! + """ + script_filename = self.get_valid_script_filename(script_filename) + if not script_filename: + return + # remove any cursor-hover changes to art in memory + for edit in self.app.cursor.preview_edits: + edit.undo() + # create a command for undo/redo stack + if allow_undo: + command = EntireArtCommand(self) + command.save_tiles(before=True) + # catch and log any exception + try: + # run script + exec(open(script_filename).read()) + # (assume script changed art) + self.unsaved_changes = True + logline = 'Executed %s' % script_filename + if log: self.app.log(logline) + error = False + except Exception as e: + error = True + logline = 'Error executing %s:' % script_filename + self.app.log(logline) + # skip first 3 lines of callstack before artscript exec + for line in traceback.format_exc().split('\n')[3:]: + if line.strip(): + self.app.log(line.rstrip()) + # write "after" state of command and commit + if allow_undo: + command.save_tiles(before=False) + self.command_stack.commit_commands([command]) + self.app.ui.message_line.post_line(logline, error=error) + + def is_script_running(self, script_filename): + "Return True if script with given filename is currently running." + script_filename = self.get_valid_script_filename(script_filename) + return script_filename and script_filename in self.scripts + + def get_valid_script_filename(self, script_filename): + if not type(script_filename) is str: return None + return self.app.find_filename_path(script_filename, ART_SCRIPT_DIR, + SCRIPT_FILE_EXTENSION) + + def run_script_every(self, script_filename, rate=0.1): + "Start a script running on this Art at a regular rate." + script_filename = self.get_valid_script_filename(script_filename) + if not script_filename: + return + if script_filename in self.scripts: + self.app.log('script %s is already running.' % script_filename) + return + # add to "scripts currently running" list + self.scripts.append(script_filename) + self.script_rates.append(rate) + # set next time + next_run = (self.app.get_elapsed_time() / 1000) + rate + self.scripts_next_exec_time.append(next_run) + + def stop_script(self, script_filename): + "Halt this Art's execution of script with given filename." + # remove from running scripts, rate list, next_exec list + script_filename = self.get_valid_script_filename(script_filename) + if not script_filename: + return + if not script_filename in self.scripts: + self.app.log("script %s exists but isn't running." % script_filename) + return + script_index = self.scripts.index(script_filename) + self.scripts.pop(script_index) + self.script_rates.pop(script_index) + self.scripts_next_exec_time.pop(script_index) + + def stop_all_scripts(self): + "Halt all art scripts executing on this Art." + for script_filename in self.scripts: + self.stop_script(script_filename) + + def update_scripts(self): + if len(self.scripts) == 0: + return + # don't run on game art while paused + if self.app.game_mode and self.app.gw.paused: + return + for i,script in enumerate(self.scripts): + if (self.app.get_elapsed_time() / 1000) > self.scripts_next_exec_time[i]: + # execute script directly; don't use formal safeguards of run_script + exec(open(script).read()) + self.unsaved_changes = True + self.scripts_next_exec_time[i] += self.script_rates[i] + + def clear_line(self, frame, layer, line_y, fg_color_index=None, + bg_color_index=None): + "Clear characters on given horizontal line, to optional given colors." + # TODO: use numpy slicing to do this much more quickly! + for x in range(self.width): + self.set_char_index_at(frame, layer, x, line_y, 0) + if fg_color_index: + self.set_color_at(frame, layer, x, line_y, fg_color_index) + if bg_color_index: + self.set_color_at(frame, layer, x, line_y, bg_color_index, False) + + def write_string(self, frame, layer, x, y, text, fg_color_index=None, + bg_color_index=None, right_justify=False): + """ + Write given string starting at given frame/layer/x,y tile, with + optional given colors, left-justified by default. + Any characters not in character set's mapping data are ignored. + """ + if y >= self.height: + return + x %= self.width + if right_justify: + x_offset = -len(text) + else: + x_offset = 0 + # never let string drawing go out of bounds + text = text[:self.width - (x+x_offset)] + for char in text: + idx = self.charset.get_char_index(char) + self.set_char_index_at(frame, layer, x+x_offset, y, idx) + if fg_color_index is not None: + self.set_color_at(frame, layer, x+x_offset, y, fg_color_index, True) + if bg_color_index is not None: + self.set_color_at(frame, layer, x+x_offset, y, bg_color_index, False) + x_offset += 1 + + def composite_to(self, src_frame, src_layer, src_x, src_y, width, height, + dest_art, dest_frame, dest_layer, dest_x, dest_y): + for y in range(src_y, src_y + height): + for x in range(src_x, src_x + width): + # never try to write out of bounds on dest art; let user be lazy + if x < 0 or x >= dest_art.width or y < 0 or y >= dest_art.height: + continue + # only consider non-blank characters + if self.get_char_index_at(src_frame, src_layer, x, y) == 0: + continue + # skip tiles with transparent FG + # TODO: decide if there's a reasonable behavior here + if self.get_fg_color_index_at(src_frame, src_layer, x, y) == 0: + continue + ch, fg, bg, xform = self.get_tile_at(src_frame, src_layer, x, y) + # get coords in dest art space + dx = dest_x + (x - src_x) + dy = dest_y + (y - src_y) + # transparent bg -> keep dest bg, else use entire src tile + if self.get_bg_color_index_at(src_frame, src_layer, x, y) == 0: + bg = dest_art.get_bg_color_index_at(dest_frame, dest_layer, + dx, dy) + dest_art.set_tile_at(dest_frame, dest_layer, dx, dy, + ch, fg, bg, xform) + + def composite_from(self, src_art, src_frame, src_layer, src_x, src_y, + width, height, dest_frame, dest_layer, dest_x, dest_y): + src_art.composite_to(src_frame, src_layer, src_x, src_y, width, height, + self, dest_frame, dest_layer, dest_x, dest_y) + + def get_filtered_tiles(self, frame, layer, char_value, invert_filter=False): + "Return list of (x,y) tile coords that match (or don't) a char value." + tiles = [] + for y in range(self.height): + for x in range(self.width): + char = self.get_char_index_at(frame, layer, x, y) + if (not invert_filter and char == char_value) or \ + (invert_filter and char != char_value): + tiles.append((x, y)) + return tiles + + def get_blank_tiles(self, frame, layer): + "Return a list of (x,y) tile coords whose character is blank (0)." + return self.get_filtered_tiles(frame, layer, 0) + + def get_nonblank_tiles(self, frame, layer): + "Return a list of (x,y) tile coords whose character is NOT blank (0)." + return self.get_filtered_tiles(frame, layer, 0, invert_filter=True) + + def get_simple_name(self): + return os.path.splitext(os.path.basename(self.filename))[0] + + +class ArtFromDisk(Art): + "Subclass of Art that loads from a file. Main difference is initialization." + def __init__(self, filename, app): + self.valid = False + try: + d = json.load(open(filename)) + except: + return + width = d['width'] + height = d['height'] + charset = app.load_charset(d['charset']) + if not charset: + app.log('Character set %s not found!' % d['charset']) + return + palette = app.load_palette(d['palette']) + if not palette: + app.log('Palette %s not found!' % d['palette']) + return + # store loaded data for init_layers/frames + self.loaded_data = d + # base Art class initializes all vars, thereafter we just populate + Art.__init__(self, filename, app, charset, palette, + width, height) + # still loading... + self.valid = False + if not self.app.override_saved_camera: + cam = d['camera'] + self.camera_x, self.camera_y, self.camera_z = cam[0], cam[1], cam[2] + else: + self.update_saved_camera(self.app.camera) + # read saved tile attributes, which won't exist in pre-0.9.6 PSCI files + if 'selected_char' in d: + self.selected_char = d['selected_char'] + if 'selected_fg_color' in d: + self.selected_fg_color = d['selected_fg_color'] + if 'selected_bg_color' in d: + self.selected_bg_color = d['selected_bg_color'] + if 'selected_xform' in d: + self.selected_xform = d['selected_xform'] + # update renderables with new data + self.update() + # signify to app that this file loaded successfully + self.valid = True + + def log_init(self): + self.app.log('Loaded %s from disk:' % filename) + self.app.log(' character set: %s' % self.charset.name) + self.app.log(' palette: %s' % self.palette.name) + self.app.log(' width/height: %s x %s' % (self.width, self.height)) + self.app.log(' frames: %s' % self.frames) + self.app.log(' layers: %s' % self.layers) + + def init_layers(self): + frames = self.loaded_data['frames'] + # number of layers should be same for all frames + self.layers = len(frames[0]['layers']) + self.layers_z, self.layers_visibility, self.layer_names = [], [], [] + for i,layer in enumerate(frames[0]['layers']): + self.layers_z.append(layer['z']) + self.layers_visibility.append(bool(layer.get('visible', 1))) + layer_num = str(i + 1) + self.layer_names.append(layer.get('name', 'Layer %s' % layer_num)) + active_layer = self.loaded_data.get('active_layer', 0) + self.set_active_layer(active_layer) + + def init_frames(self): + frames = self.loaded_data['frames'] + self.frames = len(frames) + self.active_frame = 0 + self.frame_delays = [] + # build tile data arrays from frame+layer lists + shape = (self.layers, self.height, self.width, 4) + for frame in frames: + self.frame_delays.append(frame['delay']) + chars = np.zeros(shape, dtype=np.float32) + uvs = self.new_uv_layers(self.layers) + uv_maps = np.zeros(shape, dtype=np.uint32) + fg_colors = chars.copy() + bg_colors = chars.copy() + for layer_index,layer in enumerate(frame['layers']): + x, y = 0, 0 + for tile in layer['tiles']: + chars[layer_index][y][x] = tile['char'] + fg_colors[layer_index][y][x] = tile['fg'] + bg_colors[layer_index][y][x] = tile['bg'] + uvs[layer_index][y][x] = uv_types[tile.get('xform', UV_NORMAL)] + uv_maps[layer_index][y][x] = tile.get('xform', UV_NORMAL) + x += 1 + if x >= self.width: + x = 0 + y += 1 + self.chars.append(chars) + self.fg_colors.append(fg_colors) + self.bg_colors.append(bg_colors) + self.uv_mods.append(uvs) + self.uv_maps.append(uv_maps) + # set active frame properly + active_frame = self.loaded_data.get('active_frame', 0) + self.set_active_frame(active_frame) + + def first_update(self): + # do nothing on first update during Art.init; we update after loading + pass + + +class ArtInstance(Art): + """ + Deep copy / clone of a source Art that can hold unique changes and be + restored to its source. + """ + update_when_source_changes = True + "Set False if you want to manually update this Art." + def __init__(self, source): + self.source = source + # unique(?) filename + self.filename = '%s_Instance%i' % (source.filename, time.time()) + self.app = source.app + self.instances = None + self.char_changed_frames, self.uv_changed_frames = {}, {} + self.fg_changed_frames, self.bg_changed_frames = {}, {} + # init lists that should be retained across refreshes + self.scripts = [] + self.script_rates = [] + self.scripts_next_exec_time = [] + self.renderables = [] + # instances shouldn't have instances; cause user problems if attempted + self.instances = None + self.restore_from_source() + self.source.instances.append(self) + + def set_unsaved_changes(self, new_status): + pass + + def restore_from_source(self): + "Restore ArtInstance to its source Art's new values." + # copy common references/values + for prop in ['app', 'width', 'height', 'charset', 'palette', + 'quad_width', 'quad_height', 'layers', 'frames']: + setattr(self, prop, getattr(self.source, prop)) + # copy lists + self.layers_z = self.source.layers_z[:] + self.layers_visibility = self.source.layers_visibility[:] + self.layer_names = self.source.layer_names[:] + self.frame_delays = self.source.frame_delays[:] + # deep copy tile data lists + self.chars, self.fg_colors, self.bg_colors = [], [], [] + self.uv_mods, self.uv_maps = [], [] + for frame_chars in self.source.chars: + self.chars.append(frame_chars.copy()) + for frame_uvs in self.source.uv_mods: + self.uv_mods.append(frame_uvs.copy()) + for frame_uv_maps in self.source.uv_maps: + self.uv_maps.append(frame_uv_maps.copy()) + for frame_fg_colors in self.source.fg_colors: + self.fg_colors.append(frame_fg_colors.copy()) + for frame_bg_colors in self.source.bg_colors: + self.bg_colors.append(frame_bg_colors.copy()) + self.geo_changed = True + self.mark_all_frames_changed() + self.update() + + +class TileIter: + "Iterator for iterating over all tiles in all layers and frames in an Art." + def __init__(self, art): + self.width, self.height = art.width, art.height + self.frames, self.layers = art.frames, art.layers + + def __iter__(self): + self.frame, self.layer = 0, 0 + self.x, self.y = -1, 0 + return self + + def __next__(self): + self.x += 1 + if self.x >= self.width: + self.x = 0 + self.y += 1 + if self.y >= self.height: + self.y = 0 + self.layer += 1 + if self.layer >= self.layers: + self.layer = 0 + self.frame += 1 + if self.frame >= self.frames: + raise StopIteration + return self.frame, self.layer, self.x, self.y diff --git a/art/blob_shadow.psci b/art/blob_shadow.psci new file mode 100644 index 0000000..b243dee --- /dev/null +++ b/art/blob_shadow.psci @@ -0,0 +1,122 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 2.0, + -2.0, + 3.50242610515142 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 104, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 134, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 177, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 177, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 4, + "palette": "c64_original", + "width": 4 +} \ No newline at end of file diff --git a/art/default_player_stand.psci b/art/default_player_stand.psci new file mode 100644 index 0000000..38035c4 --- /dev/null +++ b/art/default_player_stand.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 8.989488752238989 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 252, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/art/game_object_default.psci b/art/game_object_default.psci new file mode 100644 index 0000000..536dcec --- /dev/null +++ b/art/game_object_default.psci @@ -0,0 +1,694 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 9.78410337431772, + -4.180414323343156, + 11.151385425870988 + ], + "charset": "ui", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 128, + "fg": 10, + "xform": 2 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 11, + "xform": 3 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 31, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 32, + "fg": 4, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 28, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 48, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 39, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 2, + "xform": 5 + }, + { + "bg": 1, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 73, + "fg": 2, + "xform": 5 + }, + { + "bg": 1, + "char": 100, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 5 + }, + { + "bg": 1, + "char": 94, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 92, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 2, + "xform": 5 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 14, + "xform": 1 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 15, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 131, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 5, + "palette": "c64_original", + "width": 11 +} \ No newline at end of file diff --git a/art/hello1.psci b/art/hello1.psci new file mode 100644 index 0000000..6897600 --- /dev/null +++ b/art/hello1.psci @@ -0,0 +1,8265 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 4.0, + -4.0, + 5.625 + ], + "charset": "c64_edscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 72, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 26, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 61, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 69, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 26, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 61, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 26, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 61, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 27, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 68, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 79, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 27, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 68, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 27, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 68, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 14, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.25 + }, + { + "name": "Layer 3", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 26, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 61, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.5 + } + ] + } + ], + "height": 8, + "palette": "c64_edscii", + "selected_bg_color": 1, + "selected_char": 14, + "selected_fg_color": 16, + "selected_xform": 0, + "width": 8 +} \ No newline at end of file diff --git a/art/loc_marker.psci b/art/loc_marker.psci new file mode 100644 index 0000000..834dae6 --- /dev/null +++ b/art/loc_marker.psci @@ -0,0 +1,81 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1.5, + -1.5, + 7.369075414190879 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 30, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 31, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 75, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 31, + "fg": 16, + "xform": 2 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 30, + "fg": 13, + "xform": 2 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 3, + "palette": "c64_original", + "width": 3 +} \ No newline at end of file diff --git a/art/new.psci b/art/new.psci new file mode 100644 index 0000000..5c8923d --- /dev/null +++ b/art/new.psci @@ -0,0 +1,9631 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 20, + -15, + 16 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 4, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 5, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 8, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 16, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 12, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 1, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 25, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 19, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 3, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 9, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 9, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 3, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 6, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 155, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 23, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 140, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 33, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 16, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 152, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 1, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 19, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 3, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 9, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 9, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 44, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 140, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 44, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 134, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 140, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 5, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 149, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 152, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 135, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 3, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 135, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 44, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 6, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 3, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 4, + "xform": 0 + }, + { + "bg": 7, + "char": 134, + "fg": 5, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 6, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 8, + "xform": 0 + }, + { + "bg": 7, + "char": 148, + "fg": 9, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 11, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 12, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 13, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 14, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 7, + "char": 44, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 2, + "fg": 15, + "xform": 0 + }, + { + "bg": 2, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 3, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 4, + "char": 138, + "fg": 15, + "xform": 0 + }, + { + "bg": 5, + "char": 134, + "fg": 15, + "xform": 0 + }, + { + "bg": 6, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 148, + "fg": 15, + "xform": 0 + }, + { + "bg": 9, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 10, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 11, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 12, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 14, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 16, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 15, + "char": 13, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 142, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 146, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 132, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 129, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 147, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 147, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 142, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 141, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 47, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 15, + "char": 5, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 141, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 147, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 132, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 145, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 143, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 16, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 15, + "char": 19, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 143, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 128, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 130, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 132, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 129, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 128, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 145, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 143, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 138, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 135, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 15, + "char": 13, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 136, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 131, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 131, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 139, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 132, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 140, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 142, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 146, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 132, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 47, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 15, + "char": 146, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 135, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 136, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 133, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 147, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 43, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 128, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 145, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 145, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 142, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 150, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 138, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 132, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 152, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 146, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 143, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 135, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 149, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 150, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 148, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 16, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 138, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 145, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 148, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 135, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 140, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 148, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 150, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 135, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 147, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 16, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 139, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 152, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 146, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 136, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 130, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 142, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 73, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 74, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 73, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 74, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 8, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 128, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 149, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 132, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 133, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 148, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 141, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 33, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 93, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 89, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 90, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 95, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 84, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 83, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 84, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 83, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 103, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 88, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 100, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 115, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 88, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 89, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 89, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 69, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 74, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 100, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 100, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 100, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 7, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 155, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 99, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 155, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 155, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 155, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 155, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 155, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 76, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 155, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 40, + "palette": "c64_original", + "selected_bg_color": 7, + "selected_char": 8, + "selected_fg_color": 15, + "selected_xform": 0, + "width": 40 +} \ No newline at end of file diff --git a/art/owell.ed b/art/owell.ed new file mode 100644 index 0000000000000000000000000000000000000000..dd0896964afdf9cd4f8c8b249f7b2444fd5f5293 GIT binary patch literal 252 zcmZSJXJEjAxNu1T#SwDV3>-i{goJ27$j#*EkYnWll5mqiay1-4#2F4l)f}AF93V$P d^#P@k3 neighbors dies from overcrowding + elif neighbors > 3: + self.set_char_index_at(frame, layer, x, y, 0) + # rule #1: any living cell with <2 neighbors dies from underpopulation + elif neighbors < 2: + self.set_char_index_at(frame, layer, x, y, 0) + # rule #2: any living cell with 2 or 3 neighbors survives diff --git a/artscripts/dissolv.arsc b/artscripts/dissolv.arsc new file mode 100644 index 0000000..14125b1 --- /dev/null +++ b/artscripts/dissolv.arsc @@ -0,0 +1,23 @@ + +# quickie dissolve effect + +frame, layer = 0, 0 + +left_x = int(self.width / 2) +top_y = int(self.height / 2) + +for x in range(int(self.width / 2)): + for y in range(self.height): + char = self.get_char_index_at(frame, layer, x, y) + char = max(0, char - 1) + if x > 0: + self.set_char_index_at(frame, layer, x - 1, y, char) + self.set_char_index_at(frame, layer, x, y, 0) + +for x in range(self.width - 1, int(self.width / 2), -1): + for y in range(self.height): + char = self.get_char_index_at(frame, layer, x, y) + char = max(0, char - 1) + if x < self.width - 1: + self.set_char_index_at(frame, layer, x + 1, y, char) + self.set_char_index_at(frame, layer, x, y, 0) diff --git a/artscripts/evap.arsc b/artscripts/evap.arsc new file mode 100644 index 0000000..1e74826 --- /dev/null +++ b/artscripts/evap.arsc @@ -0,0 +1,14 @@ + +# quickie "evaporate" effect + +spesh_idx = 127 + +for frame, layer, x, y in TileIter(self): + char = self.get_char_index_at(frame, layer, x, y) + if char != spesh_idx and char != 0: + self.set_char_index_at(frame, layer, x, y, spesh_idx) + elif y < self.height - 1: + c,f,b,xf = self.get_tile_at(frame, layer, x, y+1) + self.set_tile_at(frame, layer, x, y, c, f, b) + elif y == self.height - 1: + self.set_char_index_at(frame, layer, x, y, 0) diff --git a/artscripts/hello1.arsc b/artscripts/hello1.arsc new file mode 100644 index 0000000..fe4bff6 --- /dev/null +++ b/artscripts/hello1.arsc @@ -0,0 +1,202 @@ +# hello1 test art generator script +# every line in this file must be a valid python expression. +# "self" is the Art that's running us, +# so we have full access to its namespace! + +# sets some test data: +# c64_edscii charset & palette +# add tiles/layers if not 8x8, 3 layers + +self.set_charset_by_name('c64_edscii') +self.set_palette_by_name('c64_edscii') + +if self.layers < 3: + self.add_layer(0.25) + self.add_layer(0.5) + +if self.width < 8 or self.height < 8: + self.resize(8, 8) + +# clear 1st layer to black, 2nd and 3rd to transparent +self.clear_frame_layer(0, 0, self.palette.darkest_index) +self.clear_frame_layer(0, 1) +self.clear_frame_layer(0, 2) +# write white text onto 3 layers +color = self.palette.lightest_index +self.write_string(0, 0, 1, 1, 'Hello.', color) +self.set_char_transform_at(0, 0, 2, 1, UV_ROTATE90) +# draw snaky ring thingy +# color ramp: 2, 10, 6, 13, 14, 12, 3, back to 2 +# top +self.set_tile_at(0, 1, 1, 3, 119, 2) +self.set_tile_at(0, 1, 2, 3, 102, 10) +self.set_tile_at(0, 1, 3, 3, 102, 6) +self.set_tile_at(0, 1, 4, 3, 102, 13) +self.set_tile_at(0, 1, 5, 3, 120, 14) +# sides +self.set_tile_at(0, 1, 1, 4, 145, 3) +self.set_tile_at(0, 1, 5, 4, 145, 12) +self.set_tile_at(0, 1, 1, 5, 145, 12) +self.set_tile_at(0, 1, 5, 5, 145, 3) +# bottom +self.set_tile_at(0, 1, 1, 6, 121, 14) +self.set_tile_at(0, 1, 2, 6, 102, 13) +self.set_tile_at(0, 1, 3, 6, 102, 6) +self.set_tile_at(0, 1, 4, 6, 102, 10) +self.set_tile_at(0, 1, 5, 6, 122, 2) +# :] +char = self.charset.get_char_index(':') +self.set_tile_at(0, 2, 3, 4, char, color) +char = self.charset.get_char_index(']') +self.set_tile_at(0, 2, 4, 4, char, color) + +# add frames and animate 'em +self.duplicate_frame(0) +self.duplicate_frame(0) +self.duplicate_frame(0) +self.duplicate_frame(0) +self.duplicate_frame(0) +self.duplicate_frame(0) + +# cycle capitals through "hello" text +h = self.charset.get_char_index('h') +char = self.charset.get_char_index('E') +self.set_char_index_at(1, 0, 2, 1, char) +self.set_char_index_at(1, 0, 1, 1, h) +char = self.charset.get_char_index('L') +self.set_char_index_at(2, 0, 3, 1, char) +self.set_char_index_at(2, 0, 1, 1, h) +self.set_char_index_at(3, 0, 4, 1, char) +self.set_char_index_at(3, 0, 1, 1, h) +char = self.charset.get_char_index('O') +self.set_char_index_at(4, 0, 5, 1, char) +self.set_char_index_at(4, 0, 1, 1, h) +char = self.charset.get_char_index('!') +self.set_char_index_at(5, 0, 6, 1, char) +self.set_char_index_at(5, 0, 1, 1, h) +self.set_char_index_at(6, 0, 1, 1, h) +# make smiley go from ;] to :D +char = self.charset.get_char_index(';') +self.set_char_index_at(3, 2, 3, 4, char) +self.set_char_index_at(4, 2, 3, 4, char) +self.set_char_index_at(5, 2, 3, 4, char) +char = self.charset.get_char_index('D') +self.set_char_index_at(3, 2, 4, 4, char) +self.set_char_index_at(4, 2, 4, 4, char) +self.set_char_index_at(5, 2, 4, 4, char) +self.set_char_transform_at(4, 2, 4, 4, UV_FLIPX) +# cycle colors for snaky thing +# +# frame 1 top +# +self.set_color_at(1, 1, 1, 3, 10) +self.set_color_at(1, 1, 2, 3, 6) +self.set_color_at(1, 1, 3, 3, 13) +self.set_color_at(1, 1, 4, 3, 14) +self.set_color_at(1, 1, 5, 3, 12) +# frame 1 sides +self.set_color_at(1, 1, 1, 4, 2) +self.set_color_at(1, 1, 5, 4, 3) +self.set_color_at(1, 1, 1, 5, 3) +self.set_color_at(1, 1, 5, 5, 2) +# frame 1 bottom +self.set_color_at(1, 1, 1, 6, 12) +self.set_color_at(1, 1, 2, 6, 14) +self.set_color_at(1, 1, 3, 6, 13) +self.set_color_at(1, 1, 4, 6, 6) +self.set_color_at(1, 1, 5, 6, 10) +# +# frame 2 top +# +self.set_color_at(2, 1, 1, 3, 6) +self.set_color_at(2, 1, 2, 3, 13) +self.set_color_at(2, 1, 3, 3, 14) +self.set_color_at(2, 1, 4, 3, 12) +self.set_color_at(2, 1, 5, 3, 3) +# frame 2 sides +self.set_color_at(2, 1, 1, 4, 10) +self.set_color_at(2, 1, 5, 4, 2) +self.set_color_at(2, 1, 1, 5, 2) +self.set_color_at(2, 1, 5, 5, 10) +# frame 2 bottom +self.set_color_at(2, 1, 1, 6, 3) +self.set_color_at(2, 1, 2, 6, 12) +self.set_color_at(2, 1, 3, 6, 14) +self.set_color_at(2, 1, 4, 6, 13) +self.set_color_at(2, 1, 5, 6, 6) +# +# frame 3 top +# +self.set_color_at(3, 1, 1, 3, 13) +self.set_color_at(3, 1, 2, 3, 14) +self.set_color_at(3, 1, 3, 3, 12) +self.set_color_at(3, 1, 4, 3, 3) +self.set_color_at(3, 1, 5, 3, 2) +# frame 3 sides +self.set_color_at(3, 1, 1, 4, 6) +self.set_color_at(3, 1, 5, 4, 10) +self.set_color_at(3, 1, 1, 5, 10) +self.set_color_at(3, 1, 5, 5, 6) +# frame 3 bottom +self.set_color_at(3, 1, 1, 6, 2) +self.set_color_at(3, 1, 2, 6, 3) +self.set_color_at(3, 1, 3, 6, 12) +self.set_color_at(3, 1, 4, 6, 14) +self.set_color_at(3, 1, 5, 6, 13) +# +# frame 4 top +# +self.set_color_at(4, 1, 1, 3, 14) +self.set_color_at(4, 1, 2, 3, 12) +self.set_color_at(4, 1, 3, 3, 3) +self.set_color_at(4, 1, 4, 3, 2) +self.set_color_at(4, 1, 5, 3, 10) +# frame 4 sides +self.set_color_at(4, 1, 1, 4, 13) +self.set_color_at(4, 1, 5, 4, 6) +self.set_color_at(4, 1, 1, 5, 6) +self.set_color_at(4, 1, 5, 5, 13) +# frame 4 bottom +self.set_color_at(4, 1, 1, 6, 10) +self.set_color_at(4, 1, 2, 6, 2) +self.set_color_at(4, 1, 3, 6, 3) +self.set_color_at(4, 1, 4, 6, 12) +self.set_color_at(4, 1, 5, 6, 14) +# +# frame 5 top +# +self.set_color_at(5, 1, 1, 3, 12) +self.set_color_at(5, 1, 2, 3, 3) +self.set_color_at(5, 1, 3, 3, 2) +self.set_color_at(5, 1, 4, 3, 10) +self.set_color_at(5, 1, 5, 3, 6) +# frame 5 sides +self.set_color_at(5, 1, 1, 4, 14) +self.set_color_at(5, 1, 5, 4, 13) +self.set_color_at(5, 1, 1, 5, 13) +self.set_color_at(5, 1, 5, 5, 14) +# frame 5 bottom +self.set_color_at(5, 1, 1, 6, 6) +self.set_color_at(5, 1, 2, 6, 10) +self.set_color_at(5, 1, 3, 6, 2) +self.set_color_at(5, 1, 4, 6, 3) +self.set_color_at(5, 1, 5, 6, 12) +# +# frame 6 top +# +self.set_color_at(6, 1, 1, 3, 3) +self.set_color_at(6, 1, 2, 3, 2) +self.set_color_at(6, 1, 3, 3, 10) +self.set_color_at(6, 1, 4, 3, 6) +self.set_color_at(6, 1, 5, 3, 13) +# frame 6 sides +self.set_color_at(6, 1, 1, 4, 12) +self.set_color_at(6, 1, 5, 4, 14) +self.set_color_at(6, 1, 1, 5, 14) +self.set_color_at(6, 1, 5, 5, 12) +# frame 6 bottom +self.set_color_at(6, 1, 1, 6, 13) +self.set_color_at(6, 1, 2, 6, 6) +self.set_color_at(6, 1, 3, 6, 10) +self.set_color_at(6, 1, 4, 6, 2) +self.set_color_at(6, 1, 5, 6, 3) diff --git a/artscripts/mutate.arsc b/artscripts/mutate.arsc new file mode 100644 index 0000000..2c6bd02 --- /dev/null +++ b/artscripts/mutate.arsc @@ -0,0 +1,13 @@ + +# mutate! +# change a random tile on a random layer + +x = random.randint(0, self.width-1) +y = random.randint(0, self.height-1) +layer = random.randint(0, self.layers-1) +char = random.randint(0, 128) +color_index = self.palette.get_random_color_index() +self.set_char_index_at(0, layer, x, y, char) +self.set_color_at(0, layer, x, y, color_index) +color_index = self.palette.get_random_color_index() +self.set_color_at(0, layer, x, y, color_index, False) diff --git a/audio.py b/audio.py new file mode 100644 index 0000000..cf03c5e --- /dev/null +++ b/audio.py @@ -0,0 +1,145 @@ + +import ctypes +from sdl2 import sdlmixer + +class PlayingSound: + "represents a currently playing sound" + def __init__(self, filename, channel, game_object, looping=False): + self.filename = filename + self.channel = channel + self.go = game_object + self.looping = looping + +class AudioLord: + + sample_rate = 44100 + + def __init__(self, app): + self.app = app + # initialize audio + sdlmixer.Mix_Init(sdlmixer.MIX_INIT_OGG|sdlmixer.MIX_INIT_MOD) + sdlmixer.Mix_OpenAudio(self.sample_rate, sdlmixer.MIX_DEFAULT_FORMAT, + 2, 1024) + self.reset() + # sound callback + # retain handle to C callable even though we don't use it directly + self.sound_cb = ctypes.CFUNCTYPE(None, ctypes.c_int)(self.channel_finished) + sdlmixer.Mix_ChannelFinished(self.sound_cb) + + def channel_finished(self, channel): + # remove sound from dicts of playing channels and sounds + old_sound = self.playing_channels.pop(channel) + self.playing_sounds[old_sound.filename].remove(old_sound) + # remove empty list + if self.playing_sounds[old_sound.filename] == []: + self.playing_sounds.pop(old_sound.filename) + + def reset(self): + self.stop_all_music() + self.stop_all_sounds() + # current playing sounds, of form: + # {'filename': [list of PlayingSound objects]} + self.playing_sounds = {} + # current playing channels, of form: + # {channel_number: PlayingSound object} + self.playing_channels = {} + # handle init case where self.musics doesn't exist yet + if hasattr(self, 'musics'): + for music in self.musics.values(): + sdlmixer.Mix_FreeMusic(music) + self.musics = {} + if hasattr(self, 'sounds'): + for sound in self.sounds.values(): + sdlmixer.Mix_FreeChunk(sound) + self.sounds = {} + + def register_sound(self, sound_filename): + if sound_filename in self.sounds: + return self.sounds[sound_filename] + new_sound = sdlmixer.Mix_LoadWAV(bytes(sound_filename, 'utf-8')) + self.sounds[sound_filename] = new_sound + return new_sound + + def object_play_sound(self, game_object, sound_filename, + loops=0, allow_multiple=False): + # TODO: volume param? sdlmixer.MIX_MAX_VOLUME if not specified + # bail if same object isn't allowed to play same sound multiple times + if not allow_multiple and sound_filename in self.playing_sounds: + for playing_sound in self.playing_sounds[sound_filename]: + if playing_sound.go is game_object: + return + sound = self.register_sound(sound_filename) + channel = sdlmixer.Mix_PlayChannel(-1, sound, loops) + # add sound to dicts of playing sounds and channels + new_playing_sound = PlayingSound(sound_filename, channel, game_object, + loops == -1) + if sound_filename in self.playing_sounds: + self.playing_sounds[sound_filename].append(new_playing_sound) + else: + self.playing_sounds[sound_filename] = [new_playing_sound] + self.playing_channels[channel] = new_playing_sound + + def object_stop_sound(self, game_object, sound_filename): + if not sound_filename in self.playing_sounds: + return + # stop all instances of this sound object might be playing + for sound in self.playing_sounds[sound_filename]: + if game_object is sound.go: + sdlmixer.Mix_HaltChannel(sound.channel) + + def object_stop_all_sounds(self, game_object): + sounds_to_stop = [] + for sound_filename,sounds in self.playing_sounds.items(): + for sound in sounds: + if sound.go is game_object: + sounds_to_stop.append(sound_filename) + for sound_filename in sounds_to_stop: + self.object_stop_sound(game_object, sound_filename) + + def stop_all_sounds(self): + sdlmixer.Mix_HaltChannel(-1) + + def set_music(self, music_filename): + if music_filename in self.musics: + return + new_music = sdlmixer.Mix_LoadMUS(bytes(music_filename, 'utf-8')) + self.musics[music_filename] = new_music + + def start_music(self, music_filename, loops=-1): + # TODO: fade in support etc + music = self.musics[music_filename] + sdlmixer.Mix_PlayMusic(music, loops) + self.current_music = music_filename + + def pause_music(self): + if self.current_music: + sdlmixer.Mix_PauseMusic() + + def resume_music(self): + if self.current_music: + sdlmixer.Mix_ResumeMusic() + + def stop_music(self, music_filename): + # TODO: fade out support + sdlmixer.Mix_HaltMusic() + self.current_music = None + + def is_music_playing(self): + return bool(sdlmixer.Mix_PlayingMusic()) + + def resume_music(self): + if self.current_music: + sdlmixer.Mix_ResumeMusic() + + def stop_all_music(self): + sdlmixer.Mix_HaltMusic() + self.current_music = None + + def update(self): + if self.current_music and not self.is_music_playing(): + self.current_music = None + + def destroy(self): + self.reset() + sdlmixer.Mix_CloseAudio() + sdlmixer.Mix_Quit() diff --git a/binds.cfg.default b/binds.cfg.default new file mode 100644 index 0000000..5bc6584 --- /dev/null +++ b/binds.cfg.default @@ -0,0 +1,177 @@ +# DEFAULT BIND FILE TEMPLATE, DO NOT MODIFY +# user keybinds file +# accepted modifiers: ctrl, alt, shift +# keys must be equivalent to output of sdl2.SDL_GetKeyName(), +# eg return, tab, backspace + +self.edit_bind_src = { + 'ctrl q' : 'quit', + '`' : 'toggle_console', + 'ctrl m' : 'import_file', + 'ctrl e' : ('export_file_last', 'edit_art_for_selected_objects'), + 'ctrl -' : 'decrease_ui_scale', + 'ctrl =' : 'increase_ui_scale', + 'alt return': 'toggle_fullscreen', + '1' : 'decrease_brush_size', + '2' : 'increase_brush_size', + '3' : 'cycle_char_forward', + 'shift 3' : 'cycle_char_backward', + '4' : 'cycle_fg_forward', + 'shift 4' : 'cycle_fg_backward', + '5' : 'cycle_bg_forward', + 'shift 5' : 'cycle_bg_backward', + '6' : 'cycle_xform_forward', + 'shift 6' : 'cycle_xform_backward', + 'c' : 'toggle_affects_char', + 'f' : 'toggle_affects_fg', + 'b' : 'toggle_affects_bg', + # bind can also be a tuple of function names + 'x' : ('toggle_affects_xform', 'game_frob'), + 'z' : ('toggle_zoom_extents', 'game_grab'), + 'shift r' : 'toggle_crt', + 'a' : 'select_pencil_tool', + 'e' : 'select_erase_tool', + 'r' : 'select_rotate_tool', + 't' : 'select_text_tool', + 's' : 'select_select_tool', + 'ctrl x' : 'cut_selection', + 'ctrl c' : 'copy_selection', + 'v' : 'select_paste_tool', + 'ctrl v' : 'select_paste_tool', + 'i' : 'select_fill_tool', + 'escape' : 'cancel', + 'ctrl d' : 'select_none', + 'ctrl a' : 'select_all', + 'ctrl i' : 'select_invert', + 'delete' : 'erase_selection_or_art', + 'backspace': 'erase_selection_or_art', + 'g' : 'toggle_game_mode', + 'shift e' : 'toggle_game_edit_ui', + 'ctrl shift g': 'set_game_dir', + 'ctrl g' : 'load_game_state', + 'f2' : 'reset_game', + 'space' : 'toggle_picker', + 'w' : 'swap_fg_bg_colors', + 'ctrl s' : 'save_current', + 'shift u' : 'toggle_ui_visibility', + 'shift g' : 'toggle_grid_visibility', + ',' : 'previous_frame', + '.' : 'next_frame', + 'p' : 'toggle_anim_playback', + '[' : 'previous_layer', + ']' : 'next_layer', + 'shift ctrl tab': 'previous_art', + 'ctrl tab' : 'next_art', + 'ctrl z' : 'undo', + 'shift ctrl z': 'redo', + 'q' : 'quick_grab', + 'shift t' : 'toggle_camera_tilt', + 'shift i' : 'toggle_overlay_image', + '=' : 'camera_zoom_in_proportional', + '-' : 'camera_zoom_out_proportional', + 'return' : 'select_or_paint', + 'shift return': 'add_to_list_selection', + 'ctrl return': 'remove_from_list_selection', + 'f12' : 'screenshot', + 'ctrl shift m' : 'run_test_mutate', + 'up' : 'arrow_up', + 'down' : 'arrow_down', + 'left' : 'arrow_left', + 'right' : 'arrow_right', + 'home' : 'center_cursor_in_art', + 'l' : 'cycle_inactive_layer_visibility', + 'alt f' : 'open_file_menu', + 'alt e' : 'open_edit_menu', + 'alt t' : 'open_tool_menu', + 'alt v' : 'open_view_menu', + 'alt a' : 'open_art_menu', + 'alt r' : 'open_frame_menu', + 'alt l' : 'open_layer_menu', + 'alt c' : 'open_char_color_menu', + 'alt g' : 'open_game_menu', + 'alt h' : 'open_help_menu', + 'alt s' : 'open_state_menu', + 'alt w' : 'open_world_menu', + 'alt o' : 'open_object_menu', + 'ctrl o' : 'open_art', + 'ctrl n' : 'new_art', + 'ctrl w' : 'close_art', + 'f1' : 'open_help_docs', + 'ctrl k' : 'crop_to_selection', + 'ctrl r' : 'resize_art', + 'ctrl t' : 'run_art_script_last', + 'ctrl f' : 'add_frame', + 'ctrl l' : ('add_layer', 'select_objects'), + 'ctrl h' : 'choose_charset', + 'ctrl p' : ('choose_palette', 'choose_spawn_object_class'), + 'o' : 'toggle_onion_visibility', + 'f5' : 'toggle_all_origin_viz', + 'f6' : 'toggle_all_bounds_viz', + 'f7' : 'toggle_all_collision_viz', + 'f8' : 'toggle_debug_text', + 'f9' : 'toggle_fps_counter', + 'f3' : 'toggle_collision_on_selected', + 'tab' : 'switch_edit_panel_focus', + 'shift tab': 'switch_edit_panel_focus_reverse', + # commands that don't have a shortcut still need to be declared + # bind strings preceded by a _ will not be displayed + '_saveas' : 'save_art_as', + '_grab' : 'select_grab_tool', + '_switch_art' : 'art_switch_to', + '_switch_layer' : 'layer_switch_to', + '_layer_viz' : 'toggle_layer_visibility', + '_hidden_layers': 'toggle_hidden_layers_visible', + '_website' : 'open_website', + '_docs' : 'generate_docs', + '_dup_frame' : 'duplicate_frame', + '_frame_delay' : 'change_frame_delay', + '_frame_delay_all': 'change_frame_delay_all', + '_frame_index' : 'change_frame_index', + '_delete_frame' : 'delete_frame', + '_dup_layer' : 'duplicate_layer', + '_layer_name' : 'change_layer_name', + '_layer_z' : 'change_layer_z', + '_delete_layer' : 'delete_layer', + '_pal_from_file': 'palette_from_file', + '_cycle_onion_frames': 'cycle_onion_frames', + '_cycle_onion_display': 'cycle_onion_ahead_behind', + '_open_game_assets' : 'open_all_game_assets', + '_export_file' : 'export_file', + '_import_file': 'import_file', + '_revert' : 'revert_art', + '_new_game' : 'new_game_dir', + '_duplicate_objects': 'duplicate_selected_objects', + '_edit_world' : 'edit_world_properties', + '_save_game' : 'save_game_state', + '_change_room' : 'change_current_room', + '_change_room_to': 'change_current_room_to', + '_add_room' : 'add_room', + '_remove_room' : 'remove_current_room', + '_room_objects' : 'set_room_objects', + '_object_rooms' : 'set_object_rooms', + '_show_all_rooms': 'toggle_all_rooms_visible', + '_set_room_cam' : 'set_room_camera_marker', + '_obj_to_cam' : 'objects_to_camera', + '_cam_to_obj' : 'camera_to_objects', + '_add_to_room' : 'add_selected_to_room', + '_remove_from_room': 'remove_selected_from_room', + '_room_edge_warps': 'set_room_edge_warps', + '_room_bounds' : 'set_room_bounds_obj', + '_room_cameras' : 'toggle_room_camera_changes', + '_list_room_objs': 'toggle_list_only_room_objects', + '_rename_room' : 'rename_current_room', + '_toggle_debug_objects': 'toggle_debug_objects', + '_toggle_picker_hold': 'toggle_picker_hold', + '_set_camera_zoom': 'set_camera_zoom', + '_toggle_bg_texture': 'toggle_bg_texture', + '_run_art_script': 'run_art_script', + '_art_flip_horizontal': 'art_flip_horizontal', + '_art_flip_vertical': 'art_flip_vertical', + '_art_toggle_flip_affects_xforms': 'art_toggle_flip_affects_xforms', + '_edit_cfg': 'edit_cfg', + '_select_overlay_image': 'select_overlay_image', + '_set_overlay_image_opacity': 'set_overlay_image_opacity', + '_set_overlay_image_scaling': 'set_overlay_image_scaling', + '_toggle_art_toolbar': 'toggle_art_toolbar', + '_cycle_fill_boundary_mode': 'cycle_fill_boundary_mode' +} diff --git a/build_mac.sh b/build_mac.sh new file mode 100755 index 0000000..5fb6e5b --- /dev/null +++ b/build_mac.sh @@ -0,0 +1,7 @@ +pyinstaller playscii_mac.spec +cd dist/Playscii.app/Contents/MacOS/ +ln -s libSDL2-2.0.0.dylib libSDL2.dylib +ln -s libSDL2_mixer-2.0.0.dylib libSDL2_mixer.dylib +cd ../../../../ +hdiutil create -ov -size 110m -srcfolder dist/Playscii.app/ playscii_mac-`cat version`.dmg + diff --git a/build_windows.bat b/build_windows.bat new file mode 100644 index 0000000..b59a597 --- /dev/null +++ b/build_windows.bat @@ -0,0 +1,37 @@ +@echo off + +set BUILD_EXE_PATH=dist\playscii.exe +set OUTPUT_DIR=dist\playscii\ +set ICON_PATH=ui\playscii.ico +set XCOPY_INCLUDE=win_xcopy_include +set XCOPY_EXCLUDE=win_xcopy_exclude +set COPY_INCLUDE=win_copy_include + +echo Creating new build... + +REM ==== -F = everything in one file; -w = no console window; -i = path to icon +python -m PyInstaller -F -w -i %ICON_PATH% --exclude-module pdoc playscii.py +echo Build done! + +REM ==== move build so that ZIP will have a subdir enclosing everything +mkdir %OUTPUT_DIR% +move %BUILD_EXE_PATH% %OUTPUT_DIR% + +echo ----------- + +echo Copying external files... +REM ==== xcopy dirs recursively +for /f "tokens=*" %%i in (%XCOPY_INCLUDE%) DO ( +echo %%i +xcopy /E/Y "%%i" "%OUTPUT_DIR%\%%i" /exclude:%XCOPY_EXCLUDE% +) +REM ==== regular copy files (non-recursively) +for /f "tokens=*" %%i in (%COPY_INCLUDE%) DO ( +echo %%i +copy /Y "%%i" %OUTPUT_DIR% > NUL +) + +echo ----------- +echo Done! + +pause diff --git a/camera.py b/camera.py new file mode 100644 index 0000000..cd50c17 --- /dev/null +++ b/camera.py @@ -0,0 +1,303 @@ +import math +import numpy as np +import vector + +def clamp(val, lowest, highest): + return min(highest, max(lowest, val)) + +class Camera: + + # good starting values + start_x,start_y = 0,0 + start_zoom = 2.5 + x_tilt, y_tilt = 0, 0 + # pan/zoom speed tuning + mouse_pan_rate = 10 + pan_accel = 0.005 + base_max_pan_speed = 0.8 + pan_friction = 0.1 + # min/max zoom % between which pan speed variation scales + pan_min_pct = 25.0 + pan_max_pct = 200.0 + # factor by which zoom level modifies pan speed + pan_zoom_increase_factor = 16 + zoom_accel = 0.1 + max_zoom_speed = 2.5 + zoom_friction = 0.1 + # kill velocity if below this + min_velocity = 0.05 + # map extents + # starting values only, bounds are generated according to art size + min_x,max_x = -10, 50 + min_y,max_y = -50, 10 + use_bounds = True + min_zoom,max_zoom = 1, 1000 + # matrices -> worldspace renderable vertex shader uniforms + fov = 90 + near_z = 0.0001 + far_z = 100000 + + def __init__(self, app): + self.app = app + self.reset() + self.max_pan_speed = self.base_max_pan_speed + + def reset(self): + self.x, self.y = self.start_x, self.start_y + self.z = self.start_zoom + # store look vectors so world/screen space conversions can refer to it + self.look_x, self.look_y, self.look_z = None,None,None + self.vel_x, self.vel_y, self.vel_z = 0,0,0 + self.mouse_panned, self.moved_this_frame = False, False + # GameObject to focus on + self.focus_object = None + self.calc_projection_matrix() + self.calc_view_matrix() + + def calc_projection_matrix(self): + self.projection_matrix = self.get_perspective_matrix() + + def calc_view_matrix(self): + eye = vector.Vec3(self.x, self.y, self.z) + up = vector.Vec3(0, 1, 0) + target = vector.Vec3(eye.x + self.x_tilt, eye.y + self.y_tilt, 0) + # view axes + forward = (target - eye).normalize() + side = forward.cross(up).normalize() + upward = side.cross(forward) + m = [[side.x, upward.x, -forward.x, 0], + [side.y, upward.y, -forward.y, 0], + [side.z, upward.z, -forward.z, 0], + [-eye.dot(side), -eye.dot(upward), eye.dot(forward), 1]] + self.view_matrix = np.array(m, dtype=np.float32) + self.look_x, self.look_y, self.look_z = side, upward, forward + + def get_perspective_matrix(self): + zmul = (-2 * self.near_z * self.far_z) / (self.far_z - self.near_z) + ymul = 1 / math.tan(self.fov * math.pi / 360) + aspect = self.app.window_width / self.app.window_height + xmul = ymul / aspect + m = [[xmul, 0, 0, 0], + [ 0, ymul, 0, 0], + [ 0, 0, -1, -1], + [ 0, 0, zmul, 0]] + return np.array(m, dtype=np.float32) + + def get_ortho_matrix(self, width=None, height=None): + width, height = width or self.app.window_width, height or self.app.window_height + m = np.eye(4, 4, dtype=np.float32) + left, bottom = 0, 0 + right, top = width, height + far_z, near_z = -1, 1 + x = 2 / (right - left) + y = 2 / (top - bottom) + z = -2 / (self.far_z - self.near_z) + wx = -(right + left) / (right - left) + wy = -(top + bottom) / (top - bottom) + wz = -(self.far_z + self.near_z) / (self.far_z - self.near_z) + m = [[ x, 0, 0, 0], + [ 0, y, 0, 0], + [ 0, 0, z, 0], + [wx, wy, wz, 0]] + return np.array(m, dtype=np.float32) + + def pan(self, dx, dy, keyboard=False): + # modify pan speed based on zoom according to a factor + m = (self.pan_zoom_increase_factor * self.z) / self.min_zoom + self.vel_x += dx * self.pan_accel * m + self.vel_y += dy * self.pan_accel * m + # for brevity, app passes in whether user appears to be keyboard editing + if keyboard: + self.app.keyboard_editing = True + + def zoom(self, dz, keyboard=False, towards_cursor=False): + self.vel_z += dz * self.zoom_accel + # pan towards cursor while zooming? + if towards_cursor: + dx = self.app.cursor.x - self.x + dy = self.app.cursor.y - self.y + self.pan(dx, dy, keyboard) + if keyboard: + self.app.keyboard_editing = True + + def get_current_zoom_pct(self): + "returns % of base (1:1) for current camera" + return (self.get_base_zoom() / self.z) * 100 + + def get_base_zoom(self): + "returns camera Z needed for 1:1 pixel zoom" + wh = self.app.window_height + ch = self.app.ui.active_art.charset.char_height + # TODO: understand why this produces correct result for 8x8 charsets + if ch == 8: + ch = 16 + return wh / ch + + def set_to_base_zoom(self): + self.z = self.get_base_zoom() + + def zoom_proportional(self, direction): + "zooms in or out via increments of 1:1 pixel scales for active art" + if not self.app.ui.active_art: + return + self.app.ui.active_art.camera_zoomed_extents = False + base_zoom = self.get_base_zoom() + # build span of all 1:1 zoom increments + zooms = [] + m = 1 + while base_zoom / m > self.min_zoom: + zooms.append(base_zoom / m) + m *= 2 + zooms.reverse() + m = 1 + while base_zoom * m < self.max_zoom: + zooms.append(base_zoom * m) + m *= 2 + # set zoom to nearest increment in direction we're heading + if direction > 0: + zooms.reverse() + for zoom in zooms: + if self.z > zoom: + self.z = zoom + break + elif direction < 0: + for zoom in zooms: + if self.z < zoom: + self.z = zoom + break + # kill all Z velocity for camera so we don't drift out of 1:1 + self.vel_z = 0 + + def find_closest_zoom_extents(self): + def corners_on_screen(): + art = self.app.ui.active_art + z = art.layers_z[-1] + x1, y1 = art.renderables[0].x, art.renderables[0].y + left, top = vector.world_to_screen_normalized(self.app, x1, y1, z) + x2 = x1 + art.width * art.quad_width + y2 = y1 - art.height * art.quad_height + right, bot = vector.world_to_screen_normalized(self.app, x2, y2, z) + #print('(%.3f, %.3f) -> (%.3f, %.3f)' % (left, top, right, bot)) + # add 1 tile of UI chars to top and bottom margins + top_margin = 1 - self.app.ui.menu_bar.art.quad_height + bot_margin = -1 + self.app.ui.status_bar.art.quad_height + return left >= -1 and top <= top_margin and \ + right <= 1 and bot >= bot_margin + # zoom out from minimum until all corners are visible + self.z = self.min_zoom + # recalc view matrix each move so projection stays correct + self.calc_view_matrix() + tries = 0 + while not corners_on_screen() and tries < 30: + self.zoom_proportional(-1) + self.calc_view_matrix() + tries += 1 + + def toggle_zoom_extents(self, override=None): + art = self.app.ui.active_art + if override is not None: + art.camera_zoomed_extents = not override + if art.camera_zoomed_extents: + # restore cached position + self.x, self.y, self.z = art.non_extents_camera_x, art.non_extents_camera_y, art.non_extents_camera_z + else: + art.non_extents_camera_x, art.non_extents_camera_y, art.non_extents_camera_z = self.x, self.y, self.z + # center camera on art + self.x = (art.width * art.quad_width) / 2 + self.y = -(art.height * art.quad_height) / 2 + self.find_closest_zoom_extents() + # kill all camera velocity when snapping + self.vel_x, self.vel_y, self.vel_z = 0, 0, 0 + art.camera_zoomed_extents = not art.camera_zoomed_extents + + def window_resized(self): + self.calc_projection_matrix() + + def set_zoom(self, z): + # TODO: set lerp target, clear if keyboard etc call zoom() + self.z = z + + def set_loc(self, x, y, z): + self.x, self.y, self.z = x, y, (z or self.z) # z optional + + def set_loc_from_obj(self, game_object): + self.set_loc(game_object.x, game_object.y, game_object.z) + + def set_for_art(self, art): + # set limits + self.max_x = art.width * art.quad_width + self.min_y = -art.height * art.quad_height + # use saved pan/zoom + self.set_loc(art.camera_x, art.camera_y, art.camera_z) + + def mouse_pan(self, dx, dy): + "pan view based on mouse delta" + if dx == 0 and dy == 0: + return + m = ((1 * self.pan_zoom_increase_factor) * self.z) / self.min_zoom + m /= self.max_zoom + self.x -= dx / self.mouse_pan_rate * m + self.y += dy / self.mouse_pan_rate * m + self.vel_x = self.vel_y = 0 + self.mouse_panned = True + + def update(self): + # zoom-proportional pan scale is based on art + if self.app.ui.active_art: + speed_scale = clamp(self.get_current_zoom_pct(), + self.pan_min_pct, self.pan_max_pct) + self.max_pan_speed = self.base_max_pan_speed / (speed_scale / 100) + else: + self.max_pan_speed = self.base_max_pan_speed + # remember last position to see if it changed + self.last_x, self.last_y, self.last_z = self.x, self.y, self.z + # if focus object is set, use it for X and Y transforms + if self.focus_object: + # track towards target + # TODO: revisit this for better feel later + dx, dy = self.focus_object.x - self.x, self.focus_object.y - self.y + l = math.sqrt(dx ** 2 + dy ** 2) + if l != 0 and l > 0.1: + il = 1 / l + dx *= il + dy *= il + self.x += dx * self.pan_friction + self.y += dy * self.pan_friction + else: + # clamp velocity + self.vel_x = clamp(self.vel_x, -self.max_pan_speed, self.max_pan_speed) + self.vel_y = clamp(self.vel_y, -self.max_pan_speed, self.max_pan_speed) + # apply friction + self.vel_x *= 1 - self.pan_friction + self.vel_y *= 1 - self.pan_friction + if abs(self.vel_x) < self.min_velocity: + self.vel_x = 0 + if abs(self.vel_y) < self.min_velocity: + self.vel_y = 0 + # if camera moves, we're not in zoom-extents state anymore + if self.app.ui.active_art and (self.vel_x or self.vel_y): + self.app.ui.active_art.camera_zoomed_extents = False + # move + self.x += self.vel_x + self.y += self.vel_y + # process Z separately + self.vel_z = clamp(self.vel_z, -self.max_zoom_speed, self.max_zoom_speed) + self.vel_z *= 1 - self.zoom_friction + if abs(self.vel_z) < self.min_velocity: + self.vel_z = 0 + # as bove, if zooming turn off zoom-extents state + if self.vel_z and self.app.ui.active_art: + self.app.ui.active_art.camera_zoomed_extents = False + self.z += self.vel_z + # keep within bounds + if self.use_bounds: + self.x = clamp(self.x, self.min_x, self.max_x) + self.y = clamp(self.y, self.min_y, self.max_y) + self.z = clamp(self.z, self.min_zoom, self.max_zoom) + # set view matrix from xyz + self.calc_view_matrix() + self.moved_this_frame = self.mouse_panned or self.x != self.last_x or self.y != self.last_y or self.z != self.last_z + self.mouse_panned = False + + def log_loc(self): + self.app.log('camera x=%s, y=%s, z=%s' % (self.x, self.y, self.z)) diff --git a/charset.py b/charset.py new file mode 100644 index 0000000..75bdcfe --- /dev/null +++ b/charset.py @@ -0,0 +1,191 @@ +import os.path, string, time +from PIL import Image + +from texture import Texture + +CHARSET_DIR = 'charsets/' +CHARSET_FILE_EXTENSION = 'char' + + +class CharacterSetLord: + + # time in ms between checks for hot reload + hot_reload_check_interval = 2 * 1000 + + def __init__(self, app): + self.app = app + self.last_check = 0 + + def check_hot_reload(self): + if self.app.get_elapsed_time() - self.last_check < self.hot_reload_check_interval: + return + self.last_check = self.app.get_elapsed_time() + changed = None + for charset in self.app.charsets: + if charset.has_updated(): + changed = charset.filename + # reload data and image even if only one changed + try: + success = charset.load_char_data() + if success: + self.app.log('CharacterSetLord: success reloading %s' % charset.filename) + else: + self.app.log('CharacterSetLord: failed reloading %s' % charset.filename, True) + except: + self.app.log('CharacterSetLord: failed reloading %s' % charset.filename, True) + + +class CharacterSet: + + transparent_color = (0, 0, 0) + + def __init__(self, app, src_filename, log): + self.init_success = False + self.app = app + self.filename = self.app.find_filename_path(src_filename, CHARSET_DIR, + CHARSET_FILE_EXTENSION) + if not self.filename: + self.app.log("Couldn't find character set data %s" % self.filename) + return + self.name = os.path.basename(self.filename) + self.name = os.path.splitext(self.name)[0] + # image filename discovered by character data load process + self.image_filename = None + # remember last modified times for data and image files + self.last_data_change = os.path.getmtime(self.filename) + self.last_image_change = 0 + # do most stuff in load_char_data so we can hot reload + if not self.load_char_data(): + return + # report + if log and not self.app.game_mode: + self.app.log("loaded charmap '%s' from %s:" % (self.name, self.filename)) + self.report() + self.init_success = True + + def load_char_data(self): + "carries out majority of CharacterSet init, including loading image" + char_data_src = open(self.filename, encoding='utf-8').readlines() + # allow comments: discard any line in char data starting with // + # (make sure this doesn't muck up legit mapping data) + char_data = [] + for line in char_data_src: + if not line.startswith('//'): + char_data.append(line) + # first line = image file + # hold off assigning to self.image_filename til we know it's valid + img_filename = self.app.find_filename_path(char_data.pop(0).strip(), CHARSET_DIR, 'png') + if not img_filename: + self.app.log("Couldn't find character set image %s" % self.image_filename) + return False + self.image_filename = img_filename + # now that we know the image file's name, store its last modified time + self.last_image_change = os.path.getmtime(self.image_filename) + # second line = character set dimensions + second_line = char_data.pop(0).strip().split(',') + self.map_width, self.map_height = int(second_line[0]), int(second_line[1]) + self.char_mapping = {} + index = 0 + for line in char_data: + # strip newlines from mapping + for char in line.strip('\r\n'): + if not char in self.char_mapping: + self.char_mapping[char] = index + index += 1 + if index >= self.map_width * self.map_height: + break + # if no lower case included, map upper to lower & vice versa + has_upper, has_lower = False, False + for line in char_data: + for char in line: + if char.isupper(): + has_upper = True + elif char.islower(): + has_lower = True + if has_upper and not has_lower: + for char in string.ascii_lowercase: + # set may not have all letters + if not char.upper() in self.char_mapping: + continue + self.char_mapping[char] = self.char_mapping[char.upper()] + elif has_lower and not has_upper: + for char in string.ascii_uppercase: + if not char.lower() in self.char_mapping: + continue + self.char_mapping[char] = self.char_mapping[char.lower()] + # last valid index a character can be + self.last_index = self.map_width * self.map_height + # load image + self.load_image_data() + self.set_char_dimensions() + # store base filename for easy comparisons with not-yet-loaded sets + self.base_filename = os.path.splitext(os.path.basename(self.filename))[0] + return True + + def load_image_data(self): + # load and process image + img = Image.open(self.image_filename) + img = img.convert('RGBA') + # flip for openGL + img = img.transpose(Image.FLIP_TOP_BOTTOM) + self.image_width, self.image_height = img.size + # any pixel that is "transparent color" will be made fully transparent + # any pixel that isn't will be opaque + tinted FG color + for y in range(self.image_height): + for x in range(self.image_width): + # TODO: PIL pixel access shows up in profiler, use numpy array + # assignment instead + color = img.getpixel((x, y)) + if color[:3] == self.transparent_color[:3]: + # MAYBE-TODO: does keeping non-alpha color improve sampling? + img.putpixel((x, y), (color[0], color[1], color[2], 0)) + self.texture = Texture(img.tobytes(), self.image_width, self.image_height) + # flip image data back and save it for later, eg image conversion + img = img.transpose(Image.FLIP_TOP_BOTTOM) + self.image_data = img + + def set_char_dimensions(self): + # store character dimensions and UV size + self.char_width = int(self.image_width / self.map_width) + self.char_height = int(self.image_height / self.map_height) + self.u_width = self.char_width / self.image_width + self.v_height = self.char_height / self.image_height + + def report(self): + self.app.log(' source texture %s is %s x %s pixels' % (self.image_filename, self.image_width, self.image_height)) + self.app.log(' char pixel width/height is %s x %s' % (self.char_width, self.char_height)) + self.app.log(' char map width/height is %s x %s' % (self.map_width, self.map_height)) + self.app.log(' last character index: %s' % self.last_index) + + def has_updated(self): + "return True if source image file has changed since last check" + # tolerate bad filenames in data, don't check stamps on nonexistent ones + if not self.image_filename or not os.path.exists(self.filename) or \ + not os.path.exists(self.image_filename): + return False + data_changed = os.path.getmtime(self.filename) > self.last_data_change + img_changed = os.path.getmtime(self.image_filename) > self.last_image_change + if data_changed: + self.last_data_change = time.time() + if img_changed: + self.last_image_change = time.time() + return data_changed or img_changed + + def get_char_index(self, char): + return self.char_mapping.get(char, 0) + + def get_solid_pixels_in_char(self, char_index): + "Returns # of solid pixels in character at given index" + tile_x = int(char_index % self.map_width) + tile_y = int(char_index / self.map_width) + x_start = self.char_width * tile_x + x_end = x_start + self.char_width + y_start = self.char_height * tile_y + y_end = y_start + self.char_height + pixels = 0 + for x in range(x_start, x_end): + for y in range(y_start, y_end): + color = self.image_data.getpixel((x, y)) + if color[3] > 0: + pixels += 1 + return pixels diff --git a/charsets/agat.char b/charsets/agat.char new file mode 100644 index 0000000..9e39ec1 --- /dev/null +++ b/charsets/agat.char @@ -0,0 +1,9 @@ +// Agat (Soviet Apple II clone) +agat.png +16, 6 + !"#$%^'()*+,-./ +0123456789:;<=>? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^_ +`abcdefghijklmno +pqrstuvwxyz{|}~ diff --git a/charsets/agat.png b/charsets/agat.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1c521b09cb6d9b16a27ed1f2a80fc9e85ad452 GIT binary patch literal 953 zcmV;q14jIbP);P1w&OU!Zl41D=A}Y8-1@XztxRcVJoNnA+%2hpB|R4`S{hCbh)o7%)sk{# z$S2H{HYhN$m3b19;g3YB<2@9+ygS_{53RWE7MHh>YTA;DPU<&^ZUBHJlS9)+2@l*6 z@)GW^UvoAsqI}3GFJTV04C$4jrK^%5&bS0*94lG; zF+svrGvQAfWvo&1bc2T~1|`?zE|Iswa)U0Uu@#Swp=StuRb=F0nuOF4!~-Z#qdYnG z+iu~Zqlfaoj2+zd`cZQHE9s<{q&nP+11#yxjrBu)p1O`l;pjFSSmM*< zq3ZAZrxG&XJ$G%L5<%;UVqL{{#j|6vHc>a5$j+OqTg5m?Sfse5F6Y1lWO$CldCG|=ieB4I5o0Y$^;3TDc%5G=x{Zex z*(HCb;`v>@lPA1x#t6Ayx1h%2v7{uR&3Cwo4Xthky$F46-%fUz38YK+%(DceT;ZN( zf+Pa0rHv}@vB*$`!-Mr;;f5KK{2*gQOMPV(s35?^o9Sf_Pr%u3tw zr{P5Ic6E*lf%5K7;6@oA@|L7EMTLj+gk%X8&E>mqTX`NEOI7M6rR*W!(nv|`;xjZ6 zStp#zkNjhn=vB=)wp$_T@=zWY@Y!yJ&fG+G@?hm_9;vRM+Xsahrko@xwyasHOCcWm zl6vTp`Wtz%Tzsw*IC_#7v&-wDA-}VzwHl$avse#hXh6dn$$Dt?JtA{h;Hh=!n6&%! zvET|sWqA@|8Gu??KyZt#Y6&Wx*0^>O@j{H2F@Cq=$)#7#b^0 z(XDjrUJ~rChgQ(fBGGQ;v|a)Dq literal 0 HcmV?d00001 diff --git a/charsets/amiga_topaz.char b/charsets/amiga_topaz.char new file mode 100644 index 0000000..bf3789b --- /dev/null +++ b/charsets/amiga_topaz.char @@ -0,0 +1,10 @@ +// Amiga "Topaz" workbench font +amiga_topaz.png +32, 6 + !"#$%&'()*+,-./0123456789:;<=>? +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +`abcdefghijklmnopqrstuvwxyz{|}~ + + + + diff --git a/charsets/amiga_topaz.png b/charsets/amiga_topaz.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae94cd7de8e922a443771a66839dffa59492d55 GIT binary patch literal 2276 zcmVpnR~h6f7p@B?4LnklcI_G?5y=AXgi{ky}XTJ7>zue3z&#ax8 zg@hPDcrH^@6Tv&MmS_l`e|V|lP?nUAuABS%S6dHkk6!;|H&SFgiS&$BKB zC&S^!IEdt(S|c*J0I@T7h!{Y4HUlhNfQN=NTjYfe&zb2u;qm{qpgM0n ztLK^8!0=aM06`28#Yu4O=A@-5)P}zQf;@ho`S+4i3S5`fr)P27=4d)jFZD8!CR1*C zeU8aO_*Y^8K@1Q*++MBi5}!VtAK07atAfHAEy?a|PUtNAzhlsBp-TzsY|;_@*iIX(pL4#YY7>3%)gD?Xvn|%INTQ^rAYT;(|2N?|;Elv`2bk06{2O zC8b zmMQ%djt|e*)BnDL;Db@;-$0u+!L?i_GC#o6l^8$}13>e(yII%Wny#gc5N=a^0?Y;q zCs%|q4SX0q*EpQ7fi|NWvsNziWn%EFENk=I>G9`#$gub7G??o@9b!& zTV{)ZN%_G(1DodOH`p>$+t*$%PYi~jyd~4V>oOjb-A_OaAPE1isl)MpA4WU+g90 zqKzLohm z8;D$@H}BOiFN_#K5ChyB;{qS#kcUJ4Uh2k!RH% zB?b_LufpBBNC;nj=ZFD>M`QhN0A$b5urPpk^lLpRQ$8hV#~B{nCUT8h)F5@Hk?X4S zZT}W3q>4SVJ4G-*Ox2%=0R&;4Qx&GRH)o4KCXbwXcWdUmn}2PZx-gYLT!G;K4b`~3 z1mbOhxvW@|{LKK8{+XMhR=mMO3?Mujzs!@3eep4*-C%S2a(oxWiGjBYDr-}|W6g&q zcRDf8YqXTSdkq@$glnhl{ou)&dWYS=T{hn|lWVQ)+ENT4hyn7he}g-t^v^CX)Cb>U z+s0UkmdUOum_r<8GNU5E{&|CB>jcx3)}ndY>?5*whB^O1Vw*hJ?wNDon1F zDWMoZcs2v1TA(rRY3SwiD+KIrmfdU5s1!(mQPCs`@R6ts_qb05%|P4j+GaCgnHTCr z3?Mujuh7rSMulKu-(ntis=JeR^>FOeTyU*^*PF{QQKr{!y&L-+{i2$A=X z7(jS714sq?qBLhR&qBxjQ4j+NLX>Am=0%!KhTBB8<0bN&-!7RyE4-)A-Ph}G_f_^^ zQZtAF1g!y*(HQTI9o}dJ$4utq<&*NCFn{(K0?C8uICeAMgmQ%K1p1`xymB~N$v_*iw2^6eIWK0yNv6W)`V%{Ck->=3i+ zvlu{lG=9B@`@->BWO}!#=Xn2K*JZED>CEvkBj_fLtWyvJ2#;p~ubbK><)RE$~k|Z;5Jux0ru`)e*d)m yyK40X5`-`JLA5`?-IfHmx*1a4RK)? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^_ +`abcdefghijklmno +pqrstuvwxyz{|}~ + + diff --git a/charsets/apple2.png b/charsets/apple2.png new file mode 100644 index 0000000000000000000000000000000000000000..6694571c50fa63ad6f09ae1722d588e5ae87e1bd GIT binary patch literal 1537 zcmV+c2LAbpP)h%__F=?|N&Bes5zuZUwPvP6z=<8Z$~k7=w(Z=2>pahG-*@$U zsoW~lo_U@>;z;*fa%9T0&wTPao_g`6sPjDk{%+kj8$|S-k|MNc&fg*TtnR;Kg@QCi zT%C9C)cfC+mhU}FQsVu)H;uwy{g-v2NFB>nYVMM8yH)Z>T>Y$Y)Uerlnkf*Sv_Qtof5MLRf*U)!!R8*T2WTS*ZKpT70yC5#u5maFdC>ogv_0EwSR7 ztrsELr|Oc+z6?*-siIR|ja9xtQgo4bp>>Z6i_#Y7u5^W#lA`Ir ziWtqjFEV#H7y%eJ6m_9qJx_*eaveq5oxtVSv%fs>{gWA!96T4}3{&`ecjV0hpc;CSxtt|!Fm2i;_pW+D2>|l*pFgl7WMv`Q~ zU0IfH&^Q0wf6C6#es^>~9)h?SB<7uRDCHO<#uPm=m3|(?>jly}9N97us1~RL>vWKcx94``$o%6FJ+YU5YSp+YhRydzOCUGID z3_*Pr%F{TRb!Z-%Q$!6Svcjz59*fNH`@Zd`^AzORN5%ypBQr93t5LEB)=*=Ma6-1+ zoDXDA_KRfh(SuZxxEcXs(If<`5Cn-@O0xQ7Yz3E=Rq(i%cfJ|Zai|g{x7f8wl|2DU zoiZ}yJ3QAX`CaWLQru%!L`!F9vx#Dsly{zs9RX$11|YLN7Z0>ZuvXSZBN*3O#oem* zMpy@@d*6lR+KlkX2GhO4XKW3Zraa4?R*j-4XG7(wJm$Hg z-7O0Al*gWr63PBV;eJKOB1pPwG>*>mQy3tV{dYPQ*&Qa~&bah0_qlD`Ho6FMM2Xdq zof&~08&Wg02)$a?#H>^vGn%A2Qa$Zo0kLvuv?wz;UJ(Pk6#0gg+p7-;a%n^qsWAYi ni@#;S5t_QwC00000NkvXXu0mjf^v>lL literal 0 HcmV?d00001 diff --git a/charsets/atari.char b/charsets/atari.char new file mode 100644 index 0000000..9f2cee9 --- /dev/null +++ b/charsets/atari.char @@ -0,0 +1,11 @@ +// ATASCII (Atari ASCII) +atari.png +16, 8 + + + !"#$%&'()*+,-./ +0123456789:;<=>? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^_ + abcdefghijklmno +pqrstuvwxyz | diff --git a/charsets/atari.png b/charsets/atari.png new file mode 100644 index 0000000000000000000000000000000000000000..a32beca3383773f2e0b9f31be0a3f7fe12a52245 GIT binary patch literal 682 zcmV;b0#*HqP)Px#22e~?MF0Q*|NsA`*`M720004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pk1`{6-2PUX~0006VNkl{2*`LxvpisxLhv%*va`GjQzU1)YZAR2=Ki8+kIs%gE~2JXo>SU!7g2y%qaw(rr8T0yM96(c>;PGNU~co@DmP3{=#xH-E^KRQ)m z)tKYUC#KpQJjs0x@>>Nl5rvjmw5V3iLB&Upy;*S1M1jiz5t?(<1Pl_RyZ~_@93GlV z)f~LI4<7kXp^lcKQFTzdrwaaR<64TWQz^;I(rxSXq3(M#bA-LUzR-tf^PG7nVX|YX zz|GALUcrvQN^7BWer*pf$?H(#Q1w!W{=2ef<(RE|Sv^gUB2E=F5cy*I29#i@y!ine zws;N%N4_3LwiU7co=@yV; z8vFNvcIvSpPb&he0rCB^;lLd^S? +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +`abcdefghijklmnopqrstuvwxyz{|}~ + + + + diff --git a/charsets/atari_st.png b/charsets/atari_st.png new file mode 100644 index 0000000000000000000000000000000000000000..09af60b27842b52ceca5bd47ef20a83de81a32b6 GIT binary patch literal 4068 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 W6>^n%vcPcw0000? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^_ +£abcdefghijklmno +pqrstuvwxyz{|}~ + + + + + + + + +//end diff --git a/charsets/bbc_master.png b/charsets/bbc_master.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7ad86c791bac0bb0e1943ef07e7f527b2de251 GIT binary patch literal 2365 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 literal 0 HcmV?d00001 diff --git a/charsets/c64_edscii.char b/charsets/c64_edscii.char new file mode 100644 index 0000000..4d97753 --- /dev/null +++ b/charsets/c64_edscii.char @@ -0,0 +1,16 @@ +// Commodore 64 (EDSCII version) +// first line: source image (base filename + .png assumed) +c64_edscii.png +// second line: map dimensions +16, 10 + !"#$%&'()*+,-./ +0123456789:;<=>? +@abcdefghijklmno +pqrstuvwxyz[ ] + ABCDEFGHIJKLMNO +PQRSTUVWXYZ + _ + + + \ +// end diff --git a/charsets/c64_edscii.png b/charsets/c64_edscii.png new file mode 100644 index 0000000000000000000000000000000000000000..cd514e9e3c3882735f166ad38611024731f1ad2d GIT binary patch literal 773 zcmV+g1N!`lP)(1||00006P)t-s00030 z|No`gpWOfe00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j2k| z0|6BSo8hzo00M@wktJ}#S;ZG79q~G27#y%9z`>#(UOTv9Z*S0j1($}wYbwI1P>?=}S{H5O0fGRuI0bm@pAixa zE0n!+k9K!Y!GyT*e6KdihlBz~(f#Od(k+jT%h1*u!M5xM?dEhR$p5YOsK@NGrJz1@I1+c))7Tzc)KbQH}v$(9B z^OBDL*fa&jo`O8IG=O}u3HEaMKHDS6ml2HMGLiz00q+i%8awB%dYgjZ?P2zQ0jv7s zVYf&H+@0=Dv%~Uux~nm<5iF0h!*RK)2kd8fJ2UCr%91R%mm=-on`+3_Gm!RD+q{b00000NkvXXu0mjf DZ&+3T literal 0 HcmV?d00001 diff --git a/charsets/c64_petscii.char b/charsets/c64_petscii.char new file mode 100644 index 0000000..12e9b75 --- /dev/null +++ b/charsets/c64_petscii.char @@ -0,0 +1,16 @@ +// Commodore 64 (PETSCII editor version) +// first line: source image (base filename + .png assumed) +c64_petscii.png +// second line: map dimensions +16, 10 + ABCDEFGHIJKLMNO +PQRSTUVWXYZ[ ] +@!"#$%&'()*+,-./ +0123456789:;<=>? + + + + +abcdefghijklmnop +qrstuvwxyz +// end diff --git a/charsets/c64_petscii.png b/charsets/c64_petscii.png new file mode 100644 index 0000000000000000000000000000000000000000..c711ddb8de466f6479ff8d747acb9a621167791f GIT binary patch literal 1678 zcmV;9266d`P)toue-DA}+$yJm4`L{^>8>@Uv;60_B8>A@>QRw*(y^g+LE9d$oMIrZC%0_e`wcYx? z_x+9S`Cb7^hQb;_M$z71St81}l#E`#mZR$B6$19SN~VpKMwcO%ue(3H{b*^KJtxaU zWW3*_fDxV{Di^E$r3R2G1SDSFrD)$XBfOP`0LHqnfaoeD4Mkfnp8Z(#{R{}!zR&8V z-+LLR6g3Lz``-)=+~s-YsNnG#&qsJP!;29fjsD-8hw$WDvb;mf=JB5Aui$GIO^bq4 z6ohKZ|6cDY+^XBcBE4&ErodKG;8lR$_IaO=_HZjvCmF_($>XCSa1>&fvWSxMvOp}O zJf;pw;hHz@8bBuMwBn(ph!Gsz>LI}V;?IjF~_Qdi#rl?^IkUiWRv0e|KW!mora$3DTw~pL5+gp4-pZ~`KvKy#T zkn7MU0^EA{X3(@q9)Bg8%Z7@S!5|BeSs@^sXEO{S)4-*+Y91@{j!3TNpTVHY_-1(& zRMAZD_4Gtk29aF-Y#h;hfAcCX!a*f^C(*o~f|>DmPcp@${3wQsVg%1Ti=)B?S7fr# z*xbVyY(`ESt4G>4G6Y4v+s*^rn8T-ZzKlEo@_dA+XU+TfKF_v43p05@B0HNZB@bXd z@8Ri^!XoqjrD5pI_GftkHgs8e3h6#L4`3-K1B_)&JJ(|J2*%@?w$6B0?K`DBg&G2` zf{mm@(GOvlX0ainI)r5!QMOSshL$!T0L`SG>53&}4~p07XE2A>i?ZFn#y;3Y5bI@* z*{%=qG%F@hvgM!|K~^$LrGXi+hJ`Y09?F{COMAiaO*0Uplt;XJ@DYa32g zIktfL!K#e+%t|!kTK5ZIxl^kZtX_^Pf zS}%{LXHj6bO8R*eNN%e%ni&dSF_zx795a=F?QPbo+=@8q>G{Y==B*7Ndow}{MPHSy z83C*OXox_K@vfNXnA!6+;f@j{ivcXOUmde=mj^(UZyAA>DxD$FCo!92cF$+rY!5Tc zzyMDw!&rc4YL}Kc+2zIP^zyaB8bvor9BwX#~e zz73#I;hE?Ad5p~(G41XYx=Ty}9;HW_i1bdRp0?HZ3>;zY*4n#HofojnI4=?%IYmZL z#Z97i@zKO+UZe839`*Ov-XGwn%fa-56?Vm%u@Q6zZCiCK`9pGbGta%V;utzh$b+V< z+_go=G=r)<+4YbfuogeCn=dlEaQEJ?ovnv%EsLz~je3eK@77D^Nb*7CCtYt>r6XIl zvPc!(0#$o|#?i7``zux%-Jvu_K_j>Fk*mkk^Ky$f1}T5;*B<1Sid;+ zT01J%Vl&lK*TlVoqdXJ=Mc(;(h)|eb=B1VBmiI`^x87N002B*APt@q04wgaVqIe*3 zc(rumS#=m;jdDl`K#qT#>1r*Hm3_?nH>q;n^4+3!C? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[ ] + \ + + + + diff --git a/charsets/c64_real_shifted.png b/charsets/c64_real_shifted.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e037ccbd072e8b22ee5a327a9f69b0e04b10b1 GIT binary patch literal 1298 zcmV+t1?~EYP)T-^~QOg+qUidUj2so%&hbI(|*3D*+;-?XpsOgQ0d>uqoL{A94|g({rmA4T98wZrWC7XwVKLxZ@$%i4iPvax zAA8;|JAifr7m977>ax8qzDvvzzHya1nMg2aOOY@HwBl`b)2h0(zL})^@7M;_ImUAg z21(wxGVu@xZSQ=B9xcw1!MU7P(sKwtu{EE>?^Oq74Ii&lx(Jyb5jYY73Hw9)Yr+g_ zu}lb+t@C5GvR`8C6y=fmJOjhf53aT8ef@wL3tZVe3E^>xqU)NXT%s(q5qWpTnKa@6 zO%}tnc#-{tQB8Mp31>^C8}UD-E|ZBEV@zqb@sfqS`(dB!6jd2$xnaJtfI0*;f-_+k zdWl74F0qZHpf?+M4DUzg0U)w+0Gz;a*aZUfh~T=aDE08k9@;%>m)EDzA~ zgKmY2|Hcsj<$^~6nhJcr|Xa?57u7=rKpwj|` zDxEFm#hJXOLmHpoF+UF&!S%v?7w+z2YJj`(XCae!-7UL=uz>5y`S=R(0i|nX9yp$V zJW_^sz#>cs)Hbg%>rO^zcgXy{-i{kB_F#aMWL)nJ!m%)>TCLm~S0XM@(B)?Lk&@|E zSCI=qj_fUG$`t)&klxa)vSKWB(pAxmYd*ilA)9u!a1;oiflDFpgrkZLprEEHs|`X2 z@5;NyORp~m^Sec~kQN8qF4l^lSsQPe9C%A)FY;a@-~N*a2tn_ux`KAgI8p=@YK5-S z4qFWkkEmob@A_)4HRG@X@U}8cD(&6IL7v(R8UeQ8exF|fxccRp%@zqq-E_oqP@@gY zfXs)|Y!&k|I@~n@r4e4rAZ5U3qY2D#y&|!i@3zEa8H{g~?c%BhOpgJxEr#SyIAo~i z+d^?Py@|sNN%MT$V|^~u8{>uNt`e9lMPTw9;T2C;Y&+z99qi$HwTN6wphqa`-S1ix zz)!8R>OHpH>Rc=75v+}mZR35!wpNJl10GL^t^;F#I^MOwcd-pJy*xrGgJY_ddGB`Q zeQh5DS%oF(RR<&f>$in_vfUF>To9K5Eu?t{FRTOPRD zmfNC72>T?R*1TqTi!{Tlgrt`)d>wM1I)lGByrch?BKHB1hveVZ)2jbGJzn6ii*zUgI9!K z9|Lgn^E!UNC6Dyf#{U!ZREP}6xvsvNP5mD$f!rVLksf^a|JdH~!q6LH-4_S|pJdr{ zKIQ167?NHmz+-%-D(-zYg~zT%Y-M)B_$FfC2aBuYML`dbA0|9TWm+u`eE? +@abcdefghijklmno +pqrstuvwxyz[ ] + ABCDEFGHIJKLMNO +PQRSTUVWXYZ + + + diff --git a/charsets/c64_real_unshifted.png b/charsets/c64_real_unshifted.png new file mode 100644 index 0000000000000000000000000000000000000000..4a33ad872e5cebe69a91e523a8aa7afac8082792 GIT binary patch literal 1340 zcmV-C1;hG@P)>u#ckIw|t(9ef`<*tlJpnx$g)4Y+9LJWm12m$~S3nK5Da0MXb3bwXMH;y= z)9?fV6BJ`8&j?-srlO1+$lTUsf03Ro-N;~?M8SYQq$Iv*2Xy17`G9l8({{H^Je$US zYVqWP44#Nz9%;vB;fHB$%_KNEiY%e=ANZs*Co`BHe#mnN;T-%Q5LB zdE3hPL+rG@{TX^Jzx{H{v>`E4OF}F@i?Q22-6b;j)X(P_ON|hF@rRg z1ze@JeympQml!)`S!6!Wz%cZKYuoT%USP)pS2RyTc$}gzO;eUh49jdr-ljNfj5t73 zi(xcgbgwX~F*}cNc2v3<`!nh?8Hh2Psjl9D1%sR*pD1Q9RW0gBViYM z$wg%@vCX5PHyXGN@5keSw=EZd*Dj}{f|S6=YwKM;$(xD}~F+?RbH8*g)1C}--;C5Z&dMj23GesQ0>143& zHFR1W;B~4Oqm&(pl+S)ld7&W}#ISfNJ+8p*_h2i^qP+~qCgLUnh)p|wF&U@zXQbuL zU%F&A$^ehUJCc!a--I|*5<5?W-7n;K2*!1`{05oHL;@?M9simYP`@yg#I0VO3ydjW zRcDsEba;t>c3HDJ)55&6jXFFXjOwTEAG;4;{k$Lp`bA3Jm1R_7(cXyv)@L#fpM8tL-f$V0LHG z>VjgSytfVqFjq`4c`5qSymn^ zsG47}_k1cb%yzBlV{-y|?;eJFbuFvp&m5m*P~x8OuE?zELp$Kgjrv_dL>|g7P4a-S zR?Dhtre?fBpB`I`;;EB5tKE9cLULs2ubn_?sr;Bm&oFw_{m=8xj79zpLzc?mc>y=Q zcicqBAbwou19m=4HItVn<9J4!NwkzJkBpsZwUr-s)c11j<&-aOt`djw75FO_@zusS zI&Ymb1BdwAdQ0oh1HgYidzzDqxDj{G_`|2sS-*m70Rb}s@GF3Og3nm0G1mge1rVNT z5!YgWU^gECX07)x?|>N};ElX^P5o;=U?vHAy*<1^05>lCD*~VVWC#hXy|>Pn!eY`i znN>-}e`kL$|GwR8n!d&fPx`t=acrgl@Jb$gxh23m@htPMee;)LXuwxtp)z$~-rv@+ yLXk!4PqXa&AO588JhA;>C;SjdT3^=R+kODQ8eI3>Q`j#60000? + \ + + + + abcdefghijklmno +pqrstuvwxyz diff --git a/charsets/commodore_pet.png b/charsets/commodore_pet.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab3d7bd570d14634876aac2b7b59228b1206d1b GIT binary patch literal 827 zcmV-B1H}A^P)(1||00006P)t-s00030 z|No`gpWOfe0`N&hK~y-)eU!n96G0G$YdVb<5=t}Go<$*3DTUpfFTsU#u+Gdg?A0Krpvaq%Xg{!C}byjO6q;Aszb9!(=Sd88DQ zlnIAE<@VL)t*=?GGI;O;*oj{clqHPJg#jzA`ezL!4}{#p6L|!u6{HjabYqHsDjC!3Py{bs zJcQ34Sf(D5l>z{A$Qh>3l{&Z}Ek6d2!cf5(4hyGS^fkZ-xHp6)9;u+%umTW;0qKEt zBS0gHhoscO>xnmh0w^iw&KS~3f43SCyDp2;kbt-Yq&k4w$a)8?7O*mL`-nE3!4BeT z=W#W->dy6RyB`_EL3(wNfXsZF!S5SD6u)jOuK$AAD}HPSqtWPk4^Fews{xLB$zJiZ2eAh+ zDY`untDjf*qZ9!n+-&{{;0}O27{z$K0~@%8l#E+N%+k#N1#t_c9_eN%C289ItrK`8 zpThd}WZ^4sszp9*@XJE>vtG&}(N33gT;O~u``OFU6U@?OeNsc7F4~5 z;-YDaIs5${l`oS!J9eFYTi*m~d=9Xv7In+~iaCs%^D)43x+KFqcdW;=^|u7bCy-C` z^-1zrRHPnF-P~1n{ULdfqIOv2FIa^!B@a@6CmDly`~kyl>wd$4M_>Q|002ovPDHLk FV1lFVa|Zwb literal 0 HcmV?d00001 diff --git a/charsets/cpc.char b/charsets/cpc.char new file mode 100644 index 0000000..603ad75 --- /dev/null +++ b/charsets/cpc.char @@ -0,0 +1,17 @@ +// Amstrad CPC +cpc.png +16, 14 + !"#$%&'()*+,-./ +0123456789:;<=>? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\] _ +`abcdefghijklmno +pqrstuvwxyz{|}~ + + +^` + + + + + diff --git a/charsets/cpc.png b/charsets/cpc.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0944ce10313018d13a75ff249b96c8676b64e8 GIT binary patch literal 2691 zcmV-}3Vij6P)Ff3C z{=fAbbRE^Nv@N=ysh@ercQ5C6*`L;^@4vslpZ{)MZw=1%_gMi)b+_8X{BHK(Z`(Fr z09pgp`up7Juh&bO#n-`cvI+mHy zj1XpUNERdX@KV$_`<)GB1&f*aJ^Py(00i_RfXHANX989AZ}*yF0#=!$riTj0?`L!B zltJ0ZzBBdrv_RCxsQ&EzZ2M;kg2HcH+rMA!S5FPHwy||TVOL37I(|~+^1(R*tWi22I zWNDUE8>LfK~qT0FIAa$pa`%qw~GOk7nw3c?gxo%P^5m450e) z)jWXe50AFVnKgL^BlUO;Cc2mn_)ts<^a79{>2^9A@R>r834C?xsM^rtxU^j&$R#Qe z!#8txjQiYZ<44u1Wj2`ACAxM+jiHDW7!>o zyETg$IA;*5_9o5{f*pYe6nD=CbD{x?+QHnSx?MGTG$3<{qRhq}$^?w|akCxa4$$nKJ;=n)EIZrjhzAJQoCzv5 z+TV|;WM&}*1&q3?*u^gHJ5&>8AHf4uXA{YS)F+k42*Cf8htK65Tn{8ll7(U$j%}64 z3wh5>GA0-WwH%Be$x2uS50H(}L4LD(UHLwP+;LYa|L_3Fk8A}%DiYSJ11;o?PQMa? zvTQ_9PrxhPR5cX+>V2HQA0wo(HNa8i>~tU$crfa~^xnUx!bh7B2?MkSsLF?K&4?46&;h<;+6*B^u!2lz?fQ$xsU9&?t zsm2zM@O~c14-HUBa8xfRujh|_{=Tj9(Pat15`a}cxlCUR$Y$rN&hdM9dzJ=RWeLD4 zO8{1R2Mmy1&{+3B@BXC$mI+wplglwe#UQr}1)fyw5MrO-w2Nkvr%XS&Ze#ZOw`zd9 z;_lZwm>M9Ph|$SoH)D{T^euP1kCQk%vy8nkz$!}s76`nk2xoJn5@q9n9rZX=X9Fg? zX_N)D?}9&$>x)#z>O}%_-3E3QmMG*bI#(x?;KI4yYxf8uX9Ql^qZ!OLUQJVW4L?5z zU1oQ{GA>r;__^NRM3hs39l)#$j5O)>`q7H>M`zEu1LB;I#|Q(8>Q!b5>cE!PY6-Jq z!YU8tQpf2SouyORyC22XGiL`?5LwI#snIUxRvqlV0hb(7&pqsdz`IIow~=B?k)UO4 zXA28OZHr8Z`W`bj$R2kMHd19Snyw60N1HmB?PEwwR19?G&a0ItaPa^hvd+3&GxHJN zZRSR*d*|$BNdS7JPD{n9hdDc)iJtv#gP%Q7J;E`}1pepjU}n!>X1~6wC0ypQ3MJn) z^DFzCnZSQQ`1k1djxnt`5=ObMP{gbsoIUa-dpLIHc>C;;_o&Xj*JveKB%8>QP4pO@ z={It3UUZa8#B^qlre%N6ob0NWU3J+;l&Eu=3?3}AR+XtE(iCc%Jf;0AMq~Pq#sCOi zR_xGW^9ZpgWjh!_IeEJR@iWh3`4fg;xqhd&hre?!fG2{!r<5N8F#BajKR;W)b6o*v z4sXJE2-h`=^XIN~?#T0OlvJsiNZ5>UG0Wxdbp!}A>l~pFY+{a}5t<n;7;W=R1oZ@i|uh8z0cj9$%;SjoRXDU5mZ$s8jQP> zO{4y3@g`A1$WQ}p16Bh^Q?H|_=uuR&f@zeArKG(JF~A*2zIyemifSHVlF;C0a|<&I zNGt}}?-=|l4}v`v)O~)Y{mNn3S(B&!Hq-!LU_`RWS)DnRScCr+zZe zj>@BV24%veSrCdk8U0?Jfy(op_O%2nD#v3f%0{y0tXJU7z*!nV5fZ1)M{9tLja0Un zJyioJno1Gqw-5mJL{Jq^gyB)0Pt?KZdRw1W8U+apgBu<#0Ga#(Srbu)suLQ;dAn_$=#zo;$yyUhHNyuxe^kkLfhw)_(j|-?Dn@FWAFF#Js63Pou0-4lk-{)t>M389CZ(rcMrHzuHiIf# z@^_YaImhK!EL@;YdY2$nW={YL3%{EtZ)yM(fx_hK>CGs#{X4o2K@729aOTmj?5tE7 z%$9IDXBO^PyWO+ttX)Q(?P`Rmes*I98vKd_GJ9>0c0aj;-!g|ilBhemtK7g(E|o4G z@?d)OFVcKX4&WLRRuLCpu||C-qvyDpBd%8nnS(F()&r_DV2`4Y9o0Qb%~!nxG8c>) zQT8S5il1CLpv+6PItF1CW@BhHYY>uWF-&(eCgJr|B)enIlQURxzfgMIDj=yOli1lA%90UR!YCq;n7B5@ zjf=<;M4X_=ncj7jC6r+<9nwj0Go$|76*XODvz&XF>?NZZv{sO&qS4rBA6NaeOm6G% x!%@|4PT#EXRHn7fq>^{y_p)t5d5~T0@(Vc7Q1uxS(O>`o002ovPDHLkV1nm&`Z)jq literal 0 HcmV?d00001 diff --git a/charsets/dos.char b/charsets/dos.char new file mode 100644 index 0000000..aae5864 --- /dev/null +++ b/charsets/dos.char @@ -0,0 +1,11 @@ +// IBM PC code page 437 (aka "extended ASCII") +dos.png +32, 8 +   + !"#$%&'()*+,-./0123456789:;<=>? +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +`abcdefghijklmnopqrstuvwxyz{|}~ +ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒ +áíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐ +└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ +αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ diff --git a/charsets/dos.png b/charsets/dos.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a0fb3f1c68edf1471eb794e4590a9e338faf38 GIT binary patch literal 1666 zcmV-|27UR7P)?I(S|2KMaX8#Pqq->@R0HSia_i8}yW{#UQ)e9QW&Q`T;PzfHrowF3Oo zAHJc>z1~j^M z7^wT>`Is2|ESIdB_pK4;PTo7l0r^bl3^GA0+1k|`du%8e&TfxrH!svh@lwkY>Jadd#n$vf?nGl4D;^bm|3YxIh^gc;p8MZU6<$2 zxT`8V3>7n?p|k)h4{VgKy~wDT>ME=N#G@7yLabW=CCTbjL?K;Y*RdDPYbroRGXTq8 zWksi?s|-0@DdkkP0(4qS&`hqXE7k(&zAmcgcP?!~BMr!@RPcVeNxGFboFw*5K42y|^1Ia{`S^GoJqvgZCa$^zPG~J&qAz{kBH5IrtNQbaYaHd{uzo<9YD!^dLC`bnvfV4*-J8 zSpWxbbM&=77vPNJ;Ja?fRCn$acZ{*jd}=J|;{xO&;fw{~59~P91t6`>C;@;&l2Qti zs*ZgnKqRMk1(>lYSpa_|z$pykkOQ6QEdd4=Go2T}3vecY`Gk|M1c)q-y8JcUZl0n1 zWt>MFw*%X3pV`N}TYt{|TlWV2f1&9opSF^)=V}+nIaTN8ZXRvX@l338_%;{;mAjYz z>!KpS3!K$s0EBfNJg3`Wwmf~D#aTOx*GW<;3xHnhz=6BeQWYp8T~f;$K;U#tTS}7B z4=L;9sp{xd0Pg^t8ku28At@7p;WpsR2UJvkOu~iX9p}7>zL@9DPi%{T-AM@RICgwp0n66C#qOoz_IG`l*G zE<&JYQY0)IwYX~XRfF8e+@Cx~pf2GKVJ(5Grm93j6yU6nZm6`TNh1;#i>nL?S2-^h zDhcobv;I&yZ#NPee3}xY0!VQis@Vs-(&1--cYn1TD{g?+##R8VsOrNTKimMfR|%DR zM8d6hP^qUS+>YkY0}mvWwUGRy%2A>~@|FF-<@4qL5U}68Jp5_-a{1G;S*m7#Up347 z60{yGO*6iIBVm8Jl+VjUye<;Z4)^yDm&*nIzI;BGCXpZt$VpN8LJ#^s1HNVrOJybb zJd`TcWhsuTHwM*eceQX(Qnc%))Vah`UQs!QH!E%1$$!9*8P9v)xOO? +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^_ +`abcdefghijklmno +pqrstuvwxyz{|}~ +ÇüéâäàåçêëèïîìÄÅ +ÉæÆôöòûùÿÖÜ¢£¥₧ƒ +áíóúñѪº¿⌐¬½¼¡«» +░▒▓│┤╡╢╖╕╣║╗╝╜╛┐ +└┴┬├─┼╞╟╚╔╩╦╠═╬╧ +╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ +αßΓπΣσµτΦΘΩδ∞φε∩ +≡±≥≤⌠⌡÷≈°∙·√ⁿ diff --git a/charsets/dos40.png b/charsets/dos40.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd528f37d4322ad963adb78a875a81cbd4f8675 GIT binary patch literal 1336 zcmV-81;_e{P)Px#22e~?MF0Q*|NsA`*`M720004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-pj9RevFtr$qW000E5Nkl-T!eRz1v_{l_ya^X z%<9n0K>i_jVH?>8LFUvEq|@u%a>xh7ACODVxf%omog9kwZCRLMnbYjWEOS~nL8w!u z8SmOS0jt&O?$=MRN~Mwn(6;{29Kry@K{Y!=fS-qK8V0Jxm+s{065#h`Zj8Ze_v*mS z&Z@%5xv3W4zW&MSr`G_l7fqA108|y=)wMAfjdUTLKQCPlxrivW+YO7hEr2m%HsCrU zynKM}Yzm0%K`HBpm0LcAszTK87zgO5ty>!Ih{{G+4UjXsAH8(RISwq?PthHDCbYsB zD%NP>$g~w!sPp4NtW@rZ+IuSi{1(`ayQ00p)rHk%r5GxG4gbz#MH#&rIGARTxVFPq?qAFS< z(xO3du9fnAR07z93a+#(wtF6k4G$|3~Fm5!F@CjKXv2RUE;ZX=W%(Z4K z`V%+Uk5u(Mw-g?2wq0kS3(ol`PaJ9G?9Il*6}jkMyod~Vn{PV?n&?7^NvmM<6$7a- z&e^bka&g{4B+;;}!7p9sA&^+vPAP;<7Av2W6!;?QI?5r2LjXsP{wzReEt&#Y9$)9_ zSF6#p>(polE=)j+*zt%~9vR3+e{GdyfDPh8xbfQAkpSEACWNHBF68haeCox(v$cjX z7+7nyo|k;#Kq>GNu3h{v*uVp?{aiUsJ*z18gtk<3fOIBe&s?Nr$#H;o0FQ;DZJ6)% zg#h&`)M2YOfi|I|J5PE^*1K}JdyH{i?{jzmK)pJIRlRDO5}?EYyX>fr5)V(m$r!vu zER=X~1~H?9rm^Z93fVW$c7Rpe9&7D8mDmbo*gm@Vq?7>Tmev}$p=RA_VDA^=2{$ZY zG^b*y0vB%PX3q1%DLhh2MIJL->4MDuv}u~yCh;^AAjwY(Hb!A2P;HpCZL6xH)6x4V z+$YKyrlAC9L1?IdC`*pmr!^rUza2q3qaC%P_E}(<7YEC+9Y=AS{;43G(XKFHb;peT zcf(ya=?${RId@@4Fd(PNC44Y32>P!%jK!r?@wj2J*zGdoaSz^0I66FG*ClO8b{UD4 zbD(sf{_WJ*l&+RYC%op^X5vL0)yXL`g9KQ$4MpX?7mb#kkTl`((i{9ZM-RS`_N(uf zyvt1hCKIkq`Q?uvJ_ZV-pFn>*$+weU7&nE1qseIWp3(QWnHje^_x*c~3D-&4`u0}t zfxX5(z&oupVpOjG1&$}DvvT>QVOHdPe z+qzZYbZOg2uycO~T^CvMs1aq$d literal 0 HcmV?d00001 diff --git a/charsets/dos_basic.char b/charsets/dos_basic.char new file mode 100644 index 0000000..95fca5b --- /dev/null +++ b/charsets/dos_basic.char @@ -0,0 +1,6 @@ +// "Basic" (only keyboardable chars) ASCII +dos_basic.png +32, 3 + !"#$%&'()*+,-./0123456789:;<=>? +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +`abcdefghijklmnopqrstuvwxyz{|}~ diff --git a/charsets/dos_basic.png b/charsets/dos_basic.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6d83c53abb7c5aa664c15be1aa60a23bdd740d GIT binary patch literal 9117 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 +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]^ +`abcdefghijklmno +pqrstuvwxyz{|}~ + + + + + + + + + + + + + + + + + + diff --git a/charsets/intellivision.png b/charsets/intellivision.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6bc57250123ef2e19029c7c222f77d45e37cef GIT binary patch literal 1226 zcmV;*1U37KP)5)c*fZznPa7ENOMwAq_Jv0eq~b)nyR54&XZd z{QP|&`hdNUS04oJvtw=R06<>j0@uCY8@ey_2~Y!e=XdR2GXb&yTbe;QfLEU$07wSF zNMM;E(2177(ofj6*AR17`X%dL!!b%3@=BJ5NYO?_U6H`))A8 zhXc!hnhCKi09+y#Kos40MiT?@u35kU2p-N6 zR!0Ltw{RfsQjbMN4n>8-GTrT0*s8Y=EJdIkSP~0pE@)OtNQ_P)qu3RDy(J$AHYC=5 zcQT|qxUHa-yvD5t5~u(uhtvTe1pw#LIRH1oL;~n@U>(`k3p^jN01oqkq!Rm*L}MxV zi8}z=BG_L}5ETu8K?Ss$BS|uyZhHV0(oicPW=9i}#T+CG%Px9H03^424Zt?2@_?UQ z5!CE#6a^ihCM06g_K^xm0u=g%I3I9Ta?=U`83fKP#}ID|Abb!tpwHdUVgImA`q1n& zk}Ez$HNDHGtSQY7nTWsG#$hs+9RMPe=|h#TNpJRT-9)7cplrf(D|#G2VMVD6Xb!d3{Kc zJpdakwk_uX&R48oVvhjqtvGlE*ekDV5oRAQdH+_v&s#;4mA>)!y*mKHxLLlDME>zs z3qbWvXqq||pO4i5(AlgW7+Ct+nEDdDq^+dC@>GA4K%E0GjW5 o9su$!06wOIuLtn-@lSvO07IA);*|bs{r~^~07*qoM6N<$g2KcMn*aa+ literal 0 HcmV?d00001 diff --git a/charsets/jpetscii.char b/charsets/jpetscii.char new file mode 100644 index 0000000..e81ad4f --- /dev/null +++ b/charsets/jpetscii.char @@ -0,0 +1,20 @@ +// custom, PETSCII-derived set by JP LeBreton +jpetscii.png +16, 16 + ABCDEFGHIJKLMNO +PQRSTUVWXYZ[]{} +"abcdefghijklmno +pqrstuvwxyz +1234567890-=_+:; +!@#$%^&*(),.? + + + + + + + + + + `' +// end diff --git a/charsets/jpetscii.png b/charsets/jpetscii.png new file mode 100644 index 0000000000000000000000000000000000000000..d3410c9728e8c074ba568a63ce858349fd5b95fc GIT binary patch literal 2773 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 bB?kBpNBe6gyhK9@00000NkvXXu0mjfgmosd literal 0 HcmV?d00001 diff --git a/charsets/msx.char b/charsets/msx.char new file mode 100644 index 0000000..8fb4bf6 --- /dev/null +++ b/charsets/msx.char @@ -0,0 +1,12 @@ +// MSX home computers +msx.png +32, 8 + !"#$%&'()*+,-./0123456789:;<=>? +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +`abcdefghijklmnopqrstuvwxyz{|}~ +ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒ +áíóúñѪº¿⌐¬½¼¡«»ÃãĨĩÕõŨũIJij¾∽◇‰¶§ + + + +// end diff --git a/charsets/msx.png b/charsets/msx.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8a43d455425f14d098357e80ffc8cf8901ca64 GIT binary patch literal 2532 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 u;k{4yq#1DP4!9Bs*?t@2-?wx;6t{l}$k9T;G=I literal 0 HcmV?d00001 diff --git a/charsets/osamu-micro.char b/charsets/osamu-micro.char new file mode 100644 index 0000000..79e8f42 --- /dev/null +++ b/charsets/osamu-micro.char @@ -0,0 +1,4 @@ +// by @lunlumoart +osamu-micro.png +24, 7 + diff --git a/charsets/osamu-micro.png b/charsets/osamu-micro.png new file mode 100644 index 0000000000000000000000000000000000000000..282c9dec18c8c37bdbbfa92f98b747db1019b28d GIT binary patch literal 41133 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

umLP(0@=}yG5chlSce&b`@ka_`QsnxO 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 G-T5EQj+fv7 literal 0 HcmV?d00001 diff --git a/charsets/pacman.char b/charsets/pacman.char new file mode 100644 index 0000000..039e73b --- /dev/null +++ b/charsets/pacman.char @@ -0,0 +1,9 @@ +// Pac-Man ROM tiles +pacman.png +16, 6 + ABCDEFGHIJKLMNO +PQRSTUVWXYZ! +0123456789/-" + + + diff --git a/charsets/pacman.png b/charsets/pacman.png new file mode 100644 index 0000000000000000000000000000000000000000..942609decab0312ac0fc49ff137dd304ee17fd8d GIT binary patch literal 1021 zcmV zhpBQcgto=!?1odyFbas!U?yBOdYvIs#$K#^E@{x zgym3Rfe=Ee05ea&Q97x0Axj-b&Dbd=@K(oEIFz*p#x>UW?M=f5SW~DW$VYq#0;yu` zPVgFiBvIvIB)ORd)L?=GZrYfE{?!w{gbZL3$3|M}Flr7CK`C8>kOJZf>G-^9a?Z5( zC2_`DV8z!7!xb5LFPr43X8%W9k@`ANLb<7hYT7SFiOsAl-FZW}>TRdK7p^%lQX z1k5{k79J;U%_rne#L=9D-N0sEfUDvka%m=45g~i;CxBxD}Om2=UEEXL=YaDEhbs$uwW@KRh2H;j=)u4(j96j=^)j-@?iL6sS0pVWJ~gNc$)}C=p)9&Rajc-NOQ_XGkNn$C zz{=?ZZ-Z{DyD$<>#?=OrVn^bw8P6J&n9p)i*%p`q#y=hX&a)gLUNp;!$ z$DyV}P|fW5UlcSlhdFj4tkh&ijBcHOFDNLpMf`6by|L|~eid;4nLt5yPj?{{D{qCd zyNX?GMz_@sTOIQIrp15mj6E^2)u2q@ztf;i!RLrC72R2WD(pL_RWL9FsdQ)#z)|}v rE~~{~U99WXczs*j`Ktj~nHzop5wG|xLZ[]/\ +0123456789:;*=+- +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ,.? + abcdefghijklmno +pqrstuvwxyz + + + + + + + + + + diff --git a/charsets/sharp.png b/charsets/sharp.png new file mode 100644 index 0000000000000000000000000000000000000000..3157a80728180771687078b25f57792633c71308 GIT binary patch literal 3557 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 +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ[\]↑_ +£abcdefghijklmno +pqrstuvwxyz{|}~© + \ No newline at end of file diff --git a/charsets/speccy.png b/charsets/speccy.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ec5aa05e62e2aaf9a1401c0c682abcd19af5cc GIT binary patch literal 12231 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

P`HBZHqC1=5?ljGV4=a)9^%96n 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 +@ABCDEFGHIJKLMNO +PQRSTUVWXYZ½# +─abcdefghijklmno +pqrstuvwxyz¼ ÷ + + ▌ + ▐ + █ diff --git a/charsets/teletext_uk.png b/charsets/teletext_uk.png new file mode 100644 index 0000000000000000000000000000000000000000..f36a05d1fe34a6cae742580ed63a11410a750030 GIT binary patch literal 2434 zcmZ`)c~lbE8pkD5GBs^+DfeY^SJZI>Ej2?kBG=3%EwWT{5)p}9m~qK+PtC%8Mp85v zAko~xG?%cZT#(dyR+46@xFmu;r`LP`y?f4g?>*<9@AvzC%ROKExwEeOfyzJt0I(l= z+WGwM*}ZEoBt>_3vqdZz0FZ)0olkhhO)i#P%=^<++65oFbCG#_^^Cs4AFtV|kd0b9 zjlS%N3wa3a1pwgEK_B)=P{TOcaN$`{f&q3V%KK3mqzhU0WydFoJ)sAhwgfffx!eD8 z-I-yg(P@ea26foeV2zxc(qriO5qfOnOz_i@7&nNP$BUL`v|WB~n1cF8p3;&h4H>E9 zpHOV%M?zN^>4jHuD6TKor2VrW?QA*E7hTG5DEq=W1HGHlE8HL_BP#uhy{ zLhhjXSWq@%o|+?#Vw1-Ao-7vi-x84f!P`c#;7_bl44Li~j{aLvn6Xh6uzlrAz~)|rkxQ)v0_b~N27c{M47ZW~_|7?_b6(qgxi zAhKH=z?n-aP=UzG={cX*ltn9A)Z0Q-vyq93D>>~@+t!n(FYHTg2JX-nCz++ZxG}vL z-|q(M*T<`y`%~vhlbzvV*-J-LZZibYs;fF_;Ra5YC)gAnVJvo1)qJT5522e)$&{hK zEx9~5?{||C!$~jdPtV=etj6xW?ojKhN5YsPy_9Z!;Gt|70@3n5hDvqB;2&IDtx>gQ z%Epa76xUx|jJ4E;8}5aUXe+~1hxRu~)H?4pmUIb7y`K!fxXV=Zp@I+c5(bX30XLYZAfqgd|F2|G#HFGuPpG0hbJ-lt%G}G64 z)Lcc4B-MP(e3BK-c$*P@n;?7+=jyNTaURe>AxGz|oz`22mziP2&I-3Q7b&rNo#`|= zXe0&9n|L!8X19>_2zx&Sr6hO`Ma$Sg1BoY;eF=N)y%I?xX0K_>E&r4SkaV3&?VM69 z2pqaE=D#&OcOSmYT&Wgk7dC2Bn(eom+nL+3NZ~Rk@fVDjv&-MwNTZi!l(0yIt&oCg zm&rR8Jz$)1<$(v8V)RZprp#F3zu3>6h_}s#aZJhVopsC(M^heo^9{U-QNUcr9yNuV z@y;s6jybdi_z%t!ok-R};9_e~1?f=m76A_TahL#Jo#(b%hn{3n?ri*uWKeN+ir(I2 zNe0t=zis}QW?`^;|IKFiRU<=vWUkn$mVy$gb^4zuk{>>d{zdN}s-qD9lGS*gFF84a2%VSd|b# zW=c)dFsA)ii{nS&L0Ml#mAX7E?H*Ub+x|S>ns}kK0hvA&ZCJN6-UeBC$HX(D61S&; zl6C>JQUm972i_B3t`IwBS|iu;F|QLgLA(opQKCaJ+a@@Vf-QK_{l+efV2D;e_@2q5 zi+7w72m-psj!Ob^V_mER(PcE{2 zkm9tD0o;eMdLa%K%c+`Z49w595U6S#K@)P_)~^kXPj6Zd13mZLK~wpgF4T9Q?;>Db z0+@Wmjyn7rYc)h^l~_SFi|5`YcKMr4E-QDBcXZKC7`^W9lbJx(i#{6}~g#+&+1x}`J zL7MndEqrQ@l$1CC@V@?;Z{MwAn#9%+t)N`!{kCLj<*%4O^EoqBVh3W6WeJavAL}k$ z!ha}v&@U;KZynjKgRdl4@}n3zT|<;-*SS483pz@-yt{PsR7|OtmDTZ;%#_W0mIk)) zCcvBUsNg0EjoG!0dTHdCH$!+RRppEKGM%&qwxukYZ#-;YZ0e0Z#S1tEi`#8)opWzn z8>{J*%Q5q#H92gV>BQu+SvJ@vpBwrx>|Hs}eyE8KWMqqe^(hMQ?KYH+occKDtuJt_ z*-#*=mX#zsf!;1@!lU;A)n6{UWkt*l@wnFi_Ff)WhkN?pM5O?)x7cQCq9 z7Os0I%U^&&oc0T4_CR3T6;?CU+l7z6RR+sXnH=cAAf$u;7}8F&+9&*NtNQaH+EqhZ-GW9&;6R$nhivb^|x~h22jDZGM zmsDcnU0I0IYazs2*my64aq8f!rx`QTmk>P_T__=4&(JwEx@Jbu{cSKLu<=J%4ePnN>_4{+My?GyXjXew8& zWBXc?%ryEd>;p3N_exnzhb&XaK0PUiPw$%tq2hBKlXRpV)d6^bxTrbOvW-^n|ELq3I7QIZ1%de_+({0C&ZoJdUY{e5C##Oi#zMv&cr7 z(mfV`?+tIGl8B)$AY3e? + … + óćø diff --git a/charsets/ui.png b/charsets/ui.png new file mode 100644 index 0000000000000000000000000000000000000000..c91ffeaa5907490d7f86003d998722de2c16cdaf GIT binary patch literal 14899 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 literal 0 HcmV?d00001 diff --git a/charsets/ultima4.char b/charsets/ultima4.char new file mode 100644 index 0000000..38c943e --- /dev/null +++ b/charsets/ultima4.char @@ -0,0 +1,20 @@ +// Ultima IV: Quest of the Avatar tileset +ultima4.png +16, 16 + + + + + + +ABCDEFGHIJKLMNOP +QRSTUVWXYZ + + + + + + + + +// end \ No newline at end of file diff --git a/charsets/ultima4.png b/charsets/ultima4.png new file mode 100644 index 0000000000000000000000000000000000000000..eb20f563a36aaebae990b9cecdb750eb71ae92a5 GIT binary patch literal 15041 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 X?$p#}tU)1X00000NkvXXu0mjfAcoN| literal 0 HcmV?d00001 diff --git a/code_of_conduct.txt b/code_of_conduct.txt new file mode 100644 index 0000000..3f67db3 --- /dev/null +++ b/code_of_conduct.txt @@ -0,0 +1,28 @@ +Contributor Code of Conduct + +Please note that this project is released with a Contributor Code of Conduct. By +participating in this project you agree to abide by its terms: + +As contributors and maintainers of this project, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating documentation, +submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free experience for +everyone, regardless of level of experience, gender, gender identity and expression, +sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. + +Examples of unacceptable behavior by participants include the use of sexual language or +imagery, derogatory comments or personal attacks, trolling, public or private harassment, +insults, or other unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, +commits, code, wiki edits, issues, and other contributions that are not aligned to this +Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed +from the project team. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by +opening an issue or contacting one or more of the project maintainers. + +This Code of Conduct is adapted from the Contributor Covenant +(http:contributor-covenant.org), version 1.0.0, available at +http://contributor-covenant.org/version/1/0/0/ diff --git a/collision.py b/collision.py new file mode 100644 index 0000000..70a42a8 --- /dev/null +++ b/collision.py @@ -0,0 +1,577 @@ +import math +from collections import namedtuple + +from renderable import TileRenderable +from renderable_line import CircleCollisionRenderable, BoxCollisionRenderable, TileBoxCollisionRenderable + +# collision shape types +CST_NONE = 0 +"Don't use a CollisionShape" +CST_CIRCLE = 1 +"Use a CircleCollisionShap" +CST_AABB = 2 +"Use an AABBCollisionShape" +CST_TILE = 3 +""" +Tile-based collision: generate multiple AABBCollisionShapes to approximate all +non-blank (character index 0) tiles of our GameObject's default Art's +"collision layer", whose string name is defined in GO.col_layer_name. +""" + +# collision types +CT_NONE = 0 +CT_PLAYER = 1 +CT_GENERIC_STATIC = 2 +CT_GENERIC_DYNAMIC = 3 + +# collision type groups, eg static and dynamic +CTG_STATIC = [CT_GENERIC_STATIC] +'"Collision type group", collections of CT_* values for more convenient checks.' +CTG_DYNAMIC = [CT_GENERIC_DYNAMIC, CT_PLAYER] +'"Collision type group", collections of CT_* values for more convenient checks.' + +__pdoc__ = {} +# named tuples for collision structs that don't merit a class +Contact = namedtuple('Contact', ['overlap', 'timestamp']) +__pdoc__['Contact'] = "Represents a contact between two objects." + +ShapeOverlap = namedtuple('ShapeOverlap', ['x', 'y', 'dist', 'area', 'other']) +__pdoc__['ShapeOverlap'] = "Represents a CollisionShape's overlap with another." + + +class CollisionShape: + """ + Abstract class for a shape that can overlap and collide with other shapes. + Shapes are part of a Collideable which in turn is part of a GameObject. + """ + def resolve_overlaps_with_shapes(self, shapes): + "Resolve this shape's overlap(s) with given list of shapes." + overlaps = [] + for other in shapes: + if other is self: + continue + overlap = self.get_overlap(other) + if overlap.dist < 0: + overlaps.append(overlap) + if len(overlaps) == 0: + return + # resolve collisions in order of largest -> smallest overlap + overlaps.sort(key=lambda item: item.area, reverse=True) + for i,old_overlap in enumerate(overlaps): + # resolve first overlap without recalculating + overlap = self.get_overlap(old_overlap.other) if i > 0 else overlaps[0] + self.resolve_overlap(overlap) + + def resolve_overlap(self, overlap): + "Resolve this shape's given overlap." + other = overlap.other + # tell objects they're overlapping, pass penetration vector + a_coll_b, a_started_b = self.go.overlapped(other.go, overlap) + b_coll_a, b_started_a = other.go.overlapped(self.go, overlap) + # if either object says it shouldn't collide with other, don't + if not a_coll_b or not b_coll_a: + return + # push shapes apart according to mass + total_mass = max(0, self.go.mass) + max(0, other.go.mass) + if self.go.is_dynamic(): + if not other.go.is_dynamic() or other.go.mass < 0: + a_push = overlap.dist + else: + a_push = (self.go.mass / total_mass) * overlap.dist + # move parent object, not shape + self.go.x += a_push * overlap.x + self.go.y += a_push * overlap.y + # update all shapes based on object's new position + self.go.collision.update_transform_from_object() + if other.go.is_dynamic(): + if not self.go.is_dynamic() or self.go.mass < 0: + b_push = overlap.dist + else: + b_push = (other.go.mass / total_mass) * overlap.dist + other.go.x -= b_push * overlap.x + other.go.y -= b_push * overlap.y + other.go.collision.update_transform_from_object() + # call objs' started_colliding once collisions have been resolved + world = self.go.world + if a_started_b: + world.try_object_method(self.go, self.go.started_colliding, [other.go]) + if b_started_a: + world.try_object_method(other.go, other.go.started_colliding, [self.go]) + + def get_overlapping_static_shapes(self): + "Return a list of static shapes that overlap with this shape." + overlapping_shapes = [] + shape_left, shape_top, shape_right, shape_bottom = self.get_box() + # add padding to overlapping tiles check + if False: + padding = 0.01 + shape_left -= padding + shape_top -= padding + shape_right += padding + shape_bottom += padding + for obj in self.go.world.objects.values(): + if obj is self.go or not obj.should_collide() or obj.is_dynamic(): + continue + # always check non-tile-based static shapes + if obj.collision_shape_type != CST_TILE: + overlapping_shapes += obj.collision.shapes + else: + # skip if even bounds don't overlap + obj_left, obj_top, obj_right, obj_bottom = obj.get_edges() + if not boxes_overlap(shape_left, shape_top, shape_right, shape_bottom, + obj_left, obj_top, obj_right, obj_bottom): + continue + overlapping_shapes += obj.collision.get_shapes_overlapping_box(shape_left, shape_top, shape_right, shape_bottom) + return overlapping_shapes + + +class CircleCollisionShape(CollisionShape): + "CollisionShape using a circle area." + def __init__(self, loc_x, loc_y, radius, game_object): + self.x, self.y = loc_x, loc_y + self.radius = radius + self.go = game_object + + def get_box(self): + "Return world coordinates of our bounds (left, top, right, bottom)" + return self.x - self.radius, self.y - self.radius, self.x + self.radius, self.y + self.radius + + def is_point_inside(self, x, y): + "Return True if given point is inside this shape." + return (self.x - x) ** 2 + (self.y - y) ** 2 <= self.radius ** 2 + + def overlaps_line(self, x1, y1, x2, y2): + "Return True if this circle overlaps given line segment." + return circle_overlaps_line(self.x, self.y, self.radius, x1, y1, x2, y2) + + def get_overlap(self, other): + "Return ShapeOverlap data for this shape's overlap with given other." + if type(other) is CircleCollisionShape: + px, py, pdist1, pdist2 = point_circle_penetration(self.x, self.y, + other.x, other.y, + self.radius + other.radius) + elif type(other) is AABBCollisionShape: + px, py, pdist1, pdist2 = circle_box_penetration(self.x, self.y, + other.x, other.y, + self.radius, other.halfwidth, + other.halfheight) + area = abs(pdist1 * pdist2) if pdist1 < 0 else 0 + return ShapeOverlap(x=px, y=py, dist=pdist1, area=area, other=other) + + +class AABBCollisionShape(CollisionShape): + "CollisionShape using an axis-aligned bounding box area." + def __init__(self, loc_x, loc_y, halfwidth, halfheight, game_object): + self.x, self.y = loc_x, loc_y + self.halfwidth, self.halfheight = halfwidth, halfheight + self.go = game_object + # for CST_TILE objects, lists of tile(s) we cover + self.tiles = [] + + def get_box(self): + return self.x - self.halfwidth, self.y - self.halfheight, self.x + self.halfwidth, self.y + self.halfheight + + def is_point_inside(self, x, y): + "Return True if given point is inside this shape." + return point_in_box(x, y, *self.get_box()) + + def overlaps_line(self, x1, y1, x2, y2): + "Return True if this box overlaps given line segment." + left, top, right, bottom = self.get_box() + return box_overlaps_line(left, top, right, bottom, x1, y1, x2, y2) + + def get_overlap(self, other): + "Return ShapeOverlap data for this shape's overlap with given other." + if type(other) is AABBCollisionShape: + px, py, pdist1, pdist2 = box_penetration(self.x, self.y, + other.x, other.y, + self.halfwidth, self.halfheight, + other.halfwidth, other.halfheight) + elif type(other) is CircleCollisionShape: + px, py, pdist1, pdist2 = circle_box_penetration(other.x, other.y, + self.x, self.y, + other.radius, self.halfwidth, + self.halfheight) + # reverse result if we're shape B + px, py = -px, -py + area = abs(pdist1 * pdist2) if pdist1 < 0 else 0 + return ShapeOverlap(x=px, y=py, dist=pdist1, area=area, other=other) + + +class Collideable: + "Collision component for GameObjects. Contains a list of shapes." + use_art_offset = False + "use game object's art_off_pct values" + def __init__(self, obj): + "Create new Collideable for given GameObject." + self.go = obj + self.cl = self.go.world.cl + self.renderables, self.shapes = [], [] + self.tile_shapes = {} + "Dict of shapes accessible by (x,y) tile coordinates" + self.contacts = {} + "Dict of contacts with other objects, by object name" + self.create_shapes() + + def create_shapes(self): + """ + Create collision shape(s) appropriate to our game object's + collision_shape_type value. + """ + self._clear_shapes() + if self.go.collision_shape_type == CST_NONE: + return + elif self.go.collision_shape_type == CST_CIRCLE: + self._create_circle() + elif self.go.collision_shape_type == CST_AABB: + self._create_box() + elif self.go.collision_shape_type == CST_TILE: + self.tile_shapes.clear() + self._create_merged_tile_boxes() + # update renderables once if static + if not self.go.is_dynamic(): + self.update_renderables() + + def _clear_shapes(self): + for r in self.renderables: + r.destroy() + self.renderables = [] + for shape in self.shapes: + self.cl._remove_shape(shape) + self.shapes = [] + "List of CollisionShapes" + + def _create_circle(self): + x = self.go.x + self.go.col_offset_x + y = self.go.y + self.go.col_offset_y + shape = self.cl._add_circle_shape(x, y, self.go.col_radius, self.go) + self.shapes = [shape] + self.renderables = [CircleCollisionRenderable(shape)] + + def _create_box(self): + x = self.go.x # + self.go.col_offset_x + y = self.go.y # + self.go.col_offset_y + shape = self.cl._add_box_shape(x, y, + self.go.col_width / 2, + self.go.col_height / 2, + self.go) + self.shapes = [shape] + self.renderables = [BoxCollisionRenderable(shape)] + + def _create_merged_tile_boxes(self): + "Create AABB shapes for a CST_TILE object" + # generate fewer, larger boxes! + frame = self.go.renderable.frame + if not self.go.col_layer_name in self.go.art.layer_names: + self.go.app.dev_log("%s: Couldn't find collision layer with name '%s'" % (self.go.name, self.go.col_layer_name)) + return + layer = self.go.art.layer_names.index(self.go.col_layer_name) + # tile is available if it's not empty and not already covered by a shape + def tile_available(tile_x, tile_y): + return self.go.art.get_char_index_at(frame, layer, tile_x, tile_y) != 0 and not (tile_x, tile_y) in self.tile_shapes + def tile_range_available(start_x, end_x, start_y, end_y): + for y in range(start_y, end_y + 1): + for x in range(start_x, end_x + 1): + if not tile_available(x, y): + return False + return True + for y in range(self.go.art.height): + for x in range(self.go.art.width): + if not tile_available(x, y): + continue + # determine how big we can make this box + # first fill left to right + end_x = x + while end_x < self.go.art.width - 1 and tile_available(end_x + 1, y): + end_x += 1 + # then fill top to bottom + end_y = y + while end_y < self.go.art.height - 1 and tile_range_available(x, end_x, y, end_y + 1): + end_y += 1 + # compute origin and halfsizes of box covering tile range + wx1, wy1 = self.go.get_tile_loc(x, y, tile_center=True) + wx2, wy2 = self.go.get_tile_loc(end_x, end_y, tile_center=True) + wx = (wx1 + wx2) / 2 + halfwidth = (end_x - x) * self.go.art.quad_width + halfwidth /= 2 + halfwidth += self.go.art.quad_width / 2 + wy = (wy1 + wy2) / 2 + halfheight = (end_y - y) * self.go.art.quad_height + halfheight /= 2 + halfheight += self.go.art.quad_height / 2 + shape = self.cl._add_box_shape(wx, wy, halfwidth, halfheight, + self.go) + # fill in cell(s) in our tile collision dict, + # write list of tiles shape covers to shape.tiles + for tile_y in range(y, end_y + 1): + for tile_x in range(x, end_x + 1): + self.tile_shapes[(tile_x, tile_y)] = shape + shape.tiles.append((tile_x, tile_y)) + r = TileBoxCollisionRenderable(shape) + # update renderable once to set location correctly + r.update() + self.shapes.append(shape) + self.renderables.append(r) + + def get_shape_overlapping_point(self, x, y): + "Return shape if it's overlapping given point, None if no overlap." + tile_x, tile_y = self.go.get_tile_at_point(x, y) + return self.tile_shapes.get((tile_x, tile_y), None) + + def get_shapes_overlapping_box(self, left, top, right, bottom): + "Return a list of our shapes that overlap given box." + shapes = [] + tiles = self.go.get_tiles_overlapping_box(left, top, right, bottom) + for (x, y) in tiles: + shape = self.tile_shapes.get((x, y), None) + if shape and not shape in shapes: + shapes.append(shape) + return shapes + + def update(self): + if self.go and self.go.is_dynamic(): + self.update_transform_from_object() + + def update_transform_from_object(self, obj=None): + "Snap our shapes to location of given object (if unspecified, our GO)." + obj = obj or self.go + # CST_TILE shouldn't run here, it's static-only + if obj.collision_shape_type == CST_TILE: + return + for shape in self.shapes: + shape.x = obj.x + obj.col_offset_x + shape.y = obj.y + obj.col_offset_y + + def set_shape_color(self, shape, new_color): + "Set the color of a given shape's debug LineRenderable." + try: + shape_index = self.shapes.index(shape) + except ValueError: + return + self.renderables[shape_index].color = new_color + self.renderables[shape_index].build_geo() + self.renderables[shape_index].rebind_buffers() + + def update_renderables(self): + for r in self.renderables: + r.update() + + def render(self): + for r in self.renderables: + r.render() + + def destroy(self): + for r in self.renderables: + r.destroy() + # remove our shapes from CollisionLord's shape list + for shape in self.shapes: + self.cl._remove_shape(shape) + + +class CollisionLord: + """ + Collision manager object, tracks Collideables, detects overlaps and + resolves collisions. + """ + iterations = 7 + """ + Number of times to resolve collisions per update. Lower at own risk; + multi-object collisions require multiple iterations to settle correctly. + """ + def __init__(self, world): + self.world = world + self.ticks = 0 + # list of objects processed for collision this frame + self.collisions_this_frame = [] + self.reset() + + def report(self): + print('%s: %s dynamic shapes, %s static shapes' % (self, + len(self.dynamic_shapes), + len(self.static_shapes))) + + def reset(self): + self.dynamic_shapes, self.static_shapes = [], [] + + def _add_circle_shape(self, x, y, radius, game_object): + shape = CircleCollisionShape(x, y, radius, game_object) + if game_object.is_dynamic(): + self.dynamic_shapes.append(shape) + else: + self.static_shapes.append(shape) + return shape + + def _add_box_shape(self, x, y, halfwidth, halfheight, game_object): + shape = AABBCollisionShape(x, y, halfwidth, halfheight, game_object) + if game_object.is_dynamic(): + self.dynamic_shapes.append(shape) + else: + self.static_shapes.append(shape) + return shape + + def _remove_shape(self, shape): + if shape in self.dynamic_shapes: + self.dynamic_shapes.remove(shape) + elif shape in self.static_shapes: + self.static_shapes.remove(shape) + + def update(self): + "Resolve overlaps between all relevant world objects." + for i in range(self.iterations): + # filter shape lists for anything out of room etc + valid_dynamic_shapes = [] + for shape in self.dynamic_shapes: + if shape.go.should_collide(): + valid_dynamic_shapes.append(shape) + for shape in valid_dynamic_shapes: + shape.resolve_overlaps_with_shapes(valid_dynamic_shapes) + for shape in valid_dynamic_shapes: + static_shapes = shape.get_overlapping_static_shapes() + shape.resolve_overlaps_with_shapes(static_shapes) + # check which objects stopped colliding + for obj in self.world.objects.values(): + obj.check_finished_contacts() + self.ticks += 1 + self.collisions_this_frame = [] + + +# collision handling + +def point_in_box(x, y, box_left, box_top, box_right, box_bottom): + "Return True if given point lies within box with given corners." + return box_left <= x <= box_right and box_bottom <= y <= box_top + +def boxes_overlap(left_a, top_a, right_a, bottom_a, + left_b, top_b, right_b, bottom_b): + "Return True if given boxes A and B overlap." + for (x, y) in ((left_a, top_a), (right_a, top_a), + (right_a, bottom_a), (left_a, bottom_a)): + if left_b <= x <= right_b and bottom_b <= y <= top_b: + return True + return False + +def lines_intersect(x1, y1, x2, y2, x3, y3, x4, y4): + "Return True if given lines intersect." + denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1) + numer = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3) + numer2 = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3) + if denom == 0: + if numer == 0 and numer2 == 0: + # coincident + return False + # parallel + return False + ua = numer / denom + ub = numer2 / denom + return ua >= 0 and ua <= 1 and ub >= 0 and ub <= 1 + +def line_point_closest_to_point(point_x, point_y, x1, y1, x2, y2): + "Return point on given line that's closest to given point." + wx, wy = point_x - x1, point_y - y1 + dir_x, dir_y = x2 - x1, y2 - y1 + proj = wx * dir_x + wy * dir_y + if proj <= 0: + # line point 1 is closest + return x1, y1 + vsq = dir_x ** 2 + dir_y ** 2 + if proj >= vsq: + # line point 2 is closest + return x2, y2 + else: + # closest point is between 1 and 2 + return x1 + (proj / vsq) * dir_x, y1 + (proj / vsq) * dir_y + +def circle_overlaps_line(circle_x, circle_y, radius, x1, y1, x2, y2): + "Return True if given circle overlaps given line." + # get closest point on line to circle center + closest_x, closest_y = line_point_closest_to_point(circle_x, circle_y, + x1, y1, x2, y2) + dist_x, dist_y = closest_x - circle_x, closest_y - circle_y + return dist_x ** 2 + dist_y ** 2 <= radius ** 2 + +def box_overlaps_line(left, top, right, bottom, x1, y1, x2, y2): + "Return True if given box overlaps given line." + # TODO: determine if this is less efficient than slab method below + if point_in_box(x1, y1, left, top, right, bottom) and \ + point_in_box(x2, y2, left, top, right, bottom): + return True + # check left/top/right/bottoms edges + return lines_intersect(left, top, left, bottom, x1, y1, x2, y2) or \ + lines_intersect(left, top, right, top, x1, y1, x2, y2) or \ + lines_intersect(right, top, right, bottom, x1, y1, x2, y2) or \ + lines_intersect(left, bottom, right, bottom, x1, y1, x2, y2) + +def box_overlaps_ray(left, top, right, bottom, x1, y1, x2, y2): + "Return True if given box overlaps given ray." + # TODO: determine if this can be adapted for line segments + # (just a matter of setting tmin/tmax properly?) + tmin, tmax = -math.inf, math.inf + dir_x, dir_y = x2 - x1, y2 - y1 + if abs(dir_x) > 0: + tx1 = (left - x1) / dir_x + tx2 = (right - x1) / dir_x + tmin = max(tmin, min(tx1, tx2)) + tmax = min(tmax, max(tx1, tx2)) + if abs(dir_y) > 0: + ty1 = (top - y1) / dir_y + ty2 = (bottom - y1) / dir_y + tmin = max(tmin, min(ty1, ty2)) + tmax = min(tmax, max(ty1, ty2)) + return tmax >= tmin + +def point_circle_penetration(point_x, point_y, circle_x, circle_y, radius): + "Return normalized penetration x, y, and distance for given circles." + dx, dy = circle_x - point_x, circle_y - point_y + pdist = math.sqrt(dx ** 2 + dy ** 2) + # point is center of circle, arbitrarily project out in +X + if pdist == 0: + return 1, 0, -radius, -radius + # TODO: calculate other axis of intersection for area? + return dx / pdist, dy / pdist, pdist - radius, pdist - radius + +def box_penetration(ax, ay, bx, by, ahw, ahh, bhw, bhh): + "Return penetration vector and magnitude for given boxes." + left_a, right_a = ax - ahw, ax + ahw + top_a, bottom_a = ay + ahh, ay - ahh + left_b, right_b = bx - bhw, bx + bhw + top_b, bottom_b = by + bhh, by - bhh + # A to left or right of B? + px = right_a - left_b if ax <= bx else right_b - left_a + # A above or below B? + py = top_b - bottom_a if ay >= by else top_a - bottom_b + dx, dy = bx - ax, by - ay + widths, heights = ahw + bhw, ahh + bhh + # return separating axis + penetration depth (+ other axis for area calc) + if widths + px - abs(dx) < heights + py - abs(dy): + if dx >= 0: + return 1, 0, -px, -py + elif dx < 0: + return -1, 0, -px, -py + else: + if dy >= 0: + return 0, 1, -py, -px + elif dy < 0: + return 0, -1, -py, -px + +def circle_box_penetration(circle_x, circle_y, box_x, box_y, circle_radius, + box_hw, box_hh): + "Return penetration vector and magnitude for given circle and box." + box_left, box_right = box_x - box_hw, box_x + box_hw + box_top, box_bottom = box_y + box_hh, box_y - box_hh + # if circle center inside box, use box-on-box penetration vector + distance + if point_in_box(circle_x, circle_y, box_left, box_top, box_right, box_bottom): + return box_penetration(circle_x, circle_y, box_x, box_y, + circle_radius, circle_radius, box_hw, box_hh) + # find point on AABB edges closest to center of circle + # clamp = min(highest, max(lowest, val)) + px = min(box_right, max(box_left, circle_x)) + py = min(box_top, max(box_bottom, circle_y)) + closest_x = circle_x - px + closest_y = circle_y - py + d = math.sqrt(closest_x ** 2 + closest_y ** 2) + pdist = circle_radius - d + if d == 0: + return + 1, 0, -pdist, -pdist + # TODO: calculate other axis of intersection for area? + return -closest_x / d, -closest_y / d, -pdist, -pdist diff --git a/cursor.py b/cursor.py new file mode 100644 index 0000000..660c41d --- /dev/null +++ b/cursor.py @@ -0,0 +1,376 @@ +import math, ctypes +import numpy as np +from OpenGL import GL + +import vector +from edit_command import EditCommand +from renderable_sprite import UISpriteRenderable + +""" +reference diagram: + + 0 0.2 0.8 1.0 + A--------B *--------* + | | | | +0.1 | D-----C *-----* | + | | | | + | | | | +0.2 F--E *--* + +etc +""" + +OUTSIDE_EDGE_SIZE = 0.2 +THICKNESS = 0.1 + +corner_verts = [ + 0, 0, # A/0 + OUTSIDE_EDGE_SIZE, 0, # B/1 + OUTSIDE_EDGE_SIZE, -THICKNESS, # C/2 + THICKNESS, -THICKNESS, # D/3 + THICKNESS, -OUTSIDE_EDGE_SIZE, # E/4 + 0, -OUTSIDE_EDGE_SIZE # F/5 +] + +# vert indices for the above +corner_elems = [ + 0, 1, 2, + 0, 2, 3, + 0, 3, 4, + 0, 5, 4 +] + +# X/Y flip transforms to make all 4 corners +# (top left, top right, bottom left, bottom right) +corner_transforms = [ + ( 1, 1), + (-1, 1), + ( 1, -1), + (-1, -1) +] + +# offsets to translate the 4 corners by +corner_offsets = [ + (0, 0), + (1, 0), + (0, -1), + (1, -1) +] + +BASE_COLOR = (0.8, 0.8, 0.8, 1) + +# why do we use the weird transforms and offsets? +# because a static vertex list wouldn't be able to adjust to different +# character set aspect ratios. + +class Cursor: + + vert_shader_source = 'cursor_v.glsl' + frag_shader_source = 'cursor_f.glsl' + alpha = 1 + icon_scale_factor = 4 + logg = False + + def __init__(self, app): + self.app = app + self.x, self.y, self.z = 0, 0, 0 + self.last_x, self.last_y = 0, 0 + self.scale_x, self.scale_y, self.scale_z = 1, 1, 1 + # list of EditCommandTiles for preview + self.preview_edits = [] + self.current_command = None + # offsets to render the 4 corners at + self.mouse_x, self.mouse_y = 0, 0 + self.moved = False + self.color = np.array(BASE_COLOR, dtype=np.float32) + # GL objects + if self.app.use_vao: + self.vao = GL.glGenVertexArrays(1) + GL.glBindVertexArray(self.vao) + self.vert_buffer, self.elem_buffer = GL.glGenBuffers(2) + self.vert_array = np.array(corner_verts, dtype=np.float32) + self.elem_array = np.array(corner_elems, dtype=np.uint32) + self.vert_count = int(len(self.elem_array)) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glBufferData(GL.GL_ARRAY_BUFFER, self.vert_array.nbytes, + self.vert_array, GL.GL_STATIC_DRAW) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_buffer) + GL.glBufferData(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_array.nbytes, + self.elem_array, GL.GL_STATIC_DRAW) + # shader, attributes + self.shader = self.app.sl.new_shader(self.vert_shader_source, self.frag_shader_source) + # vert positions + self.pos_attrib = self.shader.get_attrib_location('vertPosition') + GL.glEnableVertexAttribArray(self.pos_attrib) + offset = ctypes.c_void_p(0) + GL.glVertexAttribPointer(self.pos_attrib, 2, + GL.GL_FLOAT, GL.GL_FALSE, 0, offset) + # uniforms + self.proj_matrix_uniform = self.shader.get_uniform_location('projection') + self.view_matrix_uniform = self.shader.get_uniform_location('view') + self.position_uniform = self.shader.get_uniform_location('objectPosition') + self.scale_uniform = self.shader.get_uniform_location('objectScale') + self.color_uniform = self.shader.get_uniform_location('baseColor') + self.quad_size_uniform = self.shader.get_uniform_location('quadSize') + self.xform_uniform = self.shader.get_uniform_location('vertTransform') + self.offset_uniform = self.shader.get_uniform_location('vertOffset') + self.alpha_uniform = self.shader.get_uniform_location('baseAlpha') + # finish + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0) + if self.app.use_vao: + GL.glBindVertexArray(0) + # init tool sprite, tool will provide texture when rendered + self.tool_sprite = UISpriteRenderable(self.app) + + def clamp_to_active_art(self): + self.x = max(0, min(self.x, self.app.ui.active_art.width - 1)) + self.y = min(0, max(self.y, -self.app.ui.active_art.height + 1)) + + def keyboard_move(self, delta_x, delta_y): + if not self.app.ui.active_art: + return + self.x += delta_x + self.y += delta_y + self.clamp_to_active_art() + self.moved = True + self.app.keyboard_editing = True + if self.logg: + self.app.log('Cursor: %s,%s,%s scale %.2f,%.2f' % (self.x, self.y, self.z, self.scale_x, self.scale_y)) + + def set_scale(self, new_scale): + self.scale_x = self.scale_y = new_scale + + def get_tile(self): + # adjust for brush size + size = self.app.ui.selected_tool.brush_size + if size: + size_offset = math.ceil(size / 2) - 1 + return int(self.x + size_offset), int(-self.y + size_offset) + else: + return int(self.x), int(-self.y) + + def center_in_art(self): + art = self.app.ui.active_art + if not art: + return + self.x = round(art.width / 2) * art.quad_width + self.y = round(-art.height / 2) * art.quad_height + self.moved = True + + # !!TODO!! finish this, work in progress + def get_tiles_under_drag(self): + """ + returns list of tuple coordinates of all tiles under cursor's current + position AND tiles it's moved over since last update + """ + + # TODO: get vector of last to current position, for each tile under + # current brush, do line trace along grid towards last point + + # TODO: this works in two out of four diagonals, + # swap current and last positions to determine delta? + + if self.last_x <= self.x: + x0, y0 = self.last_x, -self.last_y + x1, y1 = self.x, -self.y + else: + x0, y0 = self.x, -self.y + x1, y1 = self.last_x, -self.last_y + tiles = vector.get_tiles_along_line(x0, y0, x1, y1) + print('drag from %s,%s to %s,%s:' % (x0, y0, x1, y1)) + print(tiles) + return tiles + + def get_tiles_under_brush(self): + """ + returns list of tuple coordinates of all tiles under the cursor @ its + current brush size + """ + size = self.app.ui.selected_tool.brush_size + tiles = [] + x_start, y_start = int(self.x), int(-self.y) + for y in range(y_start, y_start + size): + for x in range(x_start, x_start + size): + tiles.append((x, y)) + return tiles + + def undo_preview_edits(self): + for edit in self.preview_edits: + edit.undo() + + def update_cursor_preview(self): + # rebuild list of cursor preview commands + if self.app.ui.selected_tool.show_preview: + self.preview_edits = self.app.ui.selected_tool.get_paint_commands() + for edit in self.preview_edits: + edit.apply() + else: + self.preview_edits = [] + + def start_paint(self): + if self.app.ui.console.visible or self.app.ui.popup in self.app.ui.hovered_elements: + return + if self.app.ui.selected_tool is self.app.ui.grab_tool: + self.app.ui.grab_tool.grab() + return + # start a new command group, commit and clear any preview edits + self.current_command = EditCommand(self.app.ui.active_art) + self.current_command.add_command_tiles(self.preview_edits) + self.preview_edits = [] + self.app.ui.active_art.set_unsaved_changes(True) + #print(self.app.ui.active_art.command_stack) + + def finish_paint(self): + "invoked by mouse button up and undo" + if self.app.ui.console.visible or self.app.ui.popup in self.app.ui.hovered_elements: + return + # push current command group onto undo stack + if not self.current_command: + return + self.current_command.finish_time = self.app.get_elapsed_time() + self.app.ui.active_art.command_stack.commit_commands([self.current_command]) + self.current_command = None + # tools like rotate produce a different change each time, so update again + if self.app.ui.selected_tool.update_preview_after_paint: + self.update_cursor_preview() + #print(self.app.ui.active_art.command_stack) + + def moved_this_frame(self): + return self.moved or \ + int(self.last_x) != int(self.x) or \ + int(self.last_y) != int(self.y) + + def reposition_from_mouse(self): + self.x, self.y, _ = vector.screen_to_world(self.app, + self.app.mouse_x, + self.app.mouse_y) + + def snap_to_tile(self): + w, h = self.app.ui.active_art.quad_width, self.app.ui.active_art.quad_height + char_aspect = w / h + # round result for oddly proportioned charsets + self.x = round(math.floor(self.x / w) * w) + self.y = round(math.ceil(self.y / h) * h * char_aspect) + + def pre_first_update(self): + # vector.screen_to_world result will be off because camera hasn't + # moved yet, recalc view matrix + self.app.camera.calc_view_matrix() + self.reposition_from_mouse() + self.snap_to_tile() + self.update_cursor_preview() + self.entered_new_tile() + + def update(self): + # save old positions before update + self.last_x, self.last_y = self.x, self.y + # pulse alpha and scale + self.alpha = 0.75 + (math.sin(self.app.get_elapsed_time() / 100) / 2) + #self.scale_x = 1.5 + (math.sin(self.get_elapsed_time() / 100) / 50 - 0.5) + mouse_moved = self.app.mouse_dx != 0 or self.app.mouse_dy != 0 + # update cursor from mouse if: mouse moved, camera moved w/o keyboard + if mouse_moved or (not self.app.keyboard_editing and self.app.camera.moved_this_frame): + # don't let mouse move cursor if text tool input is happening + if not self.app.ui.text_tool.input_active: + self.reposition_from_mouse() + # cursor always at depth of active layer + art = self.app.ui.active_art + self.z = art.layers_z[art.active_layer] if art else 0 + self.moved = True + if not self.moved and not self.app.ui.tool_settings_changed: + return + if not self.app.keyboard_editing and not self.app.ui.tool_settings_changed: + self.snap_to_tile() + # adjust for brush size + if self.app.ui.selected_tool.brush_size: + size = self.app.ui.selected_tool.brush_size + self.scale_x = self.scale_y = size + # don't reposition on resize if keyboard navigating + if mouse_moved: + size_offset = math.ceil(size / 2) - 1 + self.x -= size_offset + self.y += size_offset + else: + self.scale_x = self.scale_y = 1 + self.undo_preview_edits() + self.update_cursor_preview() + if self.moved_this_frame(): + self.entered_new_tile() + + def end_update(self): + "called at the end of App.update" + self.moved = False + + def entered_new_tile(self): + if self.current_command and self.app.ui.selected_tool.paint_while_dragging: + # add new tile(s) to current command group + self.current_command.add_command_tiles(self.preview_edits) + self.app.ui.active_art.set_unsaved_changes(True) + self.preview_edits = [] + + def render(self): + GL.glUseProgram(self.shader.program) + GL.glUniformMatrix4fv(self.proj_matrix_uniform, 1, GL.GL_FALSE, self.app.camera.projection_matrix) + GL.glUniformMatrix4fv(self.view_matrix_uniform, 1, GL.GL_FALSE, self.app.camera.view_matrix) + GL.glUniform3f(self.position_uniform, self.x, self.y, self.z) + GL.glUniform3f(self.scale_uniform, self.scale_x, self.scale_y, self.scale_z) + GL.glUniform4fv(self.color_uniform, 1, self.color) + GL.glUniform2f(self.quad_size_uniform, self.app.ui.active_art.quad_width, self.app.ui.active_art.quad_height) + GL.glUniform1f(self.alpha_uniform, self.alpha) + # VAO vs non-VAO paths + if self.app.use_vao: + GL.glBindVertexArray(self.vao) + else: + attrib = self.shader.get_attrib_location # for brevity + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glVertexAttribPointer(attrib('vertPosition'), 2, GL.GL_FLOAT, GL.GL_FALSE, 0, + ctypes.c_void_p(0)) + GL.glEnableVertexAttribArray(attrib('vertPosition')) + # bind elem array instead of passing it to glDrawElements - latter + # sends pyopengl a new array, which is deprecated and breaks on Mac. + # thanks Erin Congden! + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_buffer) + GL.glEnable(GL.GL_BLEND) + GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA) + # draw 4 corners + for i in range(4): + tx,ty = corner_transforms[i][0], corner_transforms[i][1] + ox,oy = corner_offsets[i][0], corner_offsets[i][1] + GL.glUniform2f(self.xform_uniform, tx, ty) + GL.glUniform2f(self.offset_uniform, ox, oy) + GL.glDrawElements(GL.GL_TRIANGLES, self.vert_count, + GL.GL_UNSIGNED_INT, None) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0) + GL.glDisable(GL.GL_BLEND) + if self.app.use_vao: + GL.glBindVertexArray(0) + GL.glUseProgram(0) + # position and render tool icon + ui = self.app.ui + # special handling for quick grab + if self.app.right_mouse: + self.tool_sprite.texture = ui.grab_tool.get_icon_texture() + else: + self.tool_sprite.texture = ui.selected_tool.get_icon_texture() + # scale same regardless of screen resolution + aspect = self.app.window_height / self.app.window_width + scale_x = self.tool_sprite.texture.width / self.app.window_width + scale_x *= self.icon_scale_factor * self.app.ui.scale + self.tool_sprite.scale_x = scale_x + scale_y = self.tool_sprite.texture.height / self.app.window_height + scale_y *= self.icon_scale_factor * self.app.ui.scale + self.tool_sprite.scale_y = scale_y + # top left of icon at bottom right of cursor + size = ui.selected_tool.brush_size or 1 + x, y = self.x, self.y + x += size * ui.active_art.quad_width + # non-square charsets a bit tricky to properly account for + char_aspect = ui.active_art.quad_height / ui.active_art.quad_width + y -= (size / char_aspect) * ui.active_art.quad_height + y *= char_aspect + sx, sy = vector.world_to_screen_normalized(self.app, x, y, self.z) + # screen-space offset by icon's height + sy -= scale_y + self.tool_sprite.x, self.tool_sprite.y = sx, sy + self.tool_sprite.render() diff --git a/docs/bugs.txt b/docs/bugs.txt new file mode 100644 index 0000000..5695c7c --- /dev/null +++ b/docs/bugs.txt @@ -0,0 +1,17 @@ +bug list + +PNG export: layers that have too high a Z won't show up in export, special-case behavior for near/far Z in renderable export? + +rewrite Cursor.screen_to_world to produce same results as gluUnProject: +https://www.opengl.org/wiki/GluProject_and_gluUnProject_code +https://www.opengl.org/sdk/docs/man2/xhtml/gluUnProject.xml + +more on above: when camera tilt engaged, cursor is closest to accurate along middle of bottom edge - apply aspect correction to both axes? +multiplying y by aspect (w/h) causes more distortion, but recenters most accurate point at middle of screen instead + + +lower priority: + +problem discovered during 2015-01-04~06: +GLSL really can't handle int/uint attributes! charIndex looks fine in numpy int32 array data but comes into GLSL totally screwy. works fine when the array and attribute are floats instead. bug for PyOpenGL devs? +possible test program: two quads side by side, each doing some trivial shader that involves an arbitrary number, only difference being one is driven by an int attribute and the other by a float. diff --git a/docs/bugs/jesper_sarnesjo.txt b/docs/bugs/jesper_sarnesjo.txt new file mode 100644 index 0000000..2286be8 --- /dev/null +++ b/docs/bugs/jesper_sarnesjo.txt @@ -0,0 +1,50 @@ +~/src/_/playscii ♪ python3 playscii.py +Playscii v0.1.1 +OpenGL detected: 4.1 NVIDIA-10.0.43 310.41.05f01 +GLSL detected: 4.10 +Vertex Array Object support found. +creating new document art/new.psci +Traceback (most recent call last): + File "/usr/local/lib/python3.4/site-packages/OpenGL/latebind.py", line 41, in __call__ + return self._finalCall( *args, **named ) +TypeError: 'NoneType' object is not callable + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "playscii.py", line 531, in + app = Application(log_file, log_lines, file_to_load) + File "playscii.py", line 117, in __init__ + self.load_art(art_filename) + File "playscii.py", line 163, in load_art + art = self.new_art(filename) + File "playscii.py", line 139, in new_art + charset = self.load_charset(self.starting_charset) + File "playscii.py", line 190, in load_charset + new_charset = CharacterSet(self, charset_to_load, log) + File "/Users/jesper/src/_/playscii/charset.py", line 73, in __init__ + self.texture = Texture(img.tostring(), self.image_width, self.image_height) + File "/Users/jesper/src/_/playscii/texture.py", line 16, in __init__ + self.gltex = GL.glGenTextures(1) + File "/usr/local/lib/python3.4/site-packages/OpenGL/latebind.py", line 61, in __call__ + return self.wrapperFunction( self.baseFunction, *args, **named ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/GL/exceptional.py", line 178, in glGenTextures + baseFunction( count, textures) + File "/usr/local/lib/python3.4/site-packages/OpenGL/latebind.py", line 45, in __call__ + return self._finalCall( *args, **named ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/wrapper.py", line 664, in wrapperCall + raise err + File "/usr/local/lib/python3.4/site-packages/OpenGL/wrapper.py", line 657, in wrapperCall + result = wrappedOperation( *cArguments ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/platform/baseplatform.py", line 402, in __call__ + return self( *args, **named ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/error.py", line 232, in glCheckError + baseOperation = baseOperation, +OpenGL.error.GLError: GLError( + err = 1282, + description = b'invalid operation', + baseOperation = glGenTextures, + pyArgs = (1, c_uint(1)), + cArgs = (1, ), + cArguments = (1, ) +) diff --git a/docs/bugs/playscii_gl_errors.txt b/docs/bugs/playscii_gl_errors.txt new file mode 100644 index 0000000..e416cd7 --- /dev/null +++ b/docs/bugs/playscii_gl_errors.txt @@ -0,0 +1,61 @@ +winXP 32-bit virtualbox image, hardware acceleration enabled + + +OpenGL Warning: No pincher, please call crStateSetCurrentPointers() in your SPU +creating new document art/new.psci +Traceback (most recent call last): + File "playscii.py", line 491, in + app = Application(log_file, log_lines, file_to_load) + File "playscii.py", line 87, in __init__ + self.load_art(art_filename) + File "playscii.py", line 130, in load_art + art = self.new_art(filename) + File "playscii.py", line 106, in new_art + charset = self.load_charset(self.starting_charset) + File "playscii.py", line 159, in load_charset + new_charset = CharacterSet(self, charset_to_load, log) + File "c:\playscii\charset.py", line 73, in __init__ + self.texture = Texture(img.tostring(), self.image_width, self.image_height) + File "c:\playscii\texture.py", line 24, in __init__ + GL.glGenerateMipmap(GL.GL_TEXTURE_2D) + File "c:\python34\lib\site-packages\OpenGL\platform\baseplatform.py", line 407, in __call__ + self.__name__, self.__name__, +OpenGL.error.NullFunctionError: Attempt to call an undefined function glGenerateMipmap, check for bool(glGenerateMipmap) before calling + + +--- + +bind VAO before texture stuff: + +OpenGL Warning: No pincher, please call crStateSetCurrentPointers() in your SPU +Traceback (most recent call last): + File "c:\python34\lib\site-packages\OpenGL\latebind.py", line 41, in __call__ + return self._finalCall( *args, **named ) +TypeError: 'NoneType' object is not callable + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "playscii.py", line 491, in + app = Application(log_file, log_lines, file_to_load) + File "playscii.py", line 87, in __init__ + self.load_art(art_filename) + File "playscii.py", line 130, in load_art + art = self.new_art(filename) + File "playscii.py", line 106, in new_art + charset = self.load_charset(self.starting_charset) + File "playscii.py", line 159, in load_charset + new_charset = CharacterSet(self, charset_to_load, log) + File "c:\playscii\charset.py", line 73, in __init__ + self.texture = Texture(img.tostring(), self.image_width, self.image_height) + File "c:\playscii\texture.py", line 17, in __init__ + vao = GL.glGenVertexArrays(1) + File "c:\python34\lib\site-packages\OpenGL\latebind.py", line 45, in __call__ + return self._finalCall( *args, **named ) + File "c:\python34\lib\site-packages\OpenGL\wrapper.py", line 657, in wrapperCall + result = wrappedOperation( *cArguments ) + File "c:\python34\lib\site-packages\OpenGL\platform\baseplatform.py", line 407, in __call__ + self.__name__, self.__name__, +OpenGL.error.NullFunctionError: Attempt to call an undefined function glGenVertexArrays, check for bool(glGenVertexArrays) before calling + + diff --git a/docs/bugs/terryc.txt b/docs/bugs/terryc.txt new file mode 100644 index 0000000..fa1e051 --- /dev/null +++ b/docs/bugs/terryc.txt @@ -0,0 +1,37 @@ +Traceback (most recent call last): + File ".\OpenGL\latebind.py", line 41, in __call__ + return self._finalCall( *args, **named ) +TypeError: 'NoneType' object is not callable + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "playscii.py", line 489, in + File "playscii.py", line 85, in __init__ + File "playscii.py", line 128, in load_art + File "playscii.py", line 104, in new_art + File "playscii.py", line 157, in load_charset + File "c:\playscii\charset.py", line 73, in __init__ + File "c:\playscii\texture.py", line 16, in __init__ + File ".\OpenGL\latebind.py", line 61, in __call__ + return self.wrapperFunction( self.baseFunction, *args, **named ) + File ".\OpenGL\GL\exceptional.py", line 178, in glGenTextures + baseFunction( count, textures) + File ".\OpenGL\latebind.py", line 45, in __call__ + return self._finalCall( *args, **named ) + File ".\OpenGL\wrapper.py", line 664, in wrapperCall + raise err + File ".\OpenGL\wrapper.py", line 657, in wrapperCall + result = wrappedOperation( *cArguments ) + File ".\OpenGL\platform\baseplatform.py", line 402, in __call__ + return self( *args, **named ) + File ".\OpenGL\error.py", line 232, in glCheckError + baseOperation = baseOperation, +OpenGL.error.GLError: GLError( + err = 1282, + description = b'invalid operation', + baseOperation = glGenTextures, + pyArgs = (1, c_ulong(0)), + cArgs = (1, ), + cArguments = (1, ) +) \ No newline at end of file diff --git a/docs/bugs/v21.txt b/docs/bugs/v21.txt new file mode 100644 index 0000000..cbee653 --- /dev/null +++ b/docs/bugs/v21.txt @@ -0,0 +1,5 @@ +tried launching in Parallels (as I run a Mac). Didn't work! playscii.log reads: +Traceback (most recent call last): + File "playscii.py", line 12, in + File "c:\python34\lib\site-packages\zipextimporter.py", line 116, in load_module +zipimport.ZipImportError: can't find module sdl2 diff --git a/docs/bugs/zensaiyuki.txt b/docs/bugs/zensaiyuki.txt new file mode 100644 index 0000000..376344d --- /dev/null +++ b/docs/bugs/zensaiyuki.txt @@ -0,0 +1,51 @@ +Playscii v0.3.1 +OpenGL detected: 4.1 INTEL-10.2.46 +GLSL detected: 4.10 +Vertex Array Object support found. +creating new document art/new.psci +Traceback (most recent call last): + File "/usr/local/lib/python3.4/site-packages/OpenGL/latebind.py", line 41, in __call__ + return self._finalCall( *args, **named ) +TypeError: 'NoneType' object is not callable + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "playscii.py", line 664, in + app = Application(log_file, log_lines, file_to_load) + File "playscii.py", line 123, in __init__ + self.load_art(art_filename) + File "playscii.py", line 187, in load_art + art = self.new_art(filename) + File "playscii.py", line 163, in new_art + charset = self.load_charset(self.starting_charset) + File "playscii.py", line 223, in load_charset + new_charset = CharacterSet(self, charset_to_load, log) + File "/Users/bretonslivka/Downloads/JPLeBreton-playscii-337ccff3951d/charset.py", line 74, in __init__ + self.texture = Texture(img.tostring(), self.image_width, self.image_height) + File "/Users/bretonslivka/Downloads/JPLeBreton-playscii-337ccff3951d/texture.py", line 16, in __init__ + self.gltex = GL.glGenTextures(1) + File "/usr/local/lib/python3.4/site-packages/OpenGL/latebind.py", line 61, in __call__ + return self.wrapperFunction( self.baseFunction, *args, **named ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/GL/exceptional.py", line 178, in glGenTextures + baseFunction( count, textures) + File "/usr/local/lib/python3.4/site-packages/OpenGL/latebind.py", line 45, in __call__ + return self._finalCall( *args, **named ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/wrapper.py", line 664, in wrapperCall + raise err + File "/usr/local/lib/python3.4/site-packages/OpenGL/wrapper.py", line 657, in wrapperCall + result = wrappedOperation( *cArguments ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/platform/baseplatform.py", line 402, in __call__ + return self( *args, **named ) + File "/usr/local/lib/python3.4/site-packages/OpenGL/error.py", line 232, in glCheckError + baseOperation = baseOperation, +OpenGL.error.GLError: GLError( + err = 1282, + description = b'invalid operation', + baseOperation = glGenTextures, + pyArgs = (1, c_uint(1)), + cArgs = (1, ), + cArguments = (1, ) +) +zenpsycho:JPLeBreton-playscii-337ccff3951d bretonslivka$ + diff --git a/docs/design/early_notes.txt b/docs/design/early_notes.txt new file mode 100644 index 0000000..29d466f --- /dev/null +++ b/docs/design/early_notes.txt @@ -0,0 +1,87 @@ + + +second design approach circa first week of january 2015 + +art stores no intermediate lists, just arrays of ints for char, fg & bg colors +shader does the rest! +compute char UV in the vert shader +get fg and bg colors from index by sampling from a 1D palette texture +pass in texture dimensions as uniforms (2 bits of data that don't change per object) +art's get and set methods compute index into array and return/set directly +no layer or frame objects! an Art keeps lists of em, and a few lists for data that used to live in each instance eg frame delay and layer Z. + + +--- + +design notes circa xmas 2014 + +art only changes when user edits +renderable updates from art when user edits or animation frame changes + +is a texture lookup for the palette (1D or otherwise) even necessary? table of colors in the renderable's color buffers might be sufficient + +is iterating through every tile in an art (layer) to update a renderable going to be bad for perf when lots of renderables are doing it every few frames? +PROBABLY, YES + +so: arts generate the openGL arrays (verts, elements, UVs, colors) and keep them around, update them piecemeal and only when edits are made; renderables grab these arrays from their art and resubmit the buffer data as needed + +--- + +ascii engine - playscii? +early notes circa september/october 2014 + +core principles: +- ASCII art with transparency and multiple layers (mainly for easier editing but also FX) +- animation support - multiple frames per file, # of layers constant across frames +- edit (art and animation) mode integrated with live game mode, press a key to start editing a game you're playing +-- NOT a full game creation tool, no in-app code editing or visual scripting - game behavior defined through python objects/compionents +- important stuff hot reloads, definitely: sprites, animations, shaders(?), possibly: character sets, palettes +- MDI: edit multiple files +X developed in tandem + ships with example games in different styles: a top-down vs side view, realtime vs turn-based +-- on hold: all work goes towards Secret Game Project + +--- + +- copy unity's rad ortho/persp camera mode switch a la https://twitter.com/pixelatedcrown/status/530857568240168960 +- characters can be >1 gridsquares big (but are always 1:1 aspect?) +- objects can consist of >1 gridsquares +- files can have multiple "pages", eg for animation +-- how to define frame timing? for an anim, each page stays up for a certain time +- edit mode vs play mode +-- or: edit mode (like a level editor) vs paint mode (like edscii) vs play mode +- MDI: multiple files can be open, switch between em +- file references update when you change the referenced file (edit a sprite, see changes immediately) +- "transparent" is a valid BG or FG color +- objects can reference files, their pages define animations +- objects specify whether they move on char grid or pixel grid +- layers can have z-depths set, only drawn in "play" mode +- levels: single page of a file, collision can be painted in a special layer +- edit mode concepts: file, page/frame, layer, tile, character, color +- animation playback in sub window? edit while watching anim, set pages that define anim and their timings +- play mode concepts: world (collection of levels?), level, layer, object, sprite, animation +- levels (screens) can scroll on char grid or pixel grid +- selection of different CRT emulation shaders + +test content: +- fireworks animation +- matrix screensaver-like noninteractive nonanimation +- endless ladder climbing remake +- real example game: "escape tunnel" + +work: +- UI mockups +- architecture, UI/concept classes +- what drives object behavior? +- how does edit mode work exactly? +-- pick and place objects from a library? +-- how to edit object properties? +-- how to specify connections between objects? + +references: +- Mark Wonnacott's kooltool: http://ragzouken.itch.io/kooltool +- libtcod / libdoryen: http://doryen.eptalys.net/libtcod + +edscii daily doodle ideas: +- big wizard +- toucan +- tunnels under earth diff --git a/docs/design/mock1.png b/docs/design/mock1.png new file mode 100644 index 0000000000000000000000000000000000000000..bf80d9d283d8cefcdf66915c18eb3612d825fae7 GIT binary patch literal 51599 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

6y5tn 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

Yt~pt!AYIVUXcF@4ID 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 AUjP6A literal 0 HcmV?d00001 diff --git a/docs/design/mock2.png b/docs/design/mock2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c5ce9c4a59a66840e4d788d75c720e569981d7 GIT binary patch literal 50487 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 bJ!IB%>gI^2l{<=5z(1`!`nSt(+C=;h38@1< literal 0 HcmV?d00001 diff --git a/docs/design/old/20150101.txt b/docs/design/old/20150101.txt new file mode 100644 index 0000000..ac0354b --- /dev/null +++ b/docs/design/old/20150101.txt @@ -0,0 +1,29 @@ + +first design approach notes, started 2014-12-31 abandoned 2015-01-03 + +geo + uvs + color data for all layers on a frame are precomputed for each frame. when renderables animate they just bind different arrays + +art.vert_array, art.elem_array: geo is same across all frames +ArtFrame.uv/fg/bg_array: uv/fg/bg color arrays for all layers + +Art.init(): initialize lists for 1 frame with 1 blank layer of specified size, update all tiles' char/fg/bg + +ArtFromDisk.init(): populate lists from saved data, update all tiles' char/fg/bg + +art.build_geo(): create vert and elem arrays for given size and update all tiles' char/colors - okay if it's slower because this only happens on init/resize + +ArtFrame.build_arrays(): creates uv/fgcolor/bgcolor arrays + +art.set_char_index/color_at(): only called by user or sim edits, update internal lists only, add each changed tile to "to update" lists: "characters to update", "fg/bg colors to update" + +art.update(): called from app.update(): process "to update" lists, calling art.update_char_array etc as needed (theoretrically this could be parallelized if lots of chars + colors are changing?) + +art.update_char_array: computes index into uv array for given tile, sets uvs + +art.update_color_array(fg=True): computers index into color array for given tile, sets color data + +art.do_test(): add layers and frames, set chars and colors manually + +renderable.update(): called from app.update(): has our art updated, or is it time to swap in a new animation frame? update buffers from art's arrays accordingly + +- investigate whether storing color (vec4) per vertex is better than color index (U of 1D color texture?) diff --git a/docs/design/old/art_class.txt b/docs/design/old/art_class.txt new file mode 100644 index 0000000..edfc70c --- /dev/null +++ b/docs/design/old/art_class.txt @@ -0,0 +1,62 @@ + +example: an art with 4 frames and 3 layers + +Art +|width, height, charset, palette: stuff that's written to / read from disk +|renderables: list of renderables using us +|vert_array, elem_array: geo array for all layers (changes on: resize, layer add/del) +|update lists: tiles of specific frame+layers whose array data we should update +|frames + |0 + |delay: time before display next frame + |uv_array, fg_color_array, bg_color array: arrays for all layers of this frame + | (changes on: tile edit, art resize, layer add/del) + |layers + |0 + |z: z depth for this layer + |chars, fg_colors, bg_colors: data (lists of rows) for this layer + |1 + |z + |chars, fg_colors, bg_colors + |2 + |z + |chars, fg_colors, bg_colors + |1 + |delay + |uv_array, fg_color_array, bg_color array + |layers + |0 + |z + |chars, fg_colors, bg_colors + |1 + |z + |chars, fg_colors, bg_colors + |2 + |z + |chars, fg_colors, bg_colors + |2 + |delay + |uv_array, fg_color_array, bg_color array + |layers + |0 + |z + |chars, fg_colors, bg_colors + |1 + |z + |chars, fg_colors, bg_colors + |2 + |z + |chars, fg_colors, bg_colors + |3 + |delay + |uv_array, fg_color_array, bg_color array + |layers + |0 + |z + |chars, fg_colors, bg_colors + |1 + |z + |chars, fg_colors, bg_colors + |2 + |z + |chars, fg_colors, bg_colors diff --git a/docs/design/psmock3_full.png b/docs/design/psmock3_full.png new file mode 100644 index 0000000000000000000000000000000000000000..d40e359cf2da3e5510672a8570ed1ffb2772815c GIT binary patch literal 152215 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%0Dj$7g{7xy9G`ZgF=HfG02S>Tc~lCo(VLZ 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%0A+X-ND*w@($-M!(}6q8~(>IIH7}Y;waq zWj%uWf(~`hi^b*a#TsKKW}u&i=)53GA6G`xk!LbWnLlNs)b{o?@xdo0Fjml!FSA8%f|0;8k zKIbIvbOagAOegfOFh=1>?StYdu#^_5pO$Vld%ykp9B&Z@GgIxfg8#^!MgV6XKAG2% z!@&W+&rTUi#1x!r*KK&CBK;kwf~#Eo_#>OuHwUEr)Jtumf=Qpw zvq-FJ4}LGNqCL#ra6VK|q?&JpKb~cgC2SEqhFTikm5pubFJ5-YZ?ZASJi;slk_gXg z)5JQQJn2ImQ+8F=Lx+4X)JfR%+G#&N0&oFJ1PQJg z@fXH`1l%vuuPo#4C^DTLVi)jWoY5a`7jML|E53*1zN!f5kSI+MmHCb?rk6Uoj zH@<(>>%M>6H~f{1lTyhHSsR1|X8+i9SfQj-ya%uwYuPLpS;O|5d!?q8tDnCV|4xzb za{Xdr<^U}S0Rzxxkf6tQN)cGFyX5kGsmmedg^FhOm13%k_nyL7kls}}(UKnr;_g%E zR5V}1zE-d-$tiGLbQ+lG$a8-#9iKd{ixI-@Sik9a5RHOs|42W)X|4(eG5KL?AjZWT z*wuvhl6@|5u#&^#m@fzMhHlkk7XZUL84|iH{0l&GX6L*;c*hnj^SZ~k76OP7OYUx@ zJ1??}6)F^RbtMCv1l0;6^aK_o)7Y{VvdMSt-s*r=%m$i51j`2a7-^-AlGPMCH-@Tq#@+u-5=s~ z@S8ThVtk7j?c6>!^m;Yre{Gx&Mk?@8s$aKE(=zCliwTlZ^Kz*yiJa|2X=B^ru^bdci==;?b*C)Pgcu?vh%LX;YKH zf**-7^r0;A$L9^#m~__9z)_O&>Q8X5BrSgqCPB` zC{DILpUg7+RHx~F`eFB)4L9wLv03F3$z4UR&y&U86_4mu$PL3SucZVN69Fp@TKkJO zxL$xg?CZ4yVdTHkSY(Ma7R#?h>^`rITO(7kxs`Ho(l#nO^@zA~E9VD3XH+KoI(WzD z$*V1cJ_E~cCZsa2dh#W`CLek);C<<_z(T25RKpl5G0Yt#7s+OUmG9E1&6pF^27qG#oNDmQ!hM3>8f-$$TqAy z=JTjCI#81@XP>)o5LqJ$>`=UZUIg>r!mUJl(^o%Y+ltTdn(3ddm7b#iP>wX1oV(*>?7@3H?58`o%LrAiw`P_&l# z7#}wd9*1s~jrBi1kBO^=)anKBW3 z4)X(uh9{6K1_HlwkGy)V^nZ7kDmm&m0*}oAu&o+yg4MS5MpT66_2{`Q7tV>LfDeil z^=~B^<5*r{l$^;YwcZ;%f7KReKlhcd;P1o1G=jL@KgakQ#}IfgIWAbZ_6uYgb|+ni z*{Q2(+r)KN=~_0v(5lDDEerU2clQ%;*8_IDxWWY9?lQXHWpn#6>ze<{07?k>lb;jU zn=#Es5qMyeZF!o6z~0DiuO{}V#E)qx(Prb;)^ms*;6opVd`NM6VI%EeYPl*y!;mR( z_XY#|NWb%u=Zp2HrtAS2{E8MQm@v)68*eMM@XFExMW_M?%(ptB}aimw{e6 zc_#z~v7h-N73YoDi=F@kf~yVpgMVqfkCTjtbSU$q>l$4+j*}&olLmNv))A}yOj!iX zLJP|8Q_JO{^$l&D*E^dQe|nEnU9Ujkk*(W>9Uh`X#DY$QW3wxY+6eNu_+KPE0W+JCus%=dx&Mc~=Svtj!tUa zKUSzL4E?d-(2NyRI2IXPKH8J`Q!N_b)^|B~HV|R)Z4`!gt@!z$e<0__p%M>!Aa+6Z zp8B>^q?ihJTt>B`2iQa6`~(ZJm?+rt=}TZWwKM%^j)22svr9|>+)H2~aB?C(d$8By z_UA&NwG}QxZ0rK|&^p)hdU##8vct6(v(xfI$&b5)#lMB@-F#iLihu=0muf^IG=3wf zy<{}+i8VxR7^w(JP&_g^G;WT>T>(Zc=WT?x?}LiV=>`vW3{X8Qns?jL}(gT&NPqHW|CUJU)s8GYo$VkTLrG5VHuLqk}-Y zJEl-A-N zQ-|lni7#XMJ`0SlCNs&Nj#9l`4^^&B{A*VCCyBS?s^VGCEf9>6)GFDqumxh6I*t?D zKi9u0>o=n`-SIx$6qbek@f}m{3cq#z<+yZpQGii#GYF8oXQ?$Q1%OX(%Czi0*BIf5 z`wsHS150O5BCM{NQ{67-@uqbVYuI~em;GEIs_)*alp34pASE!rvrZ~!vEWXjJp+g_ z038W>XrM#XmzsRMlC*voc#b$bBzoINMrcja7S`e)C0Mq3RkL6~wg$1Fopbp2ea5Yq zEll*ADy%kUN*sf?_FRg?s%arGjbsl{df$)JKw!^W6HdAi$3|4Jk8DT7qe=&3U9W~p z!uLlNCeOZ}j~=yg0onRD1IW3RNSA#E)~;0|9ozRAKgs*h2B7VW&HeD>0wH+<4VDNm z(c`q;E5%vU+2&KIa>(Pnlh^20iS97(dFJ?ZW>J>N3=VS~sND8_I^4WdqzJ@eSOwN6 zMMrBUNzaF_$}wHEWLWXWbz8sb_1B8B|9&h$1wS1iPy5x#6{tiw{@j$3XVwi3yjFON z!2g+b!pSF7_=}g#L+G3TCGdE>+H*hU{8F>nQ(3U-E$UP0y6c013Q52&DX{Rb`7HZi zb{lQ~=Ph&~e$^6TUFb4c@^={W0~F{NC6MUVC)P`c_aceUkjc(*WFGQmpzq{-#td`L z(JOGQ|Mm%;-}20L*qHZ<>jykt|38gP>khdtAj1TI8#*}v)oS?k;j~^rC->Ts zb9GWdhll!sb>6f9i|I5US%EmYwOmH%BT5QKGu0(BkPU*y9iso4JxKa;sA80Q--S>K z9UyWpeZ9A@V)Q6S>=v8@+JK$d>+T#X^z2L)n5)4(uZL<0f|ZOv(P*+lMq$o(NRqhU z1&+~9-0>f|8Q$HvDfTcgR!Fy1KgE-QBuFSD!Fkpa|ievuAIhCFcqM zYBPhhR^W-znUorHvX*TC;e5)0`574oxSqKijfKU)lR4kwo>`QnNSe} zb|DOLrd4dcbT(uxH7D!tyta6feioEHv?6k7} z*0qM0_b+o}{kQKwEblL`mDEZ~S1s=h3-n6 zQNyf@>3%zvlN|4qj69pmY`qkCY-y%A7@PKAA1X^Baz|&O)@i zTuTVpDnCae$r;iU_pIubFP}vt&z*?}PYc8(hd&v~eU>UuOE4*MOSHbIUSU|8;W}%v z+t8<`9eb*zE29`}GLre*<(}o*P?6q&Q`^>!;fJp)Ok|pVe|$b7F1-wgJE{+rOprzA z1+O>XH=HckfL}y;zOzp+iBI2sJEA8TQPxj?%ERr2e50?vVfNZd`}##-CEes1K2+h~ zlo8^{MR~67IlbaUiz}1fT!2g0@UdKhkho1``~CsG$79Ip_wdUUY6xopiODQb@GSXe zef}l=eSBO>r4rqRI78!n%EpybKrVSzbiD<$D*iG^of7PUK8NL(D_U#R3bGj}64xEo zi1ax~* z6#TIFNV6)pkrN-?H?%+dT6$&L7_g83b&Y4v%0EOLx6+9m;x%YtqG048w<)~VN)hf;Y>v0>#t4)axs_sirhTreI zr#Vm9Zn0N#Uq!Bt__I}V1+Dp)?dKqlPlNp+62wdZCtaYAC_#gh;QToxHU5)t14b0GYg|Wg5=txE{0jHc-d0~X&cCtfiw{s? zmo3t?pu}h%qAz(nekOJuhvrkSuiIuCFTY7Y&2UPHn^2loEnxhl9|y1Zx%8Al@A9Se zo40nQ4^2%SKVMieG=>k?sAkXooL^(0`R6b*=UsQ)ytrlUso-YISW6J?X9Ce!ztz1DJ>@Hpw?Yp56gfIxZG}B)(FkRW-H>}#9M7DyPp?k#etwKN ziMH<46CPIFuW$3)cVu`J^KGB@VNcRm3;9_^R_Yf7oUfW;HyO%q*P!U(=K;N>a7pFn zkF%MM<_hi5PM>>ikh%7mNr_ov^qmXOg)T2WSNkdGO{AWMiVK^f*W3v5OsH7T9oi3c zg<5toZ}8V>BeCUZ!gk?cl@ehu!CB~7Z4PQ&44^VG_qZsp6jR~(3l2gkZ$E#A1B-v- zos~R>C(ux_L7?^=qVSqOI$)p1+;dpEpL%~dZ!2IWIeRHAcB>itOAOI;3nxV=rNg6W zaNDB@+$xv5)Ioz4ac?!Y3lDk`kaB@3m_-&a{pWPO+l-9?$DNAg{y5?v7qpG z`%Yw_?B{M3w!Q4(J=Run+d%3PX|chiYx-Kt56N=`baX#oS&WrUwe?NHSB+kcxn~9W zq!+#@==w;7p1Sc{eT2ra;Nps$T)9R}Q$JN%W%)hLVsA%~gbZ$H99^bPcJoh^%i?UF^Y70j+M<+eF&)m0Oj3KT3 z4@FjF@0k8^0jYI2ILM224E}g_>mPjAv0wU1yTW@frCU;aOYNx&cB74=uT(7CaS3*| z64gsUJ-3!STcLPflW)D6jk0yaASCs+TNl%?QG(G&$fn9CSbObNx!;JiSX%LH54AXW-Ls*#(Q2GOUw-Co?Y2Z6RZ%qkpzE6N0eIn17NDqcF)~G{-tu zCt3-r`v{|eHXe@3jKExRRwv()a}yq0oyhMe7;xmgL6>hPiMSaRmz_!)JxPfV`>tI` zo{M15Gx{W#XC_WW58pl<3maDv<_lkaX`&d|Qu9qxkk9|cUyGt*(I@{DTgkN}TPGc* ze$Xx8CJ)2pyf^P^8mxF`BSStGO(?il@nS1RV`3CeMF!bm7s@R+pL*T~k)Y&wdUeww z+zXdCrMx;`x4uRFG5(VHp-ay+t^ZN4E_K_wwTyBTyPs$uY%rf)N9OZ9t-j-&Z#PlS&s_o(N=Ss(}meei}qEc>(Ir7)#D0WkMe zV^kN}QM=Zq@ZHRx9kJpuZNr^*>(pJ4?~Y6#O^@Eo&vjMi9JeZ&8mMlR$*3f`a3L{g z0Yo=xs5T9Az6`$F6)vP#zbh$m@m{dcqHkZ7fnZx?Oa$2GcSVD9fd#vL_~P#$8x{`e z_P$v7&nstr8FW9WbfUCV(~ZZcHqz`m@*bJLcb29ys?&C_dNXN}`a;*SBd7sfg07r| z%voeR)zh90wypLCX#3s~Xe!nA${uiY6wKC*x!x~r2o{WMz`N7cKy8>&#ifS5Mh(-F zCJ^+U(dT44nS-3$oy0Zv1$~6n&!FqL?L)M5ngujS+i9@Q^(-SJ(*Ut^QbdJ7_1Bbn z5FA&n0+3Hu(VI9Kcf7m)P47EP?F0-ta?sl@b>+>K3XNL0{NTi9())U9#a6V3q2Z*C zs@uYAozHnRol*lo1qHe;m%(nbJ+dK9nRvG5vA=SMEbCjpVeY1vlECd}TwiO=Cj%H3 zSbZCOvjE0M$SSduEl7Er#HuKyI*>HtKpdE0(fCDImDW&-S>3w(Ib)|XRpI5HN_%ax zw4Tb0rcFQH(|D;#uMo$IjONq(-kG}(XLJl1HIu@1${eiqi>|ndq!~TCo%K|lJ*PxS z%`kl2A$)jvxL0L5&m-&Z8XRYOc2`6_+kV&IQu2BQGG8U^%b2X@W+&CK3RF= zm{;rF`rVX?!*_#AMVL%52Ic0Bx>LbBr6K#iCwqN%>6dSaWo4wosOf4bZ8ysm0IF> z#&G}sVMVvWJ`AI5#>fZbn(b<&d}>LJvp7S@Ur`@&w>X2=E1`+BGXcBr`q_R#gNMk! z+_-IwqR&ym^Qzm}%GRAXy<3&v0-lQ!d}kewu$x>23L=2ru3{#JO_`zF>qy@%B+Hw5 z5|5{l&l@zKSZUCWCE2XcB*{kTw=PN_YWkN?LyYh9daG_(!?izF1oc>^-`FzB1F!pq z=nKw7KCq4|?Ki9HJ`Q-@X0NvIWgKqgi?tZDx;!myS9OVbO}g`G$J4^E!~|eAT8Y;qf$x? zU4wwqAR#5q&`77W4lwkP(#$aDJ3ilf{|+ozYtDW4z4ukyQ)A5}>OQCsp$ZgwY=z{H zx%2N!BgMU|EmmDwX=Q`FBgHQV*YQ2gbv!@w#C8W_#ttzg#VOo?DQMf<3LMdVVMZS# zGkun(KR-X;3BM9!R!rZBr@8>&UnN@HkNNWxMf#9;4(g$&{<_?We{3ndkBEqJzA3^H z4#fBMof}BgM=4nHwjd8Ng-189;AczV52 zOu_NM_Nt1I$#amD&S&wbZXy3K~mL9f# zf=JqYyF%Q@D*ZbUvTDiTbn`eYV@h;rBG*V+OD|cyK&@u}b+5j9YGD5kljJY?w&5Q^ ztZH479A}S<3f%uxNv2Tb3nu8!I6l&U^E7@FR|$_{z>1L&aYFVgW`a`(TbeXB{FkWx z3#iDY$JOF4LisR$V$+%+4c0AR!;jet;!1P-K2{qyo!xP0V`FnyeizRfz_$!oJzUN5 zfvnt9j;!r2R=Te~q9#*%4nF&{|#kBjJ zQ=wGqkC*;+6P7ambovBTb_?^seMqZ{?c^6n6g!!tOAOxYtJ>F4aEMV4)Yz{Jw9U#pSvXo7mJYW?*f$8CdeCQQ zAH61>a{S9W-A>5j6Zq-5VOn{FFrmP3tt+x5-tP&f3fXn7700pCtG4Gu(z4076z;QsXDu31BD-C$x3^Bo6gz49L+G`?+nMD z-+=@xEHGbo?fkhB0D|p+(ie%3&95bKV&!YBD;GW&`ZRq_61~MzNZynjPn>D0d0uyO z*b9GhuA{QlXmH}T1flTEF}Y*A1O%P|KW;4jctN5po)5Es<32_+{u|(<#-3xvs_!rN z%T{l7cJPe?45qCgAQq6pHu94Du{7=tz&JxD%^o1hxMU8T?_MyK`TQiH<9f|wMXjxA4Nwn2)^Dr$n*eEh1C>YK$U{9aj`ME+=Gc?v>e!6W+85Le&Vtk5hFtNbVTo0IM z9+`Q(h@i)T-OuMDR5kI6-|#y^{Z!~$WO4lb0)J#hr;bPs_J~LxM_=U|cehrwkhSRF zP-agC8)3RGPXB*87>~m7qSV%{P2pT z^TzCi1g0>Y_FOl&1myfFJp$94(A>WR3!JWN%q>D;P$SU*!-YqHLy}_)DDTFJA6tiJD)>c(_D+p{3 zB(Kj@n1ej{ut*&#=y5$0QlKM>e;{gcX+PZ3WGpg$B%Kql}==Hw231t#|SPv zWNA>W2sA3|3Rs+T&j}1;<4_&@5TExs{~TlBKEmiPb_D?E?zwA3YI;mzl= za7r1ck9*y4lk@7@&wPt=RC+>mHQc{1OT?I!xR2Feq_zAoRmFp%M4Teh%2pp(LzVzO zOkqb`%#F7>&CPe&IzF)c^hJTdnDBrnSs(clgu8dSc&U>V4Ck4hn|)_{{*DHhMN~{| z)ii0WvY(J2BONkslg?5LOeG1SE$>2#j|~)a1X&%l;S-&Cb`R^&BdvLCT9bzt{LjM{ zfz7nH3ztg;zbPk_NT&M{X@U7SKw8H5NMGJ2?9t{-+16(AO55M5hdEsW(0o)2F-Ea; zV$AmQ^P3NUyi2B=!8JD6BGNTnpt+8-u@}Jv{+C;bi{nj{d#AVbXQ?Yzs=zM0wWU6t zt-Nt_bYD>i0RG99Rv8Nj@{Dnnf5>|H44jgDD*^B(ln663ieZgUJGNFIHdux6O@DkG zu})toAq4KD*zGW}yFcKog{x5VYMTRf8b|)>+1#UF${lLw>+dW|&8U-kCmY~V?T?0i zD+7yoh|qVzgd|GN+#EHB60;cIaoutXN0po>&)EW#Sk>2*rvsKyCD;A>X)ue5o{#-% z`SG3%&rHrR%!;4Nu2{;{cj_%CY>*v{m>HLhjfe8nY_t73c=D~!6Y|B)(rv)q$=s1s z0qrxTQaQ?CTx@$sF?r!zKO>`%cZTX#5?R)vq48&rxq`Guds|*};(#iaKVMWu&q#F_ zTlPb4b>>|Bi3J;IVJ&*{o4_$Vr3U`iz1rq6qWGo5wr}qte^}7zOC65tA9>uOa0M>f z{e*mTx4cPv8~}y`+PGB?ZmtM#MxYz25kn{LvL#i)^@zr|H-}j_ ztn3Twj$NE7Ox0WsZip@O>(@`Ilng)KTFI=~=x79TF8$}Q3k9w~to*cT zzuIy=kOq5ohl2BdR5%NGb|rO=82LhA$!QlTJXQY2&&)jE!cm@R|7|8b2 ze0gc|P!t>aFpdO6^|9uY9UW?L4`|7o&Ia2lU_Up(ZWGX7t!DhG5e}bzW=;-(_3`x3 zG7Y@tlrUBMzDb6yIpt;L1l@1-=9$dw+%#MGK31AG>~_e_6&MnCp1vvPHNB-I(c%~X zJnm^%nmDxP$B$xeXJWWNl@e?YfqxSD;v?_)b9JBdK1#0PWa;BrD)F;6l$*>a9J@wp*5h$fxKRWctg(CB!Ww<5(~8h-D4eY`vDAP~=r ze6ee2L8UTcuigAJWub{5|9+aVKq^&_kI-v?Am zlTEVS?#P=}Asr!NzMIgjE6!gh`COh`?fxRUgr9Jy{HM?Mwk}3Up$hn2&nxG!uqniOpG#?Cuza>yyoT*3`t;awfa}A=FesE?-T~c zgv~3!>|B5p@l~Q9IeLdvtY1{C1?Jc%8_okZiiAqbVbUMZnPQ|;Zb~RJvtLT%Rj^tg zjemQe=M0!b+|aho5x+O1ArHua01_@(HoX-jg!rdBM<5&q4oLV;u`Emyh&_jN15*nIx@l7c zYu-Vods`;u`WISPGT5CwY}qq_KS#QOyDliRY(fTPzXVBc`tY*v8%4 z3r;t|RgE);vN4Yj2E@Mul0E!SP{oF3{(}Y=5;TM_|4_D%VLGB}V|VA-ie71kW+m$T z_hs{i-h8q9Jz?EpA`UHcGQ+B8L()@s|hQmDvl(|)8Bn4 zqCe4K;2HQ;`ozRS#z5uG5JeR?C#>;Bs@)CiSZrHY1$)E<=6AUw%yBlN^MW34KzP{n zE!WW<#ZUI3pcOBBIC6$q=GzLVi(=PLf^M=FCPX(gj)bdr^vm+441JH(y!^hxN;yrH zo>ko^&FJgs)*nBj^0}HjWQY{Pl%dEYL|H@p+S@zs?94X|Q9vsF zb3@{M6(YqnUTB*q{+A0}i|K>DnNU0_iN7EVTN-4+oLgmty#){Q)X?my14CXxG^ziZ zyCn1UPW}7vqv=POULAK83Rk>!a0)b~(wBT@UtlyUvGMP0?)VHX;6V+aJ_mXwl#qwH zSo)@_;dVLT*c}808}o!l;qe)Q?B|&2?_2QryrK0}{eaW2c=Y4^E;X$aC*Qa7jtmst z$g%C;Ayb}u>Gv4sHr^U3X+@+bSB=e6>6QzKG?6?R*N=$Jrqr9}Iq*j#K0#>qnD3X4 z)*ZT{EsfHu$Q$>-es!_ljb?T^Ta{%A!m?RQlXR13B4ND*u{#<^x5Yy?Z_Re=oXcvb z^ke4_WOuq{v)kPcAa!~d9N?i#=gu+1h5W8d@vnVL4z=5Y{J|n}A=Sv6dcfTuOS2D@ z+uXSSQV@2(;THnd-@GQm?4OLgjY3N9*4_eY;SdnteFK36k`S z$i{Xl68Tnuqp!fc>ScKjos*$jJfHUOb-St}yKQHszJAiEfJ~!bs#}XQo-VfK1O=-w zsFOrh)s8pA=gZ?d1{N=dlBC-#$ZfhY&(^3krgW4rc!T1}`(_)`StCeA6sVQo3u>p} zF5#H7YEw|vzH_+da8cKP4;yoPfH6yFQ5pLaR`xdc8!i^G&hMhS|6}2KJ${a@-Afi6 z2gu*o85P?K-uqe?XxM?Cx_OCuJN~-q%$iq2*C%At>d#4k!!)NhQCcE<^|!a)gx&~h zmZU`W$Q8*e4ytcRpLezY){sjIqIh2~L{3%Ic*q%(AC=pG%*nJR6A^fcim#B<6F-uw zUj4#TL>Kk>s8MX^+$!g&5zxNeM=gya&(Ekw0pm+oW*) znGWt$vlC%8-w6Rh$f(8U=RkxQk;2$_AEf_zFZTZCOOrE>DT>m3WF_(%W8U^juYPD* z!_M_3@1LfGeF#k$?3>YE9;)T!-tOi+q$b#KYGQ8->)C{jZP?^r^@7z#tSI3f8~k ztnpeRa3Vnbw4Fb<$-2s;namRd$mEPhxYdNvknQM~g^7Y5j33-}Ma? z;?i^AtnBt2sBZJYC0ogjg9Pj|{N=T5!n*Ii0j?{W$DZ)#WW~ZmvCl(y10!B^=DiXI z{)d)gv0%v4;xgF$31Rdzm8tPriEIKTVZT&iB$vqwIzE|h!HT8$nc6I#H1NQ7UO~68 zGEG)uX)32;z0;Kuhf?JPr@$29jmUD=H`ljG@f2hjk|-x+Y#YodKkm9a=?9(PemX3u zs3zr|`3-e%@{4cw-p5Xz-alv?_!SFg}e$0&qD=OOU4&fUXEWU0)G>%~WSF6io z=BnfKl!LMR=qyc+_^Yib180zscw%Jb>grl$;DmG^mtAE}7$BSjIe6LfoudA3^|GJ> z>)^`fr3ZK}unVKC#Wz+;^)9)WAlcH`4KKeLJ_+GV8IwZi+1?kjPrfOMV*s$U_7uC{e_0L6&>@_W+O*m!Uwt$e}K)|n{f~Y0oq0e z+OF~f5y>YArr1qLuEIl{7o1qv3)ejlEWMw1>=h>_SOloYX5;|BEr4Mxc7Jc-{SD$_ zn90LQG72Gamd`8iy-3-vSnWXEARYL+;OPo z)_FoB6?^xicdU%my=64bw<55U63W7*peaqzg(#YcT+VvBTiq61mFVW^A4N0LwS_-vo3i=R|}?0PdHrq#}^ zT%cD#6hrsUd=82GrhI%Z31!{?@f>~gaAPm3$C2c-53?`xkc%2cyE4i9cm$ZRgq-0! zt`Xvq$EP06j)vbnWWfRP*uVXV{X<5g>xv{RNmKL7rE8w^(D}ab-`e_79hJ~HT#e^j)sZt`Kkfw zb|amc8)iM+Ea++;#!u46NQVV%M)~I&fIm+%UVq1neEiHbrJM9l9PZtI$ibc(Si2ne zIC6?B_aJ&y6%t|BGbhAWiy$_`5uxs_VKlY^;>r3yaY4|;AN&!l#X{XSaJCstC@?6= zwW(DPCjt=`V!MOvM zjW9^JPFA{xGIrmW-I?KR_Z01djiTI!H<^E+MhlTn3HS}A zpWX(z4q>ze1-fEllZihdn|vv?%w~z@40$?=_aDvUq5R_CMiPW~-STAcHi3kDFVnINc-H${QsLixe*pyV`~KS* zc^V8Gs;4<`V#yRQEfAN76+J=DwGi+{^{^nTc`BQnkR?B*+VdjTN_!(8kE(N5R91s| zS^{C*>?rX>O8Ffv*F<^aUXCQ`T}DSj@|G&?25pWMWk1POecJe0y7=||e#e+KpVdYUIQR+C z_2qQ7yITc|B&*l3Yh&GZZm6stmB?rDZXJ1@^RqoB7}&>Wu!j5p2|kRgu@D9dCSMlJ zZT^t#7=bLa~HhljLU12Yvj zCE>P9SQ_Q%ua1Co7yq0meRsvlo-BE^ZD29IUylbnIfjkiC60?f zb;-hB*@aXM`~EezEM#{P`T@yaoCO_9x1M zEWi9#WJ@p0vjw@BwWzR<`6Dchc<%5s(OM~?_`f8w^tU{U!qtQ~!n5D4p!DqzD#Z|M z65#gtHn``0L#ju_-FqUSUbhoYhm|~RAwAqYzMSlNwFck%BWrniWwZ%Y1vAb6y&hna z^_tuQF{(a}w<3oam0x^!KByUFdR>D2EiHUl>xsZ_wDOesa5YW5aO^1IUQ-pW=EGYC z3dY_BHY7b9c1eDC_ELAAmSjrecSOxP}N*%flgg&!8fzq9-*19hGU+8 z*AwhvtEDc5T!gl2(1uCX>74YPA4i1SeX72ZFd32eRLN(wKh^R%w7PZJ4QDK^#5NbT z!UJ;)4B7c!!7C1sN3X@@OSH?(GIzJ7$8F-tD5fWij1M#iQ}qeJwD1heu;=+)f+VAf zDCGjK?td@>LvC3_xp~mc;RU%8d1~_Z*)?r~82#vQ6>6-V>5Ey43+DW5qcnb=`C2_b zAXU@N36+uvhkQHy)n5!7yd06Bet<*}RO>sfVhry8xxS`LX4|JSXRA@^mL(ndcX+h@ zZ*xmecUB!Y9;R&OkrUO+U1J-N_Gv%Qo@$c#<4`K~HWNcTx#3Le zTagE|sID5Bf~$GQ@FI@B8#ho!5*^l5d-JWFfcbhNT0H1gxxUyO>@Mj7kk7jkyeN}V z1f?dyQ^2fq%64(eUa2)z-L?Ao(B)XZ7BJ-08TtdA(Vlqa-Vv!2vPL({!L6=E{o*{Y zD$SldD%`3E`^0FK8Gu82jhI^rI<}le*(Bc7AGJc4=D`+d9D+T$i+Qp#*KlzFWqeo5 zdwzNnI}7AHXDBsKVfcf>m^;>3X+p94C(L#-AD@oM09U#0cgD^z4uSSVxg>jl_Hk_2 z^;ZI;djltW)Mhyxdg&$BpofY$rBU$ah#dQTxKaH#CP5nuYdsn8oF5=vs&JAlZ3(wvU@E2ULZhfLEG(Z zKC1ixM|BFP+z_LX&&(Lumy2>7=z2DyM^=#uu158)r<^uo81RrbIT0i5dVSt5(8hL& zREq-(&yf|s8pW95Ha7CM)OZhY48b~p8W7DA18oxm7FyZoAAlYRASNrhMX&soDuJtK#9$R^aeTb%htb>a z`7VB^t{|(+hv}WEi@6C#k2W5IGO>CaG|-Q7Ux7JSE!5mVkfUNpUr8YWpvZSr4AH3~ zdtGxEBiRcyJHwBv{2nnu_Euvh088xO*`aOHu)}I&7%*-Te3O2u11bP4t06`_m8)JL zogZgOp~EkIYo{p@`YkZnEKRS(+h>~0>E+Y8UmJ3UC+w(}+LyZbUJn}s=B7K3ZYGKn zD{(z<$nx1lb8FpH{TXSb4dlP7gR!8&d&hz%bvw*S@`A4v;0UqYX1>1sxxo`(Mw**k zHy7gYcfY*V+J*QD3`@y4pGnR2bWTiAh-4q4b&K5S8t>hk=H2*vOGUy%%gF@LZJ0ch zN-(1T$r{6Gk^$AvfH6hDAnmyjXHVCPc!V2 zP~W2&;n0r5V?>$QJCdC9)oGbd{h1HkCnH}|hv21wnSxBdNZb2GJlNYQ#UEu(cSj=J zl>LaNC%rCjSK|NS3w_K%<~8((^iriD$tor25DC`(fh=H%B@5)lx&j#CQi(1@5K_(8F=Ya>utqr$6 zxshoK)uW9{PuB#KD8_$DLnm9)DeFESlxI5!LjQVD#2%u*{mUXxU~mD)C#nys<4Ne3am~ z?E}u5vc^{7OGcp*kXQzV)~d<%EZrtluq$=^_p5I|zNM>CZzuaent#1g9C^CO)pQvA zF+Y=a;oNH4xO1#_M1Wq2VYN7nQJ<#-za{m9M)m7CB`WYEH=%@P<)6`2&zKU(qgXyX z>hz&|MhOO&1=?u{@8zb0+8N&Aro7em4|$ui!-8?j3ca3jAg{IRfzRC+%=B*(Y=zRu zd&RV_En4*H*%a+|uzuwyvMcJ~7BnuSD4(F83u^>^Uz#*R6cbtu(9E2Jxr>n7#~uBU zft-tq)EDz8Pf$MV@yp2M_@x`Nno6%iVspY=Wa#~$u#EzE)EJNaf_`qw+b4_)ud2@V zeL<*15~S=<85Q-N{Hz=O8y8q80<==!D-2i3-8wS2oO7qX2b4yn(w<(AaPO=BmfL9N zn^k5lG>du6Z(6E@e;YAv_b@Qm#`=_)D;9i1P67?gVt7RMStsT7h3L~F#PwBf2Yof> zcxp5#o33uOeGk;P-)KbTMfmc;F<#+9&H|#5UyWlxqbfa(s3~nJuLj6m7GD-jW!3W1 zYfZuWR8K-Em-Ny%mYH9SD*y-!peMWiT-jHrRk6p(5 z;0rpi8UHqbVL;;VDqlZB1S)$h?tt^L`>g%re~-z<%}ri?P#cB5{qF%eiXWf(?`nld z?9$EQ)MQbOjE^bO>WexB+>5Xh)SCzUBSOG!{`K!*ssCvK;Jm}eb%2)$+LEeI9lV@? zus*XhZENRJzWzpMQ{=5v+XnT zVcPdJ+x^cFD#<$>Y^}D+aemz1DrV4%3`y&i{cIw(KNPDpFjzQQaH4@vEZswSe&+h%5vgEv|QZ0v??ZPlXON2`suiVBpH#c`F_tHq>L+;jd z7U!r;w~j-z=Sq4g#c~3yMhcPHf)?L}1~m`z(W>p-t7 zLTqhRcH;_29>w-^bO@p6NP{b$e5XVoHbpJifgz)aLxnP@d*}pz5p3`wdMwvo04g1Z zV-j{+{t%iZm=06DGPZzWkI~=FF5$0|ekMFEk?Qu$vV2Hh zHb9{W_ghrFzS45#p*XnX+KlS-F8Sxjto`?5qCyW&ENzF(2Rt*wTLk8w3{&Kyb_9uq zxO-jB7QZ>LM05t^)4v?9wH?nQSq{hE0zD{$6sJ8hCo1TU@!V$W%42f&>u9+KsLyuH z8h%gLExR%SHI7ol%4EJrD=j3T@w#}K_=D@}_}{qcl;O1tY0@I{`xNqTY;3~0{nT!0 zql6VrUrkfB>QPyVGd$KZ01K8yH6G%k`M!CbPGNuWv0;|Z&*z2Ps2-B`B<8T~DkRo|i(c!vq(d?DQT^^awUs}SADS}g%`XfHCm$Yv_AGr^C-X{NbK8(*JiK zDv$ORU&9S++RLiDxQ`-w=<(uQC$dvM*_(0utKA7OMzSzOi>3e9Wm@v08yV5nn(6K( z=OA;V=vn{aW}uZ02&2V2LBvC>NQabiftwC&os{Hv;K`c5^J4c@NX^9QE3&;VFb9LX z^D&3=zAoLf2SM?X8oDA0$xM6AzAkD>k1PG}Jiy=<-2_#|mCnfxR5{3tKi+>MH;vec;^1uOm1b|!uc z!}K>=MqQq4JhWC!b5`u*%WVS}Ayql+Jx0~zR1s$Bu7tp&89SpuJ>GarqnPQ~p4D6L z1u9*{D?7URiEVeT7_X(v6RE~ts(aN1`)iG5HojD{ zPKxjNsKY2|>VwVB?_&Mvu+~V0&u4sy9zV&)wa_dfGl^Nv5p}IN(F3|PkVi%JadW^%| zTPJ1XWUaF640Jijz&9}P>%Un~k7dJ71*)3<5)_a7F+`Vn``-nKEw6XeQCmsT9j%KP znm!PMAcwQLN2B^R3qJZV;L71?W*f&UshD<~TP`1mAZzY-6l>j6&iQ+KwK(kcs4)ET zIB%HM@9&C}?<^*I*rraaH_0FKduiFB=DKaF3bKZq-U^3c+&>05?4R&A`K(U-MURi?5o%9?i@jcd!uZN-a#S;Ky8e()cMbzcwD<7+*7m!t6a3P z`CMMs-)b_@c>>k;&c3_V-;c}e#{ashv;CH#puO1pr?Gj8SAV6pR0GLoE=d_%mR-Dt zktXVnoACm@?qMhN>w#l-a-bae5Dj)42{-Qm{ZZLfOMC3a5Oz`|0x74i@?`y`ykXjc zM`0?L=5zWq&NQk};iRXN>RBmdzd)%ss8;C0R!RiDXiC1}l$dI-1;9ad5pdmupsn`U zvEW8yVX@#?$fW55&>|xH-wV1=rM5q?T})#o@}0{dkE3WNUjM@sHyccTH@5sdji<ScG6g|2{Jim!Vwn;%g zR-&6hB@r5dR4wdHW%ZeczB?}-m@c!o05_XB=H~N05MxU#pV{eMB@4{Wwl}7!eG4u? zw}{>ff{E7i3g38@EOF+w$cZGg{pbyLIOx_3N{TtRl!R=O8yC*EeCU5;a|kFYpYrch5kg zUUV8?CQI`fUA%63i<_~7PZVaMp@AIKW13o8Ivh9SBBRJEw8Ku1R<$v`{fZlk;LPw+ zc%ag zW>U~EL)o6Jzsn(4VBsuwN8c$s-yZt4s}SJZ35$RH%#{tji1l9?uM4q5H}0B>g#T?n z#JXR8KUrl28B^UuCCN_s9Irm9?4^0g?sT5h3bRhXgsPR`i7Vz-;>L5Hq9c9)GyY_C zuKlhg0ze9{KI+px2aW^UN>1QBSS6e4V}81CYYA%~(Y#=1L~^{uxT`;#&obr7dtep% z3W^fN(TylGp_F&JerkX$YK~+~51AVkDRzv!XT-)Z5S~b3mvz$cPJKF#`ySWt0L3Et zUa1K}g^KEGq49bu*sm`#-LsSA)Pn{R=H=><6Qo%Vuhj?pq4}-)s;3{wpvQ$pW$yGO zxQotWqdJ9b+T3c~MHZ>@kB{!+bWjfr*1Z<`k=e(@&0Bk_|TcQ7*wN~d`%UEc1JXD7pA_Zt7pVygEG(1gk$F)r6Z@NBWs6e zL6@C)GH=vB^Vs_?@_}>w9&AbJ1X6b74mR-dc@e}ks|Z5$fF9eoG9C5%b0<&rct)M9 zzulg`nAM6&dr;#vyLaG#Mnpoy_7D~cVbzVvH~u6?U=0>tm|#2vyc%wR-%#)-9bf_t zT*kSOf#?6dsNdAT>OUw%c_LLEVQ+YhK*-D(&=`MLhX8LrLwYQP629o*onzy!&D6HI{m+&c* z3eTL6hemQ?*H7|+XW(|C@yGagKFj#VlxZRYw-{fCU2R-~>z_ZCmmgug$7@W#$_Sj( zwPFIscZx& zz#JWtn_j(If(H^Hj|2Fyew!Pz*nOdoNE~{48c>G>edP}P82lnNCpH7{N;L{`4TQ~=87k`>jsn-tM@62go-RIuLH6s|x!FMt^ z;9B*RhYY8mmrfw4eFQAavWRMSb~f`k@@Q%7O)$2sxjnSK>Ppt{w5Hj46}&kdocaWa z8hb&BWWv;JIoG37zggV}-Yv@*xXoird3-}<+8Be&4>Ag65XLBdqvq=WSgP-kU}@un z7lB9BiJLpQt3cO9Ugrao*I!vt;VggUB>~t2f{H=88Bm_aU9=*>2MP{-3(bBYZ}>;2 z(~cxLH1w$1yRF3QfRe1S$6zp((XOCYhZxHw>TIQ%=@0;yWh9X#^E$2^E(1naRsHaz zckb5`=LCQ}b@hYe=x|+0GEj{+a9NZJz5VJqgV2=m6!+b4Eq>lHt0F3fIU9ZzRXpNc z5rt#BZ)~Ew-E!w5E3G%UC zPlB$$46t^aC&4;0upEUK9n;vox0tZ8bIkTtAy*cOy-YKvYhHEoeL2-xW58hemRGoD4j1*{xU~{rAfWbL8<#an!OL!c&_3aT~nYZ!e z*z?tgx7^xqUR89vGIuXsqVkM?kqtX1Kp-eFP0D~l@U|RN$@cx`jAb0K8jU{=5TuFT z*POyoPS3Vo6*)^ldoK4WDgr@wPOy9PzF#gxvgcO=b^Y`-(jpz?G_!7m9KEdEl{q%F zM%dSToz*>@DQh3UPNhkQcKqPcsJp%AjYhoxS6W)b_MTzIp@G2g-wH=yl)>PQ)gP?M z{u#DpXcIfP2n4@BASIK3(y#>jN!Jg9F@zag{}r4*Py$T42gF>Ow{RVwE?PSAvr*GM z%Ox)Y(fgub50#8|sNzCPh37T_QPSvMjZ(MxKdd-kh6tdjue=0QMbI%2A6jWqt;K2o z65aN5^6*TrJURQ7qi(weElxl3JjuR{+Fma?8y0rDM|!LR!IUg!7T*uTpCk;5vZ%Zw z0v$(84|qa$G$8o5npQO|`vy~FKOA0Z0))3X!!W!jQIv!V30>q)29e=V}{%eyGSqKJ0 zcsXPuQbq5Ep|Fq$CYcMvo=CL6e15q~3P6Kjd{p{r&pWk9keoLNQj4;!pn5t{Rz>e0 zu^7v`0ZZrKky-(LLAGYI;vP(((XZ;P#96(J*j&;&Z|mwcD0F}_$q;ehvqXUmVHfEB z$$9cJ0P|^JVWGT1cq%JSBX=w0OUFLc9r=khK{S`}Ie!GAf61Z*lrw_bvFA^`&^i8| zg$V4Qe@d?SctTpDsJLoExHOO&n5-|FI}9=h>-KK>M#awoki%TPAg|;LJqMY|`2Q)t zG?uRNWs<9|AfWEzXKh@~Z?Hsqo*r32*XEJit36RsCdkK_!u*b3*VXy7d2#dStyQEO^GNR$dNeWw^a!PlNV^5*;ySh7UPfZ8KD%1FV zM+5kY7Q(f?%_+#UU|spVUn}l$M)poHD1&-|LRK^BX_9?Gt$Do83V(wM6^HQzhrRBKY z`{ywN)9+!sm;}bqIDkos95?*^Am8$mqi!jGWWP;<6o_bcx8M19CO{k@#EpLtEJ72X z5Pn=BD>_u$3tmrSkV7w-mZPO;&+h8sGABP0iNwZZR9Hld?U0|`&xK@t;e&*ur6RK+ zlG&!^k0j{W&Ag)}ye9CJ43gmej*dr!F^|fI_W!BayK2mHrNIs`1!g*i?W5GV>Et8V zLqLvb{Nz#+9}q-As`r?c+V+wSVctg6zBYMRV!uLX$Xn%?#^PqL3lZ4Q6h61pS7yR~-T+j*B zS*8`sAceV&Q<%^28vn5V6QkIT6%QAUuIO z^VnTi3pqHM1Ep=CkJNxu$6A=qbC3v7HM9%DRYb~3fnx{*iT&EnIX58%$xHmIkogwt`uBFX>WO>Co2T6fKaQnK?w+Y!NOxZGPWKtuu;@Vk*xl91 z)->8FmU|T*UGR#{Wkb9)hG0ms@0OhWmk-dU$<3O)eF$fm;gcoVn=Chp$$|vwJ0=pU zCqzmXZ|X(Y-o0mK)AugDKF=Bb@-wN2^kKyVW_@m5qtxe8qdwa0qzoBPA7d3tCxiJunRbd(z^Xp#FGsO>+0D91*x2lybp(-CZ!)u{q6E2CFG88EXkiq>w31t1ndw zp4ghX?e1}w@{H=+N)o|h8W6e@RRuSC$amnXEYWzqw-iFlr&1gt2>b(;j(CniPT#ZaHdPsKkfgfFQ;r zDC>Ijw5l2?^)*GaBgO8bj8+pe_mo)v2o> zFz|q-8lV!5X1E3?g2&d zlj@da)EM{2RGR06b?sOE*-d|ko;Xw;*L;)h_mdRT`f;)cREM2C3Hh6n7m-?P1!zno zr#cS)vE%ai{g<<^z&knY@Z$S(CWTA{%M)ID%=FuGh!_-lG$k|`%OHC*sB@h3qHv3g*odVb-d&?`_x_u0t@P&F+?D%;aOhrKr!4|rQln+wf%!C zv?#r)@piF;|JdVVPtbBA?tjkqucxbS4>D#x&^nbIKHD0Y<}P6=`jk%<_`A(GRl z8?KE5?aP`DN}{5oO;k}d1r3QJ1_p~<&O^0vX~H`mvb3jH6E2Vr^L$}iqD!or-Rq3y zfOz~4^I9KJ@FjLM_b@7^3}=blzm-Z|y_r1>9co*+uc=5Amh&)4$hX23GZQ??b$bNH z>)CN=6&lJIO%nR$z567FzuS^(gD6Z=!DbxNI^L5DIoML4j=bD=aJa~=2g7#qjuHlt zk^fzplh3?P34QAxtK@B?E2+dX^67@G#pTVMIfS(e=++WC0s81WK8#xeMGFKG z=9&L&Xmnv}+-XBI&iBn?vsGU;Oi&$u zJga)F?~O*`K5`<;4=4L2y2x&7XJ*~Y9h6fJ)8r((lPF)3=JJfO+yq<%FqK4{9-Yqx z`rm3FJJZruQm%-Fz4J`Yyz3Cf54lSCH|JSf4@rQv%0b=e!=pDYelZoi8Ua-Uz9~yx zmPQWYi|yHY7Fi1$u8>`&zeGhKS~P3ozy zj=Nn+9CQG;>(ZZ~zJJNf7%lbvH^zJN{+r=+)mOVC3FC2H1{}|yZrh{XF#9O(BD#Q3 zgtItNOIOPW!4o@Xugz7?q2KnTs_{q=T*NKnp;G!J+kUm#uiX3=dmkQu@lUFTrRMpB zu6xxX)7Troi3kfjm-uqkXjyROjx4eFpYy$hm$}TD^0j_BH^Q`TU<*1Q; z;4ylfJxa13sFQYkism<|2aJZXjpuN?OcGo*csaUL)_YF*bmzN<@+=E4`EMr^bhRcO>>WEPDl=^9b~LBNi1 zrs)ogZW{X#k4+Lqk-B(QbsDV}9scHv)X1vejG0kIT+pUoo+FeO5w}tS$8S(IhgW0# zK&dQyK+3-ug8XL*dPIj;AuzGiG%-W9G=*+7hjxYI_oOb#V+P2I^x zYTLUva5}?-t&@AORAPJ38>9KTc~?s2NKEwJSu~%E6hs^AQRSS&dDS&brnS+s z!QWGe(K;f3C4T@_gep$yY~6ZP_YNV$YvY7Z=}a>BE^5&T<4bzz7xupwZoN8_XwYO; z$Bsq8J*Gocn(hLA10z=hE3)7nP+q=^!B!oE{oLixG-gM#1KmgI$5r34tz({?+ETHd zq(__C?rXc>s&jYR_pce^Gsc{1|Bt7yj*2qez6PaRTDnUl1SDlB=@uj;6a+*-LK6B1FMmnUsWTXY8OF94EZ3SR&N+MUXYX7XfIi6Bf-_t& z{SLb=sQqp8|Fi(t@OS9?$;iQ_lT0UvuAfr85^=`Dd}}z9y7QWYVM03T4*7e-!c_bC zcPYtdT8(!X>W4koU0MAB0(F_8zSdW zxt~ouE1-xNd~m#y)5sO%%SQsfiyg}idGXIL4`j%MUWtDmPOnXg)_0|{q)`jX=9#*U z<5D=;d}LM@kQr}`d=2X9g$>r*Q2eR%*g7fM;Az()?(6K-wTXOiCxspZy)HF%-%YYh zWPDC|6y_g`5`p;+U^a^Rgn^6jnUQI`RyNm6cI>NPvbMl#IlIRPF{zKuzdtMxdgR19 zFHaE8cyGNumDF-YLxQ(<#}1pW)yiz`?}X%R#t*C#!UuE6aX=t7U!UdT+jy_LhGBex z5^XXdgQB{9;oXe|n zx-CBi{QjS~72cm}HF^md$0D!arJKq=Ng~4Wq~?y}2Khl`dccLPoR`iuUO3yr(3}TOxefq7|g~ z;;lxS@8LUm(vfna49DWNi8`;QoHt6|Ka-}B{rSa^v7%nxK7}ebuPNYXM#YLH$)}lg z_1&I4XXCR+2ZBXgZfTJMo`Em(+b5!f6Pwl~XoirtxE7gj3z^UPQW}(aWk9drQ>awItaCP( z7B$GMytSAGc|+_ru#3pfzM`$(^Pmj`RRpso2m3fi<4NkOiW4-}uQMG$8C&`Da>ow^ zvnI`|qk~1yl#8X?fdbcboe7_zFeb7qomKwqXV1phk0KDg3kyVf3|}f}L6U0+*^5*N zSrUeEYo#F-u^>TTGTZb^b~ow)i8hf7YS0%ePB}YjY__Q>)ILt439WvE`Z(m zG#0_D-zglDeOQeFkdV{M;yeV11!i|(p;yzewQK_`iMLpbbmcFeXOq#)sE(sN#dCD? z9CY4?z6y9eehrqEEO6VLBAVuxJZ?Y*gGTF&S(CyrVs7tS7iB-zjn!w=j0PXw~{oW@E>Wp&$pR{FWpY~-i`1ZypYU>{e{)ENm z)ywgC|4nDgOi!&(p8j|VsM?lNuzr{;9u?8IHz`Zm5)@4ro{uh4m~V>US*E?>yuyGk zVLkp2R&P@-ndR~X779H;Q=XrZ-&XPIf>_&;Wc(dwKPNW`xD4j0v%93$> zQNg1n_E|rbCsy|PYoXsE5Kt}O=dUmjMas|`9NkC{n!-i*{ge@-W0&;VkXuXR15tYQ zh5^kbS6%Yq$3|H*h9>qhEFNy~&-cH)>U!#I%LY#>k=Bt)<9W=YF(6L5%z)CWJ;a3G zKs-`+pOz4O%qEguaJVfg{?mq@`kqEjHVojwvpXVhVtYYPFzS7t*3i@_AQ!|SnHkE(h*@`;u zLJbIH;7JbK?Bu7aDI_c$NM`q(H-1mp4pa{=Q4%FG`nb?2JTAtR~B|qSEO3Gc1(Sqf@O@UsrVjVdB3sc7&3S?*^1VKW#~QR`5WKQ|I&?njHs)(!Bf2S zhZZkICI0q#0#?Z)(=bCNyEJBv`UT@_OG8mm5FER!q5Y!ZXZy=2#>BFh#bP~=iu6Bk z%d*VBxcCZ66M3{`PAZ$MwEgpvLm;35)O-Ee)!q_of(#x(kdy>>fySt`w9kFfB~n&% zK@xq!jq~#nsvJ3sK$xNcKN^UH*?g!kF~R$vxi zt7$bBW89I?J%?bEgyt`SdnV5ofZtoIB^bZT+d9lZzlRDqa3kSMY@XEPOF(naVF%V~ ztI&bKAqBKj@h!hRTmZ&%LvW3U-H=Z^kI+yR#@BMcsxE-X5s|4aL0DO^$k!|MCQ4%` zdv1SA1iz7fpc`yHvOy`sQ$SG9^C}Y8W8H4IWUx z_b{HN;^X>As_e{>vIno5`qE@Wn3pr!I0rRbd#iN{7esewPWCDsQ1@Sp1~SfA7*K*Q z1)nmF#*sN^X17b;=c668G#pQDf0|RBwI#U5vua!lT4AJHW+{=xf{(f}^$cg;5vfzU zL`JmvPA0NJ-`J*vA7{F>Lkf~cPIRR=+Sv%cDF!MhLsK%!x9{ow)^IGlT9cgHr*TZ3 z=++>yFsRJ0HPz0duo6O>kZ>3G`FF;4e{oN*0Y$HBrGi0^<~TV6O+d33OXe41jAHjb z=nZK*SXw?8d81Zx@ZNU$B{|I<)(7XSlk2LEX*{~NIXs}hjGfQHaqHaF#GOmI_B@Bc zE^w69B{s5q7|(*i+M%u2%k6I-Z2MMy<%!^ z^sm0hqHnRF#Ov#-Uz_v2@upvyTE7h&;x2O43hBv=r7HwXXDXuA?(h}udYB1w+h$d0 zRzH5?U=-w<8OWtaG7C3y%iU|wHlCdx&bInmrCk(2f;dfe6fFH6Jg!l325h(e^Pxfk zzk^yFhm!VmT{j(Uzy4*xiTfCk@}mxCSxG}i7`VMiUBg98;jnP}N<*_=Q!AZC0_e6M zP2ti^B?(|duP|!iOe)#_TEZ!3&nGg#<4t5_N;5WRyR)=yGTY@;!v3_n>8;s;b(W%D z?(I75{8zOdBG+F(H+gMZ?p-V53O(T{4wZ0!p26#X3*OopdFh&DO`L6XD5psla;%kJ zdxcl-S~(I98J8P@!uqrf43Se!INubkSO!6Vf8j0C$`v8vsnwo`1L21LPcn8`L!eVA zM9B4^M@R_8oZQFJEyH=K9Co9AX1(9F53))Gt!!-8@_TXlBb~EPi1cV5{~^!+uC4xl z@0@9DeEglMHF=sbs2X2tynm`M@a0J{xhYJnn>=>VlSSDYSz$=aa;iWmNT+bU-*B`u z$^GM$rP9a4vyK@6&JVFMvbVgCEUTV|Nm`HJ<%p_*>Y{eB)7vy5mhQl>W1aG9UMxAy zvxLE0euB%L0^gs|#Ys!~7M)9UH?|RX6FgNj=`25nk^s{&&}+8qHF%w)_s{JK6wEQC z&z%eF&THr<9Rq0J19K)<*}s-KSrGJeaJUqM8RJmwHk5)rVg9@HV` zvFtRi%=0u-fSEb}tictvT4t(iY%>6B{dl*=P(?R@;ismCVT;swxOAv#7#Mb!xruX& zLGb>O;H@+t`mF}p%6KUvDzTBbIMMv;3ge$%s^M{0(Rr8Lu97q%AFi&`Z`$REP5o#h zO_6(BbIqU1b+27LtnAwWBg7DwM(ZCh_%H5o%-7K`{g2lAjxf?c+SFHyfuvVFS_KBffc7=^M0|4>Pgl;FH_`+} zQv$0yEJP_01*xYn~gNF5q_GPRiu%C{Xjv;XclarL%ipYNG z$^54{;915>A_^f%zOnldJ32^;U{)Y&9K-~&5C!#O{bPup zCfvUGat`qUq)%Z(V|{Gs4)wn(;6Ei4?Z9Bt+3c(l%5M`|iUN&_7re;@SXc1_PpO@5 z&8yZ&@y`W|*(q=Q%zw-M;0&M01Kax@VjvUN$52rzKwjcv(H_6m^ZkO_PFv8>Qh5XI zpWN^#EoW2K#3w4=bDV4i3@wpuJzsz+&98;O>7b9R53N3Uu9%~`*finGTBOzUn(5_3 zRkw-uivtK^%&w5h_S2NMs@rQsT2Ecdl$mWg$)q zEHs}LahzMWB0MfJ4l2Lor82cgfBQd*yt z8{eg>?!);m7sI!YV{+A;8e|m$&xjlw{_q#y8KD?+lt?i~9g2s`_$pYcns)Wub*o26 zYTH*uT?P-#dRK&e2sB=Nn5$GX?^3o$0RAWXCk1i)$jKLD_FOk_BT4bNv*t3gr1)TTpvMq{ji%m zd+^h(M+1n)(WfuKsQ^odgM&KB0+10$hr@v8!UZh=BZFreAMZwzsYf!lOQwC&ns3%r zF-0lxq?d(qL=XrS>F8GROcD8Z;j1NttZN10rM$trn;FW_U^Jq058pZ(T3QsYFvR)5 zytuD_;zOq9m0{=#J*(+0kA1EDg%}es+AWAI-3MPQL5O~Cg~c(G3%R;>LcMiKmOk*8 zATRubvWs{u4MJO5_ZI<9j2)SXbFSUql&pDmCJK%zm(!xIE#CaA#WGm7_>KcR=B)tJ zL`}3LWFcaUb+gbN9Q7*!Lk$$1sA;7fq?^)q9 zNtnOqG2@BCc}7YM`JsUMEgq{E{B+!c%&)TP8=s~)pe((r{&jNF4%cykMA1M+#g?|e z^}KEoKk^NaI_wC9tk<)&t##0<;f^B|O_lz)HdNvxAy5B$Q3#LHkanN;ZMaOe%th5` z#xk=4rAK}x9bRa8HF9S&w6r2NxtxKO8qlit5dz#JogMq`8et%h6;J9F-vdjF308uSJ6Hf)XgZ&V0~KX60!zu} z0!u7Z7?AG=dyIMi)GnVjVjfKvabdG9g6w_@-Mwe(-Q_<5j1!0y(+50-+XMnXiRQlB zLy;Mj3NQMU-Py+}nk(ZM=DDZjZFBhPY*tiMlvB%NtNwLGSg_q<)9n#dZCoF}OZk@w zih4==HO3}-TpYO_b54?bv@&r_8te)z)nY)%df;Icgy&YN^KhSwal2&=>BXf#8g=KT z#XvAoMI5Dd5igiTtCePBM-VeMkqE)=3r-1kp z)q)7Y13!CS;!Lg3;!r;K+x1~9;Qdb0QZ-JWAI*<`f=Yze_{m`>$=;NG(`SxwW`@U> z*yI2e>veHK!Ykhfq}(1 zLQ}(P;t?%S^$bd4k*)9bwnu;V!%8V=PW><3$CngNT8S4z96}0HK4K`p1CQ zkxtshn)H#Y&lFn;4eh8`YC`7umO#Em+!05N&-gwnboVgV;nDNwj&O$u$x@%86d{*t zc?GiW#zJ4FU5cbyUi4B%Bl_o+VVi*mUlpR) z`7KuT(0bFgX}z=|X-bbpBf~RfcCNNhe=EIis(AgBC(XDX+tHL{8g0lb$S%MtrFWZw zAb~Z0Vw>O!GRt0REUFCevo)?tG^E|w4sncB2^OHTSr1#r*0MtMhY`%#ctAUL4HaF z+(HKx*T8Tf$-@WTa9$UTa2|yTY;uQ0uUNIvn^a>&=nDHunCm z!cxkETZ?^!3-CXg#7^BsJr8MOaIX=vgzk?z3BTHrHwbULxU}a*R(-2iV;KxOZ$|iI z=zg5$`g|G8g93~0Wa$h8j*ME|3gcde+I3^+zk+7<)~oiVfG<5lpTxoJzlhnu{)TLp z%Ff%{`Ka9>Za0@IDVe=5W!fP&F$l(WQ)Nl?4g_l6VKI$QCwvGB1a55$S3Z@Qvrhn{m)Uqmd{a{Lz>Cme6|fCCn6Kf*5_4iI8<~C< zy`3nf4|#6$*fY1nAwu>=6(L1?WB$?%3K9jZM#zK5iT$%7@^XMZn69#J$9?8S{(vl@ zrBE3Y4?Tk^u|?X|q=If&2!<5icCP5QcoHP&KKz)v$XKg(Kqaj}D2-a?Q2!X=f9qcj zX5i=@{Nf}_8T9TujzTQAAuyBdA*{Lh)k(}QDYSZ9P6PFm*$wnvsAq6_e~dKz_yh-F z=t31&At{f|^zZ}nA{sIw_6%4A`e1eY9cHs8VQuiRy=JY&T0RcQLHOT2glLM5xmq8Z zK>-BWkvsOJH^QfnoVU_YhG8dSHaG3fd09 zuUu>yJF)kG3!ruC3f2zjO((1&tQc02jcr&cHVQ^~@UF6P5dH~BtLqI~JNKZP^25_H zx26wDTM9gpjauPdEe z3nq(4#aW7!l>ZRR7FsSH^e2)L?N!}Oq@GNaX;4d(Ide_B+!vxF)U#}rFJ$4W$1cU) zVW*}sNi^NU%Jpn9Y!GLULIzD3S;4JAlH7*dw;$qwlFxiMW^)lU91j0EnC6hAqbkL; z-gHl}Vnjv7H}vzdSV7*zqHMLPs>eo0P|8iKz5C8TCO98@Q}aeBWUqrv{Ig{h5J3Wy zpY!)DcjS(=^+$;TV!#GHe+S5I;E3R$><+H^_3KCLt;hHM*Cu-;l6x3{x_jD0a4x z?2<5c>{0X)nsoea?qNH{LNjY0Q0Ef78pUvnrq%f{3KldT^qujx;3^W%+yi7m&$GaH z;UOs+4i6D~s-SlO4zLAhb|FNq3lJP=xECn}{INz!BTg?F^4R+!bF+-SKo`TZw5G9i z4f5u9D+na!;2^~v7U)eP0|)wA*~PXo z43&j3tkgp)d5*omwjPPSNUg}iADN={rtK~qOy-oy%RgE6y9=Py}4JIM~0G)-Xj z<6$~a;Q{S_g>pT|rxT88UVKzH6>xqgl9f{OP2}B2t0`fKtbTNb3g#z7J4c&XSD{4w zQ~z4Rz2A}z1`SAa)0W_OlGLgh{7n7I?9`y2#`7l2I`t4WP-wDjq^ZB4B>mU+umI$5B za5FwitreN0(m3Y8O1s5_5xTgkbB6QhuLwhI(WNANT`2gwcNevIK9pEV{Y&I*!jZ+m z5#`po^bvapkjU4ru@B8j9=(S6awu$IA-n4psN{EFMlM(Pp!=sAiR$@}B^D2$mZdcBGD`&5_dpbziQJ&mIj!elv8I0O%n5QG z;D7K8N@n!u!z|?L*ud@nOv`d7;jQN!gJx26!t^_qHu(R3)Ws8K&}ZwV+hqP^ysa%{ zPKW>Vl%+`Jgm!dBPDzU4K?nG_6UM9~DXTyL`MgXFU7DlXB}z9*;kzZ0r4zG8G$nKX zp!EA|b0gZY^fU}}T*1oAY5^httxrxU4ShvQ=f4EZqNC^0Z?Ts5T01)<8yX}++#i$| zs(nZ^Wa`e3($^CB)H~^vIxS~fJHJQw(&C>6)DTy2|e91R1V`Sdw;th5Z)V0C;N zUET+;8x$VTue>KVphC_2;TUG;81qgdKg9AF5^RWuM5=)jfg0$lG~v1se={B}rwv&QdEnMHfYzin?D{{CUL~w91hnHB@&->0UIO`DTkT@}7%He(skrBtyzlh*ex8kP!6cn&2=8vnc zn%&-g6+cmaxF%jNspoH%u!VFUgN0CSWPxir!P(^e-ICCgrLNK$bd$TgvowQ$EoXT2 z_Zw@iN}Wy3?>}YEOdv$pxjS*4QeniHK9QpTJ@DIm9!W z1a_H~(Qvy5?jj-FDO2P^FIP(k%93hGt%6*&*gGzQU53CTx0F<_NN%rgr2 zK&C{iW_>)Mmx={l@{cvR|Eo~1jL*;xe z+ZxRH!U1mEgxoe1>FA;$P-*_(;ljBOUarB?Z}^n1C`3=cAL^2#Avxky$PLj-2S-4? zrCQR9Y80IJ-rhRUHCTsg5N2KiI5sg^q%_TL`K%lBVR8;K%|KQ`X#j@E>1(~W&u9l5Vr+_pIdr+B99YO}`j zvHG;(bsC%{-ExM5CvPKTe!pc*#dO|KO2+;7r#Bv4{B}<=FZ4fd*xVJe0aGMNDA<8M zrxkAYYlpJEz@zqL=$b?dk7iul2S%H#{q5Ct7>ewvL&R{Oj_A9tEa;hZz69%r1;t~d z+77-Zu5x2xe1eagf#jd(cT1*`;;2*F4?TKlhODd|g1uuM!52+7g?WmrNV?V8*I+n# zLjZF*F|XDwy=kS)V%-H^q&E(@b9$0T8TJ3AaQx|ZeP|CQl{2rDD>1>N;*O9A|PayOn3$Z7w9I8)Ki{J?pp7&W+VB9xGzU$M)QM^GAa6Np|}`)QA}!CLzZC*qA>fOkPJPkL^GZQ6?Z_RF=6i>8k z=ah|1T)i}7?K2$|psZKYk*7`OyCUE0QZFDpxB+>T)RtU{`C+*$;&~yRgo`ur{df5b zBc*f;3_t`Nx#~Ah3$$wEuQ=TGoC*Evm``j{D=6dDO-Efs|7}4F)mEhG6#=eR$a=AK z4K+~0MhiGcR#a*mgwIakR?~p`eAYLW_8apR<)~}sL_m3}Qxxl-)R=CH4?SwC`F;&K z!W}RWnT&+OPS2#VD_?JBFDg0MOE)hu@JmV@aP3loUxwt+?c7jVm7K)-9sPBkz=1RY z3VPZC_1im7olEH(QocrHg>2hW*cj;ldV*qKhD)rx4&Eq){mEX1oHk&imjS(|QYv7& z6R>9$t)k`e^g6l%v=n;I4N&e2>nZ5yKDMMbU_-(?4lw&}AlG-sAR^ONyOD*X$f=dc z)bleKnYoXb`%^2jCD`dLOSS=Nj0mbeBq@PsD0h#yb4oI*-8qHSn3h9HX_{*&-SPgq z0NYQ%XSp>hMvrs1qC#8%{o9W{L1gZ*Ga%WCs>xWlb1}H{q6%`cOhBwDxYCVTEF7QK ze%qf#%~~ZT@1f4L^s#9wg|95yt#Xz9yEy7=$(jr0v7a@e-aOgSpeLEBbwraUTLb;z z-GtqbED2uW_lY=VjJO}rr^a~dJ`T85^ZvK%*0H)+&Sox^@kloKCqKsvkJ*^^I8VIh z?|vNh%Cxc;NtLmhm-@N=wwj~Zc}?#`sLR)@tpw?k{a(XG?C$6zf?h@X|Kh1&L#;pgJtkkjA4`cy!Jj!O5850_7&OGV@V|G4^AJikOCeD8lW?@ z^b|Rs!Wupw+p;i%(@|}`@a;B2VENAd@#)tczKw+s-a||OW~RB0$(wpo9w)O_CjABm zD1yOI(GD;O80oo#K|}-2OJLET3zKogKn@1CuK3Z?2jb_~2rFQ48LFxf{{#)SLo+?& zTrtr3_C|CxNRSoR9LGi8P>3l+4CC>svf#+6)03oRK5~OL`15UkD@a6%Bs}vhA-*8g zA~T{XbEtHH$wZ7wvuEf54`it$C?4oI5u!KNZuLXbV_OrWdN{g0+N^q7Y%s{9pAzGt zyJY50M)nKOgXZrNnwoY8D@GF{-Bp)n#9*VJICMzWg18}^c%A1*Y}xz%(@I>nvo=}J zf~XD6ABm;Dm@cr$Y&cO}qa+$!F*8nFYnfBYEP95TY%^BAMO@?@PN1ZSdm9JD$Lq2T zGYo0*b3cE^C$^%eN?|@+O~DO~sIP3z)_YKjQ^t%S*w8|Y95d~9lzh)C5u|;LJF-c# zbt-G_vWjMb*b?!G=pZu3PX8ot3xHi!t(C|pNmlBt#9i~G^W$|55b|qG;?SGy{C87> zNp7y?Jys`N7EM;pyM{Q75wr5E4#J6u+!!KFrqf^aExH`OAq^64q$|Qicb0ZQun%fo zS;GSG(R@ur)g*)$2t8Nan|Dg%Sz$q`8cGM^+zGLIErea9*gi-01D! zEF~}w4W$IK*a-xAK%~AwINHbJJ6JD6j;>nRmV5D-SQhT1`Y`TYfb`hGf1&a)Y}8IWFQ*s3 zX;gA1uq!lX`h|hPgw)2u8uWiDpYVtZrR&A7Gp5Oe$;7oih`$;yt5yo*B@te&Y5;fC zT5yS9C*CB#fkV{4b-hI}>QuijZdI1adLCECM2l##j5bo!%RneMEO&hSOL};**&(L` ze%hwX0>NSlmUhASevv21n4fMWRjpOcwa}z|C>)k5y}wO0HY&djPRYmWDqfX28CBI1 z9wAt=S5>QPYvG$$M37OWndvASd6B;wqAHzQL`0j2$XGK;=^OT5iAbxtx(Z__HDMc~E z_wTz4o6O#VAAe(B1Nd%=xNo@z$cEXA?&=>y?}Z_lfz21kP#xB|HOPJ+-0!_D+0CkV z6JRm9p{rQwISZ0wcR!A#MPR^W(03K#2P7{6$W`cTBw`)0#n^4M2Ss2Y^uWy}@QkpR z`#AaY#^5Q;8J&Y4HHp?x_>4XTIZhThJ)7FjfTkNWk^bIlY_tVxj=;-~YKJ=LwTJz0 zNpX^8gzS|_wcEU>D@p0IPqz`lJ~072}B=l3{CKKh7iF_z*f<+SO!9OE>a~nmx4Q7tYRz5;M~%e9mW- zIAU%Xcto9=Q?lCjui355PR~t#jl|IS_qF^hK0&A7zUNhYa<81Nx|1&ry|icjwNq}& zwBIVc3l$C37;r>ih6Tn_P0`$bK{Z%@o;1v}d_*Gb{=AcT89cH{uz_b_k-k|FS^(q2 zSpDz~%@@CZDDSNDF?9dRV_$t;_zDmEE*Wu&z|MxMdV-|I5ppkg@nqKjwA*^Xy($8Z znM_`ZVz7A*T9)a+eyycUu>JN~qUT@V6NTa{qE{L6PkU%{6h^?)wb%w=R;9ZLAlG>? z{DY-IXLT`jVPKZPv(KWe$yjVn0^%b`)^LT~ZT{)+_!H)}W5SzpOCxLuVz3*t zsK&)n4-UzDxIuPtQ`rVj_osdcLuH@OBGarh4Q2xJ))VqCac5}esk&Yn2x}+MDIyCyO`QDd`6p4bSaHqTg zkYlkcH(7Y;*ue6){r&9ger}mLOBs3j^B3^o9@K2DB_qK#;a>!14W)#~|ug4Tc_ zP64A(dt4QaEBy#WL!g$&?ztl#&(T?4RKTDNZO0ni1n4u(_^+jcG73x24sIhMo z-Oo8Rr<-2|u5Ak~R&SCx9MIrZe4Gj&m}X}Jh>o@%YAYYuYE;mqs`Kj}Z0k916go4% zYJdMBt$Ob}la=dZ(|Q)Ja?VD#y$>8i@iIvh@u8Yd88A%IVODO?2gX5-A5D#wI?%rZ zfA==MhM2$0zlS@^UKZ3bvV1bCwW$f9|3nS){jJlgT2|S7wKfc(r%TQQi#_wvFrkg~ zm?=MN+G2w@o;DYgg)ISSzHte@NA~9(Oe>{osa;O5NekPo4>MV*<4+aNyY8IdkQd4~ zh-0b=_vqw%0)s|bqxf8`qKTR(u6XKKePg@Xcp>xufKpJVV|NDU^Au3pbHIUhPc48M zqY>Ix&X{K%G(cVQD8@Za4I7CXq{dPKv^6iifW_|+-xRV#pbmvx0`9RZ{3ReZlC;k&y<0hQi>u1Q>{)=* zpLh4?q}l&O)r-gu5e?}V+0juuu*$>~e*8SM8{lo}OJXe#{@6&s$s2r@r8wIHz2A(` z3QV^Oih}J*giiT5rzsUlnfN3wEG#qN-riY7HO=8rpx(w8_$kqaIzHwM;hm&Q*GJD; z`c{?HRmvp209&lfOIbqPN_u3;n=?7CN2%SMrg>TqrM$;Vc#_p$zRF~0t(l!Or(A`N zJJniUyjeVZlzMUplhQZ`b~l7CK?9600)gnrRJ8Doe5dqi#3c?o#xxgO`m|M?fH)#V zF-yp7BUcCJ(vkFRyGS=Y2gfFqigDfD>jo@}9Wq@*%tWL?;sB7$jsKl6)JzK$rwN5(O>4**&#~0Ac%;PX3zQG!I?I6 zl5+&03zUKz&jHvll)@TN(WX*Q@D)w602XOedjCPHfXO$%{iQ0w-AKWcB9N<83d(RYL=AV@1^2o%i-z(6*E$+}Xv%<#@{dETX$@fM}umyh8Eg{+C>y~H_Az`8pH+G39>5FcFCSv`5If>ezi$GTKhMFbaNHJ^X`MYNIFh(($F60Fh(DWYU)jQso<$%r3nRAgH8uVWH4mJG zs3{VP0^ywcA_E^qtqqEH%KfNv(!iyS-hd}(b(r|6SXuC0&%-_sfkIu}ivbS)jbbVUh@ z3=&O^-|a6J4=xVO@?GSsLn0;qO6F9gheNLa-OhC7c2?ca_0v!{jpET-sggb=a|iuMa`0sj+94CAW{#Y(=ad6&7;8lf{Aj(_pSf$=F?sMzPahpO=z z>h^0g;RR)_xAcg4cpFi2(uP9RVOXEVX5EmG>w}iIE4?jWlkU<(`-eH*g&N6U1W5F) zZn~qvqv#6u!DOp($~`RNnhH z6?KUKMZVEL0u|LCDj(V~LmJ@EbYHzpn} z5spC|oDJtOR#LvT%fC22B5N`iko3&OmbIQ%#TgaaBD)^)BOm1~Q4;Ci;KTGZcBFnoHsI<*#d7{vNz;)@4-q@l{Ps61 zP9a;eU`*EQrf}gAP?~$?@_3f8Dx*g3UX9UGvQ7$*P2M(G+!aDVV>Dw>aNP zhg~}S6AhjV5C9{0o9`)wVD91IRId5#H9>F%c@#n$z-43=gTPVVdy&GiS?dT_Dk zW19geSN|08JfoyW;S*s(CTQVKkuLw0o*iv_ZplRBeOiaG>Ma#7jffCU9#ZY>^M>CE z28$FdV+w(vr2htUe7YAt8yKaK%6&8qutq?5wxdAaVTk~zY>%liskI)o70OWouYrfb zg*@r%W;;#J**Kx0{dS6Ca|Pd@S8WbUC;qjvvQk-Ww&HbP%!C=>y*i0(?X;p`krpiH zk=~coYpV#OJEMpz2vsm>d6<2}3yY)Y=>VCB5_gP3PZtik2V_aFRf1t1{o%=QGO8Zd8v0f6+;%nh$Mdk%eteY<}J zcShwjKLYRTwRv=eccz|-Kihrp1IZGn4$|L?6Vs;|1RBa-&s+3$gL7Z0s(0>vx{@sA z+i|etkmAD=A=2h}_*HJkku*a_k^bk!GI;5l88lAqpL`0MpR5~GUu;eZB=@_jSCPU8 zDIingyNUUdbQ>0mjMMEPpyef3X>YwdI!yg&8Pun_KeXr6n-I_wl)4PAAi9IC+x~XG z^(YsLjQk>qwstblkFl&VH6?!u&*SO1#3+kbdFP=$N1;~H`uIYL8&`BQV^6$?sg4}0Ku09F~z4|so{ zv%NDzGjmty_X7n2G8XwL7!NUzXU{QQfFv}PkEkE;SR$ng5m`(oNbUntTow7;1Ie(0 z#82aZv9=)+tPTu=4)v3Wf=)++4?ep=W(aT*h2G7Bt_BPMpT^OY5%X~D)xF#3C)b?c z{(;bJ3Lo*|H}6L?#BJc0H{&*n{s~9L!x>jfG0l``_a*V?)F(7350BtO^X&@H_m63vr1X9L}7hfm6?}KpM+hy3VNOwqGTO7neHd-6clEYNYbn0{s`##(jc3ZA+tvgye~y;z9x>p42LRc<+}Q4rT=ZJh@ui3 zclr>vTRa}J+`>X9Q2yn$5XIGpv@kY^r};y6_RAg72JE>Acn7Pn^egO9;CT4@66~Fm zw2vL36^3%sde1K}C2l)Uw^wtFz4*= zu9*>Y+0ttvm8B=KPCXe&h4F90@55x0K=YdF+-Po@zT4lCkpCNFYieZjZ>4TrS}Z~{ z&5ZMhX;SYxa~C38n)w-~nwHLP07oG#si0Bc_g~+R-Gd;oBtUYo>mK&2QohUSyY0&a zWDdw=HT)(^lW~NUjo$2vms)ba0Cmbcgex!;W#cqZ^S(s?j?jM}W3^v}_D4yaSToxvsJAMJ6l(swXh}IdF%5tpC zC;nP#UgxsoZ!c`W41;PcfH5*<|Fxc1#ol=~@sM+N=m`mRGTWo@%iw>ThEL3E;=3Px z8NWr9C-x_NE{+Bv)c6YAjl&KJe94}BJ$ z+W(h#{3~O*B6g3|Db~!G-2T3ZJL~mE@0VS&p#$-fupafJQ zM9W>cxG(dg89gq9{XKgqH_?pT2g}o_$jpN=BbQ=#Tpza)egT)CD=!CZON==pMDL+> zIq``EzZ}T9QU>r3i*^5#lXxXH{qsfU8rO_=uU8Y^CJl9!WZ$wxsBNK9-W|LyQP~$H zjA?H{`Oda1QEdBEQJGT3(-*~M&djZ?oqcz;c%$vDunWDOLV}y$FE5(hF~|DoGk<@8 z0_yu~KoJi*do~bDYgm;2XMqR*J?P@a!9yC>MUu0zZa7<3@%o14mEf!tAi0PkVy$Zs zUO#4XZ73kKwxG}Z!rQjS+WzW8kW}KNxeMpG1gw#yy4Ix%?88VWKpF0n$B7kd|J@I^ zX6T4oyT>(AHZ7l7T`*fb#da#(Za6BMV%8%(-D0?KQ1?v@sG&>M)>BaMM`@C*z({>$ z^B%!5Bx$V*C8|Mf90xd9D{s>X-u)Bbcgnk~U5_ZENOAP+gb?eCM$>Mj5uE7A6%Duwy=JpNcL$0XikjXRLt7-Zc6`;tG@uMvJ1P%VM0Z^L%JL3MnFPo1nKVX27yC&NOzZXNq0*l2ndLD zgK)?L9M1V}p7;H|GyiYSFvB?L;J){L?RBkdt+kIxRJ}$KUMRc>h$T_gu+)4{F6&QP zmyKpd5vq=shC%zzhr-wTmnE`P;nlubFM>Tgy(@<2f~2PQSH`2lGx_04p_tzznqNZ6 zwXiDD__P&xf2G|TQH^E>zfo5sa0&E!waGTN^;#>t)Wz2q)jGEMJ-RlUuutOb(?s9z zeJ`=@G02z@XOY{uThHHEi6oucax_5(>rw}TG451LR6rtfxXTTxP9Z*QEq|ThrPG=$(@l3e=9TjgMwYgB!dj@L^GrO zAmL@*2{3kW9eG-@1_Zt$`>*G$@x*D{^MIK_;ufIaItY;_cBEFKCO~pn_D!a85>MCL zp4ldekvz~XD;bDuxZ&-V`g01DdgGwqF>sriRSH0R`75D(82!#{CB}r_+esEbuFA)W-s3&sJEw<>!Qiwh$S70n5vK+|b89#{{nJ1_2T-WGr+~JR{H(Ax^ROO0mjB5k)}&uqoto zF>c{!D*7V807{}V2p0y-p*{Hi@6A?TxOf7Qo)p9==iJX~F2j|FKmhwT#yQ@ClZRQv zgnrMoppF)H+>F%;y-ogS+JD%AVaC{41sOxICiVv0n$dMU{^zc0@~a1Tp)JKvS4nIXp5< zC?@Gpql7;9s&mSf9Gid-a9yTqh7WvW*Qw4vU`z?)uN{i?B>D$>j2|z&OGWT2;F67(5x}2vrf0;^_Y`e0k!rg zO@93Hvef6P>BZGEDR;Nk*9ti}@W_)+Bd|*pwX6Mt&qC^HzK3W1o_X)U{U>uwDIiZu zRkd;U2V9bU6!4tZJs&RzXvM^}29%h(ux7#(>g~k_OHArzf$hkt5e$QV-Jiz=w`fN; z&ustxnCuFKsBDl#Lvf&8l-E!fIGJeX*&v*c3J~Es$+W|rx2eb~(a)ciA6uN&b`8K; zUjPV0h={FdpPwpK6Z{#s>B4g$1xpWou8>;c|3LayB|83VUYkXs14*Cp+6$R|Xt;cB z@UNJ&(Lcm{C1OIA)PEU?8-g9$c`99$Win#J*+(-wK4+es4Fh;@A>24t^~na z51WuSe)VQL*s>$0Z}$6jK5}?<6KULw@N&S;`$`MpGHtco@wW%Zjl3QSyi!OOEO9#M zoPcmP)W^0$H4I7wRTuZ6z=88T-i_f$hV(1mGx_8ogdkwNTj5^@-+B^7hUQRYo(CR? zvum^ch0CwU_)Aj$?L$^x8}#0I5YRdKeGn=_^F8Bl*BA6Sez9_Byaa@`8y;|e_a`JF zK1gt}KPp8EkP^*#aX=T1p^Jxi53}%lczfgzAa}hFpiYGj+RgDFs>1GPi|*i?PjHr6 z5W|@T%suS}Fnkya!it$Q6J2BAsu9MWo5eNUr!I1&gJSHYx%pBYCgRht2izT!S2+TE zmE=$d^@mcTqj8#;zC&gS74EZI^WOoN+XB96b}Qcc1q}9$4znJI@;rnpUf2JR8&RaD~LN75YXE)J=5r7gRtRm*P3N_URQ@{>*sERt7nb{wSH|_CN{DEK_a) zEyUy`LvBGqv$*#UerhAY?E!G}Ma*c%45~%8q_Y%<2O8s#K*e#t$z$dD-_!piG)2L@ zxQt)Bnmp+>GLzxyZx0j418WyT(OLEI*zxG#nr-Docnaj>w!}!E^bTBW&+jADd&V_5 zdK&}Ir5TS&kf|0%S? z9k;Kik*t}t6$9i6FlElDyQ6-GjKI*VIh%O4m`Mv0zf)GW* zZ{D=kX>Nudj(JS_-B6S|M)fFb15nbNuy1*U-YZvCJrg=?_OQu$g{xCxgbV+DviiQk z)nA&Ljp;Y#0`~yUFRZB^@L4KfV6zQfhT*iRz6-mMXb0s~)0t}$mwoc93r|;lG>5dP zUwB)N=g5(dA$!KKPj>JqYuaTOF@0|PglpdO)_?I0+fTri!!FK{uC8D#e;ywq<<3R( z!aFl}=tasuY33}2U5f+q+yV*Ylbe|Olv0z*ONuevN2#z~V64(H82Bu^O)!4u;A>i( z9+m0&zU(Lu1kZDWh@8zdYA*o`xN__?nX}9DDCG_yN@MTeq*_M%!IgUiVe#X&A}%Fh zDq*H%ieD$4ugV%HNJl}-9X~_k5rW4PaROd0>8bu+WVf6?p+czYjQI7%HkHl*sWPOo zk^u;&12YvcGkc@#We&ck6&hp29#a~J!k zuC=(^tMX;@*=h-tVL;y<+-mPj#V~_%2LF|HKLC0d_&fkQ|HlD1sOvpo01616xBK*C z#S_>i$|pBC{9}Phya{9xOL`e57=fxH zI@-lSi~QH+h{Zz~LsiD6>99R~m^~1FUT&WW-4;uV=p~?C(0SN~+S`0cw7ReA+z*c- z0~4#+Rn(sHM|!J}+sn#3e>oq!~B^D9@YJb}l| z*)ML;(~UMjYo|urduwa_`|Il%1ix7}&hn>Z&>bbQ$?+oSBfwh{zo$*+dSEM@^dyi4 z?9m#U{9HkFX=o1{!?rYdTnKK6sp=*i+o0=10Qv#JTg}VTawH$JG?d8m+?7bmm4kj< zrhZeuS=B=Uju+tXe-WDth%0^#SgT($`B7+%sU3TE7(5#T0Tl=^e75q7);X*>6J$+T z?(us3?I|ol#vT$wG=2W}8Ulztt)R{!;LMA!!i4Y-nhlKGphXRXok3sM%>)Ay_?MkY z(;G2)ymkYlVqOpO$K!@uIywNds|BNonYM1gM@6Y0f$nX!bq`XXN~*b9EDcN9_P$2iBA^|kJ!+Hmrdk=o>>)HMvqD|G}pZPhw_kYW=OWw1zb8C4? zPuwyo3zcV)AHk!CvXLoXlDb*ecw&?G$Kp>N9CeI8l;fwvy66h`9g?76)|kv)DdXge ztDvNW3%)be*5O z1lhOFe*uWwFa83vx3y51NUDaC6Yr=CkL)@|wkXDU9bZZnL8tA9XZPl_on1G*@Vi-s z77GKP;}DZK5B8s7;4b#I-woCn5-o@27fkYl$1;4YO*&H@@8qx+cCD1@-d^wgQMwJo z`IIj7=o}I=;E?`Bopal;e%atG5O8Az+=!SVaZMkX?{%8n3U^lc<~QHTsHNhJ;eL?` zqvZ6Uc!xaz_EA>TFc|-jhZzK(DE7v(_V+=eY9>}BH(Kba6RfPwE-IO7#3^ zztw?$TxdAs{#FSQ6vzRjxFz`kC?81Z+dqIe{g`2@42{3IGmtccYur!K$VWl6J$9<> zfTq5hr+~g8bNY6BgCSTECk!j{&)icm%h(y;<;n#N(_Ge4O{Xp?U(zA#BObmQ+ z{$=YWWF*nwZ4R{v3-L)Fq?-42t<89S6`ubp@Hh;(911eN5R!b!)Bzthwe2F>bIf@) z7KGIek35Cbz}V_R!FT$$o^wwU9#78upk=`CgSABfPXy38>v}{5D`y+wF?QsYmAb7M z?t5oD+E*0#<(I^RDQ39-P*k0tQY(9rOElEJ?*wczI1nsfu{c33+&SkdejW|pNK6HJwNxELnfO@#0uiJZHB{HrR<4Y-Oy~aoBE^{Ol1AU3qo6f9Y(%%k_Mt8uh*&73at{&n&DR-@((Fy z{vDJcMiWzPQNkpk|LZw0$8^+?XDlsAD50?G`2TEDj;&L9&3{7LmLMI52syP63PoD+wi5L(L_ezMUhT@VQBY zlSS9aPgH0hd^#E@L0@f~*=ClCw*^h$Nj0#QB-^ol{fQaBlc{0`*aYC2*>wXF?~0;3 zDXv8xw$y@3WECUP$iBD7AnhsIGTuz1cz5K`NJ_3RZTf3!{q#n*$#n1N_WyVRf7*Bg zovz@_%zd6rg?+Jk!Gr=CSI#Dg%amz1YF1CeLE68{q5{!q|02yDLi78k5cbL~ktTue z9G^xAwH!=FnpgBzB@3`!C3O0%yl^%?7=KtMNwy*?b^S&#g$=YrT{9M?wP z>&e}wT+3a$M_%vu*r6Dm={ckTQr-Xpe%QwP&Oz`;9M?THNy8H7Aoc7WUIuXmIaQk* z=qD<8yzv3wS^)!#5Q<4rB0TN<^Vfp2IHSd^;fU2yuNXT+RFJzlad4c{HCpY3HMa+mrRe zX}n`3w%Vj=mGpC1tP7FxY)%goz<8!#Odc%Y3ybKTjB#NI*_#ODykGxSNH=}8X`39R z<)hF#Bb8q47L4%6!=?^vPnzwkR1+0q(oR&VOew=f^v5$yn|UG2g@MjWngp|7-voU0 za%cC&D9c&~-w1|IU~3pUt`gC5QcP56fU3%eBGvIy)u{QiFZeXktz%zK!IqV54rh{7s#VBzB$3g{m-I;Az`22 zHw4Bely$*x2>gyGNJjrCOv{kqAWkx*4BrTh`zWcZ-u+x1L8KLc1AbNlE=H-Rc|Hh8 zteM0J;Gzrf$wv&Xfpi}Y!u2>fkd@lZ`v#^4WwKqKDbzt40r}N;R+@_EU~l)eV8t|< ze6%xvusdP|VvgvI9G!Uo-$UxNgE56bJY(QvI~g;=;w&QeK2vd-r!|9n2j^ipLiI#8 zh--!6J4kM5B7?C58B-i&+0#264!m=;<($m(q<{*w?##tYRl%ui-#3BBiR^`d2x|6B zgYBYS%QpRpjzcr9ad8#f9PV2_oNtsZZ_x#$n}{|zRe9$WijK0p;SOCy3eI0YBnNr) ze>GB2VR@-8*A5WZ&tEXGuuH?`3+4w`SyF6LzN<%-Emgd0$wHGxy;|y7UMIz5n%pJQ zeBb>y-&luLRhEiEaFYfuL=VT@ZOW69RqZ(dE~iNyPac<8c3@cn>$mAmp18eufpj*b zgBh__Z=>U?o4Oy6=pt`Dpp&o!Oe1_M&YtU-?ekdAg3Df!j6D_+XT#EcYPchKoFGtT za(S;G%n!^B01(o}0ZaLQtQ-e_eg&DJV>=T6WvKZ3fnU+fylotOQ5PpPX?cVUt(0ee zS#JMcXv>iJrO@pD*g~eDSmP_nAAu@yR+EL!d-Ax4SPM0oElR(%6hgedWd}KBN3=AS zkT~w&jW6Q~V^v$dAz8@5dk27XhUMbd@iy75h$p9#+qZzVqmiy$g#hS9am2^b#@(F7 z+b35SJU@pfqtU81Sgr`p&%7Eaklzq)C7MpjUS0~uED^A9c{U~}i&bZG)vz-8CnnS^9-JN#-xG=WY9X7hpS z;O(NFiEhNHy5J5S;Soka6kf+Pu&$r2%gU-9sFlC zxO5r^)o>$)$|5rfiK2Yv#T=nlRtTJN-OKt5yD82*{ev%k94yZkQyX-^BbJ4)e?v^`I>y`t(ho zJcL;4QtVA$b}MW8)|KUXu3fxkhoD{Lo6y!vsn<){SnuAIQw}$CR3+%KXr*TPb;sP7 zJ4fygPagD^uey{|igEI_rs)U2rS$6ug!yKhXF>>=)f7eMO{K0zPwM-hocj>lj2`iy zDgN&J&9{Ggu1GmqX&8W&1X{1>1e-73&hHoaaBMMwLil;V_TbkYcEc)G1 zKg#n|qK$0Ccv&Z}a1;Dogf%tiTBrMixRvp}vdSCZWYZYd$G&gLvX*?x4X8IGxFU&L zLd!0<3`7XvOl98peFbP`0500@o3RlR!pxC(9wN(2chql#>wK6s%WPT=)c+*28O6bl z!f*0s4?d+cXo+7x^HWaG1)_9$cx)C!Aa45Zg*xw%Q2)XYq!Cxfw;>k_j6_a;K*tLI zzOzvW;e0WZwbPji3>NDuQvH@k;Li^cAGY(1RtUk(J^EJ*FEppGp_l!`d>=HwyO0!@Siz^54}HCYbO!A}dGo9+Z|?xIAXPQOP3D4;1)T_i7WEsR=})K0QvEmT6sQLHTdf{CJHZ8 za-sYz_Ze4pnF5y5pnC@(F;P6Pq?)spAR5OD1E!lUoja@=1_FdnK#HBNG4RcM%|&)+ zyIRW-Zq1Hp2lg=XxRo$-J`b+aj;9f`tv+JZg9Ga+P8Te;9aF+GcE!}Ig;mAsB^w+K z0%T=}Bjg_dk3&CBJ;`%h*B|tY2Q@oTNO_^(tkJ~be<>SnXvrPDuQZ{ERdTE~pa!XL@>xI!;5s(1Og5 zn0h=9H9J7%m16B>ZqlttCk@d3^=k05nyM2n<<}z-tNn#RoYMCg2vRKdX6E;$%r9r$ znmuxs0NGoFV#kgwK8$P{${;@|kt!5JonYo9&7rO6fbaDUDmnc7qNln%gkGh6qPjGM zeZ0^)4zVlFd%zYKp^zE9e&N)l#i%G5d3rP$p_Z^_*`8~Zi{|bVRC$d$oo%zPz1>96 zMuE|q_t&hrsQ!f#D7(DIue2pZY_@%Ze5_IRuOHRRK{?<*tlQq+Zeba75!7Z-*RO}J zn-2b_#QcMLK#B(- z&0X{St%Z-^n;kkIlZO4`^)|6(CGabV~u;BjB7(yC7XFL3l+|LXbWM6j%&qH~EJRFp6 zrr&rbGN-WRU*a5{uq8O^lT6r3d~o#!q0m`A^J0;IdgzY#N$R!DTKe>^O?Zpr3A}9w z4K-m;Ml4o-mL~GVWhqd+fVZ`?PI!eL8MK;n zh7L-j$p6ub0zItii{bYg3csjJNo-m}K~#I#x--?;7|KNr)BnD`OQ1qX*FO^E1*Gu@ z%9ku75^Jk@;DSG2f&4`Q_AeR#pSOPTLQz1dsDpdsZ;}G$s(29#sxbY0Bpvu=w~V&Z zgMQDcwqyvdhu&5FL6%^dq})rxwHFVAcp@N4fS7Hf57i8=Fh3UfZiudF=rLJ=2tu?vowDUTgt9pK|la}K~`@O#(PIyF|O|8>JR?UJf@|n zhE}R^_?3)AO}KAMj-}`dN@^EQcD}8c#_{0blr`DEc^okcmxoFKya6tpj-rvOzYYTO z@>-&r+lU7PnI_L47bq|lXMiTZIqD5kW%+*88T|9LBgEsFzRT-~kf(YY4oc+mZ5yC18HtrCf30=G|6O@6Bx$E9Z}D!m6?ebT#?MJtRTJR%*a>#0ByaD`c6U8D#YvC*-YFnvLxlpFf@iUC&)BrZ0B`|o|9R{G;W8Lt zp&<>V;Q3XSYLbWio;n2G4Qn0yp0h_dmY-rKltpa3F*y3`W_S#4=`d$@?MgHO>xIXX zC_in-h$lr#c&bcGxXzA}Q8|I#Q`?hS!To{|z6taw6A#lIGx>9TIG;-64YAz8sM=JO z;2{T2FtY#o1@1@g6RwmLD?FyJ^y5LNDZ|X?`?))~b@U(J%Ij+SsH^h7Mg#_0z^S8? z@p6`*NET6Du3?5U4y0ML;`;=QD zI}zJjS3MvG^Xs`KbgT)I0F<9VQwPX`mXL;BF#t%dU%lk3ii+Y|^Mz@bZ!d{donH@# zp#k(`(Ywb&TVuF6!YOfGb>=tpRa4JrmFgCX%Q7BZ?#)OzZ%5#1TxbstHT0D08CB=!iHuRZW13ski|HQW* z38n4yaAf}WpOU45k*=eKQ^eEGN3X+DfB!}G=cySvQ0w}rpwUC4ykq1y^{}A3JN|Zp zYNUZdw%Oj5Jd`{A9b)O%xfTk*&giM%Y^&rGLL?=53?eXGZd5YR{et|Rc~nW~6yUP}uM0pY2bIhhWs!HQY6TV6NDj7fwgx>}<+EF_sZ{JcrTHvxR z0s6q)kIn3Nmz5NWr=Pa9H3XQRY6*H>DWS=MQL{;y!2+BSO02Vwmkcsp-m3vt4MgQmxEyq+b##q}Aq+m*$vt1-d zBN*wve6Vk?d`=lEThYnbzdrQ8}27EvYT!;*00Tk7xZ|arLm9K4Qa{bYUfXNYp%cBmQKbT_^OQD zB>Mwf?!{OtpQ@`6FL@H*%K&Z+5-upG!7VWvfDWzR1Mhx5%@?7eEo3~46I;D`V#IU{ z{V*1{KkJ&FyjR_HgH&Fp0o#A7^gkPB1XRC1wc)Ee))JqInObGKHLvv?YFaPXZEHz0 zpU;?i?OI9oWolAs9Iz{ua}KLs?d5ig*v$0C}^Y}LI@ultOvuLARK+nhMx>9yBah-Cd#@mr=qMU z`icJ8j;dmvL04_9;ss+tR-e6yyDK`H<@yb1*|8PjGh4=233Dw*{@uunA&tQLZ-Ip_`i+~jsjbe?kLv^_ZL6Ep_?xCNpB zt48@3w^6Fc=1i4-b-EpGGJ5iBHnb#7Nmf`&7qs=?1X}jCE%;CZh!Y=P+q@wNOPTui zL`MuK?Az9cQc?Ad!n?LO&0aUWMASuPNsSJ-#0@eaA}-(ic|ImW9nnVj}vtZQyd->0VrHNxROn z$4Ff^4{bF(U=zHwT(mv&x`q}r3zX7Zlq%SpXeD zTGNX2_F2lc#y7l_00Sj=GGmkqS51hPwuc>NO1^jTBl4a2pFEX{Qa_o$sOEmBM;;1T zOW%!iq1>jK2an%qRZx`7qqwG2R>pR47x?7ESA?0G@0DC`193TA(!X$^F;U`+@ien5 z&hHw1bi93J%bf+bf1Jeam^gz$NE7=W)fm_(+?3?gatp9PoWsw~0A)hX{EfY3{R8I| z-naG*%~c9&^kycKYD=_jnO$poAD1r}$KY!hSKas3!+li#cZN_=_zpa5C$!CV8E{D* z7Ia_PZ+?cay9Yw(AD>vB{8ajkB(4sPVNVO|^*hz@t32av&^;K$seL+SHHx_Fp+Ho- zd$ix;6$!um3HLoXfjGme;SXh$cP~_pA$J>3RIt^&`n?T!l7#EQGQ=GObvMZtm^`z< z!aZ~n`)j2?dD7+uf6A-hIqvhho2du)!J8#g>bR^nj&cXO{y-A21q076m|$Cv-n|J0 zu+?Sym2VSn%6#f#I}%qAqWl%}YA`$jQkxl}lM}_nSJ9%hu<8_@MBj_ol^?H2FKs~7 zWd6}=EPsS5r>cn2{5}OEqvZFnO#0N{JnNC%lA%O?t=I3v*>K*M7UCeG9pux*9K7PW z5*w-@BLH=D7Hu4=0){Aw(0czH>pjIWG)$$S?VEefz&FN^)e@@N%YpA@hReE4NFtSs zFUtxZNP90A3uL1ZmDdX^vrivvZ(Xznxwxcu%`{O|!n~BP8ZX>qFLpMakF&2^b3W)L z(Y)}#7(m&!ppfeSNEHyZUZ?z`*0Yr-ENI~(Pwxo|h9bHP6$CZ!>3#zVW6ZVLa%5t~K)=QS#NAYnYF7FX3;N;=qODOq&8-r?t zS?Pn+?wF9*Z4WNwp3z)q`CZ*2XL=7trPM6|#DD-{8d$)w{zk-G!%mNNPg`goS>WV~ zyd0+)#}S-}p(RL%^LJTXxU#I7f#d3mGIx@~Qaq0KnCHJqJ+{pbj?V;yW*5cp9cl;} z*u=T6<B(7-IMTK*XcAc2HM2ZeTaE zdhEGt@9iB8>?020yLzd^Bam^ic79j9FGE5;>MFT$#~dRCoFT;9&&a@;(Ev9Ep#Vu@ zgCN9sx*7sXncnL3Xf{V#kN>_+Mh(iOpH4PLzy(lzNaxZ*3b5e+y7^#zB7h=C zk$vHXcKYjay}zqwp4rN~Nnab68OG%!7-tCe2V=P#Mh72-r%%)wQU&8%VzrBv2riYB zR!Cdyw)M~ZQ0&?F8Kyn4`8xTg@ue_qyg5`3cyAqJ zCp0WrKNCS7IG-@d6F*){Cz_JZ32>y3pdUq3@Cu`{pheOcE{mm%^7UCqAp&`_%eJFX z{|}#+8A#Y)%SZR-$BU8zXx#YAC--Q(5ooEYE_TQ9$rHyk96>=%HQ)gh zI2EP1|2NXTb?l-0c?> zhHXTEmQRgXVDErEW{MyN+>0Izx)$~Gn=eybX5);9dk;DL*2S*!mM%_`nY%Abwfd@- z5LYuc;;+dQJz6GtVRvv6k=b%5kxc6GZDJ#{HQ+=c3=dNazb;$(OG4LKlu^3X zzF|)Cks#rNz)S}3^y(Ws#rsY9rDpmuMSJ#2At42`V>b%^${4f-DZ!?bt2g0v0YD(n zW-j58;6G-Ua1w->=u;yihKb_-z`hFZ^ssn+3uqZjtU9ajUCc(Z1*LY@im+e4bygBK z%_gw$>RV3Puil=8w`j5c>{x)_+_aFJRAvX_0N;bM#%d-k!~`v^JW}JYdf&!o91G3f zM&bbbU*_^=AQVM?3yWs+;Xx0AN+ZJ_J0^t1yb#C|I07PrEfc}pk4LhPT|G0>v_#w1 zKQqKJU>goPCNp;3xx2BeoPkNeqd*b4=(B@97HvS45&G}M?{we2JDM*$NmvJLN!|m_ z%JVPMG3ENN-U#N528L}WXP!Y1zBYY7?BTjprp>0F4x({4x}K!ZQK|9mS{+tA8BgK~ zs=!Sgf*~B7ioh)5rULa9$@Y6bZjl3TzTslKc-|+XmuT9Bj(X}6-|X1Yr>ivqMI%ML z*a-6u>7cQs#LHkIWt*2pF#^edW380Nz1pz6-TDg#mPygXW`CQG*70s)~;hO>!FmAqX@$r zK*>6f=Qbl5v&e5c#^98HKPEiy@DIQn=)9v@loD}tGwZSh9tdBP6^>uGm)`$LM5Z(_ zEMiqutF>Fxs&dK2NtF#YTrZ^Z^9YDkTpqXA(hMgl{;{}cr&AiOoW+=PjnKac_Nj;5 zUubJ;(w-7Aqp9!u0oGVqp0wxzu@njAYEt#JR-kkMP$yS~snYJ;i^B|qc~TuKr!>Mt zj_z%sxjG7hbI(m{+_KNPw1Mvlvb2IA!W9ehSoOfNZbUrK ziJa;`%AlTdFMK{g)0|q}@K0%~%p7R$MtCPsI+kLvlS2V_9)Y8Q&r#YR!T1Fqn9<*f zJ?~p5#U1$ig}&8*H3uQqZtl$-Pz87!U2VvY?N|=LYX<{L%>(YpL@!Q>JVm zZR_e{E1xvz-yOZB*w1SQe(O%e?&Bt-H!ykhti6T9*(43=#^Nm(w(rod5Xq##@6e)-;~Vt z>Msg=p!}#f>@Tp0ENRx~JrF?`PoM@|2NZM@w-R1hW~pg10Bw+5laV3C&(>OI(j;Mn zjyKjvk4C*@G#B1Zp50a<5-C|7$I~c3p^qu}8PX4RZsDnMhus=ey2{aM={Cc1&s`B1 zP{cFQ%V?b{UbXlxqN`6U+?95x%?g&wQ10fSk?8|!8@K?JN)&btp&%R_d4q&#%izCq^7r#km=ESEq`&pN#%s`j*GFfbf4ZTz+BLj#H%n zH9e*47busrl!%<&IlzSxbu??KW+q<)`a9>F1x~AnoucK(OdIHsxHI={`8!xxz|66D%8Rdmu8Bl8F*EzRVmUUK&{w!* zrlV@AQx*<~rw01GIJLYWGvAcn{z@Nh64b4@ANHsPrD2p7=*+LGn&XSth*(~Elx3YW zkQW%GXL8_-9I!2xHe3^sy7o*kYCHb|$OoSS6DRioEIyK&V5xuLtNiD83PTw6Uv|Oj zO<~l|s)=}l)2)V#M$&YnnGVchs^?zF3+NhQu5;J}Ll;wTwev1nb+qCq3|%^2=A#5w z#&9=YU?x2GLG9prSOuJ*3v}ho)%zrn4?Qdhm;ROVA6yU%DFee7!D|ND=vg~7@iOcP z#zI=&a>#VVZyf?_95Ztb=vK7tW~p;TaDlR}O5{5GkF@j6f6cu4r8V4p|4 zIQ`gIljPdhEEB_J+LkVRQi8f5dB5o$vF!&BJk-C5p`f<4aehr%2Ejwu?A>=xLw%I& z%5J&;etH@TU^_3=^r`Od=v6JeO%jtX#3d64u5DmnJZP$M5jxd|R&Gy05$a;FhoZ(3 zsT5!4EOtP8+6TpzQ#1zdP2>q7>Z3M3m_yWyF8eQP(vazX18rd+=5yJcA(UdDiZ3m- zBit$9>(y#n!g{Z?$do@TTTTWCpzYcP=nv#hx({ZE&>sofi*?a#>3Dzge8^WPnAk!= zp3s+T^;eKk?p=?=37*CcipB%pPqdh$oVkDbtaMG4`sTNWE7VF#-KWU<=S_K*bK(?} zSrjpL2|p1rbl;Uq5y~|QK!Qxkxo3G-4biPBdhg@wV@VfP1CJ^Y5uUNrI7=I|&G*WJ z2IsrOQKLVz-Zxk?y1AmXVcv$3JK!i+^6|D!sU0e1!&ryIRR0f?#lyz;^V(%YgDaLV z0F2XWL)4d|QWD&Z{aDFE$S$EsLh z@ufA`*&1r&O0XdE4hZ0gl&vGbvQgI5j4o9aBZ3uQ9!@T5#sY1lCPQc4EX-6$Smtso z1v|{Z*J#gp(xWiXLbd0PBm!}WYtu#Ohv(In8_5UP`M=D`d9&@EBE=^W*WUDJ#|A|J z+^U7R$6r0hfd*=>dcS|9Ux_Ncnc;~-7&*%kM0aXzM)$mkrH}Jp2jWYBCp8ug3e3Kk z@eZUwxTu$S+G!XqCj0U~r8eO{@+Sm@0@afH!fSimgxU2~Q$2P(=5q-lZS+(%xJXp< zQFkI%|Kmwyi$^AV<@V z61`jmX9^L?l>7PxU!2)BJMWGqS(?pGLN=q>YoE_J6qL^MqRvzusf>hP# zA)#VNz0-Lc{KPlYlfVrAmZO6q@hTGwj@(%{)ay7R*5IgrxgLePAcm^z2}VcLHp%>E zmOV?dtQl@=R9#);#L%7ODx;ZxGK-%sZo8J~WyNvh6s)S|IAlb*55A>=!~P+Yd&w9_hwljbwn4Zs zV8*^Aq{OHpWu#PZ>qx^B`KNp%Q!e;*ut{0{_3FSC=Ed}XRaXdnt_nNrLq>o+%|iE- zp$lb-8FgKZ)TD4@3eZ*tYF(iNGyPTa;W9ec8%1#|E7L#8(cCM&?pg$5af+;p4qY?E zl$c5O^G&BynT|fYOG=%-LI;~@kv#LJv@*#h{9M1=I3i>w^7o@V2?o%YL%Q&0M1X6F zde0lDV#yEtfE&&wuEHN~oZ)EYzJnQo$My(8=l+k{78njnRhq`IiCF}Mz_TZ3hfWSC zxe;(2zPq-C`R7|FpDK?dOU8&USJ=DWaKz$q%ZLB-65T54W`+6c8b$S;h_YXW48bHR z3VcUHQLqKX(JkfMtE&jwOsmw#O2r7c6Y!5a@vvX*XU&;jB`ckN;I{dmesO+>@|;ca z7?6Wi22k!FPw&3y*v}6%$!N;Hsok1@fPDx`gel8t#_YFA=Zf6FhB`iTit<=<8Ivz} zgti7k*#KVDI10dEeJ#f?Z1vqeCkaL#x_>DoMpZ-2UPlce%k#^!Y8-*N*MLO`Oh zj9Ads5veo$)|n0o(lhJ-N+1^0>2WmgIYuC}1E;vqpNwG2>goEfE%o&@Zj~iM;2bjsneVC@L zPp98n!94MI{><+dy4vY#`jwMv%bv-ZrJ>o_urzS<@VO(Thv}`n;qrX&)-hM& za@GO=ZzY(TikGbQg_>w)q%rgrWs&lRJ zKMI?irIS(z(?`s+t+uE?g|E@O@yeqd)GgLzdx#sC4vy~teZiBhfRDg%w--#*y{o^L^ip-dp$%8Q^!!p{r2cD0!^1S(lIrKl2rckx#$@^}~F;C&MYu(-0X~==4s=oA}tM z8!3=dnrl=n)L4XV$#fvZuzBqpBXFG+w|CBgE|wXN}iSc|skaEQO&X=K1!vi%5Cl#|C0Q52ujv4D&*~OYTSZzf6vn zg(sqrP1nv(m*6UhE)T>Pf}WB47o7>BiKpB|a3@Ln9HSV{~zPLVW`B8;+GK>A`|7ih+n2$d!=~b#o1Uz`S>%36fCWh=T zNK(*srqgH+_Dnro*{du7H7Uhxo;l0{@bP{T`oCIp(@|ZSI)zrzgW3Uk)o0{3OUPqt z*LSdNRx|KFrza11)<9xJ6m))0rxy#qOMAG=I~RetuD_$pq|bh2#Vhw? zs%$h(<*yf1I1~X~?Dmt2Q!w(5^sC_42;z?&1^)Yw*Rc9tbOe%7Tu;rNoDIlBx%uVa zFMUx}rAg&gRRU>z=kKs0rJLF-EQ&<$qJp9Cav8!o0s{`nixc^*^V>;1WfOY4I&qPp z)tlZkOfPF77=Z;m^K~aUxN5`Qc)55*b=(#d6v)tFR;PXV#-TBZAulR#I2n&|@)Xxi61+Yrzzb2nBg&p9!z&7C(S&z_# z6lcBO$W&Rin;$>oNUU{7g~vO6w5COv$Y>auS=P3Rh-Q-;5z*c>%^8qZst{II@u%!K z3Um(Fmf(aybGuLx=CI#+@e5}UAq)xqd9d_@Yj4PE;=TX*g_CgJpW`Y-aYOzi?Hvga z;=^5u&`7Gdb{Yl8EuQLKFxb!wMvqP$SkLgy;#NWqn5&Nhf%%4DVo*z61#im?t1Dg1 zs2<$zJ6g{U$_c-ztFVP5jD8cK<$jmd;E0dcwe+Y$`neV(^w?wKWZd5U{~y6qFKL_e|4=!aaxkNRZiQ zUsS-AwS1*N9PbEp{h)1HmG68@QtIVnrE?SUOw{+uK)*aL_hKSIE@F*+ocZ$b z3V+$st=)XbeVV5~-DXx!cbaQqo~x|OSQdrVunyehL9#XBwkV{sq9+&W;%fGyDSg)O zVuK$uVZ3cHbC*P1jS%QH_&hnT?84o*jd~MIr|Ey%U>v(K#KUX*ZqR*z1s!qrzte~O z^A02o*eIcTrDHDd=3x|uGI(MQ`d4pW5LYiJ<(=9`#zZ>FntZe+LbT~BMv05eK>16& zWC#bLQy6Lcy*k0m+pb#`hb0O3P{kO^f_9a7@ZVjIE)~GisL6)oKWpIrM^hDbp9E z_T!r|)_!Gwet7QAC30+YFiE; z#dGeNY(Lx644Y>Uc?(h2mnKj1K6YfhNE~gTA@}~;Z9H$UnprOFnefcesma77{T*Vs zd39;P;wqA7*&X4F8L+_?I0Bb?h9clV@M$fSqG1Nh9pi5DLCC4rnvm(=YD7c79@Any zz-0ElhR1GiU_lG@$&&Cx4_ec$q1ELuQ*(5fr?LW#6xDFz9xR9RKCNqUX3 zLpkysx?2BZ+0*dXJdV&8~(8NeROhK z_FS*Z|B6-U|9e;B+^Y*Szd-e_l;O#^f&3qEfIMPQ2tKE17 zP<8jS8>DamTbG?+*OC>3;pRJSO}I4ukCu)@7J9=19i*4BF*BUj!NsT!+PZb87Y;nd zSk6tqXX)IXraaLe;`r*0Ob4svGvtaQLgRRARN~>J8|gqKD=3TH5}84 zEUe&EPHZ{nQQFIfPB&&{`2=FF)!vp|Tse!Y^ERw;L`aZRP>*Z?MOF3Kv*J7&yB2xs zJn1Ueu!oYk`pl2jo^2znS7Xg3nk((R`fSI%;SUr8Zx_{ipHT?N#HT*U|CmxBAzqIV z@T%n@-L@4?s%7&M*JIaLGjB?;T|q#7mf8A$Jn3GEDKghi-h z%#A2kd+w*ZoX!!|gwJ6^`%fjV<30AzLS#MhpbN@8^258`W;Z7$`7_hlrjk`w>~_D) z)I0k0CgmSVu$SF}pw_m&X1_f`Ko$`9<@|u0Q}RBz3nO(zhDQ_>$=wqM7{B4ks9uhb z5fK&BNMsmD0RLA~VkADu9@VbG-u@||-QI&*#*5UK+?6R3XOicGy>78&&1(e94iNL{ zYA8jxHCbZtr;3;`&J~wNqjtwC*0asB5{ao0fQ0)@Twt8n1SoXE`hz$_u2m;eYxacX zlG5;opE#FR@aQl6PS0<16WHfOGhL$q^#HWWOC$=-#$1DYFiH!s&YJfddDGs_lr0yg z@#;Hq{(-}O$+zs{tRSMvcJI5zjIF<7xZI2LV#7Q4U0;IL#_%`E6PoRs; z)u0NC)|vDqWLfrCM?ONcOFtd7{PKMVeg=O+M<+*yJ*sOr7TXu1R@gB34t-rV3*Pq2 z&#Wl=V4~+yG$Gb;5!wr1J`9ks(01!juI&8e9n8%~h-0AMyL6!vxr~UqDX9)PCr@qb z7Kr&uXTqXoy4O^Axz;3+n3R`E6BEq&RA1YmMSfK%L# z8bWZQCN~4@%w_huN@sY`N@-ZC~KN8O~^^uq}Fu zc_+X?`ym~+My)xyFX*Hz`TRa(DwJH?E)giDA~tmv&5=rG4DzqolN?Q64h)rWfkdiyPrkVYz9ore)06vt8VcQJ?|1etb+ z&3J|ZsgKg*#5n7zE5`U$xtj%-*{TP+V@Mr=dx-|*WgZzew$iRBKo&KXNb${j3*jY8 zF=e4zW(`O3yVKBXG#AR%c*IH4^Z~*+$7o_NP5jW0_NMevlc<7Jw;ro zKCo7bFL$*S)nJ>P$-NwD+;tV!(EOn;+TTrOhv;JKUVG&YQtZhkUxWOzEsH6)PcLbU z-n_iGrd$m|JEMP-;z}1&OwGEQ{ZQ$(iV#;`_i_&Aqd6Z}>W<{el zH>O8&8G-a2W}Jjs=@YhP(|m6*y6&5NY4xFnZS>>QwlRfidZ%M8;>ZbhyM?{E$dZ`lhQmbzr_j{VNM{s!zI0A&}ld=eb#;gr(oiX><&hyYqOhk%3-ue! z**NGzWmpE=tn-o~0B+Q55!!{XcDxyg!SHlOEkGR)AXs0SU|a1+$#nie_X~qf*<(Lq zmrEZtIYNZ{qgo0-!HzDDi^_0C{B`xVOV^~`adQR2P^{QDCV5@LY~B)znQ}%H3dq(D zbIomM%wM!@*Jb{-|Lr`5pY9 z?1JZZ8NJ;cC$dUYN5D42A|;A7=&`7uDeO`2bX+ynA^%)5maaqf*303ufbOls#^_1+ zXTO9?e14o?(JBb9PU!a>#eVCZvj+9as(tQ@xb@k6RdIk1G}vT-OxmW zU&uLm(J5560vzq|-RPT6F`a8&nnQqw$hYaUB|StwCe(c)l06+6P0DY$6h89I^zmoW zoVgWNwEJyG{7TUPg%o$e@&}lB44@??%+P*AOs8hcl3Dv^1gwItkvnbn)X0wvn@RXi@2HOg+mAEg{Fkp3{En~s{z{U)34tWJbghAkwn5UAP63A-FH!q|^HKa(cfPsX zDI)hewr)}`m10Jt{O*a5?rZ{wN#dMLnC=mWE8Va=hM8J=DZ%AfySGMX&R)fcj2;2G_#36zze#ftX+Jjxh7?#wl*v{@Sv) zPSy9cX+Zn)r;kZLI9*ARp`L2uTJj8csq8*)1PhykYQ3myVd7|Tru^0V)Zg5@bF*mi zqsjCJdFmg-t%GuzS@0@4o}*j)6vI;sZfv=JTk_^{M?j!4)fg43ZRT@l`c7XzOiW># z%|}a~PP_zL#+-!9Nb};gG~)Ts;*c z`NdV|*tD6^PrZQ~KxV7=+VB177zmZ3PlsiqY`>vn8DIJ9MaL^V_M1%03kFr8HI#GT z_Eeio(3lAh5?r^qw5OCRvK&-cOfUv8PDRdjEhGkbh=bKhd)t!g_k8ma&?H0#XsMy@ z#ms?I=6~4ashQU0+%rlsh|9Runw(;Y;%ZvC3UN4|wTKmrifM2^>w1hWpbNm}O zV*|3_E=SWD=6GmTZIy}7+M+zOT&yc%JeXP`n63jDr-T<9_=5e>!NwX zJclniQf#lgW<{IW=1gXsm7IYBM`Fn(t*EP=#VnbSt`GE8|6N7+h_zG+N^8zH;zqe5|W6Iq#BZ#Z%((5Q}Kx}Jyz7D^c}&>d;+gTePC({L15@&Y{rAn- z+g}BL`Sw ze%i-2r$OTO`5HHi)51bgMJStT7|42@n+PK2e(`wk#kYJ%1*3MnuvLdk(<9IZwX+6w z1_l@IWo`;xz8dUVtG7>Z z?73HwDXiX0`3gw9extH_89YHfm${ctpRU=y|Awc3C(Pgk1Cu_hz_-QS=2_;KTcxPD5mdZ z5K^zENI@4TWVE+?2;VupKMw_J5d(og)NfnTCfia^U%&jyMCq3|OP_(1+S#DF4wPsZ zN#?iBoQ6LA&P)k2AR?i4oN2P`d-Ij&*y-z#F^^bU^$E7o##`51CPA0kKWuT~_%nv^ ztpCJChG+(EYw;zjRIf9BmSTWLHb}gd<6u5DgD8pno2^Sn7eLDDb?v>qknj8R9{Ha5 z+h?cvSzWiI`m(4fyBcsN90*$qnK`K;3uiAAU9Z77XjoAtj(SE@Gujqp{h&ND1l%L0 zqDdF#1_dn>wp~On3@X+2L)DZ${)H92SuMrZAQZS_m4aydU6THFRj$tt-<@~Z<&Z>a zYucqQ@Mpe!FohCQWs}6kuYCB{eI0m&Kr_m{rHO518NapcVSsL{RdOIC2)H?lnOrAzysyR@tW_Uw2GCx8*6yy;r znx#w>V(j{zhK?pyf$PTPFnICwLxrs>+1hw&{WsW)dTWw+`+~t*!s(2kym>1{K@pVz zxb+I72q4gAXBmpWa&x?UR)5be{9!Po+;#2G^AX0PT^(XS@$;0JKx|iWFp)UvbE2f? zZ|G^BwZV=7d5P^ccPjVNZL=TYIMH?Iw&>M==C&G$hp@%`r-^89Y!d1}nStqRf@S(b zmTSRf-w73T8En;^g&9LK_p4(VAoNA~vm0|&t}>yiSP0SV1!$$kB>THhq*jA64-!L> z;O?``H0k#dxg8bOK}5O&y9R)USK@JFvYWRAoSn3AIHX1$b#jFQ3QCsf$_VHG=wr{TGCi(IN6wJ~p__y`es}o_tNwkLKa>`d$Cy+Dt^}qv&Y3Dj8-ZScz1PK$V55n`R z{JL1V1cbH%+fD*x_Z1xW&#%tfFlJ^>7Edo(+0XWd?}Ca{KIIV8sR1+Vb?R`JY6n552<; zZft8zpk{v9uONy!s4_v>MJyS=4nle=q3PIq@Crl?+p=X%s;y|@mTa&2FsH!7a z=ZU~XiWbwyxeU2wiA=cWpSV+u$Vw!rJ~z{lULxJYVBHBc!R1YsD|ZM&cIHfh|DQ3D4hWI?VGkI>V=| zv6hc`yd{7joi8TC=c5__exdcNS@$k{+~dZV3w#-VPX8xXG&^v&F(>V*BoQXI-JyRH z#7gxxmtKDNhTc*8#Md#{BKy;pU zL`dD8tcRVam$~pA&ei(~(>f$Q3v682W(;?H(}I4aH9b^C6M1E{4>V?#F1^I?NYbij z7ac%aJkXyRg;+wM4l#kszglwiHYGsGrtl@B6ot2c)v%qfbiC#sStT&GxD+$8pm z`JxO}8xcKmPTk_z+H^@l0ah<{NJ_6L)EE#s6Xpqt@=U;2^*oO5 zGsbhvHC7s+3I+${WYwPTecY2SS*Lo;qZDXNWJSwPJXEl5{zge24l@)X#8@#@?{{c1 z;K~86TlZQa<};|MnXR49go^9Fc7Ktf7PQy>$1I$a9Q$!}>>WoJ<_gl?ujO|?;VG_z z#bPg45qRV-cg_E%#ETJ3%KGkvR~lv-lg7*PLED4wq zT_|(tR~0H1*DI`FCF9TQvmE+;rLZca4KcgeewCc;CZ@cN8xxvGi|Gz_9G(i{sh3(O z-QitmbyFP$bo^H$=}p*TSR{?PhN0mYubP`0`LFkD;Nbqkh_wlFEKXUVHI|`!03PR% zuhj1>2}yDBH%<7YL}L#4!;-bLYZho7!zN7z^Ncb^oDZ^HI?0ttd=@mPCgvyF&I&|f zv(+AE7GIGg@JLT^OvWi9_x;$1;(LDtBs+kjCPJM`o_;YV^<2J3vH}Fz9^x7=JOlE~LtqkGZ!DtPLH zORAK^4r@4fC)IYTF2_Hq zX!`2PL*>VEA96!iN4^69G*rlW%uaqNVYj^yFA)~?v}OT=gNsyhOwt*4zObTN538I; zRWkyJTuF5T?Jgi*oIS2)-*$PadFkw@6a&BJc^!Pm;&|Y3tAui zb$?ICI=z5;1ia@=2DFff&IZ$E(m23?vKHo`LTeI$*=sph8`;tA+L($vLsp=vbuj#|`#aF{?XVebRZGlms)ct<<8GLl=1s-E<^XXptJ$i?n>Thm2s8$ZM9Le7_eb$wr{ll6& zlO?~vENj7TU@&)Cxp9tX!mUm3`}=j2KPkCd<6#rVI*6X|NJ8-=LHmkZ;{g1XrvUYZ ze^V|-KL9GPcNX^YC=nG>oeDWw2bp45doI)is+R8|F(n1)K#QO8qoqU@*iw8M3ZQ^2_%76*+*?0ruc~6Z^G%7rnC$uTn?3jxbGaovRN#LkZc9eC9sZv^&@K8Vz5cX38M8oY<@`yG!0Ar}5*|{61FZLv^Z$+KP=EkhiY+qgZ#s6jgyPmWdNMcKn(6BHs=s5aK z2+wF?(9IX%N+YW4{ z&oA(ynZYFxUm3^UU`eP^0{sNwfC~#6;NWi#426!@o1gaRpHUX;+^%%uv!^PMG&ByZ z?==BF^XmagCH1&cI{=2N!RlvB+Luuq{QIpvYqvZ>)P4Scl)#%#LQ1v#ZsPRkw)Bd+ zw!Qi6ue>O?^8zrQjTM)4rY^GM&S8cMfMO4#RHT|>dkJz1v>i3VEFQ}KoePM<4a*HMT5p4n~ zMVdDiOHW^9W_4Xwj)nTb0j!dAi5?X>*(4}FcNCOspOAP8qUoVb$OYl>GLXxHQ#Mf5 zUNul_RiHo$Dk$EN;D03T!RqM_ypi-dI*)8G>97$W215&p0rH~z`I^&LhPA^qvWhXT zHIs6s(>rsnf{e|hetdKC55`)1Lj?#%U+T*}Wsdfat>!L$Qu?{?061>qMePgZ7Z^Q? zdKQAzGoh9XMFYgL;p_=8enKO#l@6QWV_=<6{p}3MIA0{YArQkWT<IVdCTNUDalsLo-%W1z+n7**M6UeGT;QE(Uvdp z1wftMon!ljLYsxKYDQHpp#7zKp@1^(H%i>te9|}6t+REsBJ{(vZN zu?qlAgF`)w<*B6XL#!fv4Aa=38iiQCt!clw_$@2|fDwDK(WT^Y;D%_A*5wepCa zzJOu5R3Sc83GE5AiUonO6QvP)K^aX!uRoE2-_dM4>R%#Tpc>&HiDwZ8z@7@Pa+uAq z76)#`ge1HW3?-^R(I5A=Ii`g4Gq9OTa#>Ps`Cy%d$1B>6ka>9wTf{_UV5YtmkVtZ- zCzo66s@-g&>}2(1MK zTDyA9`Yg%T6>2p$SQ$;6?_NU)?&Ull49VYt?h=V0dJ5J?lQz~;Rc!|hizqn@XEu|3 z1bW;+SC|GpLqE~+O6N;GcFRU(P4l(E*Wlze)Of9SfT*5z2XcURxOQ)#_GZ}38*N8w zXu#wf^)M$Xx&ET#?t_bw6J({g~$|7T~HK{3zCglqSuN+1*kNE6%X%6SmzkRIR!-q;EKhTtaC?n zt-1*T*BAfRq9}6UqM9P_MKdQln;rbx*4I+3>7*~UI==n^I3>fNJMWwuG@mzPTH${- ze2x;?Rl)d2=^4!_g>siza+VI7b{>KUHMbtQF6n52SC|T6XcB^ zqFJFNh3d-8w^f}$u(Y2(r8Lll1fcIqf$P4Qrf9#bRHm;bEIwzso`@}{Nl*qd?|tvK zoD@53O}ic$imJD-QgHY#xNHI;pc3Glo)14-V&K3;AfkTJlwa7Jtn(ucSb~?$GGQF05rSz|)d zfP`DNl_sWtIWp$BaDmPuCJ2wvFL&ovSco^#Mps<{0=wpDuvN z1JDc@-v8pqaWOJ2EQU2FZf0JWfo?R~^YvDLfQcA8WV?%TC_E!_wO&Ei=k|SB?Ed{oqpIC#eU|zk{v6Hva~~QU4WXCILxV zHe+pMuXJaZdpDjIxLU8m*WKs%`S#ndHNlz$CHYTmP_Uj1g|f-Syyn1J^0rY-ffAn&KMg^LI%6H7$0%E3;_hD^N`Re;vZl zinl%0LG;kvFujz|T=OHOa+;f&mFr4_0iG4Zw5T5R<#2ms=`a}Ebqy(TCd_Q`LNK!x zV#_5lEVORH7T<*K7%A5})}WtMKXK5UIU%0l{5d&EqBHm9!{~i_Y>H zR`^EOT!w4!uG>J=?<7v*vTD6trRz+(3|2IshU5#A5K%^Mggtz28VWS#GWHngX_A3}t6xmM7M%Lg>M>Sdrtb%5i9 z-c}9GgRVh|Tq5iHAq8VUR`_*Q&(ibRT6XD4gK8mTSgzEKydf*I!vOX4k5K??{VDwy z_Lw`{5cOOH>?yMZ^Ks?yK&*2fzv79J$K(mj4;?nuqr(6pfmakx5aemfRfOoooey#g zrBHXH^Xtyg8ORC#g4~!v? zxM4K(m{q$vz_P=Q3iXCh`ojD}ipq=)mmC5yT$Jm^M4F}Mi2=*gkOdhN{v3G1nj}U0 z4l~Gy|2ql)*;RM9N4kgM&nR&AzTs~^$sCS?5pdSL-E#;V&dw@Z!^Ji9Unt|nSNN8RP7>1)Eq7X&(fGnjHc67XO^G|2!L@=P7(=_c3EB zxh*z6A`_)6DQr=rIn-FgP_ixil< zJe+Kh?M}^l-$8#IR8gmyZjx?m4_4|%VV4=Vz^AyLfp#u(JS;Rh96DS*Wo&rWXtA3x z)`+8MKO0rM_Hf8e~v8h6Tc1SDtvU^okko_w1qqibm$5(lVL8}bbX$nx)|JJPn^mw8o+l-Oz>9qi$$SeO~#N84V0XF7pgy& zF>3!TUHuf6f=w#2(UDIyBQsjvn)!3AX;3!pUq=KU`GK9NWY)%FIl2s2xr=OR{{aim zmMIU#Ko83+L}{M)(xQL>yP5gP;p8H*eLagjb&uV!W_^vl8L^|0TD@frq%IEnUe=q% zQ3}Gs?fK79u-tlg8ETHu#Q&6srljS2<`{Sa#v|imdcUWvB5aX*FzqCSgVNlQe!>4B zilkYBr16yl3+$S>o|q!h+Ck`Lb(Q?t2HK9^yEvYNX#Hr-i+La$_>cei|JEfUKeg_; z16?BPB<-m#r!?zn%V-MSI?fU;m&Wl_(`pKKzCuq-sDu^l9Vs6}l|xM@^wFp3@2Gv1G5hfvyfV| zV+Ss7Jo>(Y^$F6Dl>&2GV*N*BkoX!z32n6}+kE9Di5aD4(CHF7y;oPvL$@w4F8b~P zck>*utUc4ieSEX>y19FrMr_Qpn<`vuO00I5zhH?cvjK9-s2z;41eZ#&0&GWjiYlTMp(&(>zWKi++9_ zor32lPD{7tPh_O-VWsXtus(QAsPMbRz2Lw7`k!^VlRR#I)8JRj%c!@&lgqKc_`8s} zN|HS;Cw+g_t3KL2Y}2G*dc7dI=P{}2tOs^R#^d&Zy}5iD#o1aLG*sQ3pW(PqOrH_A z2&9T?WE;BXYAMc|zkl$Sc8cqYkGnDx^>S=fPi(m}&U0Cfqu!~o;nC;YZB0*xBRAIIWtl(DH8 zMT&Xr_k8`Rvf$*JeMes+PMR@0vu^5Um49)-2V*pSz7en-tF!4_20`QEmMpAHs9n z>@yQJqBiqO84t$h(EMCGQTqg~qsdG=A-_3pqq(cvPKPgkdl<*a0XIGfnmiNN*g1&Q zP%&Xq?Mgf0&3*hZ&b^OAr68i!qwrK%P+D)?D(x}*r7Dt-N7qE=BGPED2CT;^Nn~{y z3mfYfTgRIoiQ2mz`3|j&={;lO?he^7iTZ%aY_4rbLjl1Sm*owAp18-L5Xt;XLHo0a0~cXxy9X@T(cy*qqidPkiG|4=MS?Flj@|$p~;!@gL4<8PnI*^FlePjImBW zOkfQ+jqv~{9(jER1y|4IX{B9Z^o!7_ql9_(jOfJKculO3BG>|gm8NgcfZ|YbG>@RQ>T^Y)76vY!yRW10j=Xpr3!S>p8Z)qR@x3j(KAEt%FiPxtNnXMpL?&ZFxp(UqB=!BiM(mi#KLr|IbMRd|&5b`pxRNlEQi1{EJb1h%^FKW{+Z> zfCX`?vt&xV9pjLj)A~6zd>>qa{kjylHu7_b1%uyc**5=t7eu=Mu)BxkM2AW*fZz1) zpYiUe3o*!bMak>fG_$o-DT8?dhAkS-$MAM#$#zk4+!d_ceIh|viIy%>Z=&ox=|}1| zOTW6CRx43=DN%2INeoU)++*CPXA^vC0mjp|92anX7=Qq4ti^kf=W~nN7*k27C27mn zRUNiR)!^S1Qk?S+Rkx8t3va3ol5%jJ?n+GD=a_c+)y%;8^u>4%_ek~BZ8!|Z>8L_Q zvsw9sQ(Thtlx$Y^Uo2~=AGmXH;l)#|cB2(OWo>RUgupm7+3aSQZ!1_viSQA14m9h% z8GY^BGck3_Xv&|Zk`s-9uI84TpAHHcG2$DkB6GHD!+~=7a~2QHpP1M6)_q)t_6i`N_2P$5e3v;;MGCpfS6shffD0jwTV%JeG6< zyqt1?aUhsiRPlHFUb-vnR!D88VW+6ICeAal|c6ZUm z5qgs)v~k>L<*r9d-CJ8M508}!K|3dHIoHb$_RFoVfxBF97Hx7Mrq68vEcVsN>3KGk(9a})|G<~j%&=o$~-f^fU8n-gJ6K)~OFI~Ny) z{L(C~@^)X)#b8XF@dqW% z*LMxC9mEp!XT9!zEp6*ee|xDWN&cwEPlEgevj>x}9QCj|O*`Hi#)B{Afz{y=AmIN_ zI-uu?2_;83n=Vd)cD+d)i4FS{niR{YaO@2#KXHFJSgDe8VRPxIx#3CWxsGMd?k@C) zwa2+rB?_g$q&|52`j;qJy>#Yxn8s)LT+{4Y5-_VL=F%_cT1er(=cd&) z4hXRd@Z;Vgw;!SY_vfznv^1+I2i1L(@V`H| z3ahgN2~U&No)@mnag|g`Ab*kKl&Vjp(@JTPHA#j@rP#IbT;WbeElj1XY9@srAJu4k zN*bE{9{AmFFr5LL)?qp7Zne0+*tqjCBCceJic{{-a>I{L0k3o z$Fd&JgNPa`&=abI{kB`zZ3Y<(jRHp1N%^TkBePR(Q$ z4PZRp1dn_y7*cXd+; zssla&)=ReXHX5o_D%`ea+rcoM;i7fx^3^gCi*YalZKi`2^LC8jk({>cu%AGNWyU<@9U?F77WC%fLC9R5ip+YOTtZt}S>XRV zrIbOQD<1_W9GP3@=^Nz}Wx3S1BWXoGoc}yYAjiU#C4{+zw*E!ol$MT)2|;<0z?+?fA8e_so8zdeTb`BfTBJ7>Ih4rx0+EA&it%&RkDDQf0TO<=} z8TW~wx?XIIQUG;NDBU29ftq#D%6qPOMdt0#n^KX94NXD+YYc<$OfKC;SqK)mj1fSZVoOD@63lX>z<9lN zGzuacD9pH1aV27LYB@TJvZ@EjbKy#^PD>E0f_EEO?`vaX6`Z_4turJ#gsfjw_wkJA zH*YM4WFHJ5`hEZu$X$Y>$VJ3z+OT0xBJM*&(+E7$9DgNjk!W>ZX#x{gE7$~9-Ha1E ziiU=eM@6>QQ)*35hlsf4N{YN)jtE_eMPwA+RVAe^A|s0z^w(V+|MN-hb}X@|`V{@* z{dbQFs}64Kjq?oe>nA7@a&W4_vBLzzPPY9;;>ko|T!<-7y-4B(uHpnpD*gWF+`Ya( z7&5QO2+i@gCqF(K3KH$lg731US9&mtY(tiU75lU6pR^#k1Iknk9Q>o0$oHVl=byq% z2256LBEi=?=c5>U=7@)$qijKNj;6V}n7+S=LJ#&b$X9)4M6}LVBSmch<)&pbK@i8)Q_hz{-k#@8Nf_6v!V=$v&}j1bA#efz zJ(EDN#i|?q=&EV{x=JT2q?D=jjQ*VxK~fjrKw{TF78=+|*@lUO-?qVEdEw!kP|gfO z1#Sa9oMNVFPE@H6L6Ru6Q07LsLy;&ZdTb?fyIj1?8sw#st*HTCBb;u5dfdEI%1ACD zq~DE9^1fuf6Ey0V|Ks)UjUnLpT2*e!#p`twOWvy0CYBS{`Jb%Bw={idd|r}SILG6( zK=%Zi59K~VSAIl7u(W}n7-3IZz{6p%LZG&ScxD{&QHykXxv-b$WbX66-h;imcDatM znZ7TfDcF1A&i_mREG8R(Yp+=SXtD+cX%3C_*>kO_Z3dMRFN6HE#Xh_pZJ14z#tq(b zMGc~=joJ@KR$sHUd8v23p!6~B%E5;dl)jwg-b~RF${sQ0As4yIpimK4!kwsbBov(O zq#L5lUiyWxE6ZZygxRhzTV?kOgd<8Dj~1M5$9(R!G-5?CK5PebdG%Y>#`tL;^yEF4;Glb-D9-C zDDLAMeksAgbttC+wOW1AjDnD$+3`LnvnbOsv7Tl5hd8E_?P=)hwgMZOjjETJAOaEh z0#g2W%nzwz?J6DUxF5y%og-WHVm7k#U z!=Q=Ll8Ux}YvH5LDS08Ipt&k(Vt|&k0}Yd67k&Y6?S$&43O+$y;)I}pt#L#E;c{bf z!A545j!Y7f_3*yWgXuE4R020#l_{!{L|BXq)S9IuWla4pek9NAsRG9ILMxi9@=y99 z3!V(Y>6?7Cla%n0UP?5JM=K1XJ79@VK9?xcM4 z0V_^8+I~7!)HOWI@3?GslB~^%|DGa*HB8bvFs_F+QC#|Xtfj`f3Jq0_aRi%rG)q;@ z6q&q((-2J-Te4Z(YO{lQLYO6c zBN2KU>psWWpeR0tz9p*5w0aV)t3;1)i$WE*nf724@Bra~@YOMr^XQNuYDwZ5Yn8JN z>dq8%Zhe#-0|gf0X<9@ZIm~WEChJHh zm3+@qaJ6)NiOK_a7v5f${V)1*+rUTIhlKG}Wi}fWB3ZP%5 zAB-S)84p|o_yU_lM*O$_Z_`gBuy^02ODSLl*gt4?4q_UTJE%}} zJKnTmIENd>yN0}n?Mq9L5MoyR)R^`vssHZ9g=s>fmbZ?>SQo4|WDzND;es?!`XZ;K z3=1R?#+0};My8lOn|{??J-?xs_nJmyAlJCEbz9_|Leo@IbVXuxP zw&tmv*#ErrCoD&RlhNL!Ba+iv-P(7g($E>if%q?zrLOT)w836YAlo%eJ}<`d9T2~(X>-r_LW&O;IYsI!~4PVD{G?zLT&2-pkiB4(!%{1{YT zy3Ncb=6Is}zy(Hb&!%e}HCjGjLwM$eP!uGc&ZG`?eBP;=Buqz6qAm%3YeUyN6SYMv zm5#JvC05qBionHDVP^G zBYzjk_=yl$JwjJd^znB)4Ers)OlD4DG~!`eNoQhNc9&y~IaSnwm>NDjzCcy~x#7jF zW7i`kpr!ghPO~9KI}jB3)=sH$+g1|Q{rF&_5~3nN&NKIBGtwW%#~O4gmpJdo-9l@} z`a5auyJx(T+GI_#w&rxzrj`z#I^Ol`ESWa-pRdcRe8|Uvc zwSjQH@w_yUuPZ9M8F{D8ORSfn{DlKa$G#P3469M;CB;6+CRg;sLhzy+B~^r*kWGOwmUW zSfuN|w0W6~X`^4zo4+BOZ<=@{^T14GFXNdveu{=~i8V>srzES&?r$+gdG+D4O8X}x zhIqJKB+83-3ldZSLcJ3`kLP6lq1DwD(Jy6}h=qGtl3l*|vubfyF43iU3><5TTmW=Y z463UkTA%;mgsELjkJedAIGiVI@#V)b?6C>Qj2kGh7(CBLq`~)r8+&6;2cQCrgH+}> zv;j}|@%Q!7n4XR*1rR)T*n7OK-IAwX3j!Nbok|w|!e#rc!tFSvGf1fQU^tcR7qmZuI}D2VX_3xA=6tH`D$a6GAIjvZsCW~c zSvAk`6fhO*4Vbh;#X&O#nB;i7+UhE^${*q?dByjHFc$=vw<4#k3I{oH31p|g@VHblys!{d zt@7&gr5`|9y~ir-+Frtp@Z-2|Y}PM|yHsBtG5MSAv7Mv;A{Rn@Z)I=6XHaW(W@&R^ zWiPN2q@&S@9I`d;0=}JcK*_{{B2|BOR*baDWn|Drd+_Z&ee3SyJX!~5?gb7ZDuVQl zX^00_z%)}Q=cfpZ@QA5V7xKF&jKFufz%`p^{R_R6}J&17Grz{qDtL+UV1}2O_@mgXlXlqA|glW7o|Fu4PuP8R?2y zbQ8*=(N6MbJ{pxni-dB5NcRm}AWct?(*(_m#Gc)okH`p4xg5q)b#*gOls9#FN4e|w zn~1@9PJR8cS}c3%3N(XC-+5Yu+m5n)`gv4T592VOek(LkT6F9o6K!{;DC05IuDBW> zHzev$5?ke2_&V`^c35Aj-Xit4M^{IcrE*(fQ{J6HmkDzB2?~(75^N1w;HlpAg4spq zJO@=BGX{~=2{wJ2ayAnZSYdPyF>kj4;WnQO%E~zu7}uc+ZU$M=iqiir45T}jxmWct zJFJ)H*E7mxju0=%Z>r_zFk(Y?d3noTr`g6XjqHpr?Cgg@XpFRZF;OWHqRxCJyx=Wy zueIO(a+B(p?@~thU0#hT&kQHK?B4rrEWfp&<~p;^DHZ*M(R=iKmJBy*nOk?a5b?Om z3)|9x5sd`v1VL%r*bF7)$7H=dXF23^J#;R5omRe$WwP>z&zV(5moq=t zDUgn3TzLCi3$X#4qr>rKT-=xE{#3jn6Z^th48rhE%pFtya-sZ{(52yp^XsuwH&)-5 zaCvzeE%}s9<1#AI;N?(|;nG^Qy1b}2YNr7wipbp?HRbTyQyN3si& zIN!;g%Pm#a&k^{-h%q~MN`Bw1JaTwmr0(F-(htv5+)5ho{$6?NN%`EW%>2Pt)|iV4 z*4c@b=%+!Kw-LWRxE5+M;$Y&XVFz9}?WOJ05jI!PsMyYPDy&~CWO;9lXdEt(%{6yU zn9|vfFwW65ld}maDo>s?G?8O7JIQ74iq$JxyfK;ca&W}BhSs~Np zJckQc-i1Og`B)ZvA+v{?)`715iDxV_%^&vn-l~Tv4}LWE5%<;46yt*=#u@IOwa|i# zR47k2%tlu(-Xn`nT~9y|s&dW4Z2AUwv3L7^LxyiHSbk|QVSi!d?&~Fpc*v>uJb*BH z^1SVS7*?~oIBJJOW<~2mK+r`6WQO{~vxj8wjj}6y>g>DxG~dkDx*Pv#@%8O`H|b8d zP-kj$`H$k?t`BAq<};g8UR^av{{$0D>%fA0{jY8fFAt61RIpqzi;a@8_){XWr%GCI z(fd$_KkaOkA zwX~gG=eswm-RvywH#f~0Ui}IYX|lUd(Q{GnKNy5<~Mf*r;?fyqhA;NG*0ih(P%%S8NMSXBfx!Db(!;LCRd&oyi73Y z{f-;qBBY}F<@HMu_fDze2V|&GE4_X_0UpHoBSW$g{ z3n?GCHr-ODKrB z_49A#!xdz%xbr6F!u$m<-%CY~j}%nil$CAUn#Z%UK&Z2ZR$(XB%HuIy7>)f|Qz4E` z9177sqrI!g#{!bmVk4~FOhwLO7{}tyZ)pNMz`UFx+$YlLy=&l$}}{a|wadgYeW~3d*u&_aAqX z0VEU;*!LeWvSG9)#I~g?2aDSztcZWiaU@${=o8Fz4B*33nVA%nocwf4$kB?QT%a8L zRXDm(@4jmsKigjQhSPBaF&Cwj(-=?#83XERWa@yfx=C@pBq|q zLN$6Q5HALJ_^wVJ2v42gRLax&FtBml1SJMY#oRzIt(k$G+8>NKCT7d2x9yAmf`C$8xk9euhap<1NQPofQxp6dTCZ(qz^kmr7A^Ly zB_VtK$B}qtUtcFKE76JvBIoV9HqJ2XH(_HT<5N?5V-)(d8gySZNf~sSeCqlwk9-;C zFYDkao4MKFqTyuEQ0&?i7oAD@{?o=K^O2VI1I3EG(4bpY36i(bG+ErdY% zsD+SU9E-h{9fw%JvrTSlUjicba926;9vI3F1!zP5tAv3C?kA3<{PCRMutIpUrOVy$ z;u!>c6+hLvk{kc|K zkYw(@IS2lDe86*I^N%fjPvVpjUr|;H{{G=Cg!Lqt&6~L=bSm79Mcw9vQ&{t-WC=f) ziHrXJ!G}_ZPRFvC%LYeR2Cg=`i`dOL{Dk9;nT8WUqfaJmO^{=`WJ(6YGTjlPZ84)C z*DdrhnxKIoR9eU%It2YYFPP!@)7T><3GfezJ@zvRaH2`^XXNKgto@)%;mJ7iiF|b7 zIxx2;J8{q>es9f0wy4ITM_G2Wb7TEMdkSu`jXVR%ui6+x?H%Uj<(qAX->Rrr81|Qs_U;B~i5swG+&b7~#Qj*J~hLQo|OD2OmJA}~;wgp)lR4Zp|bYVBNWb+~2nz7m7~r}AL^uHd!2H1CmZ*)#@hXeb za=Ep?fT6d8?$i6EM18ySpD)B2)!*9X1hA6dm7eS&0(B294*Y(X(r4c>@qSItyq6gaD?65l${7So2*3cw zj~ghr?eb*DPuDVV)|*PO4nW^@Yh}cU5VipK^NVKqRZnpeQBC9nTqr7a4?;}QaR*4W zB{~>I!JYMywqxsFjts5_%nB{9Rn**k&Js$M0%a4l7`vnUXul{4mMu&eaNLplS`jqD zEVez;J?k)xK1kdNYNz%Rz@Rji*AoBJGY*t9nSn4AZ4opCj(%xUbye3u0w1W?IX5zQ zU!~~+^8g7P8>_ZQJJ*KG0{ZJPd(4)!r>!aysBZ%xYcyPhNz?;$9bqvwh@sR`iTbg}l!-ZtNvG?w>*v71Fo5N>ur`9ASZ?#2Kh)v6AWZD&5UDuTYR4})H|QuTp+2ZsNlQkB2mPm%%4uM8^P+)fw~&kkyZjwH z_G9c5_7~r!bq{6}XTi|Dt=wOWm(x5swO{6pZ3M1@EgN_Ko9c$1{t5v)=#?IJt+DC} zpXB6q%RgF}ez=yQnI`%Hs(eb7NuPQ)$QY)Q7$tz}Q8P7;xojlhlj1TQeL!^?1B@t| z9zewPHE9|Erc(Q}49cBFTqvzKKZ+A%k}EG4hgql7efU=|m)hUXO)^G5X>Zq7Nau!< zh7t<~r=(z{)=H4-(9^J`Iy)2WKz%l89Ym?s0|=3c2#uvc31rwL1&l2~E`|KBWe|6H zQPl%nX!R}5hmTKra++Rot?E&XT8_(9Kj;hdTNpz4e(i`p_m@mE`%Fj32}nm|Hf*mu zF~3iVSFEb1AQ>mrX#8bU#ij>uRb^>e?lj&j#YksQ|8jQtO=`QF6W4MRrdOH!C@_70 zureFm^c^zY9&{8!{i110CHcXkK_;h}sgDt)6U+#+KCXH~i~ESh?XoNaG`UXpj&?_= zX_F8AOpeAE=I9Fl275@dFRmqp;)~Lh*L@B_S$hRghK!@O7ATKq#0!tKk;2ExFmv!9 z!PRaPu)3Es6BC&ll4{sqaO?~KJ$?bST;INtEH6uwFC&Kg@?*w#a(*HMhYIrAbJzl3 z3fBUd5%$+vr!B$zpY{Bf)w*kjQlBE(fz>x){bZ1@yHdj`j>#s=1PN)mBM6D(|b|QgP#|0FOGzH_TD!kz@ zb{N!Is#5@WBf9Wp75{~!Ail!#7>)`eZXHa>5Cui*`1kl~0OFMso>zZ2NWUZ+$Q-eez4BnBp#%%SxA9}b+juFZWaSYKd0X!C zRSR(?mM;r`d(?p!EG8KOAl@(6-tb76qavy(TD+Ee~rN$OgOK%PST-Mdk|c9 z{U++3r%v8a3Yb;HIpN`?RJary9T`t&y$j8d_P&57J%#Bt~n! zSr4ItiFy6fCX%tHNK$U8PP~AB=#&wbYf&K_5AC$+Y1}Q`$#(;SAe2!DKnnjKapcf8 za?C3nKR3!|*2@AA*5}pRLVbaO@h!O1-a(*^j&NBGjO~)I6fU*eN(xpsY353k)515K(>8IZl47((ke#HzDM3-*@NX3Fx3^VLM^6<$Bcs0=^Z59120kD#+ zvUDe?GM-63+G}ZTZC&YGiGxfE5ULkM?tJEP3(0~P%XyQ~hSxfsc2tUOGjqHoRY)+4 zjlRO^#%;wckvL_r`8agAAP+_eV&*0clAwF5MsO+ zER7TZC1wZH2s49}C|A8VULPLAeH?v@6UXuws3cPaNww5RTd%MWkd3eUsP(6O6T%ysM>u zKS@_lu|2_}Ti}Kp~IH zkBXy^-X=eLH;G$WruCNUx<7u9EtoM|Cd`&HnD;o#Bxk zKhs-TFIyo9{_Cz(FRzJ+K2Oe{mgjVFy^bOQ@0XnZ&&8z5nqmG*qS@z=YjpNiC0_Sz z)s+7C1OSYN3TK9pfV}){O{{b^Tl|7{rNt_T2`(QJe7ujsr+hB<|Q6pEf>%Le4 z(*`sjBqwAVtXPI0Bk0sp+xd2c(+j>i)N@8j^&L89eUSnCMgtKoO?mJ!OY0h@>P;ExgQPh=AcFOK;{|T=&Xu*6l*D7-gZ(+({X{V~)2(5Ak&%&?b2(j~xmUUM zoyyk5A4fdU<^n6R{N<$K#|)Sq5r&Uu{4*;Iq@o?aX^kme_o@mE6NOitRwvZhDU2XS z%usT2ZDBNfX6GB&$%z~WPG)h)K50b)>$_6pEec{kicfWKYxojGEUll6k4P?*So+0i2mU!f5rx>skTIKF(cJ&kPrFTU}Y zxz?DB@|oPf&@H|P8@aeYm1I`~4D^POu^VBTKyPx>_Rbe%KAyBlT3;y~{@i+Yy@qR!&T)VYMxoC`$xlS<48= z2tPH3KIwFmVOR!!8+qC8zekeAEwA$HlZ`zLv|hLr+DIgk3 z1yhkF@2}lrXrCgwl#AfQO@*-8=-D-eVvXMPSES7!7NyxX2+KrB27@A-^)hw;OWk!d zHF{T1BwtZse&CQ4|4#oA>{G-=;_=DGC3Y*X2uU0HWa#=_dtZTd4b0!% z+%EGf-o#SaV&+(gHAxLvP%rQ}23BghOM*iYjZ%f%hf)h>h3Dr%m2cd^AP~LA=W}ji zbD86_haa#>VGg-;-7On>NHgN#X%_pm^~UOm-{B9|UfU2DCEvcEa|J~~0%(^mN0GCY z_4Ew7#G%)A;*!A(AQ8rdRX=1vi4@p!?JR7%8pu}jt!e!!;YbyP^Mu;>^{^!qk{3SX z4he7zA9*NHnjBvb(mv0FK`)lXtNG=`vQ(eIU2U?^|CahrZz^(gPk_)Fh>bP+fQ4jh zQiD(8vuErLK41LWqNPq4gOa8nN~-6A@}rqY0~oOHIN+b@ZeV*+F$E)k-<1RMSRqTb zm_4jQtSRr&+dij7mFvW4q5Jawx=Ll60(G6Q_#Y%0T;q~C&!hM)V^c3ejH*Q~u-~GS zjaKKR44(v)`)y0HGeMaf8;LPp*2G7wW?~{Vxlf6oIT5b)*WTz3ak)HNkb8q=jkvvE zcGfB*O)0D4_D~;RqUl5OESTD1hyio395BXZ6{|g3Gf@ajw?cw7qNKSwD9&Dfv53CV&@qs4`Qjtl;2K}gi}88Ud)60K4-}HqJ2=V-`!YTa45xzsn zYvD=A37h|l=^7D;ce-KWboM~m!s0&b`Jx&d-F20|`Ww-6xDiWmccH9K#hSDay18 zKv-Q&2NAXas}$8^z3y7;zv|V6Zs4Om5MnmGE1q@_>hB-p6**QA?%NC+czi1H7@~t1 zurYZB9I6m#HV>I}EgvyZmY|&=f}xyp8hneO o=Bz3Fk2@u&7E^=&%f$gey2_1s=?Dvg1^gK4-??6``{3#S08O7)DF6Tf literal 0 HcmV?d00001 diff --git a/docs/design/psmock3_statusbar.png b/docs/design/psmock3_statusbar.png new file mode 100644 index 0000000000000000000000000000000000000000..c71836ee50b1181eb9d24cd5fa926102e181382c GIT binary patch literal 3214 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 literal 0 HcmV?d00001 diff --git a/docs/docs_todo.txt b/docs/docs_todo.txt new file mode 100644 index 0000000..2357f7b --- /dev/null +++ b/docs/docs_todo.txt @@ -0,0 +1,11 @@ +documentation TODO + +auto-generated docs, add strings to code as needed + +readme in each example game dir explaining what it demonstrates + +GameWorld/GameObject/GameHUD/GameRoom full public API + +underlying Playscii classes, eg Art and Renderable + +license clarification: any art or games you /create/ with Playscii does not inherit this license, you're free to set terms on your own work diff --git a/docs/feedback.txt b/docs/feedback.txt new file mode 100644 index 0000000..0b34123 --- /dev/null +++ b/docs/feedback.txt @@ -0,0 +1,21 @@ +user feedback + +--- + +from @Flipyap 2015-01-24: + +The way EDSCII works makes it pretty hard to shade things the old-fashioned ASCII way, without the use of colors. + +I'd like to be able to bind characters to number keys for quick access to a palette of most frequently used characters/shapes. + +The second one is weirder, but it's based on the way an ASCII artist's brain operates. + +A pixel weight brush - draw random characters comprised of the same number of pixels (with a slider from fewest to most pixels). + +With maybe a lock button to make the brush use the same set of characters for consistency. + +Also, the current character palette makes it hard to distinguish connected shaped. It could use some spacing or a grid. + +It would also be nice if different tool groups used different cursors. I often couldn't tell if I was in paint or erase mode. + +--- diff --git a/docs/html/art_converters.jpg b/docs/html/art_converters.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce6336ff472e0325a65e9674dc01879f1f749713 GIT binary patch literal 56287 zcmeFYWmKEp*Eg6D+}$O(7l#&ich?q|Acf*kT#6Jg?oP1cP~5#hgA}J&Deh8qa{r%u zz4JcnnKf(X+kBXlm1M8$Tzg;p?6c*Ub533sUw#2_mF1P>0YD%C0EE8)FPmte<$N4$ z0RSZ>HUKIB06>HHp#9SY=tO{%|I!@r3;6%i|MZdnODn=@ivNvf`Im;X0(gN407Ce; zAN);#@Lw|j;dS_g_#gT4aC#N~=H=!Q66WR=<`Dq%2nzG^3k&c8kO6>16aXT;mz$TD z2blCb5WyckO3;+p)h=>S6f`1?(At9q+qN2bX4h9AqCLRtxJ{}Gp9sw~W z2>~HF5gr~XEh#w_6%7py0SO%g9W?_bH4XI(TnG@(ih_)Sjf#p*O^8QG{r|eX^aAiu z0YZRa5ReXlfCmKO0bd3I6!6g_fc}~G|J4wXfgmIlM0lqJE&zyt1VjR%!L|NR|38LC zM8cy*M!_fG(V~-bBP8V&vIt2^o+Xl2NU0~$F(_>4L)EtY5L&be7eEYzxBn&hUkUK* zBzXU$1BgfavJAik!PUV7;Q=H7u_9Um{jcs?T}zt^M9MmTIxNUr3i5nuZT>wzX)d<0hA^BC$7N z^8(M~DTgCx36c*}+_fgZ2#YAnREHKinxJ+yk~p%-b`N{R>e;cOFEn}kq@kyq=JcQd zJ~KzVyZ~l~_im(0^ml($+t&zv&|S7JtuD|dL`cBjOYQjT{*$U_=~XBq^YOP{B`^+) zJ$|4DX_l8nVQP|o1&cTCr8UjHj2v%yT>zt)@V8WFV*PjiDNZUAv}jZS?4YBM-S35^ z*Bc2Eu2h~BJEokf>|pB1iEmzX(n~D?2sXrSK_zNu49mP-P)v zY*OXdmHaKaxzaOsVsR?g-L(j+WoU>*98gt3 ztxr*p+#*r9*3Wi%a12GB7T9Nc7??R(lK^2=7W#HM;A~k2Dg{At{v$5zA93%7M?5s} z7P=SmF&v~`F?7$cG9Uokg>eJ6tL6NuXGWd(NDT8()72lwFCr7L1iR*~e;HHAVSGPT z#2Fk+xPy-gE*8UYQbTJo{XQws->RK9P4{x%;Yu($v6N)F!NrMdacGL((u=b=npS`< zTCkhOetY-Xby@WG`=P?hg5l%0|L6mjAix*)Vtg*~LpidOTmB8zY<(-D|D10T&1HEn zfVOU?Ui2l$w0nl~`1x(w%ztse00;;!;2PYQN(`vy=h%N^{mN9PNz|@8SH%vvYJ2y( zliqUqjdkRK08w_p&#c#fE%%G~YeW=b>*YFTnV#iuxmdcj6}14~z|S)FRmWZyX>4EW z4tBL$4c$<&%XTGM8TAhU)YE%}nZkLw<>G5Do*zC(+mQUGc1G#(J3#oURi|_+gg8=q zj3F;nX}4pWv-&QnMVi8GsE|?4L2v5B7lCJi9b`S(#c>~f>ySb~5G@^)6x>wxi3Q+uxlJ`8qLWV92% zfFQ*>tieYk8#!nnox`3#yX-p_ID={}oN9fe#Hf%s;{DMRuYrn8!`N>3YDg@7H_Epa ze>+_|B~igKcknIy!JLDy9`ud%8(AGXZIh_U%PMCV3J#`m;wf&O9DghRFZIme$6awq z=-gqBz<70MBK{HsuFD6G!epS3APCRhHd{SAHOftyJ&0WVz_$r1+1g#0w6(W!eSb1+}_CYp+(xfH zx2l%4v@FDYEYe?YosnT}*YjVsLf*;l)h%ze)#KEuQgJ9@^fpfWRtu(;lx&2Q{V+e=NNVS9*V8?)CC&1FR&OiEU;aI=ecykf zU*{WJ+<>h_pW3UvSfq0p^ChqJM`_x&x{`2-8^VIViIP3YwIo^X$p4eH<*zIO2JSR9 zK|Qs?q4w~ax`I@eQcu^HP=n4BRhNQ^Dpr`Gz0(bXR^7nZ z-^7QcCQ*{@3tupvc7gZ3oPymKP72)SyxjD1^6OH3L2K++Je|uw(9)70JF2;UxFMmp zN~1oXk?;3k{q=v|mw?gxjIe|^O20KK!~4?`9DWD1&ulIr?N$Xa;ZE}aNF%v24E+mz zkiG)rHK%znKLq<^7@u{E%`h#sfi?lVIQW*VCJ;qdW5Sf|2n0-P7D|SAP0ITJ%+1 zX4nK?{3)t5fb%r?HR)YHF3vF~4FReoSG?KNnb`BFG%#$NoDIJsH|2vKOvVL+ZH*Qc zy}u<$xgpf*jzC60MM8puE_jWH;|OGY zS{^AB0y-@VUbhfbLVD?>!uq~5B4WNDo986j42(?fVJXGir2I0LjRLYdRs(_`8vbuU z1?hi4#eahvctBd7|BfnlmXnW~e#iAq++gN|h zjoz6w5Vm;TxEgnTL3DBcHg(~QExSGdQM*!p{FhV+9ho8ng`n~vboGIFLg+~UNz29O zoqf7rL}qLZp?*|FpRQ8$tC=n(9;O*{vam+c%XHp((IE1P+w3yRT~A#vd5GUru6;?f zc-SB!J}^|Wej*@iFJ~;h(iW5E)myHN05Nkt?3n4|<(Y^u-2+kZ7$O=t)h7u!i}F>6aqkPh{-k ztR10Xw6E1enz`1-SE+-Muh>{a1!lvO8UX^*xI^*@V@pCjdlWa``p!IoMv6=(d(vPcZQ z>nr}OEqqzEzOcOrYxZyouhy5`P1`S$(jL7TasyRuq@XQ$DGq4F=Zrv=v9+(#+J@T z1R+!oZ5D=BqrsGU0E2^r1G0UeAqBwDglbHJ?q~hg+_qJo9A@z5YpdPQ^i03P@VrXH zYU#MVCx*7An9k-A56UW+#h^&x$3^_jB$y9#n1jPlV$SkzOTX17{#NFylz!az>TAUE zo0h>DI5i-Fcqag?vwrQXsVd77FG?~73+%3s^F6!cKZ(BAZ;yOmNCzS=hS z$x&5YRphI0IXgPCt;}=>>mChm=C@zU{(k#Mn23XPW~Kk^W-?fE8C~j ztb=umUHRr}p~u0Xsk%}*CVDLmecehM8a4-l!Q!McxIgLuhrYg6=k#(cecsbiGk(<( zHgjB$h%1GU3J#TO?Ne>_>af?g%e_HX{m9wqAJA#g^>a+9eID}ml&B$)`r1+N!^xzY z^rX^GvJ%6J(VNl&h$UqPK|N@8dUE;mSHVrvXQGsghOH%U?12-#ik~&E-9K~%PRBHh z530upb7|*T%wOWO-L!n`39!X=~JKrpT<0#>WK(V!bT**m0C z1>DXba(%psy2{m+MK#ySB~l6GfSPA>052!Yo+)(6%Wv|_SMSgCTnnAB_Vu^>rn+C{ zV`r-qjmX$|o8qLs9*?(kiZd(i2vV`}%y@>rUb=gr3qXF`TB-UpPvwfU#vOO?Ve5@t zrb&Ijb1`Y-e0~8aG&vq`LSyz-!;NK$)6K=}mTlMLR3V4Y?4O(5o#);0MmIX*0{?zj zqbK^wvmtvh-(BnJ6VQY8#erjJ>BP0y9ho9{+mLVVYg=)psZM9vgjr^&0})Y-Y7#iN zga8ohNAf)KAop#PWYzLAjculF71p@Urq`u~q@P#gMA%&<%7lu@9m;^KKGyF#DZ^^h zJ$+$o*QsObQtQ*cMdBp-HbTE+O~5``wlYk!5r9c08#fSA)d3l-S2bwHx^Ndy+(QKge`lXJmi3g6E|K1U3Jje`Mc|& zyCBW7t#j8FR)odRBQCH()u&b0J>}T&Sq1rGsZLroxy2+T^?GXj0{4K6n%~!c(11=o z{~_afj5(-rS!>0SlC7mTLkh3mHiW&RfZKD8B=gbPMxunN5Ro0*E}%z#T+z%pHN~Zb z^twTpR?6DEJhWf-dnk;ox%Zrv7tzUfZVpDIr3fGsceh(8N`(D7K`sy-k=hkZ-EV2c zER2qed;zTY5fXD_XRf0rS?J=-kW0nPS_(!{X;l1i7EjeO@1;Wh^>Bn4Bho^i=ZiA= z_oIY}oHM^hI5FikF{Vcd)~2>E&*|Nj_@Q(!l`>H07}sx+JXcUhIL%NI&%T{va72gd zvvc=~al_mMw{dXln)h#K$m|?h^5?u{*~vVV($EI_<&d9&9flEESpy26q7Lnff^{NA z@Nm^HAv27^J0hb9z}zEz`GRnSk`wy(-lf_7VLH{gCAeL3rIJlB712;q4ZNPqrgtS} z%_jO~DdgWazSe|l&*<_XqGcSO)ESi+3hv(EHH~gx?^#Cu85H0i$wyl?9RH)2ahB(u ze{BAt-2vagtx5fd#PXPy6#92zwB&(UeM9z$Qv?RZx6U7OJ<&ruI0l{11<|8_8hvKX z4W{_$Y{`!IsFv_)5WL(hO>-B_78jqnQTR~pkjjM=#+xzAEm)`Q7dD)z9Pfj7XfE}N zHol?z1@LLZ5r~-gq}-d_?sfOqxF(}Q-xe?}KK*sm91?2nR9r|IOI~b4ulWMt%}Yah z+rTCSU6wF&7KpR!v;m)X7?PKCaPn(m4PJ`B02*NEI@AKe=E*JE<3Qz4k{hadvT6~6 z29ddbx8^v=PMCV={jAJ0OR}o?MP7?;t%7zX9<+p4ana!E6=J_H1I#U;R~I)a(MO%SL1yb0P@$T@lc5#UE}f+ z>0k#4Zs*5^!P3}*Q$!{_E}Aqwpb+c#9iaNSYCJS^)`&GBI-llL048C8xq0sGMYD5Z zg0x)%JNhfK+X}MixO=}vvZ8DeJe)So^>?uO*&A5``ij+u8f)?|#3k`c?y$Zl$BWpZL9aR!@$On^1G-Rh-F@ zCu%I7T3QvAu;5wrGE?toP&G0>4%nT?@|l3%XA7xxA6Kw$KuJ_X&=s$6K3{P$WGIB6 zRfdhfZpU3bO*r+CpEaqTIn>IZlYSk!ydt%%gKX91^`p2TBe_gvoG6+j;{Ts5{ztaZ zl^)SfLG)PWbS6Z|;aQ9d_0Im-{Do6Z?AOZoYAPX(owf+Fpg@@;)xa@OJpF$4*9%jK zC#GFPiQtZfj2o3kK+oQxODy-4bOe*P#VEjdIqM6#IjtTNNXW3orP|$DBl!@jH0@ME zhH@i5yVv}F*XjijQAR{I>_c7ve69OlG`}p{BWz9pPj{YSxR<5wQ)M4juROlc;=@t< zo4!C53s2-}?(ewj_=0!dD}zf4W1h*yFMw8X-)3D{>yx8LsMYb# zlq{rYc%sBT_%BBY8{Y(d-CX`ben0ynP4fLWM)v^@eE!cYqraxlTcaeL+oe){!Q#iZSXhOc9G9abv0 zXYG*H9BQ17yM=v8R&TbBS7o^hc|HjZy(zDz>$lfzU~k}e`bxswJDLOsH|aE+Iz%(y_=63n7(Vn>2^;|bbl9JeEw37MQFsF9@!Xp$7 zTV}@RTjkG=H$@u~c9;ASuTG_^&gUhtTh1tUnyQmCx3vhc9#~w3@it6~@`zM?OCp(U zVaai3Tfv2|L0=D?igOHh+AnnN2FeqA8iIfu#>`_LS+&@Hme@z-DA615pX@^f_d!|< zMfEe`f@ciNN`CEOW8wr&XmDGv_AsUsre#diCy?A%1PpXriP6@L48FyjE&>SQy@QT4lokOzIHqROp)V&!S7u64*R=js4xOl6X^;49O zC2`vJFrW!cz8PM3o&755`^1IWInK>dqOU|lH1+AWGjaZ% z$%0Y77`u;G4iiex-5MuM4_83)>Gns`QEe}Eny%*pp^{Bz9?n2bx`Gf*@*ga<$iPS@ z#n(y{c|F4!P0$N74zU!!$TL`PSxdTQYuq16YK_c&r|~FhP~C{)O&~J;uB=s| z!bsAnxgLzANk2Y1q|3rq#@z4J{$}~>m^Ewa)V*xR3qTLl8Pwf?lYA_rT0b2>qKeO* zN&np3E=2^L1p_=Ua3ndA^xvMVR7QqM*UreLEB@ZRFy>Ouc)CwS1wCouqDTo;YmB)b zV*lOi#r_e2Gt%9v0MgRN>lVeuG2xpJO&;oZ_X~e+%`o@%G2eIZm0vY+v;Se~WAfTtfOCgErc1gU?G=@l z(cEZJ_yvf?Jf>&+OdBh47uLlyc|8ktthpphmle*L`?DE3L&m-BhYlL+`1r=}jXdJt z(=ax}%5QgkzDYF1fAv6Lh`umCSuQlaV*_>ujy-l9dL+-CH5Tyj{kEz$f`((8&Cy`? zg*3y*+IV41zR)asCB=&nII=ep_^>eeFYl zXAMc-!5RpRf=9x7KI1Nbf2|j6(u)~&;{}j4`2t|vR-5WPQ>kFcUlL6eT-3jOzS(D$ z!bQbJ&p2Ed$`NeCb!h!GGX#Hd>R-+{@GF0>Pq}BA7yBDVD?3f|hCQc0qw;Y{RV6Q< z1=@uaQS5cZgxy4zMm2ENRB`*#wkC>m_8-%6i@8om1ELd_z;1&90;$g`aq5MiZ*(J9 zKeM>dLr+^DpPYZ#l8tJXOdY)eV3_D=hp8g66%^PW5}VOyLq4XPDXaV2fJY_jZ}P>e zg4k&uIk_vQ_D zNc&LNq}GA%b*6D~mFiTQr*FtOSm9JXhbASJvjUWf?TTuHgG-X~xhl|KlUUD!@X$vY zvqsa(Gop$tc>(A?@b^_3dQVTVTh)_R-}SvC@?XvhY-E4JrZBwlWRxfSR>e1E*(yYI z$PY_P8AY+**j4?28rN5j~EG@Ryxj_VWL zFDB;b-#y{s$%Hx1=1*_6z_Hn1MQmu^O-n8B1$U1*xHs&w)AYOw)gV>vrS3XCgiXWi z=~l#&d!KL`<|g0;@Kgg6_^475>=_-@FpdE5ufL9^c z(RhQg)cVUbc~r*xC7F`&vr3ci3_N^-U%o(236aoxse*LijO-U?zHEG(v!m~p zB!W+C2zJ`l3{b>)P`q@)22Wd`n*UTUX^Iss_o(Isu4EsDG#@Zrzs zje$9i3Y+jDIzz+cG|J|}L~(Y)m#Rjf{=6<00kh1mEB=!CYMB>H#() z9JZPAT(L+K0WW3PYs+7GJ2J#L9Fj`vjT{JC=bt41iTyy8_@=NH-?^IhVSE($o`OHu zGl}lJ#PRGA7-xwad%d{^Ryb!bDd>Q&pg|AGl@bX7_}Ka4jg+PEIdG^)Dw$scPVpA|mj)A_`QHwZOd7wljS?wMLIY`O$HuIHUrKxH@@MOOp`J)z6K)(0p-z6%~vgB1BT7~fY zfV5y8Nui3t>d7z%!~Q>*CDF5c%u|bb?j73Q+up`%VWvDH{T8nyOiD4fIAtN@Kg}C3 zvBsj4>ILTv4xcW%efk<&_`Y0BkzSpfKs&YDR_Ampsue;OdGw_z@w>yuIj9IqwK8;} z9D;nK8<&kR8*NW^z`&sT-lj8`|G>ptW`o!3wWI-4hfx--7{?1OlNL|a$ao3Q^9s;cFQFn#tlT}ypWUZqTI97_@Rxlgo@0+(X6VLyU% zYnh_7N^5n3gm)NCH17E%ZEx9tgMj5%+YP4z#1W-;b)< zIi`-MZno~jT+So`vePIf#@-RcR16L&n<;m45ng$TWG1?#3^Zb8^HA7*uypyPi)yx; z>)Uhf8o6j;FD9#rHM^2NQ5B62HtD{2-<2alqNRHaDSZxQS=o`2MRuMUO~_ktyz?-+ zo?et54+HZ3?5$BWZRkl!U&1>s74)Mav0nf>D6{$t0E0((PDgssWd=n<#LZXhDn?L` z3DYNiZEyGInqBoE6-LPss&EiZe}4x#SbC4%&uWo(yotDLSt*c03 zQ5>%u^FQCqrCAL##AE}_IM^FWn~fvFSj1=lY(E%c;S%!r?kVj}ty-EbtNaPzK~f0! z!->CP6PPz-L%rWQJ$b@FKW6lp0b-VFM53$*9&%c&W1$a|d_@*)CHG)JvjON_D@~yl(0vZYyxVcxad;S4^k2}zv3Z8kPC0E5SYgtg|Y3{ zcZmo>S7(C^2xFLV#}`A2@bV7^hl#lH)vY+vID6tom3!qzx014RMDi^Jh`qk5gN<)W z?wp`#9a@-`FjgWZ3OfKaN~87A2Qe(x?YzFqYA*T5l07nai{=>L>wNisSIK$J3=R001DkvUiMJ(p6Plpl=%@$O2Bs{Dd%r}45uK@3|0DLM_;4e6 zL?W1HKpCf|5pZoQn+E#<&qZKC8ov2j>^F87VuKioc&D_QG6pv$k|zZAPHAP_E@2=@ z#q@2aWnT_yO3UC%%szLi+QFSp92@H1bTy6<@(>*Py)C-^3}Bzj-0(*~`YnAe0$cfj zqR{}8X_&)gNJbOCY^8p1D+(e}5zj5R;)5)aMTPxV?cP<`>!HqdVsFBOemNQ9{Y=Nu z*APk+1=3_f9NBQ;VeJ3v)2;*%5~ra*{QeoDuSdMd(x?* zt2UJ&!C-_YWKD2<`9g2hj6zf$orcz5Lj$`=!Y?fqmL;Ra3I=7%o(=&r%aqPtZFAHo z*|^pRQS3(#JvdXNhc*0Zo6+dq1p9Z32DY>RGbyiHH%rHHDp}{2OkVBVPxi(@bPIP4 zyu>eW0@8?<+V#jHl#>UnMB`onB4SK>%-VIBqOvD}#9RF~==<^ne2mv3vo)6KF+Vq%6w4qD7WHg?c%h`pVCEq5Nf1) zBp6>j?Pg(?msL_BH`k>>FqFMysBe_Jl6yRKjlA|N7!aL@qu6wc&LONg%RIn*7K?r? z2Ig(4;8qm(SF6$~y#_>RWUOWiZvE=oDm9M9_c&4=NpGK43iV0L_tK3Bqr7ZgbYgG3 z>JP0p{1O$Npj4-CRZuY3DMh*RnXs}7x6)D(>$?1;5nl#rO(~4J`z_p1G5);(Ic@da zXJSjwin55PwF2xsudR#XeL|;7Rnl{=j_HZ7?bAk4!X!$IxE{|E5fNTWn9GT}0Lk3e z?AN-XWKmWq(-vKA-9-ag#rv2ZKGerYeLu3*!?o+V{h}V*4GnC0Ak7%angQiMMsDiJ z!7P@SQz_HAZG#<6=`;71=n1G-G*m~rj+J$~c-LbaYxl%N%gXx&2xQ9nm^htJ3&sPT zSia*}yg@XFiSzL{>`s&ESWDesl|vLiXCSvuIfmUp}D4 zQ$H3VaN*WB!nCWt_jB8~C{67T8C%6JUg+;oRMEu%d%ytsD)^N|kp)sdA>9wuxk9bP zy0tU32;ans0l~#nmc6seF0+am;C;mYsi%N*3$tR?e00G?yJad)a$JBCnA-Bq)~e+o zdB7?vm~=Iw*3*C^q}N3;tVil*snEKK1ypd^N~-Ab!8(E> zfetevAS>e>$^b$MX@uve#^E9*@P6iYp5GE%n=E51#_ZHOwd~vyGlJD7R>WFl{+;8k z$*R|!+-v3x0J_2>C!)x_#D?)LF!MTrV(A zj)x5qfI^Hu_J#1fOhqOb$95(rBsiD7&0d6NVF9Noj>;VBV(Ue0Ycs2bIUop)il#^i zA;y#uGks5Tc({5}(d_uM*G*VAP5Qt~$QAj)Me+Bt724Rh;#amuT~SuAy}!Sjj#;ZH zzP(x*s+Eke^wDviSdNq;>$Rv}tTKIeSeGOe>C<@|_f&{i{xjP`rmk*u@VDz4;^qU* zeO?O=1?UCvxYy)?uGeF`6;bSI$rd;E@DV3Loww)g!yFo2&;`BK$O|B4&H4oZG=%2NBUm{mfSzr_HhWg5oO}6R;iR7m zDc{A|X5B?~)aW5MFNKuXklq<8hv0<{Dsm9yrAi^1S>8>X@fK z$%(pYsjpcy_>q{I+pKW4@%gMl7#c^c0oQ;BkiJwFTl3AQt<__ z{{pz>B&jR2FL9T$2|L<+(0H7{D>F@_RrWC{IIyy^buC0L=vT#87!JH^*>mYv);9dE zYzU=)de>9_Twd5fJ&;um%qlq<%#nEB4R;96f;LnUhw=4Z2{tL}l$F$*4Zc5g9@D6c zgIMu%TcM*IJ;lEOPB|rdOJU26io%moZL+`@0DeFJkhC6A=4T?jrlnwZRUHHAB1OKj zmhBe+NCx*Xi!@S`KQ@5?e&gg*c(A^^_>b26o}gzHR2WR@o>xyFxGa6Ym{K!APmB)O zs32Y)sne{Mu^mOcZi`2Ge8+dY*kfVeOdj*Q6i}^k^j9Qk@UkxMl}xJn@d0ps5TssP z2#iXUJlu1JiJ+YxfXPa#9Dc37c>zG}*CJ|I->s)HxEQXA^H9MDC_9JC3W)xdCs%EG zPg=lyuqeE|Fgi zQqg;h!F$Mn)n5^e^Dd%Q`34JzGs|S@z7_B1*K=WGAq&PTKxS%8Z!q`M-uoATO}N9j z-$Q}*pDO}lO^*de6HR3EQ@oiKcfBKq0;~s^Bx2Ze$k+=Y(?%@pwA!`@)q-IYKBFA; zsxH{cindFiPj~GrkM%-!fXMWYF5ySCRoq;eqXBNrI9D$KUk8)AH4b`#JL^z=IM;`M z{*Ki5Xs}x3fy}E$q^y|DQ3L89eDn`1A6@_7~B!>0Ay7WVO2Oc zO3d%K{0!xD&egcT(y1!sRi|Zi%4!-1B>MFG5&)WeIZ%F1S-pC~L_M-~Y z5z7ICZK~D`M%2c0X}CjiwQwA`vJjlqwsDy)jW38GBpkJ>q2gk2gg0a+(FF!gng&R$ z`yaD<;a4Uv6^`+GwK+4FpL5VFg9L~s8mY@e-j|gXkm`Ow&ERS6x!!XgP^kOFYr;qM zjUH!N;3mxhOnN&>nFr@()AUmP3-<{se9LSJSI$ijY?xR>U#5N)qEV?o-cF>wGP3 zRk$Om&6YUjF*B)q{qgVlRhrHs_tFc%FQ#JWap3tl+#%EkiBI!@NfESEPgh`$2J46n ztABEKo_va6Bo`irXs=FBTI1ZO*&gwD%*kY_@NW%{yjoJ0hb<3W5-`Y=&Q%#0wc!0(w&^&8+raU59mbvSq#np=9{7u6vtHc#T z)R|j}pp0)J(Hzh$Q=||08x8s!khVtDfqu_Rz}EuZ&>M*BSvTtGwOY%+$xZK9%n?VW z7<*<6cko-0T9DB|99(=OLV#OOg}Cw|zTbZoBtWID@B+|y0erLXir|x@&%)rKvBOyo z`fVtmZa$>1Uh0Ju?l+YAh(RQ|E+o3*(P}}pMg$UIP?2 zR2#TFg$H@~yjrSZ6ImWgVRMmmt^i}q34M@>i*i7?qYhbN7^$X&-I4b{asG_-Ds4VX zYQb8rAB=McA0PbuV)dkXMO@h=(AYAood{nlPpy^aj-2$9>C7N+NQtRW{#}~g5d%VF z=1pAB{KJ2uCoNgyM{;EyHjHFpFxSP1v`!QGNwVd)SZIVLg`gyJ&7iBq*5CZ@p$81P zia7%T79`6cyRnsL=G<_H50q6X?=`V+z~r8usF<>$DDOmEk`^_Bv;f~3O*D`h!D&S@GX#_{Q2DAs3-^|Amjc^hoCOK))u6e0 z=ptVOgsen$e-fq`A~e~BUiG%S}+3MuO|Z- zXs)o~wUPCRCcsMIP6mw`2R@M&{MaURm}N>{6V)KgsrDW^*_IOYtnrQ2?zGilaW(jU=R=g0~i zI7i?${vj{z{TWR!;JYaYm0?hWl1LB%te<}`#v#HN-%|8gOLK~~F*sbbd^_n-T(>*9orqJ<9}L{bRaE*j{G&Kv6xl|zLb zUEmMUe1B6!lk)uaAI8PmBQoH*ZJlyF*2q7#b?F=0{0DVlMPo>W*(W?2+0K;}ub(=K z?AsJ*>l;j<53j{hT>GIv1-czQN+sI>$gp75_XLz`-Gk;8X8SH3mC05|^_r>D3u<)zl|mf8JQS^W%##>IAO-C6~k*oA=^>{MAfo@F7qXM=Z z^KnvFt-QG)`i@h;kEiNFG-GpJ{B=8vCnxlftg|myI^1Al9gd)PafRERv~tpzqoOo3 z_2nh0T+MR7CTV=@lLvLcEG|k8hk`&8r4s3;z9jbBr9aJTwDR`}QP&A3Od%DM99X?5 zn~sPr6C6f3pMsr;3a#{gXZdPH*-sN>I*m2w*X?a*Jo+=jMhco%XFntkrAn^&UeXX) z?&f9KaAWu4-7JFWvO-frS0MWHC2==`$y4#@F`red@ZU(RY&)n&30pLKT-V8JSBC|M z3)Z$E?5PRR<#=#)#y4nO zrle+aDsR=}by%l|BhqzjUh9Bf;iy6gc>9OqUy31rE2v_n(?eNv0Q z0UMr~1J&&`E}v)_V+n8#sIv6GTO`5n}JnLEQ^ zQ({^vEudPQ0J?5uCb!^n?=^W@B!Z+`ipHV8u7LN4Lh~l*vPM70&YfPTYGD*&?i0$M z4d$rBXkrl>=)6vV2=Yae2)*f~z*E#CRv*<95_{#ejxTf6uN3w4kpohA3a}0COsdbO z-a(r428NuSn=={Bf9LKpe2||oS|TgTR9t1tMD*M!{fwmR8^QpZ3rKTb$y{;Bcbwif zS9Wq}V420ljMor1eM+;@#H?q~FpGMqt}WF3ra8+kx_!EDXMi={-zzK?W{&7XW+Oi% zMG>-RU4|aK^$nc#O}jWj!z?1SKwzg6a)^(V_eH?w6&=2+XG&|EA-YWbRR*TVa3PZf z2Jd%a6*c>+%yrd=_K`J67(z!i?l9ujzFmpx08z5fb)A9mflo8Q9N*+%T4P|_LC?R` zLQQW#XaQy5?)~Gj6CW{$hjg&y&h^UFsH_hpm1UeF4<}I&;SYL*r)HKEZW+hiBEAYY zrWXT8u;A~H+YhJq-%ET9w1er4tv0Q#BT)L4(lSyied?4k$A^V57nb~12_>RE4g^@Jo|ol!5|g6w)Tv4aT+D= zdj#)@aZ-7JsdM@EA!JBQ_P`ZwUD%Km3rP#eO5Nu>D^bg#6;Qug1xc=&iMk}lQlQua}v*at2@5VA^wUb z!A7d}Pl1A;;?E+8Q2D@TLDIu{$-3S1Bw^eEzlT-uRD%n@F_u>^A~`c9q0b`Ae%-Ju zn&*$8I1r~_5Oc~xF6OQi0?Zz>+~byjP_Kg+Rnaqi(#KT$Qbw*W=qYY zTjEfM&bq6O%Mj~P=HS$ydg0Vu4PW5z(x)iIo*Ci=-ji_0p)ui4mmc&in6 zUI6doN`=Auk@K?)eR#?Z*a*1G?TZ+>{BtpGGu;=0TO1+zBbpgD%chr(G7x~0c|bt^ zzPV<7CNg4*`DZM7ECwfQSe| zIbf`giah#r4ONX^2^oBj_;=}mkVra0SQ%GoSuF$_ zT~YOwp)v0ZB^K9HAEy?yso- z2CU|@E0^51C;g>Jqzk~=v;?{uMj*)|3G&aeYLi>{t~i3`AX%hnKtVN$nq$rRweg5h zSh<4)YGcZ#{yA?X7~lJfCie>;Z8@EE6a&t1@0?zx7C@J6wmoF-9L8x#J73B5qtQnR zrxA^b{`#!G@>3@;3*kb3*vUVUL~9ipWnd^c)6Rgu|Jv%9g4530HpYhDwbB~zXJ8sP zk=Ad-L>#RfqgEF?=dysW5^*7{^<|^Qs@%M9ME|Mz*kNjFo^g<^(1zKrErncEl8Hmjo#DZ zM#*+)LRqT(*XNra#8dl3>pIcEy)GlHje^3;EOM(Hx7!xtt?ExObSBaT;XfgAWAC5u ztY_&j#ydu`M9u{GL4G@t3A-^{Sp9OSxQNX2NeY5!TNoEENmq>9D|ICk=<-y*ez z90$S=G&CG9K>MJ-`gh+x+TW`9bl%3C3E)mjBcV8uD}a=Qr-{DoR?DCax{Hf1>hlHl zth4Hu%l~z+m|k5q&TE=gZV2onGXC7ZCHaM0+ugcgQYeMrG`919N_V+)r&d;b`*` zikoJzil*TidJPImzRh_H6Ly5@;jTl%{!4K@--+}`!9VY> zS;aJR=-0j=Kx$+S?L}~zVT$HGfkww5W?NNBi#v58^~;ZbPIFLnJ=XMik3%gcp%5mZ z7*^Bq*awAEWGAO+O^T2)gQ;t!O1hS=5!i&k@avV+*1``Xt{>N2kG5a!-V@bRTA_S( z|N0T)ZCP|EAH!0OQHOxxaHE7+a9Dz8@>3ZWn#yoqLfsX3XeCy#zCI8nplhZNp zxK~L?3IjUVqEGQa2$BK9UlIjsYnnOYh99B_{M82QawdXzVz1|+malDY1 zDtfDcO`)RFi!_$Ej!z_|2EbC~c; zOXw~82BRv@38;H{jt2> zaUX;5R3e1uMcP?Lr%oi(fVu=A2Ob24jK+~G*honnRQ{$Gm?cD|)ru*A8jmeK+s@Oa1x(XOV6_BEqo}ymi zJmed9d*L?P08#+{ENs&XKne|4~q?K%@V{l z47h$YGS-z1o0?KQbb^o7D%vx7;LQTkUDadDqF^>ov1Ts7Sxd3VPY4;+9|8P8H(jkc zOovD=@$Siw&R4JXlZll?5PTl6>epdhRJ$Xn?VPp?_@&11y#`M7k;2W9d~vU=tR+&l z-P1O)dv3|-I4>zSzPm4AS z8UzlJ*PXG$`t3lIEgZ85l1Oc1xL6RM;yG##R`8r zaS?ZK-KmMbBj|rmLZ1GKi2F)YjeUNtBo!6nLWqiv^L*etZIfHMgO_&EV)Xhs$8gof z8>H|%wdHFefqIQ_Kuwv|0_X2vK%GYFr8wTNq*JebDR1c{bRgm;5d%cu{|>PI@;=(m zavevZUE^V&*j&ukhP1|C(R$y6@nBjfF(E&g?7k^~6F-fuZ`u#Bl<3ZHS0E?U2xL(> zFE%(AhGfR=y^Ei-Ia*1-2=pIYY_aU=8s67w%+5usu$}ziE`|N-3yvOo^ zCUa%}#BAH(GL-w-RGIM?DxZX-zm+!+f!wR0E&j!w1sbzVK;K=W*e!MN+gy#jUkbx1 zOlA8`QMGmCs9$WHdGgTWDrIfiAio9(t7z?u$eB&6H6jqnIgQ;W$(fE?bIHh~31F-( zeV@nepo7dx2mn$L45xnK)W2IR+xxuv*?OhxGa}FPeU#@q&KC(3zqgu1xJG3RhP)}X_JQ%QTO4+9` zQNu7?LZ%=R<&IUMcf+chPxS9yby6P8tbz4_1FT!Z#Cu!p?+?A+uDFJ1r+2*J*OPO+ z(l=VgmY^;QfD%{&jteZPI%N2kb!BYnm+@S;*>+E-c&|?|VEKa!qkqHi7ix)Ck8lkq zB*vd=Hl0v+0LU0-V8iYe^Hwu>yj?ENTN}-Rs??$xk9Trfl(!;IhAhkeQzUO>9UGcE zO~`p}^+NB9<_dHw-tMV z$pCF^>*VQldKqIE#HislFuXe$$FDes8%Cuyrr$KE5L56eAw(&FHh>6_K_RlVzjsZ7 zkmzPU&VAh5pF0SzM?7Bc_v}-&?AdtCX<4xv*i9SL(YgvrRX|2kr5RY2kflbK3INhg zx)oDP>eK`o8iY>$Hu9g)-&_2c>6Yw2FVis!Zwxvg{LNGLSUs#~7t5*IR$jrYg#^nG zU=CoO0k@^{jk?vnb|;uAQc9H>7L7uvrHNF$Q)Xx#6;zUV025%&F^o$O!7yvqD~n%f z-EjM&ca^JEZ)Id{9Fj=@0l6>)lNRu@hJDF-&ii`1<;;Ga>hX7`Dm5mhQk(a48iKll zKrjgt5+)>0zU}7wcg`J>;W>{j8kmj|cEzdRYu+f_#bZwIOTMR4p`lbRwN~X=K>(6; z$p^73{soNZ{9_PY&5P$eZSDvvV%0F_x!ms8ePAuwY0rh(l)n%_Bth4y2IpCK8k53C znIb_Df2FhrX2j@XoxEdNe=&B4nR4ygn7Lf=i;fjmr9Yfhs))v26sYk(EF|k5AQCOV z(6TEia$|if%>IqFw`ba$w!YJySTbqCqFZnLvvm9Rvj#<(Gd@}D^Dp6aGY(*?w7aFD zO1oUp|vnU9} zsfB1JRsqzr_I8nUyIs2^%(qLe+Kn0%a68pHRB5P0rmI1MfB=A?00eaMw>9OQF5yQr zV0DGcfON)kkxG>5s+Bb^PW2q(tU87#f4W_=-TMHiid}DF>shM3T9rse(x8xq z0Xv{G$?0uf+7Qa^jpya&^z;%JNBvEeAi3-)Kcz-lj8QZ_+}@?-diWbF`Jf2 z%vmEhxEOqXwYhu>D~bqv^ZH{N{zPOcJ^4R4e5nm?s%3Jcf~F>+P%*C zNh{E81xr(P46O|WNF!n<*02jq8Ss_Ux7N3xl`+gGG2k>YtRDKetCi$2pyr#Vy)0Dt zSON^G8^;#()YD{G46C^^e(rw@LC*by*QcE?cT4su+FoqD=0&dfjpGTs-fB|1Q>9L@ z8W3q9)sOAMGb3Wz5hp3}Y}|u9$^wA4JIIX_r0_>;YPSej*?cOacwO zACnrE>^lKS(m&D&P$Ylms_pvowztKxEFUdl{io#2!Gm57V$4{j;_-!1TY#$f~*{guyE<2XG7#xCCzUq#*F@4%>-8e_zPhJTB8OH;cDtIg;^nywo?KPc>XFgCF13Azua*<*}Ty|IzZ*= z%o=4#G0EI-8iQ>v)m4AP4A$M?E^uq-gpecXUv9S2w6msM%^7R5yr+R*D_^m!Hxw9mstP367X{#V8pK#@Ty|uD>eF^b|UOifFS6psl>rnBrLcpJ&Kj+_II8#PCuS5b*|WT zET2OL7vV@(r*yxhvneU4snMxJC_1$?NDM*^rHJ-{lCaFJhvsYcIZZHY{Xmy%(ov~X zQ;^3@Dv}R@fdmLDL4&oQE9ac6o3VTL7l31TYyIlzPkT<7U`mJ6tqA~BU0Z5d8;$o9 zqOQ1NHcY@T7pw?fFnoKo>Nnes&hbeGyOmWT0j3F6QmQ})VmOr`n|@1|T68mJ30j33 zR1M=N-YQoqOev^FDCil8+_sfbCU#Id2tm?b!>mMkPvdMqHTI{FvZgTjRyU8+yI&TV zcA%7M)nyDM2GFb&#`;VcAn-)x>e`lI6`pyYw%o6nRWkN!&saWY&A5(Ly5g9nTjfig z*9Tg)v5T9#GA%30?y@x|mLU|e24HyJ(?SvelyG zfXdX>l!K(6dQH7A-psNxi)Qu4Zmoj%UH8vPC3J8$iPb(G5vx~*Cu?imyK%z*0LOe3 z(887=Zn4MiBSQoxm)Yut;OvgU93 zN@5t6RvqQsWuE4}2>*1@Ark)?#r#4h)yx>QQHYRZ(V2hc-Q zDWCvB8i~`i%v;;ena3^U+BEBCd`&R)ys@Q6=-#8d0VJv*EdyyW0z{p}>bx5d!|y$t zcGF(9!tGkK<9NiiN@~sYRQ1!}lcC9Fo*0rKn_{_zZ`eK~+16~Sjn&Iod*s`t#-2C( z9-bhSF98{iGL0n*BS2sz$pdXL_sR7zL6T}!z$;>x+BItVbZ@xIMy`e|x=Qm#Q==>kF=<(_o`h9V2!e$E~3AvhQh`8!~1ifZ-X6 z?Rms$_kdAFaJ4jhUE7rlQ>pNiAQB`3ZS!`GoU;~Fy?pwXOuS+drLTj=7HZFwcq!h$IZ0A&3m5b!|nT8%uIc5^41OMj&_xh@Ta&? z#d8fit6y#d5~9^8)eBPYLo&SSjYKO#7-Dt;NC)V+=d7iD$`_2)bjNP>@JqRF{`KNs z>6F1zga*~R!o;?vfOQGx&eJH}>tJ|g;;jX!_kPW=%9NSV6G_ebg2<7vD$F+C7>>5} zaoiTL?B_GK4{;Q(I6r9jo6U5)U1`=^z1E#QC6AsT z$yTd4MTZHXg2Y1ur>w!YxyZM?rPhC7;XRWkKTSdKU__PO1zR}vwpB{LvY zFx5SR4wD<})#K!B-FU(AjH{M1e`u65P1W%#H#(R_EU<2?PVB*rTE?UXC4I7Il3Ao` zlpQPGmL#wq6CRw{D*>oE2YzR-OL_RVJBDGH<`;rrubtih02S|kVMn`vrS6wiO~5K3 z8SxQ5rrwHzS{MLh%k#7Zu+gQIu@c0CAx_`U%*zysW`acX_gMutP{DRU0ni#CZ#%?! z{-VUHQ*AWKPy}gagYf3S5mliSjWNkQ{A}w?v8S!dl?8a(IuFLo6e@*wS0ZF`W2Y9T znEF7>+E5TR5$8Xzg@Lq!T!{^_Gt=E*x*AS}c|4O7X4IOP0VD_vI3uCw`B_<3cBGHy zN#E`^2dD)mArx+4nfqqSO4Bh-s%az7fjd}KsZ2h}sHDg}M0r{=vk8*rj?uIa(6C{h zs^*+KDO@n??dIo+Uk&E=E|e(TsEU;x+!CS-37sTuypgrBOQ&cnc)Q{ks<}@zVU#fY zja%hszv04)x>MbeShns*0P_cXUGkNqd98(H>K9Am-7ht>E!v$L;We5rLxp`OV+ITz zj9RSEbH8Ezlw)^nQx|Mf`j}Pl)V-PuN4=VL2=Fe#0Rz@1+QoeM4{5k2CyLx~`_31P z;H`+EYlVDD=qS>?5vCO!F$_+j9SndBkPZ0nX?R837{6gR3>PqC_nV6<-s)jDL0u@h zp92{XMw77XB4iLToNy=jf7weCAN^~DYHj2AJAQv{zTDk`<5?!YBb;)b_rAm4t6%Y4 z61nhJ*^OGX>KQ1}4FjD&SOrT5y^nT-g<$E0C2Ttvyka=59`=qEcDnbM+G(d$x@sC? z2q2zAMCoE0<(_c-Ln&V~1|NlESBlq5!%(k>EzA8folwD9d$4%{m5dX&FhK*rz_A*5 zzirnnPUy8M(7$A=cZ5oy2h&pW7ysx6ElM1R(m|0sY%TEiW1Vp4sfT2`cot_{)*E%Dcf8&& zm~f<&LecP=gIgMU!uUbvM?Bi^ll0TOoO_K6YF4s8YkK1W2XC`e@h1h24M1sh~x>ePPLh3 zQ9x+lZbg-fl17$Q+Eslv{Om(0-m!Tm0Rw-HtJmGs?^Xo+AnhC2EJ#W!KvF^AFF&ca z51sO+Y{u_6g&UT5Y&!|Q(=^)VaEeumQz#ao?+XSqx%8d5wr&`Lq%^6SKA!6o(w;43 z7bIyvcGeGzFX7ZM{2J|sQ|}s;&g`@msu8J?R4VF#1nuS4-)YiZqXMeCh&_EQs^@od zOs=AIz%lwZQ0hx60J@Kbxr+e>SZHHX2eT$YwTe_PfIBH5kVf3vy$l~|+i5%#XR4_F z2WbjVvQG8{Ui7;uRVoCHw*I!q@$53C?+|MBubtgAr`@70Ff^dt?noT>hECga3sBSd z=)h(ItPdl<>(1XT=pt5VT^=n;PlUuw&xibzGxaA|gH;Ksue%^!pAMyayZ6lC>8KD5 zIv9;4j=ZF9IzfiktCU`^7kjPJy?fniS9`q>?^3Ifh?K_c#GQZu5>HEbIaE_xx5NrY z>Ix1PH4Zk9W<8PY$A?dMPR#jU?@J)#_l!pB*Xx}eGV=AVqM<`sJEql7P~Bt*k;S4h zY`NPOQpa-z&kUnS7rEW>7pqSW#4oo_=IwuaY!^)z)ww5tK;9I?5Ts*0u;CXQ?k!4& zR?WDD*9osuh4&D{@Xqq?l_|lf4MO5H^^gZ$#1pG93YqTfgZ4->ZOaV5Ws`~BR^XIs z_jT3TO5Gl@8+Z`wP@IK|o+EFb@qlJ*!G?CFb~umBvaTDA;`o(RqS03Ud_~lh*zXjR zMK&@7leCZ;or9*ZtV-dDVE0@@4y)eXZ9WXZAQ2;YB7E)RXUx-wWZWu+ z{{RrXU+-T!ywkbeZnr8u?RxdzbfT#|z$bDhAZ|c9l{22J{0ilF zy4}z%8rK`z-2qfB%cJNdv7I}>8bGO@+%py@lKVQm=1$bHd$;Wh)tai^uC$bQMZoUv zl;Hg%2s@HuOtDqhWDSM(ql8x&y5BGi$%J1ptS#|cw_HZxDOIgOCsR`eh%iKWipe{0 z(QZ%eLWXL@E>~N&OU@Tdo$(r_8};)H?(U&<7Y*JAJ23W0nJhf*j%CcDne%DK^KNde zaC}D|!7JeR3_6`K!r^nMNd~OLJy|-4krHMkEjkr*pJo@#rEtDxsyUYdzF%lyBIx*X zT^{OO0ZO7W>MT?tokxB*CsKysAQB5|Fm}`=ZEQC>_Kk;S%+k4F<=n}QU#i>%^o%0n zwe(Xi$t*R7-+N{#|ebuU8yqn%%3>p`|8j8-2FVF>9U668S>ju&hRlR=Qs@E8VM8EK^c7?5hb7 zM1puTYCh}_wVX2^zTJiql=G$T>w3Kk6mdFOU-}yk^GA4U7Lb5~Ng_Z7Kq4)%K8?(| zsU|~pBg#JUZ9j!RXY98fz_1(sCsQzF+)DD8UB#**CF>5X?A^)}{{X8@tO9xk*dS1^ zxG5_`5<=~(#CPV%BFN@%r>V^q{F001H)Hkr4L zbnSO2UUD`koT^r@PYk$UYFw47(hE}eRaIF<6q!1M2o0oxC4zuR!+U(kFiQQSVYyQ} zW7V*nrSk>EuT-c~s?C3^-!i2KWCel^8nzt{`m{3q{g&m72S0Xqn=Y7j_NB_~xx)2* z!0&e?YAtkiN@j&bPY%Ib*)TxkNdSsAW>f73?TudV7hCRE%{UF(>vpSot9{090_%1} zT_L<>h?r^K1S=kv@bG@wvgRp?+-}q`Y|BF7iC>M*$X6OS>{A5B@e8e8LF-&D!lf&^f`E6d%%L?G0es-w#O)0`&fGgN*5*mYTaCZ+ z%ht{EonH5_?8Fs7mAeBRpY)nvuZ4p*%UGz!@LRquQw+qguKQeEu?xR*UY?g_@g$g- zk

$dQMWQRat@0zs}IqH2|nc(l(oTS@!*U!tyR)#O^hFo88k3yxu6(DhWnfOv+%$ zJAuyDgWRJ{sy3M5_=zG2KcR1f5XL`d+qDjeo6%Wy9zUL|xPP z+A1%9-FrUKEu)T{ST@^f(5z{aR#qcoIQ)gHR%R(qqLLS3(1UGvk+E#shxV0z$hor_ zp^l%~BN(~jRPM`laGm1PYA;PjpK3@TlLK;fLhOff%u2ST5W*Mlv>M{|+U6fi7R2rt zc1g~-r|kRnTZQ8BaKje09`>2i!%%;Y@L-L%x1pK)OTjYrJQ|B(*!}Ml#xCN$3>xWm z6)*JZ=`2l3QZ&R6cjPbtg<>%t#%?&{=Pcie-Ln^Sg5C3OB$uop+)=)8zZ<3QzD9Jr-bEo(=I(Ehub}MOTYV>E7Na!C8M6t_7)@+P z3!{kLTJ3tNbi7@!mvc(B3aJ{A#E=>YI}^+pAc68>`TGOJ^ZoZGVRahwh+HnMUiVQE zO&VogQK=W1)(b3v2pfWA5H%h#o^y4>vn*Qgi)PhZ&+nC7yI&bwkV=7Ltn{5~R~%Krz>m-EwurBcc9VR=Gp=dFbDi3i z*DT{#>QwNW_+2JS^e*fisj8z`lq3$OJ)trn-ht((g&>Xj9$VYx#&3fU!moGryWVeA zXi=$n7kj-ub!zESbfWcQ1Oe2MZAsb&WWzJ25tcId?k(#x;&{czjyL-)Z|!wUttO_! zyn5mR-I)L|3FZk<-j~Um@rnNDVz_=R_p;bFF<%U!cfD0wwQkgDsznn~Ko6v|0AeFy z3IG&m84okubB6qaoQ?j#TwKMZLr{>9>fMJxLurt*JW? z#SUKiHQciYa4U>D<%nKI5mQL1qP1qzFk)kvF>E^__Klsh4s6TRu>9Lg9lc^VuKN|i zZrCWNcf)Rk_{qFJmn9X1M1sN#Hrmj11s$*~iMeD3UT=8w)+>EADX-D=WmXy;C?wM0(V(_NBa*`E8E^JV`449-8Z zFp3${_-`0!!ztGJ#+ry+_pEgxWrW*^k-fg0>xO0wPvsDla^7hD-@FW@9j_wdm!j1E zdcdZKAPFT*^WpWdZe^^?DvAR}`*JL-RFX8ZuF|XNx94qf+ZJub@)u^;3a1gHTNl08 zqlUgKUWrts?M;i`nvyF|u*X0I0!GXRlj3$Gn=>{!oAF`$$5SftM36e!gAi1Pl`|*P-DsLq z#jJwlfTz!<)`C(3w|LbT#RRvzp!;p+=6jweh+x;7jt`5R68hQ=3+THg7trM(q%y+L*MCAERXsq_Ut3sQ6o$uwc0>BjVU*aJ*)m&zvtAixF%*Vb^x~ zg*&Y@quzIhRSDE}L>;0`%!tp_s9y+XQb8b%xwU#2IF6f1;F~>FNANpHQhkzl{+0w@ z^tn>1R0$9^{fS(*Vb0Fnu?YbNaTHDY+y4SCHyq*cc7 z>@N_fh^5w+3r6bAUXVTCjS1RL;tYx4!5c%w!gO~+WRN#IkLhKms+7er10F#;Sgy6# zL>Xo!w>APEn$jqn6RX(tLp4el`SWsJg--P{1r{fMb(uLR0S5 z)j5))covRy6Hc97WH}N<$RlsI$XOPimJQWJ?ZtqSr8~)CQ^+5)<7xD6Wz9)48>t>q z_lp2~!5+w8X+Y-2lC&`-F50|Deryd;wvqsn2E~+EQcATGQzrZv0?Sz`vo%6kF+OGh zvr;2K{{Tr6(X250}}&aW@H1n zJKO8WvUX|4>t85eyF|RE3w)~G<;sQ^NgPluJ<8S%tJ(0$8;(H)gO6XZp3QN)$7px_ zFATZixW*5J;&&?eL*41MGSrD$SK0ywg9#0!Y|J?Js(ICMEW3tcy`5zn#zV_Eh0ieH zSa;7a2ILaqjr(u8kwqUT`?*)*(r+M^rKFo-mSkdciU~horzNl zRO(VZKr9I9ZVFP)-VnNDOAvZ<77DcjuH``+fCZ4Q^Y1DV-S~>1tLf>ro}vOv5+V;f ze!ro&1=g$-2c{wiCt)@e^qn)PczjSIMA-`OYGtYcQAe zxHjOzsZnK5ig#W$O_A0~qy~bdnFh#LdZL{GXgu#ScH@ta-(u%VmQe1b>z`&p=i_b* zC6Mm27{QU}=VHf5)))tA1qkGRjgYSMr^eIhbwM8e>^Fu)X#sppedCW_mf++?G30kD z4)gG_3`x+c4yn>6c7gqV%OPFj^kf|xhL|275ChcgI$PkrxbKUG?#9PZ@b3~^a=+x6 zpQ$>AjZ`>ntx99ZB+Ll?ZEmRS9H{KC1z`G5)AWe?dYjLO{F5{FCs%`238k&Cli5<8 z?uwF)C_?FtF{n&!9?W|q+0)^U?w`4d;nzF<8G6F;8?e0GuXLV`dV0$1M^YF_f;QV@ zKI?dSNS#-@RJCjpK`=JdINCj!_C#rq4xa9vougO2;oY5PJN3@3Teaeb6MCsivN=bl z;**d=4Z#Eh=xqiQf%Z#!y5d+e=33|n7*31|C#yNxG_-#Bh3Bzw7DqRp# z6zWtZV_jB_TH$n_J(SXyp31RC$yiodp`LFcuzYDT93uC5xUJ#tw5h8KR0!4s=`A{r z(F>#i0Liib(QQT9WsOVAowRVjagcGk!9|73UrM%ofv&_SZW;`nu&l&djnQqukZ=GDOl<@j@I)6C? z6sYEz@x(|6f_#fBWWAeaYu;ZVx!pAye|6yK_G)~ zk1uwck~0oxY`KGG3%%iP~QyZg855*}hTZ=U+jMWj8Fd~|% zXo4h>wxA3W1)#=PvT7HMjfh~k{KI~)j9zh?nApYWsG(Ag`0TY(njL@xiQiKYRO!*^ z<-X5xOgjGnjbqrRZ@pr9qY=3qjn@==lBGMHC>lc0)KL8(40;kc1hH>$XDqW*3BobD zc)C5u9K6%ITq;vWaay%W(2xNtWmp|iq=F0^Uy5ej2Mfh7cupaG?r)boG4X2Y+&R&7 zRw~s2RUp9!!zH~fMj>|W?=WAp9unur4!lLAZvVgZjU zwjR;)rd+`>>;|S|`L<(hGO)VSyNZSB)p||b_|Zs4k`Ck$3Y~$lWNVd6_L{lfui^#@ zaJ0JUgZzH?y)QfYY18rPZxZd0@%$SO#wlgo=y0pXE0`6G z#6X*5J)GCQ;vJmjyVYv7E8Z$$H(HfzRbtNWXsKo_OpB!B@XEe02tJ2w=u3~Lk4IfC_?v0PT<*mY{PDSY0VT^J2i zmYOsyoy!Q{Z~-h^j|2Gr;Q0I3>C z5CX#K$#OqvIWIWguQyD&k0tuG*#%0JyPA|-sckX?s4OR9M1dk=MZSEu+D1#vxrws= z4Uf>iU(;Mt3gA@Gd|Di+TAOd-CO{-e1lo@$Ja&JYvFz`3%(#Ae7+p*_u)`?+$faNA zz2!AZz9wO;wvv26#O>#Ax3$cbiRYXlaC@d@7(Kzk7wRVBmHu(!S4m>Prj}lZeOue% z&b4t%pKe(ajo%o=Xk76+7wT85g5FqNpShyWu4#>nO-;$4Wnv=PMsv>DVp@Ki{I($@2{rnmwx<~ET=+} zs|rHx{#om1%=k#hGTteHo4~sqLgiZQD+LYRcZgS1Z80+vJ{I%unfEB&GS(HCZy4>( zaI8+cUGBG{8@pP zWv5#Zt$ACuHKlc|=~AhE00#-6f@8!CL79#1o@xS{Db&x+sKRs3M7`s<^~W@2{KtCB zd4lUjuFrZ}0=+u-a!KymlaQtu>IcuEAxex-CE~cw3zsnLXEl895Wz8uSglL?;mV&n z?%Bvfh|q&e0jqyzV|#je%RA+ap>(5p%=on{ie4&rR0nqT8ORc0P!@r-n1LW3MB9XB ztS2(%Th2F>tJB89)2Or%KXTP8sM?zs0MjJt_J;&C5JbUMY_e(gn)%e<7$4YwvPIC+ zgB||>d9PNlhM4u9mdI3i z&NWSNOY?-g-cp@Pq1dYsx>ZXl8W<2jf}|KbTj|NUzb@xHz2fj=Or=G*-n^}_9O zrqwS4S{DmnR;1LVEI|-A1QHHy*|lrx_OaSN6M4olJLT5zUgKKpO8Iy-MGpF%N{p1p z2(r)s94d|C*?k<_m#-K`Gm22e9;M#}uU>{A;*~+%JrSy?g0j#zm6_=_3~w-YXm1zn z8yU&@g7KB{OeW?q+BK4w&S|~O1E!19sL9QO2L>LSU#T5yFNK%D`Htn z{{W2C$1>&RDpI;!s$G_g(4$b)HBi(;s-bT4cG?Ko34!M2-pzA17k{+#+fHMWbGBE`cRJPb)-O){w_1TO3#E~%$dF37 zRsin?Ai)E0W68t2S?uo<%&CA}b3M|n`mJL|o|;txJBb=rp-_fMfJ1nsX_*opW#hA) zdgGWeTvsIL`_5atVzvHveYw5Do${Mr2|DU0c*96(+;i&zLi%~{A>Q$5W>8 znrKS1lK?aV2B1mXPAl3q3}Yo^oG$^(`Li3XdCWNd3_0;!Qt)p#i>g;rt=%xw5uis= zsfZwuK@hn2~jWzD!cr^ZHa2GYEE@f6KML=cs5)S^)09)^BfU;8qNC5KO8)zKSp7Sni z%(+_^%g=ekGGFgK&kstvnvGmx+M(9aAolBP=mSCL zd6Tyse17{EI#jaibthc=G7mo+W7*d_WvrEUp?S>Mr8|u~)k8{%YE17?#GeWVXd6k0 z60&58OO|}fH_V@3I9)OOsln)L73;FH=qfRX8yV=xIyDV2JU$=?sn~R| zXAG*rw1c#dKD!faPcin7lJeGIrQYfLw2oB6H_DybB}l|26dTO&4u zrGt~`Yz*yGC}JfiapmRtSrU+_q`JxxzWiC<9hRj=I%9a}`A_t)V@e2BQfapnx8w1! zYu?kY7o1N209OmR&^51j%%zRcyV5KMw`RGjjYNPXk-0H$amziMXKa_AvW6#^ux7bk zA28ggqnp(lvgW8@u#Qg(-kV!+e66s1o+pN7tL6UpiCxy6@}%ej=`Wwj&_(atRD7R zDtk`tqNb9}FidaVBDnr`$g1RA*^cIZ$}=t(g&O!)AA;cDIlL|6lJ|Yv>wgO{V+ujo z9(LZ?URvya;f`YX))9BiSNpBw1+KK~o8Am5txaY0x9)x2E4GWo7Q$H$t})hHgn552gK0gk-&tU{|b?xjQN2?{&K4 z_w2)a#Xew_MOu{Z%ZJyat;))YVYcQ$+jU^Nm$2GU`R(bQQIfG4p1;GkXg*G?rW-iE zfMH7ElfSRh+Q<1jho}I~I)?;)&HO%>-(fYNmqD>` zrSM)pW1i?=1uE@Av7>Me-Bkb4D=IQT zQ>l-H6UnmC8Yuz}o) zrCP6ts?w&Q6XGVW!Z(w^vXfdOO+v5C4x3ra7Ir~xGG zXQ%hJ{Qm&Mu}ZqeZ_}@D{+GA^04L#L{{V+NYplL-k|c@4dVkI5`q@dX2U3s-7^&7h zm~Lz;sAvl$sN`%!TYjID!iUtExNrOMHTXjcZ@k_E?4?<}%U5O`873vwE5BVl%>Q1i)su*ecJErK_xNJlLhEM+h z*4sZO<-wFP&C>w+;@%qVt%Y+-x!0-Mq`@L0Io0(iP|>RIG>qRUO0DfqwF(nbjiNOy z#?cX{*&IiQPj^kbR&skc&B|6(;J42RJjDkxEZI1!QoNl&4K(FvWZbUfpxaNfIMd9MZkk`_!jE&|_NP|A4D;geE!1xn z4!8l-aljsi%}L4I5&Q{{Uy(Yezg_x7;@+=8n(vhHSaiOa`t>yJ7Tk5qIyF z?R*QbeKN{QYEVFvsEz}XZ)sP&v!60vUVIY|yZq0lywGyS`p2t+l z8rV#!1Z@`RAfc7ynA`?{OnDz8$DOLJI-!&eJ$M9p*+!kh@0qyanXj@u#=o_(l*{+3 z*iIu(qN%^#olP2j=w_6v8G@2d@MP_+@H^IM%6NsxvYe-f;k9nrg9gX0H1P@*E?vvr z9T+8LB!T=&u;dAnvhdI?)Bq#~ssU5ghW`L)wzH|(zHP-Zd=C4XyGE;vTrkW+mLX2= zm@ONrderr4I@IyL;tYw1FhG3Wh2fZW9CttCqU}WDPnz%7LwO=wxel%nPXkjDW1XgS zi1{<_C2+~Ty5X76GTiFZ!7E^Ghu!fNq2DFi^eR0_A!U@BWt0#k>mz{VZRceHfFv|e z(hDh%m;dIN_$`~yi`ZFyntttqWY2lyA@l34F3vC18mDyh{9>tXFzOEszMI>k5RCyR%oy*d_kH6I&F+@N9bPh~js8bk?CaN@4rbQHTs7fFp<`m;jNo_9?AlgiiZM zOG;%O_E}=EU>iZI@42%o_KkPV7-mbuYT}rw%a!i`0JMe2x&SzJOR1|Cs6}bIaNIz3Wr!^ z9w>=|IU~r<#?J5E_))}wbg|&?$T7vJ)t#?nH!Qo_M`wAL8>w3DgxqRkRIeAsp!E`y zRJ*9Aq$nm>g9Ff>0k_B679)k_PTg?a>6z|zDd4p*7PwvUFPnF%cD@R)Qam!sO)|;| z5_OTlayI=ZV6t~S7LC39*aadQjOl&Ma}l`%?>_56%m)Cw;$58J;`xJBxZwGZw5nID zoypKqCgWLI6lp`?1$Gcdz!lhndKWa@@LCxI7sIg=`#T6+HmwTJb*CN0*itIR6;#HR zm;fFI$BTQ#*SXTHz|4Tc569D+7E|FWz9A<>bMfoYi)D^!?PF2{5~5t0l4Y7eY3YR0RF)ITnd$KBYLj|{roK1cK0PgB_hEo2 z3z*qN5*Ivu)vh->bSvL(KoNMnQ=Qy5gcdM-EF1+5ZR4QRsKDwT zNV^h#Hd0ZFiBhmfnV&K(XyyDlvJ&P@=DnUu;NRi>_*au${XVg)_}(egqm8!r+b+lM zHygiZor_hw-0sxtt~G>dbfT!ky{E3G;C*%ho6LYrn{R4@82w`)9poP^ttt&_AcxWQ z)N}UDlm}{|LlG%Ek1sFE+Iv3VaLlLMmKU6}Rm!4ZHSiY0sA3|Ae3x6_di4zHmQrb! zP(YKYfv|En3&XP1sK-oi9RC0*{+0}BK?VD3^j}Tn zQM*5Q!J|%)K@v!k2ogaS!!aDuhUDBEwJf2T{&j|8n8o)IzTtYPGt<4&ywfX4qo5;| zgQ@@~CPM}2b|mHp=HzbIn~=ikUJZR(gB@jq z304aNA|_^_ZK$gY+QWy2Ya^73VYTa*DZkSGJxnHk>g)L<% zC~{k%5=y9&1h5mmv)l^fM+LyJ>=xx!+U;<=Q@bIn1=(q+L8<_j*i1#e7Ani#y27^- zIV5mDU2O(}A2;m}JZBuik}&7I;n$3xUj}>WpeQZw{P4)2zLLZyg(ZNEB48CK7wp=; z3ttz>m_9X`F}zy$h2F(GzE->7e>C}p@mT7uU6g@QX^_lV%lL~h6H!l60Lo#D=mr$1 zo&9ZNko5ouP~eZ{_u9~m129Tbu%NJwy=|s*mTkatkIE*7DVVVVak^H@0`9eYnw2J@ zy|V>`Qg~8kBWrGIz<|&-hHhdY#Psvu&#jV}kU)b5IuSnZZ3dt1Q!`;1wP@WvW8kuoeP=`Q=M ziQIJ_`xPNtbt-@+TYbE(2B7T=6vOh5Zun+#%$Hh;fmOg?4!hza@82cf_ujL?3oL}w zETDlTIUENg$L$*v!E;Y%_e{@#EaXjgkZdGdF^l&A^t71LR za+j;ws*eLyGZ9QGl0=Ola8RG8En;^ZFXa!M@QeG_yWerTR|=S7nl3(Yv~I87GPG%d zq=_e$AV~yUY!*=Zku?S!&h{)#M}{r0W2Kjg+w-tQ7UI`jWI%VZXL6vgV-Fsun_;xvlQmK8xat+d=)2hM68_g=+ z+=334E2*IF0fILGjoeu`Mp3a42KH*PtLmdR;&%K+lxt6vMcXdkaz)JMTz&8=G;u05 zZr77=`Qz?#|B6{=75qKajbT$z12$=UnIdtf?(<#PtQj+mh~?PnB2tN0nsE&caB< zZ`ZyS1l1e5lU#=>NCCs4!q_5;YmL6kpYlz|lApQ0tW|SpciFqfQ^@}2OTe|ry}IQS`JazG7AJ5WS5TFysgR^qGBGEMDw?_@+qb-0w8JmC-Lc=+W~> z*YD*iZxUrypXayV=QPMIx2>~h)*k2eM$6h-%O}yQb8hx@Gc7mf@I;^9#jn(lF`b0G zzd@Nq{z{n8<5KdKw)=cULNH@e8d|P zvpmg*J>9w;TDx5oTyG2g_~Twcf5iJSNhRXNWYuG@tTo9}Z6Sji5;con`WNcfaRzU? z{znkWsFl|OyZ-^`6rV=uiKcAy=p6sm1Ca3+F}Z{Ftt?lz34#VDDYH z^UWj5%K(t{<7G%Md+W@2x{|P%_R7T2^wc5}N5{y19P?n)-Nq4$=_kfFL3&x^a(s1E zHb1`l4-j6$+b_VsFW7q3AnFZ!%~o&v_TgEm9a3Z23QSN3i5~pjfr^(tmVNi}1u`MK zTT17`th@JD)Bjr^g{$L;zt$N~QWJ7euyIp0N?3kjmgJ3fVt+F=J-mSK;0{Q|efiM4Ur4mIX>_vAPQ ztBnM)`Hj%-*(+YYpU#r1$x({0lZrg4w#bQXmCNGNx&F`Csf%+S$oaqh!aYu()M9V^ zld2|CH5<=f=`a52sdVO5XJUSZez!A|7Qi7J4je$0NkY0WX< ze;bmblsm9>5%ZO!f%o~>NA?jn_ZAZ>i?QIeQMg5uTu=0uQSOR+@0xaxB;0+Bw+UYD z492?&)$&mogYKTfdE6dt}u7IG~SlBro^ZnL{5>poNF1%99UjZB0|}z=O{1K8UZ$-5v-W z!!oH+wtXu0zQ{GnDbA{SN~(95sZOp7?9VY=(n@wmMJ_1ilIZv-dCp{fZ9TN^PTkUB zP^I>vx;nKqrdK4BG>>GVjs6<>dXxK~+jxhlvb*u>+&dZD-upjFTAr(9U@8oti6P?>s-p;=Hf+1*tew$}xj0}WF_-LsUbu6L8n6HY5hnOg@f#y+%)y^a(}`QSk{hx)%^+1lQ~_qk^O0l3C> z{sY9>_IW&6X1)=q8lf!4Qih?irkF0Dy89N+2u_pu=+t^e-_I`?SdH=&%6z)^(eG2z z*;XNp_wf^K3#J)%05U_uf}C4fL>d*5(g${{i4*mqv4+=XAWhS4Qls{{DH% zQq3Zj0{L#f9Fe1u&Ks~>*;Srae=AM~-F^A){i^biJUaE|G;Wp*<#AagAb$t_5?vG= z3kf(2_$BVHm<%e8kBQjhN^tHUjaO0)iI^xJ zG!ipE`W94gZ`kD@P;;$c|aiTNiU;I9ol<}(~^KuWg z!O#SmEX6irRRU1)8yyN_g-+5QhFc3wljD>CSXWqs<@7L*DZ%)cUi$gQV*vd5N6L-Q zuAulwOHjFO8tsgrd-z5&wG}eqfZN%e5}NLCi^=PTahMSsY=L&K>xcO+JYo8s$M$dR zlrud50LW~J=3@L(QM+Vf0-9=XV(Zn3DyrxY{p-V)sicUAwu)?U5_00l>MG!;8u-a_*YKWsxIX)Log>P=aVC zV4(CYyPAX*aVqtVEv+vzRsn;w`45%tqXdSnX`*P9>FLXLdh<(23au-F%78PkE8YHD z!v_lDa+~>B_K*GgPz4)6nXv7Fb4SRm9ymq8S}{JY|M8 zCS_~>`IqC4mX@=zfiAUvK3||0zzmjxf@a#64;rqcrHawr4Vh&HU4Kq4cCs0Do*>i> za7>7;*u`<}&P1#b^9HUqX4<|M;FA6M+^#Cs6T=uo{G9%M+pTJi4#Hg{7@YU3-W|+l zPq#q(gKQJ2YibPWq|Y_x^v1lD27nS|7Z> z0LX518ED1AL>(+#bk!>}~W4J)xQ z6on_A*WqX1x zEXR{TrB=c)!J9(iIVD^=IwaeJBMS2jzg@QT#AosaCzbE%Mq+bmRdmcLhNT}XH_fLn zDWLv!b;zixIONuR9hI*wbqT*^Ak*vhPgS4+L4sSD4`;STt10m9r{S*?Q^Z2!cE%23 zo7Q|U9t!2$s8UNT+`uv0Eb&}1Qj?X_x@U4F)}Mcq#+{+7paj9$a&vFuxdd_K=%_)7 ze@1MqwNT^D1yxOl-kqKLx%P$YFE4+L;y2xmV4adwZET{TgN63~m*K><8@RN?j~<`S z7r2QYMLaRYl$F3jLb>d6ix@at7}+3%Dq$aJ7l&tVxJ}j8U|_PcrgUd!Q5YsPk;w=J z>!;dpKy&hzrpq)&xu$5ly}#j zRgeVgXE+7-DUw@@E}8{^;P(4$WUq$|ELf1c@*4SyK3&;{NvT0qD^DJyQvWuFIx8Vm zljR9)E4}jXOG?exHK^u^tYn~i-S~!u&l3D+yn&&AEO%9h=Ak-*pF5RSLBisHZ9jlN zzbid5?#$U6ER*W??L0SR-AS0?^W59~rX-{<6)2?&rg8^quZ1~~N5-v^)~3;qsk3|m zURXkrui!92j^ZQ9r z!)JRQlcv1!g)#E`Kf-W~#6xYsWlmii@Ec2iuSB$fj3lWdzwfui0}+SmvGw>w0GjEr zO&J0ziA7f;U1}4S=2U0FR~c@u?4H@Hde~l_?2iKBZ!TmWHbs7gG4nl!pK#Hxb4kXn z+&3b47nwmM)StkX3-`s*o)i?VJ`dkwkI-*#+sf* zX}5JXqK9CdHM$9oa>fXZ=f*v%?6PtCxR`3qztjxinWkq)-1BS8#33-YGsf7~QKq5F z=ik4(=#vuIb;{Z5LMNQ4dzX5v7oXl7{O=h$-f0Kk)kXwZj zYWb_<%FQt0I9H_aX+bx(`gIZfaco-qfp>Jr=Uj~lY2ch?mA5B24@`*s@xkbGrYRfh zI}-eYI;_NIrI9SpV8`p)4mZ(`#D&amewIRJlvcjp9vwm7a2`XZ;0}9;oZQ*^aN@#P z0gkzElCxaD9CmC&_)yrD+DbO^Hz04JY3bWO%}*sul3q8!k@5_J%4bV$idz}f^6VZ< z5?{SVQHqNO+oB{3HPGf^FBLu%%RUwoM}w|5@XJ zOrS2=84VT999q)E4lk#+IK5BMSs1o8DJ3AYECY}W@Z%D-tk4&8jD&=-k7xX9o&+J? z5USd;2%saDddBq93Q4@24}`{gHD=Vo61Q$PATeHgaH=8E{l;0HVU!JYP0-n}s9qp| zm`ccJcP^sjRvap41Rk=T~cV;yajAiXx%tpkOgY%be~8(Q24t8-0IR5*_3dHNbGDn zAH1R>!ghL}KbqB#YOT~*oc?yyq4_jOyfojnBWGr#?Gr9A_-gWM4sRPD^-*E>B3b}3 zB5om5uZ#pZKQm8QE~BI5o{U0}`m(nwJ|`U2%dot+3APF|O4BD&Ta~jYa9VL}o@{Tn zl+IO@+oUy!zW4m8@z;)3ZHR$QP<5A&()v-c*KttEW;QIRG#xfq@CB6>Wt3gz65Zs` z326iOXFS>IRLb^>fk5aYH8<;xBS+bbMbe@c_MK$1hk$bL}X4 zfa&1!0_bP4;>*ndk2z%n#fzfP&3nP0&xe~8*YSa;xB95OV1+ju7?!4Kg0#jMhRR+5 zNv~$pawh4GFM3Y@?>dEzt1>hHc`t}E)(?ynUd$&WW5UA9UuYjEnS& z8s!Ll#25OZJZ;`URW$e(vlPivvies&HjA;Px@@#iz=pHM-~`Px zyt?mB<}6k;23x`RphGJ3_i>9`HlL}r7~ZL>?Q3XDZ6;z}iHekh6#Ub2%gt7MwT24J zt(kfL?-W8SV2VI~Y+Vlgcj{uBvZhqw;;*d?S0HLE)iAvo3(Ng6oNP=-Dr=C(fi!1u z_h44C7?wWKqu&c5uqY%vQ=#K%X|&Qd3&RWip;4nCQgts!W0^C0__$uYItj_}jY~m% zY>V;1i9I~ST}JcSuw{olc!@(E3mRmI-NpfVV(yFKA;Fs48c3V8pQ@6?wr@+406N@o zmq1wxvwFm1sZMKiBfiY45J6iA{OsAC!Tn8erV{c5&OT)K>&#*a!J4j=_^=Xlq`7UtP}f0lHlRT3eY`Q&Wj>*CUo=0dLGby# z@=t5`aoMz!*gf*k#3L?hM@*yQCaYZYLJT!)-zH^UV|XVV$7gu3xz}xMYWh2r4=e}KS9(@iH>4jb%3 z%`T>~CR$3*uVJ|^r;4>aU>iygdeSrRE(tiZU{D6^AfPBjf4WRN&5@9AxfRc6Jx++$ zoz~jU2In8RD4_M1vlp6sf~8ehcG0Z`F&$_Iq3n<33trP7HIf++a^{RPg2z(K{Jeks znWP_sp03eFEoVu}P8JItzG%-k@#|(KfA>u=4~lbO)&C za?yJ+9bAEc^-RNC^(xBqJR8J{krEFkD5kDFV`@jkq4p@cLPA=*SFKCv&(M=K1dANV zHN@cJX#3Ru#+_q2yt>{$TV{GobO>23z5VxJL|?vWgEK2?$@RV}R=QdWP;EqMwJN9Q z<<1Q_whYK|M?ZZkE!`{7>A)w354J?cY6&I96e__x4*_P%OGO<$q70Q-ct1VNdEycbt0 zfYeK&YRcr}-;ccJb!mYC$3k_x-aSgUrWm@0VTA6tcWl9Q99gAa7{bU8Lz?{t!Rz$O zy`=Z|?c184!L)Q{iqq1kfTOo}MZ z9H2x*Y&P~cJ&Co!b0sP~Y=JjVrgCUqO@82+tRFif8f-qOpTq&iN1iD6?<(_Fk=$Kc zi`hg&*L+yrlB=89zs7y0W$h^yautX=`WcRp+%=m^%drL*Zw&jn1@rdpC7GW`%He|l zw*vkDQh}T$o@LNMfl|y4R~-S5om`35fbdqYG)%njNZM%nVZHvfxEdvy`|oa>Q$R@G zGP)(tp8?LF)$XYN3v#gucGTA6mhdf&7=3?hSvIK&AZSWY-9i&WA5GavYc7jeTa7g@ zWK0&Zw{JwWj+KL6m402(27eeFzO7^{*L|#hzRyL=9VxF)q28Tb$nake1Cs?sBBW_z zNhEcg!0^hGr(8~EtP2gaWxnz%0tn7IPJj)(SKiQi)0_KJ6dEXs(+xdVwk9=MUq#{H zh_;`wy4xB|q2IC4IW;rIAJog)#^zX(^d^qxM;%N=M_5N3zYXML8reF-(%IWy{#j(r zn#I}#`q4&rFYwn?l*u|Qg72%JHJ6vkMwRK^kDziRktqZvd^%F}(CMgY4pV)J^tG9CuG zyp?`8n*T>a5-lZcn>F+!Drm(Mi3xU8PV5^) zCoN7@b2hG&0}jS^!M9HqWDxnlqIIU39~!_fbMfa|tnz~Z{$wh(eDBIgQE!JTC3$== znCB>^6(k9cM613ka1A@RIBj7^A%2gDyId^I8$LAd$b_iUHChSVw6H8u99mR3uhs7u zjPnkkKN9p*SzJZOF44+p25?06!j@EW99yZ&Sc*s3Ii~{fH;>jtdI2%iU(HL0l)W&C zs&ix{?1b_3q;byI*d_}Ue&e{QBsNj@RzGqZ$HbZ~Ib*ZRRKeK%AHXdBC|OMQu0;su zT84YXb1qjJ>znYO@#$@v5pE?C0pIg^P@h(Dkx|x%8I}oPl7#swJj;4DN{^`TKuY*+ zXIr$dD=ZA%qgltr@cMSeiWsL}Yrr{uVyPX-+61(T-Y=Y<>?JAIi>qizd>9=p63>4Z zh1u)T6q)0kPT|F70-{-Ql<+5#L7I_R3G(=-%Jv_ua^-7bZ7iOw(s9=WTi!%5z0Lf&i zMCw8rM*g)zsJd$lmU!&(F)OL{p^K>f+Y|;Dg&@yW4vVDr!oR8lc7U{W z=4Nw*r*wW(c-z)zp*{IrLRW|s*1GS7KC-L0d`FuTRHjBGduQU&bA zcJJ#@-xM!V)!UrJPgcL!weQ$##>^UpN2))%L~tq0+b3N?M^l9-95+{1VQHLe=C~i7 zAJy|0Uo)a|UI`nI4Rju}EgMd=(4q&H70*3)ZkT2KEpTtI!8nO-nob?Uc%Cf5)M-<$ zop~wadBAANcp5$r-GnA}lBtYlQ7c1S-d)pD+EP-e6Jm$l?9(8t84yXT zXF4tq<~#Ulo~+vz`t{+Y3WfB>i<*clsng-!-8@Z^VNI&eVesNo`@rQ)rBl<`yE*Z9 zff8LTHBpHNs+}8V1qi4vSp{(+bm^3uVIF)V_ms)0!=xF$;n_`iyzp8ERWyXNa z>=k0Z=Ii}a8{PUmgq8nd*HMh+b{bGkC_KM}XpA2dP!B!fg09}?O>SmwPjilFsRf9I z+CpgIbn;;f8aG$(k&#hP-c~igw&Z3hk)jpXyxd{Sv#Q<{`$Mq{%!y`WH746~oC3H+^tw zYE}d7eQpf`4-5FrmTdu1;E9U`F#{PxeI?P5(^Jjc_83I+o3zw71rW-Ad41!aGZ%6} z@6X|-FV-v2#!j+|_1%4%*PoQ>O~mmYH*}l-q#{FFoc^Wun>OHSM933A@;5)Dmgcw2 zOp9c-Ay2;6;ghss7^a%aJi#}amvws6^qTTUx&KaE(pNHGx%Q?+`D7*7`06Paza=m5 zwuRboa(6*iSOA5DM8af_GbST|tWN$hSADfd*mLro$7gyjY$+MW^yDm|9w`hAnIRpH z=VyzUxA?QrYUqad__R1!WxD|i%{34|i=9n54_Q ziu%vlYOgI4TJ!@-<8t6+SU*-KoMVf%jLpa+O+%IO{GTmj)%Gyj76y@6cSmADeWFex zD$9Qs@0482xJaB4ij9&c)z&yxD9<_@lD1v!a+#?Z#f1%)dsqH-E;<=Lo3Vm?PVZ>Y zE_)|A$Fa87ExwsXq&oRoTD@|B_ z{qr9skTuYnS{FnIU=<>kM%Kp7kXUYorw)DcaPtDOKh*5qa1-r$00mM#*sr(GiUM<1 zgF4F~-)JxCZ&_jE_36LB73Ss^Z3KFYRF^mE-zr>6LbF%rzfQHt)IX z7-P~b0V}K|qry}ndOfdz%{tYhM}VXK7O#!YDQioyQ}E%3<9h4|JFlybIt+}bqSMm_ zVFZCjCfneq#?A*=fJ|w0jaAJDEI-l z$`<0K>ZWZr#NxQ6lB}esvUrA-E|Zel1~5ukiaz4Ed$o_M0+Xsl=YzftS^ilxnVFyc zf{NZhZiW_BpBeMIMz--qH~^VeHwf>MD`S6U*fMSJ9O`>$S_{P{$=O)-5_E<_zf4F` zAH1fT=(WCK!?7@yI|KV5=VIoR4UKia5V}h2?yj{jQl&^=&}!=G(mS1M&p_O?3bFFf z`2q*qNB4?4h}-bWhc{D+{&ua|3>p!Z-n!Bt8-tF#nKSK1t%F{hLxG~>GkV}UQg{+2 z%@#`Yg4c;BRzCjc7=|5u*=ihVEWH&7BjSEpn1}88xasmnJ`;EbWC>dUX$9!tOxIx6 zd~xV}W1qjl*qvK*Ff{dJcJfsvo-4NHyk+~<>cd>TTe3_$yH&V-^?!o@d>ElMuWTt7 z{+Y_^NM{yLdE}STZ&y}8216ge_~N`gjc?gENzTbmYG{>5#Yo#wrib;Z{#5&{?#{d! z&#jDP$N6Z#hSpbqX5myE3x_F)1bzDO2b*Ps-H*wQr;6w!d*=Jsq9f%*9~%fOc}IcL z6#w|kQ=kJ#I&|KgEO=@+XCwWgKeTQy#zh4mq|pNYaZ%`0 z*%s+A%J5b{c-EjKrB4a65Eixoy;8_3i4Z66RS(lgaN7{xx50=7++KD7RwaX zr~S>t=CxwiSXp-^_JcL@>$1{9H*NG6XP>>DxvF{v5(gSgrTHHqwpg)OmfN_O=J6F# z=PFufB)eeKcvKm05;p>?XSDo@a`2YcJ{Rokb;Zn(uNF`=tY+BozlH%5bEs+KaF0C7 z$C$T%%sXPcVeU#IPLf)xWb6&GEFvlk+F5s+>J>!tDtN>#ZM<$ZLI|7L?7Ya?HxrXj zVCLy8G;wO3PY>!yLf(D%-a)7vo{syOg}2|?1}pyDrZ>|^V#yToM1!*Um||$rNgc*b z)b`DZ=zl^1f;8oL@?A!Q!yDP3{1KB>;MlxboxEkjTSuSju`W4yqWsX&wnwK4u6*ew%F%Qlxq?+36iD`^RYN;5bJtgVQnM>9laqCcJc31 zJx4pbNb)*7_v>C02$tszq_jRC_nW7a<=xHuTn94yV`8y_l^>VRf#; z1Y{;x5=Lk%af?UL zbLTPeB|=2P4{-%b!jZPArJ{>8(`0n@W}e138D*Ry|A%EKG*nNPB>=DOJF@kJkZof} zt>LasK-2tuh}hY(^ipoBD(V$v-`w8D@#a?n>EAQ9M>|(%tJ7lA6f+$BB3>&quDz-j z&Xqa_CpNgx#&91BmINOW;wc@|T$SCFEi;#WN>mkfGGlJW4NcoHgY?-wZX`sT#e(!@ zx=vqpp)%~=gKyz9&pXK^;k@7~SUb>lEaLj$dyB4B9WPe(e?1Z91ThAx7JZRm+fNgd zDAcWe?nK@WtX4R_o0A$f9VD;Pn4es=XcI;Fb}V|(WOHr+V!VNktS=0Yu4b_@D82mq zXA_6uQlu;ys8gnaKYB+vA#t(%1@Wt{vt&kO`k2=mu*YCGaMxI^pPqC zT?g|Zp~<}743s73m4!cgyWhV%&jBZIp{!eXB3kEpDIB00NP73K)`xj=QBIeVl83@I zgCF6i&rG7mn@LXF=gIawShi}Vv5CS?#&n8x2>LofF;L69)>YtbnvAeVA0N3$anCZ~c5t-O^JLbG63MZ|pP|Q}l39mBz9(7B z_MR$?J?*Zw(HmRk&;d^VnPeMU3{BR1ZCY_ut_A$30*IrFq`%JYEpbI&y4P1{us)g{}@wbe;b2G(j2t-s4!GNNu>F+B>kpD zi6e-Wr2KAXo{aAPofy>{HOAV1gd3CM#y%{fTLLs$S4Wk4IS--Z5(FtZ{uYFa6MDF0 zv>d50?vy%QjQ>Ik8qdytFW9}#ERu*U!NYjY{>so*(Bb=RY1I}w_&8CzYye8`f)6Kb z7TxRICt|*KfkhF`UR~+menSrBqiV5I%qX-Mw|F~K7YWUF7({6f!+a17Tdz^GAb3}YUp)PM~cW8?zTk&7bpX$seK>QnC!j}iq zZ$8@%e1HUE>Gz!k4er??8l@C2^#u2 zNZ?d_yhqEN;LB?3RVrnQd)#kcOUvbg;v=_%?Bra(5>jfti&U=3{6ukJwRrWrdJMnBF+rI3vl1pW< zst*JHCTz9}#@id5C^4 zz*sIqOAWNTuE?p)3$I_;7w`2@&EQI3*?Z^WT3(fWRi0_tkBgRmmUa)5=7bv>9Is0w z0+H4SFF;+us=I0Ge|`zYMoRQ?_&?D-Um$LVlyPa^e$a9J0^2iLVKR&B4|zr_fMBuo zw5=3Tp-x?Qg(jlBShlpITMz$M^p9oVb5xIFnwg%mD`-t4%YH?FeZYRUz(!PYWd^hN zA7A?2Q{~5NPxFF_kqtucXgh5>AnqFT_Jzhfobv|XDCTIK*E37OwC7OswFo{VjG1Xn zLv~aMg=4SyzErtXkel${Ueed+i}4{sS!jZs4ehX+fEGl*kbfR%Mq7>96bY}}N!qYv zqxD?6Aw;iXpU-Kxs4Wi3{=tZ^cgHHgGt6gvs9L)6!nnitJCKs`XT3HW7R+aV zmQ_o#7FV;M84A57bTduvDf#_zF6y#;ZFOi|(gUyPOy-&CXRmjD%0>T>app&!^Ou&Z zNlJp=ih?$|X+}a9#+T`S;W0n}32<@gdxS1Oa;W1YNRVuIwLPM~_9Fp){h6STqpxkI zCrlZ?uAgG*q_}h8fi!glPtia{GM-^~%)b0OM#c^GQ#3WSX$DY=xh7-;+uHo-_t6A+ z=U|2@)bcGU(iIWMz}`kv)TA&gbp;i-c5{gWyW~}y3{2;fOEE0R7hT81WhhS@EHAWN zq3@j>hno^(^DaoxY*;V;T^b@k*Cgk#cYCH-GY9Bk8i_LU$Ze2bjdQ0#v2S}cj*vKK zG=j9~)zrC2w6q*ifV?l{PE7tYBPI?WiAO!9U24%~g?B_oR`LtPNVQBegYWR-^V|7= zjKGJJstdwlUgsR1gm>&4UXgU@4&Wkc;Q^a#_*+6=avh^g!%tI-zUdbopNpqW*_1UH zBU3|V0G=9mY@>>|#t)GB?Mo!0oC_+67@kS|-%-?y6<%n&SjmZ|8_p~>-^YQF=R=41d*PBg^Bz$8dU!X}Mx{u28G=eT_=foJ=7+eiauH4zhJ0iy4 z1!@&LRppg`;V_sv#ja7(wP^f*dJ2N3pF2!+d zWlFpo;gYP#C>16kcU0<0##bvQfH~7BHNTDXFQd)*nbCCt69q3rUr@oAu&QYcC*PKo z^s9NEo844RkRW{V@n+itd8>^9hlS#~j8B+D;Uv*C)qPx60#%odpzy9h$wbdLMjRV3 z8W~mVb+w$f`__@kDTQd#t27DCuFqvP&purhdw%e-R_M?85q; zW@l}>{1ykwd2-`jD>)R)05k_=TnTM#ejp=UV(JrGIN0lMB1er^5T|FJAh(5>QKJnK z5z1;K_4Z6;D|guB?J9vpbNm%2zao3x`o^sJ zBz_%dbP&rg#PY9IBJ7SNb?S5e`{CmA*8?OoPPpX+ML{$sU=Dkms$oK}%WpeSi4|{* zY8r00J3_KSLCo%>1uVMxxY_nzU70MyjoBM3l&S@;G+U(V1s`f?IV?`Z!&n01A|-G> zh6jDuvhQo>r3U6yPIplUrgwl@;aJ{M4#P6BzRb45!D$Ng;CgC#3=uBoHP_C z`fxtU!QnVWzmnZ@>OdcsccnLq4#5vj#<4Z-k=nkz7Mt)v9>{I zqsa2mXdHqkhhYSs*}NbU=ZFAEbw%CedX;2-FUVGo|LGfLe=HqRdj<4#8z`)A!vIZl zr~CYrkW32#qJd}Ui_)_}5A$<59mNecKI|?H+JwEzd5H59Vs0cGq5FG9Ng6)hMtoHj zV8Ffm&U2Ds#okhe+We2l3v#J>i~Y}yXl|KzJ?+Fo&*E|)jS?>P=!IQnam02F>b!zt zbf=#3;lxzicihxkbZx@ovxgc8YG7EIVtQ+a^4b8Y{SH%{r-?lw|GYcK`bIg#h^0pg(+bw=>K_Zb9cKZh|>gh5{ z28Dmoh#GNMU~xqNetyVh{%!V9Mjsbcpv(_cZo54R&aBCaobRQdxiwj8dY`*c4MS@j zJIpj{@Gc=!boZ~%n4^cMZ>kPOaI;oFP%~xV(i02!+~gUXUiu*%is6#j-x|g+6U>I4Gn&*uP%(=<@4+Qv?HP!PBX{ zw9)~_kiwZL9G*iYr>ap^Avv$Oek(jdvwDCZ48R-=nsP;(;>Y zgIPDYXkV}Iv+9%#1C0{pnhEFOgX9hz>&-QzT$*)P0y}HzeO2Nv&@~DK`I>@&CMzLB zoDI#||N3mbDn;wt%7L%mX&AbL@XSK%3EU=93cXEBMQ6`f4wjqCA5W%x@3xp~D1}?| zE!+eZRcLFvwTX`TIal}UDHjTVcPWn69b-Z*KL(bq$rQ;YuH?ywTn0AdVD-orrhoCF zgdJNOr|03Scw)yFGKW;%x=snscN|}%1fMgjV(q{MYySK)XEO)?H5e$Ld$u^B!UXh? z2&FKnx_PAAUTgokY^BA-+o)23+>DlY1Y{)46jjkV;ub7gm2XC4EkUyY*|ai5=3b*( z{nZHvgYAxb-iOUUas@|NixNDJeutkHD7$;b+8GH)Drmj(8EtG(D9g}@&^>5YeSx-O z#X}%#!pcDC7@y_Lq&ABt*8{Y!yiaM!tSObN0p4AYNZvkZ^0DxbMA~wDUtrz>xS>8X}2S%*#B9DQunloq$H>el6mnAx&(cV;%3>8;Mp{Zk*al z!Yf93D$TcR_I@uZW=npa8d-jE*EBA0?{--RQ2l9JJ!VJ;ZxeMwKl#sA%(<8qZJh}B z(a(CdEa1Of=)jiZN|OfpS47nl$@z|L3Ax6AB%X{ zT?vmSEYeLz4+--w-SqlWSUjOpsr|D3zI7(F0-2q3~4od z=L=%rvu6D*IjN0UyDhZtb=74rm6ToQn^+2J{E#@c+|P&pR59NQ+rpD~$SDZU*YUq& z*pzMgljVP+m%c9~tfWgEY`XcM>w3+Wc{=^}b!VK(03@o(;O9sIiSk1JuKN`0I9yh7 zK0gi?U77nUSyo_ScB#D5l7?I)dP=Op3#;4 z2QbzF!PzOf-KdA*lz(c3wKBlSK5R>xeadJd^`nD6j8*OjL%$H3F(oODR<+Uzq#QYr z^xFtWXUX0ZS-`8-pY8aLP9XHRc4LuhvKO*1U}C2GxFKuy=P2H%GvTLC?K8bNID)QF z=B+R;+inYVSC_RdCa@m)xHT*u1^b=+xb{NIQv%~BTK*ijH-MRuGPpRdmrr1ndSU&G zaH^oT@3mp0v!v4jNU(a!?qZo2U8n2|H|=MvV~u9{OdLD~T2?n9aYZJQ1#FiRKvu3*Ikv<58C!2{S6oj|bOeYYkOtDgqSWOMQ4JH8-9J|v4g>dus9?i=A1 z7d2Q3R9ga#fWeGI{8&ydFZ@A&%8LiT7v~%eijr!bY0*6{Dc#tat3?T_9jalA)ivH` zfsY5T!XCA~-Y$=N>y=CC&ni^vA5v?ZMm>3d-!OM=z$PleS5tR%NEZ^H%b(tQN@djT zfOKK+kas;i-}WGDQw(4NmrO@|3$@knuAK)0)gBGtui7~D#p;olUjS{rjH+K)i9RIn zg-;Ds*HjyQf41c&x8Ia>pC2@7e&mj*43WR(cPIMj!iS}bsX71x9?fi9P_;MD_XsFP zm=?eyEW)#)CDbHky)04Iq~DI)x%~_DeKTnV)S790f9qp3pE4$Au8hVzjVOaH717j>G z8s548?MeI6C`K*@r?lr%X)!UKCS@c82^dPJn7mmzlhZgh`SzYtjy_)|GM8t)*DGY@ zV(v`Y4Tc01S9>>%BukGi8mY~FP%WG`(? zpzMpx>U^~4fRT%l{8;I`%!jmapW2&TZj;3=?;BVSdUoW!!HPK<)da1;XemVjlc7I8l(H&de>=^V z-oAd6be@$yVmb3d!wn-ks7p9qVcoy*@f@WV^NLq9$SZt0&z#E9|I~+d{sm^1ZlPbG zQ*ZfmP3lUO|AR~4n9~Hhog;Z_ zgvHK_S>KLxt`-V1&cb&=P&DcG{j3B2fZK=kpT@7{5*>;i%DtYARkQw)$3!+KtkBBs ze+e&Hy>@eme$=ME>(|-?)$6u|ZvYPgU|v?kIr%z3$n(kWw^N@F|M=a=u8_X_)ygzU zCg+6~goeLcG`~9*H|L-cp610`mz@V8jf{1MoRt-3A{>QBe;!Q_JkTx53=+<_Jb9?W6uj=As4n?XJswY4hQz>updQzx-Jj95C-$Ehev+%E1-{4_x9S_p9lQKfm_A zfqpeiMd8`{!h2kBt&yj~R0#&~u|oe25T<8PQlY}Ji(8XUX+ZP-Tr&9leB&!uVOwNf z%WNhaO=#P?uUO_I|EhpNIln`$l>4_87;D0Ag!b8f9zxA>D--oXjB^slM zngqrc*lr(*A>0oi*Lpc)^_S^5emb3b9u7=u^AP>$H66|tV?S<4T?>D#upQF@%1%G;BrgXB# zTM91>V0z1^w3-Mdmr*b2J?%l92;>P5SkWDZ1PiXa8laOJc`7tWg|koFo3&klp0jAW zs9M#)`mjgn#Q7NR6+S7+Eod6k7T7NBN;r(hdiEddeR z+!Dac)=k2MDL=mO?W!A$lKiQ}W0WC!{h{umQY3U6H_#W49Athj z^jca;$2{A4O`wzc4Y`GuE?h$sK7(XfL zhbR1SSC6DvQ^kzK7pxlLW0Kpr7KSZX;oJxP0S(m?Qd08OA2LpUZM;wt10C$5M3wug z)U*Y4di9m(EXcLf&i7_cPVMGc(v&icGAvBwsmoS(MR%gy^;if01H4ufB>=fo%fv%u z4PQ>2LaZb+X2}qD+LWB?Vz*c2i7=t-oie^Rja-@DMX=!w{{BTsv(1Sm*FJ_Pg2M_w zO042sDI1*seuar%Um7ecZB(> zP3`9cFpnBSNXvmL*cb~4tP(Jv*SSN~sphHd3nR;mf6%)DG|0Fa$0j;4Tr1Sg3Den( z5>cnP5GWCQq>@|~J;C^b9E1|Ld@^72(t!S-)?71nuQj90jW%M8d}Tm%-?*^DOc@o< zk=7>P70H))v^I`lDM`CB#w_f$B3_*}+ea+hG2$Civ!A_ZLr}Vs0j8B$yIKF_IQRW) z@R8=7i*T_#I(HjamNKg8Ibn2vgNVU;YxL$OZkcGWBz;|nPRq}PN`73-%Wp$;vLJeN zs*1$s1pmOr2urJVj1**V-qETfSQgtD$J&050xwW{4b|ojSS?qJQ?})aq$uSgLOE=d zWcVzeZ?|3a)9J!Y7Swo-DTtt;d07kG+NPduh*V>$oOxmFOwfULTnkFr3bW^MtI&3X z=bg3*?r-CYh*=GCt;@t(R+B3n>t5_5X9a~$7YMuDBBaf|%<&S1Gd&*OZgr}mZHgr3 zfXzwP>?DhYka{}+cj8 zhVO8a*m&L}{2Lh-e(KN2qS#e^CQO=m>uo7(VWafJ?Uowt8iRpcMpf-K^|K$n*BLD{ zEIMiK67u)@V{ulXT@kH2IbkVdXf15Q2+mq;Y2C)sbJLrb;7vK5 zX6mA6@?*@KVS}F+EiKR(d@x#M4Bxd0P%WrDNQvv^5iYmW=1U)(>M3`Nf!f$JY(plg ztePZMu>rH{m;bgUsk$|$NTa6dLKH@;v>j)Lt`XRakkITEiBjT;Qr?-;(9oE7x3a7f zCaI6`KTbWZuVy06cC)U-qQ@*c$;RTDD{sjA8oFo;wySABqjoVax(9{4wZ`%8Rs-<@f z7397#QwBRy)_Z-~>Eccn4k6pAJhLC=dE$A$sD?T${9hHwIV+3)of7QXG7G~lIF$bO z?a-TDE&S3lA3N6fscy~Q9B)`dFkLMdn*4&Tj&1GgyaA5 z&1G|&TkbQ4p_txQOwDcNHkaHrx0<;xmoDa-LeZ4ve#_gnk-21>&_$ZNgxq5yCCMe1 zN+jyze1G_y?>XP^Kk+!P^LpM6VrCY19v}=kaq+U@G{DTn1O#vuMEiU2w$r$U=9!$DLzl{?O3mc@kdG|51%)1 zDI{4u9DQ)9cfiJqa5Glz#3EMOFDvR!=_uP5=hCvL7s(+UsH?9vr}dl^j_ZCI`(29r zaI7p+Hm`vkwtCyOO!L~t=RcUrcT^ktSx)>Yvu>g!&a^9&HR{}Lakg{IOBbc_gzA}n zfj`pw(U)?8tje4`6w|qd^+k_G?4tieJ_KuB=uZ64V|QT=$Bvhj;uLcqyQ!C;nC2cclS!4)Bo=dP#Pji9b_Vzor=m-7ej^|sCn*QMYrw%X`yfo`mIZ7E3Xa)WWiz=li^12CGX`cyKSOo*|$fp1twPh*JjF(XN z?be2oe+U`G+rJ{#{9v+k$_o1^`g50Q<0=C1+_E@<$s0H51p1`VjK~FBi7xrBlEzP| z;>7`&#O;~A>6H;UX|jV~HL!XGDY_B>sdq`|pJU4gfModcxUcRVnu4_5e)=aWsI*Ss zT&Y>G$chBN9w_1^pBcM?hG*y=_S}1U^i-|2Tlc9HJCdefk9hm#DIfODHFjzpRXAam zy+{zSah4c|_*}!5L_ytoREb?wOHNqKP z&#$XT@l-4y)I?G7t<|1ux>-owymQw+EDPFNTKrSM!3 zA(wLQTtf7%UUZO%1JzVHK<}`xpiYC|4b%L^*S<2x6=+63^7{BFQb-oTc)tpxe3SB3 zeVptKKTBuGjsdEL;;Z(-&o7$td?5;#w-o2Rc5={-D$0YMPJh-@aJ&s}_3jP+2Ll!5 z%$5WF1?2azxt_J<62c!A{$P;I zWx1G)p3PvJ?friGTTA**#ImRhpSVgKpv+ANe~bF6K-|C>AO7nuP*-NqP${)gL-~ed08u9Rz0dQ+m-2g@Vq_Q0OdNjnAnvQb zl%OjW=fs2i#yDqxE=EqiAP*2fa`BjySe2NcP3$&{Nv_pWD_rb-_yu2)xqwLc=JKXN zjBt34PSZm_Z>^=1YgL=dHTVnO^%<3t)8Z8vgyIB8MgNLq2%_{VtSg+5yj`qO*LJ&X zb$2RBCf7k!7%=bd-zU^Bng?iKUJ7<1XWKHId_sgCuEKdo1N%p9xLA_-{*BQaXFmAO zUgT|(3ykl5h&Jac6lnjKo5mH*5XT2^RhruKgdn}4R{q&wvifGDp*`gELwF2ip${*Y z2HVz4K$d<&a+Nff*8!sDWl|9wk&1vx2A)fAe#+5FP$&CgvVOLIvTi_C<#3=6AvdE> zSEoQf{G?$h5nU#8B8y-$MXi^t5#E~DQMg$ILb1LCsdr)4;qix|uY?T8>D$iRw{EU8 zEp_G5S!E%H@rKbX6o9LoR;XawU$cx%BL!tQC9dq|V3NwR0T9Z)>)9!-xbprb~)v9lIt~^D%mu=)_8=%b^;V)@VidunWLQ2xdh|Eq3>G^cujjM zh%aH0vT zz|MUdq|Yz}ry-o7G}JpeQGLmpfdG)XS6j9lCn~TL^|!>W-#CurmBt649(08xFA`1+ z2x*HUK}$c31tkdeYp=NsEMpqM6Rtf}#F|KcAzEPNcGag46F5o#&yyyq-E>lJh9#zA zqA|bX*(;1n&Em7}PL)f4{O)_Oz4Zguk@~ku z7(ovkUI7l4itSD^t3}rGeS!@#VHR0kAOM!bxBKTwGv1adXL@sStZ&-uB9dDYDr;z; zduQTw@6q#@L&8=IHodNFCHh7jYkK$AgX@`V#VAKETeNMA1b&lY<SJK_>A2dbHqC{abSTcAx#$=1rH5g)4Zo+S+0 zar?l5?BrbiXOJ_RwQK`Z-y$7wwMDtuNoZ+&PS9HSbn&WpTe&qOaq!+sQv#Ay2(F4-Y2+Ci; zjA3ZA?f+pKi>hkhhykn5G2(ve#ns+De_8Kvx(TPBUwKViazcXb06x;1CGhp(+y26E zZJ()$YnIweHglNm;~mLzTx%^Pot}Dgst!VW3NRyz2v@QRPUm#8sc**e^?DzI3mkHx{PVcz|e-=RnS|_Lk)8N&rF~$2|xhnGQ_SH^< zcOw0%X;33H+SN z*UHY-w3ICM+3rNm-SeWfU>G1h`mqMSv6eSe+syJkk#wTPS##T8(dAOqpO=>y zfJX=&E`UleV+a3)*Ao|SW=m1X0E5Q)=@!|I;x@s%?%TM3D#=KTxk%8uNMs866hecX zYTQ6!YH!0*e)na?9K_X0J9uDG4xWiEt9Rv$tz;DWw6-Hx3FhW?{WUzrZ`_wJ25Zzb zatS=^LvTY6W|2wv>&f2pg-etD4E7q}ic5krPj|vZRauA?L{%-aB$5*%>E5d3Qjmok zCW`FD152IPtIcvF5l&94k$dQAR0jZ!b5A$s(B} zbEq+5F@o&_jtRF*S8Jc`?k~18V-k3N93l0MMALan4!y2l2~nmT{fduzT!AsEhOu_3 zRgVk%FgetzBTTeit9FfUX93JUKllCv?G67XAb^|A5aDx00>MOnqm7rpJXBQ)UTd^l zpi|3=muF@JbvnzD_ArrZmW;%|Yy`Ua;FEn@d$74qUXh4|CG5I9C&lV22p{KFypV0+ zKB?agUMX%vV*;{TGoOl{V(>s3lg*(GO+yFqYVG%}vmMl{q3%<`WF^XIB+S@T(Df+_ z0kBGBFz_0rDvvs3p(zh;bx+Dqrx0f9LT^=~EN^^gHq6)MyiICs+v={pta`R;tE~6{ zDdy#jm4!MW0QUO(p^6R_Hj*Ox*6r!>$s%&vh7zR|6gu7YcSRssehRd%;_r{3hzos% zhA#P5xmWi~Yi)7UpaMhZ>FPxGK&a8+BZ=UqKtvo$F*Gsmg)5m?qfc+_saoItA1e}r zsA>o%6_Jiw{59>~f6mp)xq4%Aa+0^f^=KYO|EZDRD+X2qg2V|BctanI|6o-rukY1p zo9byDXnAWbS7h*AQj0g69?q^#l9CSMVq0lE9;QPO?FH~(=`R~V?T@+6RsXczSVZ6H z_12Ese5IZpP>XXV;}G`h#UIdC@G$X57DNXvV+X)fu^l4ON-!?+YGA9&5t+evpr`{o{5O zC%*0l>3{V*^my1Cj~ZA`ykq;ya(D-U&0tCTxC zfYW;TA#eiGmOIXb#!Nw<7;DIUnC^X1_%22XMxIJEh~48?ZML;>sFi%!du-lB|AXx zU9Hp`lwU^+np@<8B)ayXK=Nh0vquQQKDyWLPDD2F7Hsha+Moy=C9Of$74J?sGHh3? zV*ZgP9(|ZqX-b?G3|hZSdBLR=YnM2w!p1Bb@D;MsIdhzZE8sjn2D~(mG${ zjq?CRxY!0tE({(R1@XJ>FJLh!CpYmbD@#;nffnBzPX2dH_!iS3!l$)v<@Tv71E>t@XeZEX3P}u>KcAR-!x#6AQ9m-j zQ`KgQ%EOmKJuj13&gTV&e)me%cjaP=dXl1kFw8I80sKO-89;-Lt)`qwH`1ZmLq`8v VsOx`G6SkS5tHFfg7&rb-{|E6f{5t>u literal 0 HcmV?d00001 diff --git a/docs/html/art_crt_off.png b/docs/html/art_crt_off.png new file mode 100644 index 0000000000000000000000000000000000000000..57add5cbac5c02d4dadea22c290818f50bd07bf4 GIT binary patch literal 1838 zcmb_dX;4#F7<~Z&B`S*wRA^)oG$riHqCkKNkbnp#I#eK{px7}rNYa|15K>$Qh$AI9 z5M+^Rz%n?1A|XHu$RZ^Io!UTTiLopJQ9=PBgaGM_0mlC6IGxU%_wJqd-R0fyJLlZ= zu%m(7ba(3l0I&^%MqvQ}QU>;W$OlIFl>%O&(lG5|n# zs2&J#w?H*a=Q~V@zs?&in6{xUiTq9sPHe!Se2-HHrbLg4R{mzqe;y=3ccIM-soTz; z#AF2)vpw-4P{UB4;N*H6L+i{REe#IgJ8bEeKeV0b&}3!co;(`qugjZHiEFAnF9o~Pghbev$4{nF4vX-9(DEogz~C1D-xEYzHm{7mvnS_M;o-FiLuqN+<8XeN1fa=-`>@a`w^ z8$&$u>Lu@7X;FMj11mUiS3R_=rhlqZ&+glA$|-tyQa;JSJ^#L>Fp=ELbBV7gn(k^C zUBtL-B*76*DnL~wG8;Tmb^!~%`PBN364OBH)j3-_VoXs?j__8RKxyQ0bla zoh3#X_HKt%Rs{MO>8Cb04r&f248cr$DA*O&0jH5|SjMHsHU}ll4r)Gb#Y4?yf3{0S^h8y(%D2xql zs3ZRx{4CYbwJ%1#UMy$4$QF~yl)))R?(8yoo+n=0UA@L?bq#bW=LryV0rGs2PzQyR zj45ApeHr)dBta_*#}?-)efrFHDT&Vo4!h(eQf7TpCr_j~$Gf z)SWhv1wM_14=c_>DGshojbc+v)tQ^4vdLHDCLo6E>-R2u#<3nCijkJrO+I+m}H-k%GIL9$i%u6h56?xIt(M~ia|cQIxaE}6{@&7ppOwI{KIxpGtXX|d_^0|Q!PYGr=|0UH8|kU5;#ZjirK S|3$s(+QaxCMOFBnPW>AWIMI;+ literal 0 HcmV?d00001 diff --git a/docs/html/art_crt_on.jpg b/docs/html/art_crt_on.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec42225dd009bb6144a548b942c4eb1b1b5616c8 GIT binary patch literal 15397 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 z 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 Y?xVwxqmL;2uHJfAl2?-}lQ9eWKdbBP&j0`b literal 0 HcmV?d00001 diff --git a/docs/html/art_mask4.png b/docs/html/art_mask4.png new file mode 100644 index 0000000000000000000000000000000000000000..9ebeaaaf9aabde3987aceb30bc101930da6751f3 GIT binary patch literal 11164 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 Mrz%?kH2VDi09iB%TL1t6 literal 0 HcmV?d00001 diff --git a/docs/html/art_mask5.png b/docs/html/art_mask5.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7924307f52f642b3f5b8d98c7ecc011990efd3 GIT binary patch literal 11491 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 literal 0 HcmV?d00001 diff --git a/docs/html/art_picker.jpg b/docs/html/art_picker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8211fbf352cc8023637fc6292175e8dd3894a50f GIT binary patch literal 45658 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 literal 0 HcmV?d00001 diff --git a/docs/html/darkgrey.css b/docs/html/darkgrey.css new file mode 100755 index 0000000..c4d16f5 --- /dev/null +++ b/docs/html/darkgrey.css @@ -0,0 +1,130 @@ +body +{ + font-family: sans-serif; + color: #D8D8D8; + background-color: #505050; + margin: 0px; +} + +.main +{ + position: relative; + left: 10%; + width: 80%; +} + +.colorbar +{ + height: 32px; + background-repeat: repeat-x; + background-image: url('c64pal_strip_micro64b.png'); +} + +.titlebar +{ + background-color: #707070; + text-align: right; + padding: 20px 10% 20px 10%; +} + +.section +{ + padding: 0px 10% 0px 10%; + width: 80%; +} + +.pagetitle +{ + font-size: x-large; +} + +.pagetitle_left +{ + text-align: left; + font-size: x-large; +} + +.shadebar +{ + padding: 0px 10% 0px 10%; + height: 32px; + background-color: #404040; + text-align: left; + line-height: 32px; +} + +.centered +{ + text-align: center; +} + +.big +{ + font-size: x-large; + display: inline; +} + +.tiledesc +{ + text-align: right; +} + +.small +{ + font-size: medium; +} + +.block +{ + //text-indent: 50px; + padding: 0px 5% 0px 5%; +} + +tt +{ + font-size: 16px; + background-color: #484848; +} + +code +{ + border: 1px solid #aaa; + padding: 1px; + border-radius: 3px; + background-color: #484848; +} + +h1 +{ + font-size: large; + margin: 0px; +} + +a +{ + text-decoration: none; +} + +a:link +{ + color: #E8E8E8; + background-color: #686868; +} + +a:visited +{ + color: #D8D8D8; + background-color: #606060; +} + +a:hover +{ + color: #303030; + background-color: #FFFFFF; +} + +a:active +{ + color: #FFFFFF; + background-color: #000000; +} diff --git a/docs/html/exidy_sorcerer_converted.png b/docs/html/exidy_sorcerer_converted.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d4f3075a063b92a08326a5bcbeca7b0ee942a3 GIT binary patch literal 5033 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 ZrC+X@mwNha?|(lhmS#4lMO1p^e*h1B%r5`{ literal 0 HcmV?d00001 diff --git a/docs/html/exidy_sorcerer_orig.jpg b/docs/html/exidy_sorcerer_orig.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4bb0fd4b59f413ab2ad701d9dfa1a7334d7e054e GIT binary patch literal 20367 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 literal 0 HcmV?d00001 diff --git a/docs/html/game_collision.jpg b/docs/html/game_collision.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7bb5d8a7d46055c895d11bb8ff3d181215de257 GIT binary patch literal 66803 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 literal 0 HcmV?d00001 diff --git a/docs/html/game_cronotest.png b/docs/html/game_cronotest.png new file mode 100644 index 0000000000000000000000000000000000000000..a84a4890acae561377b57d5d4941b72230f93342 GIT binary patch literal 21799 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 literal 0 HcmV?d00001 diff --git a/docs/html/game_maze.png b/docs/html/game_maze.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4c857483b4033e4a778b6d56f5e1519b365387 GIT binary patch literal 24119 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 literal 0 HcmV?d00001 diff --git a/docs/html/game_platso.png b/docs/html/game_platso.png new file mode 100644 index 0000000000000000000000000000000000000000..4ad88fc1b6f935086cf8e726a6a728be5d2577be GIT binary patch literal 10284 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 literal 0 HcmV?d00001 diff --git a/docs/html/game_propseditor.jpg b/docs/html/game_propseditor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee16dad263944921bc1d3ec1d52b3a3c9dbd5ff4 GIT binary patch literal 62522 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 + + + Playscii - Documentation (Art Mode) + + + + + +

+
+ +
+ +
+ +

+ Using Playscii's Art Mode, you can create art and animation. If you see "Art Mode" in the top right corner of the Playscii application window, you're in Art Mode. This page covers all the things you can do in this mode. +

+ +
+ +

Table of Contents

+ +
+ +
+ +

Painting Basics

+
+

+ A Playscii document is a grid of tiles called an Art. Each tile in an Art has a character, a foreground color, a background color, and a transform. Click and hold the primary mouse button, or Enter/Return, anywhere on a document to paint with the active character, color, and transform. +

+
+ +

Tile Character/Color/Transform

+
+

+ Character and foreground/background color are pretty self-explanatory. "Transform" refers to whether a character is flipped (horizontally or vertically, aka the X and Y axes) or rotated (90, 180, or 270 degrees). The current active character, colors, and transform are always shown on the status bar along the bottom edge of the screen. +

+
image of status bar
+

+ In this image, the 'A' character is selected, green is the foreground color, blue is the background color, and the transform is "normal", ie not flipped or rotated. +

+
+ +

Transparency

+
+

+ In addition to the regular colors, the foreground and/or background color for a tile can also be transparent. Anything transparent shows through to whatever (if anything) is behind it. In Playscii's user interface, this special color is visually represented with a red X. +

+
image of status bar
+

+ In this image, the '7' character is selected, green is the foreground color, the background is transparent, and the transform is "Flip X" ie flipped horizontally. +

+
+ +

the Picker

+
+

+ Press and hold space bar to bring up the "picker" that lets you quickly select characters, colors, and transforms. Here's a diagram showing all the features of the picker: +

+
image of picker with elements labeled by number
+
    +
  1. Character swatch - click a character here to set it as the active character for painting.
  2. +
  3. Color swatch - click the primary mouse button on a color here to set it as the active foreground color, secondary mouse click to set it as the active background color.
  4. +
  5. Transform selector - click one of the items here to set a different active transform (see transform section above).
  6. +
  7. Tool/picker tabs - click the left tab to bring up settings for each tool (see Tools and Affects Masks sections below), click the right tab to bring up the picker view.
  8. +
  9. Current character set - click this to bring up the character set selector.
  10. +
  11. Current palette - click this to bring up the palette selector.
  12. +
  13. Character swatch size - click the + and - buttons to change the character swatch's display size - bump it up if characters are too hard to see or click on your display.
  14. +
+

+ If it's more comfortable for you to tap space bar rather than hold it, you can change that behavior with "Picker toggle key: press/hold" in the Tool menu. +

+
+ +

Menu Bar

+
+

+ The menu bar along the top edge of the screen provides access to much of Playscii's functionality. Click a menu name to open it and select from the available commands. Many commands have an associated keyboard shortcut, displayed to the right of the menu entry. +

+
the Art Mode menu bar
+
+ +

Tools

+
+

+ You can pick the current tool from the Tool menu bar. The cursor will always show an icon indicating the currently selected tool. +

+
    +
  • Paint tool icon Paint - change the tiles within the cursor area to the current active character/colors/transform. +
  • Erase tool icon Erase - "erase" the tiles within the cursor area, removing characters and leaving only the current active background color. +
  • Rotate tool icon Rotate - rotate the tiles within the cursor area 90 degrees, relative to each character's current rotation. +
  • Grab tool icon Grab - set the character/color/transform of the tile beneath the cursor as the current active character/color/transform. Secondary mouse button does this no matter what tool you have selected, so that you can very quickly sample what you need and continue painting. +
  • Text tool icon Text - click anywhere in the document to start entering alphanumeric text at that location. Press Escape to stop entering text. +
  • Select tool icon Select - click and drag the mouse (or hold Enter/Return + arrow keys) to define a selected area. Other tool operations will be restricted to the selection area, and you can also cut/copy the selected area and paint it with the Paste tool (see below). Holding Shift while dragging a box adds to the current selection area, and holding Control while dragging a box subtracts it from the current selection area. Holding neither mod key replaces any previous selection. +
  • Paste tool icon Paste - paint with the last cut/copied tiles. +
+
+ +

Tool Settings

+
+

+ The Picker lets you change the settings for some tools: +

+
    +
  • Brush Size - increase or decrease the size of the square area a tool affects. Doesn't apply to the grab, text, select, and paste tools.
  • +
  • "Affects character / foreground color / background color / transform" masks - by default a tool will affect all of these things, but a tool's effect on each tile attribute can be disabled selectively. Hovering the cursor over a swatch will always preview the paint result, which might otherwise be a bit difficult to visualize. +

    +

    + + + + + + + + + + + + + + + + +
    affects: all affects: fg/bg color and xform, no char affects: bg color and xform, no char and fg color
    Affects: all
    Affects: colors and transform, but not character
    Affects: BG color and transform, but not character and FG color
    affects: bg color affects: char and bg color, no fg color and xform
    Affects: only background color
    Affects: character and BG color, but not FG color and transform
    +
    +

    +
  • +
+
+ +

Panning and Zooming

+
+

+ To zoom the view closer or further from the document you're editing, press Shift-X or Shift-Z respectively or scroll the mouse wheel up or down. +

+

+ Pressing = or - will snap-zoom the view closer or further in "pixel exact" increments, which gives a 1:1, 2:2, 4:4 etc correspondance between what you're seeing and the pixel size of your character set. This can be useful if you intend to export images where exact dimensions are important. +

+

+ To pan the view, use shift and the arrow keys or W/A/S/D (for up/left/down/right respectively), or click and drag the middle mouse button. +

+

+ Pressing Z will center the view on your art and snap the view to a 1:1 pixel exact zoom level. Pressing Z again without moving the view will return it to its previous location. This is good for stepping back for a quick look at the overall piece while you're working on details. +

+

+ You can also set the zoom level manually with "Set camera zoom..." in the View menu. +

+

+ You can also tilt the camera with "Camera tilt" in the View menu, but this isn't useful for much and is a bit broken at the moment. +

+
+ +

the Grid

+
+

+ By default Playscii displays a light grid over your art showing the boundaries of each tile, but you can turn this off with "Grid" in the View menu. +

+
+ +

CRT Filter

+
+

+ Playscii can display your work with a screen effect that emulates the look of old TVs or Monitors, ie cathode ray tubes. You can enable this with "CRT filter" in the View menu, or pressing Shift-R. If Playscii runs slowly on your computer, try disabling the CRT filter. +

+
+ + + + + + + + +
CRT filter on CRT filter off
CRT filter on
CRT filter off
+
+
+ +

Working with Documents

+
+

+ You can save the current document, create a new document, and open a previously saved document from the File menu. You can have multiple documents open at the same time and switch between them by pressing Control-Tab, while Shift-Control-Tab cycles backwards through open documents. +

+

+You can also see a list of all open documents at the bottom of the Art menu. +

+
+ +

Cropping and Resizing

+
+

+ You can crop a document by selecting an area with the Select tool and selecting "Crop to selection" from the Art menu. +

+

+ You can resize a document with "Resize" from the Art menu. This opens a dialog where you can enter the new desired size. If the desired size is smaller than the current size, you can specify a tile to be the new top left corner in the "Crop Start X/Y" fields. +

+
+ +

Flipping

+
+

+ You can flip an entire document, horizontally or vertically (called "Mirror" and "Flip" in some other art programs), with "Flip horizontally" and "Flip vertically" from the Art menu. The "Flip affects xforms" setting determines whether or not this operation also flips each individual tile by changing its transform. +

+
+ +

Layers

+
+

+ Playscii documents can have multiple layers, similar to Photoshop or GIMP. You can position these layers in 3D space for a parallax effect. +

+

+ In the Layer menu, you can create a new blank layer with "Add layer" or duplicate an existing one with "Duplicate this layer". The dialog will ask you to enter a name for the layer (purely for ease of identification) and a "Z-depth", ie how far from the default base depth, you want the layer to appear at. The following two Layer menu items let you change these two respective values. +

+

+ The "current active layer" is the one that your tools affect. You can cycle which layer is active with "Next layer" and "Previous layer", or with [ and ]. +

+

+ You can also select which layer is active in the layer list at the bottom of the Layer menu. The number of the current active layer is always shown in the status bar and corresponds to the order of this list. +

+
image of layer menu and status bar
+

+ When working on a particular layer, sometimes you want to see the other layers and sometimes you don't. "Inactive layers: Visible/Dim/Invisible" in the Layer menu cycles through three settings: all layers are 100% visible, non-active layers are dim but still partially visible, and non-active layers are completely hidden. +

+
+ +

Animation and Frames

+
+

+ Playscii documents can be animated, with multiple frames that each display for a "hold time" before advancing to the next. For documents with more than one frame, animation playback can be started and paused in Art Mode with "Start/Stop animation playback" in the Frame menu, or P. +

+

+ The "current active frame" is the one shown in the main editing view, that your tools affect. You can advance the currently active frame with "Next frame" and "Previous frame" in the Frame menu, or < and >. +

+

+ In the Frame menu, you can create a new blank frame with "Add frame" or duplicate an existing one with "Duplicate this frame". The dialog will ask you to enter a hold time for the new frame, and an index - the number the new frame should be inserted at in the 1-to-N sequence. You can change a frame's hold time and sequence index with the subsequent Frame menu items. You can also set all frame hold times to be the same with "Change all frames' hold times". +

+

+ Seeing the next and/or previous frames in the sequence, an "onion skin" view as it's called in traditional animation, can be a big help when animating. "Show onion skin frames", or O, toggles this off and on. In that same section of the Frame menu you can specify how many frames to show, as well as whether only previous frames, only next frames, or both are shown. +

+
+ +

Character Set Selector

+
+

+ By default Playscii lets you paint with the Commodore 64 PETSCII character set, but it supports many other sets out of the box, and you can define your own. The character set selector lets you pick from the the available sets. Clicking the "Set" button in this selector changes the current document's character set. This change doesn't affect the character index numbers of your actual document, so it's safe to experiment with different sets. +

+
+ +

Color Palette Selector

+
+

+ Similar to the character set selector, this selector lets you choose a different color palette from the default Commodore 64 palette. You can also define your own with nothing more than an image. +

+
+ +

Importing and Exporting

+
+

+ New with version 0.9.0, Playscii has an Import/Export plugin system you can use to get images in and out of Playscii from other formats. For example, you can export your art into a standard image format for easy sharing, export animations in GIF format, convert bitmap images into ASCII, and import art that was originally created in other ASCII formats or even text files. +

+
image of importer chooser
+

+ As it's a plugin system, you can also write your own converters. Playscii's built-in converters are stored in its formats/ subfolder, and you can place any you write in the formats/ subfolder of your Playscii documents folder. Weighing in at under 30 lines of code, the Plain Text Importer is a good example of how to get data from a very simple format into a Playscii art document. +

+
+ +

Image and Animation Export

+
+

+ Playscii documents use a custom file format with a .PSCI extension which saves things like tile and layer data, but you may want to export your art as a conventional bitmap image. You can export the current active frame of the current document to a PNG format image with "Export" in the File menu and then selecting "PNG image". You'll then see an options screen allowing you to set the pixel dimensions of the output, and whether or not it uses the CRT filter. +

+

+ You can also export animated documents in animated GIF format with "Animated GIF image" in the exporter chooser. GIF image animation uses the same "frame hold time" concept that Playscii uses, so the resulting GIF should look the same as it does in Playscii. +

+

+ If you're making a game in another engine and just using Playscii to paint sprites, you might want to do something like export a series of images for each layer in an Art, or each frame in an animation. The "PNG image set" exporter will take care of this for you. It provides the same options as the single image PNG exporter, plus the option to export frames and/or layers, and gives you a preview of what the exported filenames will look like. The Control-E shortcut for "run last exporter on current Art" can be especially useful here if you have multiple pieces of art open. +

+ +

Bitmap Image Conversion

+
+

+ Converting a Playscii document to a conventional bitmap image is very straightforward and preserves the image 100%, but doing the reverse is trickier and can have very aesthetically unique results. +

+
+ + + + + + + + +
sample bitmap image sample image, converted to PETSCII
Before
After
+
+

+ With the "Bitmap image" importer under "Import" in the File menu, you can select a bitmap image in JPEG or PNG format to convert into Playscii using the current document character set. An options screen then lets you specify whether to use the current document's palette, or generate a new one from the source image (as with Palette from File), as well as define the dimensions of the new art document. +

+

+ In brief, here's how the conversion process works: the source image is first resized to the current document size and its colors converted to the current palette. Each tile-sized block in the source image is then compared against all possible combinations of character and foreground/background color. When a best fit is found, that tile is painted at the source block's location and the next block is converted. This process is quite computationally intensive and may take a long time, even on fast computers. You can press Escape at any time to abort it. +

+

+ The document size and color palette at the time of conversion have a big impact on the look of the final result, so you may want to experiment with different settings. +

+
+ +

Custom Character Sets

+
+

+ Playscii includes several classic character sets from old computer systems, which you can preview and select in the Character Set Selector. You can also define custom character sets. +

+

+ Character set data for Playscii consists of two files, placed together in the charsets/ subfolder in your Playscii documents folder: an image file with the bitmap data of each character, and a text-based file with a .char extension: +

+
+

Character Set Source Image

+

+ This image should contain every character you want in the set, arranged in a uniform grid - variable-width fonts are not supported. The topmost, leftmost character should always be blank - Playscii always assumes this index zero is the blank character. +

+

+ Any pixel in the source image that is pure black (RGB 0, 0, 0) will be considered transparent, ie a tile's background color will show through to this. Any pixel that isn't this color will be taken as part of the character and "tinted" by the foregorund color, with pure white showing the tile pixels exactly as they appear in the source image. As of Playscii 0.8.2 tiles can contain multiple colors, and the Ultima IV tile set is provided as an example of this. +

+

+ Technically the source image can be in any format Playscii supports (PNG, GIF, JPEG, BMP) but PNG is preferred - using a lossy file format like JPEG will cause problems, because it produces unintended non-pure-black pixels. This can also result from using any form of smooth scaling in an image editing program - use "nearest neighbor" scaling in even multiples of the original pixel size if you don't want your characters to be distorted. +

+ +

Character Set Data File

+

+ You can create or edit this file in any text editor. It defines three things: the filename of the source image to use, the width and height in tiles of the source image, and the mapping of characters to blocks in the source image. In this file all lines that start with // (the double slash) are ignored so you can add comments as you like. +

+

+ The first line of this file names the image file with the bitmap character data - if it's left blank, Playscii will look for the same filename but with a .png extension. +

+

+ The second line of the file is the width and height of the character grid in the bitmap file, as integer numbers separated by a comma. Playscii needs this data to know how many pixels are in a tile for this character set. +

+

+ All subsequent lines are "mapping" data, a 1:1 correspondance between the characters on each line and the blocks in the bitmap. If a block doesn't have a representative character you can type on a keyboard, just leave it a blank space, but keep track of the number of blank spaces. You can even omit this data entirely, mostly it just means that the Text Tool won't know how to map the keys you press onto a character in your set. +

+
+ +

+ If you have issues getting a custom character set to work, the character sets already included with Playscii are a useful reference. You can find them in the charsets/ subfolder of the folder you're running Playscii from. Here's the ZX Spectrum character set data as an example: +

+
+ + + + + + + + + + +
ZX Spectrum character set + +// ignore this
+speccy.png
+16,4
+           " $:?
+()><=+-*/;,.0123
+456789ABCDEFGHIJ
+KLMNOPQRSTUVWXYZ
+// end +
+
speccy.png
speccy.char
+
+

+ Lastly, know that if you're working on character set data or images in an external program such as a text or image editor, Playscii (as of version 0.9.2) will automatically reload changes as you save them. +

+ +
+ +

Custom Color Palettes

+
+

+ Playscii includes several classic color palettes from old computers and game systems, which you can preview and select in the Palette Selector. You can also define custom color palettes in two different ways: +

+
    +
  • You can simply drop an image into the palettes/ subfolder of your Playscii documents folder. The image is scanned from top left to bottom right, and each unique color found is added to the palette. You can create color swatch images in traditional paint programs for this purpose quite easily. As of version 0.9.0, Playscii will automatically reload palette images as you change them in another program.
  • +
  • If you have an image with a larger number of unique colors, you can easily turn it into a custom palette with "Palette from image" in the Char/Color menu. After selecting a source image, the dialog lets you specify a name for the new palette file, and a target number of unique colors the source image will be reduced to.
  • +
+
+ +

Technical Note: Indices

+
+

+While this is more likely to be of use to Game Mode authors it bears mentioning here: a tile's character, foreground and background color, and transform are all stored internally as an index, ie a positive integer number. A tile's character index corresponds with its character's position in the Art's character set, a tile's color indices correspond with its fg/bg colors' positions in the Art's color palette, and a tile's transform index corresponds to the UV_* enum values defined in the Art module: UV_NORMAL, UV_ROTATE90, UV_FLIPX, and so on. +

+

+You can see these indices stored in the JSON of a .PSCI file, and if you're handy with Playscii's developer console you can get and set the currently selected values with ui.selected_char, ui.selected_fg_color, ui.selected_bg_color, and ui.selected_xform. +

+
+ +

Artscripts: Making Art from Code

+
+

+Playscii makes heavy use of Python's dynamic nature, so there are many ways besides the art tools described above to create art. You can peek and poke values at the current active art from the developer console, and you can also use something called Artscripts to run arbitrary Python code on a given Art, opening a broad toolbox of generative effects.

+

+

+In Art Mode, you can run an artscript on the current active art with "Run Artscript..." from the Art menu. You can quickly run that script subsequent times with Control-T. Artscripts are re-read on each run, so you can refine your code in a text editor and see the results in Playscii with a keystroke. +

+

+You can also run Artscripts from the dev console with the scr command, and you can set an art script to run every N seconds with the screv command. You can also run them from Game Mode code with an Art's run_script and run_script_every methods. +

+

+Artscripts are kept in the artscripts/ subfolder of your Playscii documents folder, and have an .arsc file extension. Every line in an art script must be valid Python code. Comment lines starting with # are fine. +

+

+An Artscript executes from within the Art's namespace, so referring to self from one refers to the Art itself. An iterator class called TileIter provides an easy way to iterate over all tiles in all frames and layers in an art, like so: +

+for frame, layer, x, y in TileIter(self):
+    self.set_char_index_at(frame, layer, x, y, random.randint(0, 64))
+
+The above code sets every tile in the art to a random (indices 0 through 64) character. +

+

+There are a few example Artscripts included in the Playscii application folder, most of which were written early in its development. conway.arsc runs a variant of Conway's Game of Life on each tile in the art, dissolve.arsc does an odd dissolve-like effect, and so on. +

+

+If you write an Artscript that's broadly useful and would be worth including with Playscii, please let us know! A pull request for the project's page would be easiest to integrate, but email works too. +

+
+ +

+ +<< back to main documentation page + +


+ + +
+ diff --git a/docs/html/howto_game.html b/docs/html/howto_game.html new file mode 100644 index 0000000..d369401 --- /dev/null +++ b/docs/html/howto_game.html @@ -0,0 +1,507 @@ + + + + Playscii - Documentation (Game Mode) + + + + + +
+ Playscii logo +
+
+ +
+ +
+ +

Introduction

+
+

+ While I've worked hard to make game creation in Playscii as easy and inviting as possible, it's still code-based, and much of this page will assume you know the basics of Python programming. Any kind of non-code-based game creation, such as visual programming, is a far-off someday thing. If you have ideas for how it could work, I'm interested in hearing them. +

+

+ That said, you can make cool things happen in Game Mode with small amounts of easy to understand code, and you can "live tune" many things without having to restart Playscii to see your changes. This page will explain how. +

+

+ There are some topics best covered in this format, but for other things Playscii's code itself is the best documentation. Playscii can auto-generate nicely formatted HTML documentation of its code you can view in any web browser, without an internet connection. All you have to do is select "Generate documentation" from the Help menu. It may take a moment, but within a few seconds a table of contents page should open in your web browser. (If you're running from source instead of one of the pre-compiled builds, make sure you have the pdoc Python module installed.) +

+

+ If you've already generated the docs, the following link should take you to there: +

Playscii Auto-Generated Documentation

+

+
+ +
+ +

Table of Contents

+ + + +
+ +

Entering Game Mode

+
+

+ By default Playscii launches into Art Mode. To switch between Art Mode and Game Mode, click the top right corner of the screen, or press G. +

+
+ +

Menu Bar

+
+

+ The menu bar along the top edge of the screen provides access to much of Playscii's functionality. Click a menu name to open it and select from the available commands. Many commands have an associated keyboard shortcut, displayed to the right of the menu entry. +

+
the Game Mode menu bar
+
+ +

Loading Games

+
+

+ Games in Playscii are folders that contain code and assets (art, sounds) in specific subfolders. Playscii includes some games in its application folder, but your operating system's Documents/Playscii/ folder has a games/ subfolder for you to put your own games in. +

+

+ You can launch a game in Playscii in one of three ways: +

    +
  • "Open game" from the Game menu will bring up a list of available games. Load one by clicking on it.
  • +
  • Launch Playscii from the command line with -game mygame after it, where mygame is the game (ie the folder) you want to launch.
  • +
  • Include a file called autoplay_this_game in the same folder as the Playscii executable, whose first line is the name of the game you want to load. This is a simple hack for distributing games to people who don't have Playscii - you can just zip up the folder and distribute that.
  • +
+

+
+ +

Creating a New Project / Folder Structure of a Game

+
+

+ You can start a new project with "New game" from the Game menu, and Playscii will create the appropriate folders for you: +

    +
  • art/ - PSCI art files used by your GameObjects go here.
  • +
  • charsets/ - If your game uses any custom character sets, put them here.
  • +
  • palettes/ - If your game uses any custom color palettes, put them here.
  • +
  • scripts/ - All Python scripts (.py extension) for your game go here. Playscii will create a generic "starter script" here, which may be helpful if you're new to writing Python scripts for game objects.
  • +
  • sounds/ - Sound effects and music for your game, in any format supported by SDL2_mixer, go here.
  • +
  • start.gs - This is the default game state save file that will be loaded when you open your game.
  • +
+

+

+ When you create a new project, Playscii automatically creates a generic "starter script" in the scripts/ folder, with a few things to help newcomers - if you already know what you're doing, you can delete or ignore it. This starter script defines two new "classes", or flavors, of game objects: a generic GameObject subclass and a subclass of Player, which is simply a GameObject that moves around when you press the arrow keys. Before getting too deeply into these, though, a higher level overview of how all the classes fit together is in order. +

+
+ +

Game World Overview

+
+

+ In Game Mode, Playscii delegates game functionality to something called a GameWorld: loading game states, content, and scripts; managing the spawning and lifetimes of GameObjects; running much of the input->update->render loop that makes the simulation go; and handling Edit UI tasks such as selecting and dragging objects. +

+

+ GameObjects are, in turn, most of what a GameWorld thinks about. A GameObject can represent the player, a non-player character, an entire screen of level geometry, a powerup, a trigger that does something when entered, an invisible marker where another object appears, and so on. +

+

+ GameWorlds can also organize their objects into GameRooms, so that only certain objects are visible and simulated at once, and can use a GameHUD to render UI-appropriate information above everything else. +

+

+ The GameWorld class also has some functions that are most appropriate to its scope, such as managing music playback, getting collections of objects by type, and global collision tests. Have a look at the GameWorld generated documentation for an idea of what it handles relative to the other moving parts. +

+
+ +

Game Object Overview

+
+

+The GameObject class defined in the built-in game_object.py module provides the base capabilities of all objects, and you can extend this functionality by creating variants of that base class in the scripts you place in the game's scripts/ subfolder. The game_util_objects.py module includes a few generic subclasses ready-made for things like the player, projectiles, NPCs, triggers, and spawners. +

+

+Every GameObject has two components that help it render (draw to the screen) and collide, respectively: a Renderable and a Collideable. Renderables in turn can draw data from one or more Arts, pieces of art you can create in Art Mode or generate on-the-fly with code. +

+

+GameObjects have many properties you can change, functions you can call and/or override, and concepts such as state and facing to let you define custom behaviors. Rather than try to detail all of them here, please have a look at the GameObject generated documentation and Game Object Utility Library generated documentation, as well as the code for the example games, for an idea of how these can be used. +

+
+ +

Game States

+
+

+Playscii can save the state of all objects in a GameWorld into a "save state file" not unlike a conventional savegame or save state in a game console emulator. The start.gs created with a new project defines the game's starting state, which you can modify how you like by adding and manipulating the objects therein. You can create additional save state files for testing purposes, or even to load in new segments of gameplay if there is no state carried over from previous segments. +

+

+Save a game's current state into a new state file with "Save new state..." from the State menu. "Save state" or Control-S saves over the last saved state - take care not to accidentally overwrite your start.gs with this - and "Load state" opens a list of save state files to choose from. F2 quickly reloads the last loaded state file, which is handy for rapid iteration. +

+

+Much as Art (.PSCI files) are just tiles, layers, and frames serialized into JSON, save state files are all the GameObjects and GameRooms serialized into JSON, so it's possible to view and even manually edit them, though there's no non-bug reason you'd need to do this. +

+

+ It's worth noting that all GameObjects with the should_save property set False do not get saved into state save files. This is appropriate for certain kinds of objects, such as projectiles or spawned enemies whose lifetimes are managed in some other way, and/or for whom saving and loading would introduce unwanted complexity into how they work. +

+
+ +

the Editor Interface

+
+

+In Game Mode, the boundary between editing a game and playing it is intentionally fairly thin. The editor interface lets you create, manage, and modify GameObjects, and when this interface is disabled you're left with just the game itself, ie what players experience. +

+

+You can hide this UI at any time with "Hide edit UI" in the Game menu or Shift-E. When distributing games, you can add the line Application.can_edit = False to playscii.cfg which will prevent players from using the interface, switching into Art Mode, or doing anything besides just what you as a the game's designer intend. +

+

+The most basic actions one can do in this edit UI are primary mouse button on an object to select it and drag to move it. Selected objects have a thin pulsing outline that shows their "bounds", ie the edges of their current Art. Similar to Art Mode's Select tool, you can select multiple objcets at once: Shift + primary mouse button adds an object to the current selection set, while Control + primary mouse button removes an object from the selection set. +

+

+You can also select from a list of all objects in the world with "Select objects" in the Object menu, or Control-L. The aforementioned modifier keys have the same effect here as when you click in the world. +

+

+Selected objects will drag-move together as expected. You can also delete all selected objects with "Delete selected objects" in the Object menu. +

+
+ + +

the Properties Editor

+
+

+The pane that appears on the right side of the screen when you have object(s) selected is the Properties Editor. It shows the properties on the selected object(s) that you're allowed to edit on a per-instance basis. Clicking on a property will bring up a window where you can enter its new value. If multiple selected objects have different values, this will be displayed in the property field instead of any single value. +

+
properties editor
+

+The properties you edit in this UI are the very same properties that are declared in the object's class definition. If you want to change a value for all instances of this class, edit the code; if you want to change the value for a single instance, use the Properties Editor. +

+

+Each class defines which of its properties can be edited, and which will be saved to state files. The serialized property is a list of string names of properties that will be saved and can be edited, while the editable property is a list of string names of properties that should be editable but not serialized - mainly useful for live tuning. +

+
+ +

Spawning New Object Instances

+
+

+You can create new instances of the classes you've defined in scripts with "Spawn object" in the Object menu, or Control-P. This will bring up a list of available classes. Click one to select it, and then click in the main view to spawn an object at that location. +

+

+ You can also create new objects from existing ones with "Duplicate selected objects" in the Object menu. +

+
+ +

Object State and Facing

+
+

+In almost any game that uses 2D artwork, different sprites and animations are used to represent an object's different states (standing, walking, jumping) and facings (left, front, back). GameObjects use a string variable called state and an integer called facing (with GOF_LEFT, GOF_RIGHT, GOF_FRONT, GOF_BACK as the possible values) for these. +

+

Object State

+

+GameObject.state can be any string, but the default state name is "stand". There is no setter method for state, you can just set it, get it, and compare it directly. +

+

+Any custom state names you define for a class need to be included in its valid_states list. The get_art_for_state get_art_for_state methods use this list to load and find state-appropriate art, respectively. When a GameObject's state_changes_art property is set True, its art_src value becomes a prefix for finding art filenames for the appropriate state, eg "player_stand", "monster_die" etc. When state_changes_art is False, the base art_src property is used and the object won't change its art unless you have custom code doing so. +

+

Object Facing

+

+Similar to the above, when an object's facing_changes_art property is True then get_art_for_state will try to return an art that is appropriate to both the object's current state and its art. The cronotest example game shows this in action: "crono_stand_front" is the art for the player standing (ie not moving) and facing to the front, while "crono_walk_right" is the art for the player walking to the right. +

+

+Unique left and right facings will be used if found, otherwise get_art_for_state will mirror the one it finds so you don't need to make extra art. In general, the system will fall back to whatever facing is available, so that if you're just roughing in an object quickly you can get away with just having a front or side-facing art and do the other assets later. +

+
+ +

World Properties and Globals

+
+

+GameWorld is a core Playscii class, and it is a singleton not a GameObject: it doesn't serialize itself, nor is it an appropriate place for game-specific logic. In addition to classes like Player and Projectile, the game_util_objects.py module has two special classes that enable you to manage the world's state as objects: WorldPropertiesObject and WorldGlobalsObject. +

+

+Every GameWorld has a WorldPropertiesObject, but it's given a few status flags that ensure you can't select it, delete it, or spawn a second instance. Its purpose is to mirror the properties of the world itself, and then propagate those back to the world when loading a state, so that you can edit the world's properties much as you would any other object, with "Edit world properties" in the World menu. Here you can change things like the gravity applied to physical objects, whether or not the camera auto-locks on to the player, and various debug settings. +

+

+Every GameWorld also has a WorldGlobalsObject, which is typically a custom class defined for each game, where you can put logic that manages global state. When a save state file loads, it's spawned immediately after any saved objects, so whatever it's looking for is guaranteed to be there. Other game objects can always refer to it via self.world.globals. +

+

+By default this object isn't serialized, to keep a clear separation between world data and world logic, but this isn't carved in stone. The first released Playscii game, Endless Ladder Climbing 2, makes fairly heavy use of a WorldGlobalsObject to manage world state. +

+

+As WorldGlobalsObject is bound to be a custom class, you can let the world know which class to use by entering the class name in WorldPropertiesObject.globals_object_class_name. +

+
+ +

Camera

+
+

+A game's camera is not represented by a GameObject, rather its few properties are manipulated via the WorldPropertiesObject (so its position at any given point is serialized in a save state file) or script code. +

+

+In addition to static positioning, a camera can have a "focus object" whose movement it tracks, set via Camera.focus_object. As a convenience, when GameWorld.player_camera_lock is True, the camera will try to stay locked on to the player. +

+

+As in Art Mode, you can manually set the camera's zoom level with "Set camera zoom" in the View menu, and you can set its position directly with the dev console. +

+

+It's sometimes useful to use a LocationMarker object to remember a camera position. "Move selected object(s) to camera" and "Move camera to selected object" in the View menu make it easier to do this: you can position the camera how you want it and then snap an object to it, and then later snap the camera to that object to restore the position. +

+

+Rooms can also set the camera position. This is explained in detail in the next section. +

+
+ + +

Rooms

+
+

+Sometimes your game will have multiple "screens" worth of content, like a large world to explore. It's usually easier, for both the designer and the computer, to not be thinking about every single object in such a world at all times. To this end, Playscii allows you to organize objects into Rooms, represented by the GameRoom class. +

+

+Rooms are strictly an opt-in concept: every object keeps track of which rooms it's in, and an object that is not in any rooms is considered to be everywhere. So by default the world updates and renders every object in it, and you don't need to think about rooms at all if you're not using them. Most of the example games don't use rooms at all, while the Maze game uses them extensively. If you've got Playscii open as you read these docs, opening the Maze game and poking at it might help you understand some of the functionality. +

+

+The game world has a notion of what the "current room" is, and by default it's None. Once you've created a room, with "Add room" in the Room menu, you can set it as current either with "Change current room" from the Room menu, or clicking on a room's name in the list at the bottom of that same menu - a checkmark will appear next to the current room. +

+

Managing Room Contents

+

+Once you have a room set as current, you can set which objects are in it with "Add selected objects to this room" and "Remove selected objects from this room". "Add/remove objects from this room" will bring up a list in the left pane, in which objects in the room are highlighted and clicking adds or removes them. On the code side, if you have a handle to the room itself you can do this with GameRoom.add_object_by_name (passing the object's string name), GameRoom.add_object (passing the object by reference), GameRoom.remove_object_by_name, and so on. +

+

+Again, objects that you know will always be on-screen - it's usually a safe bet that the player is, for example - can be kept outside of all rooms. +

+

+Objects that are not in the current room (and aren't "everywhere" as described above) are not rendered or updated (unless their GameObject.update_if_outside_room property is set True), so as you're organizing objects you'll see some of them blink out of sight. +

+

+If you get confused and what's where, you can toggle a global view of all objects in all rooms with "Show all rooms" in the Room menu. +

+

Room Camera Markers and Edge Warps

+

+Managing room transitions and camera changes as the player moves around are very common uses of rooms - again, the Maze game's explorable world does this a lot. If a room's camera_marker_name is set, the camera will warp there when the room is entered. You can easily set this with "Set this room's camera marker" in the Room menu. +

+

+Often you'll want to warp the player to a different room when they reach the "edge" of it. You need to provide two bits of information to the room to make this work: give it an object to define the "edges" of the room, with "Set this room's edge object" in the Room menu, and telling the world which room or point to warp to when the player reaches the north/south/east/west edges of those bounds, with "Set this room's edge warps". In the pane on the left, you'll notice you can select both room names and object names. If a room name is given for an edge warp, the player will warp to that room; if an object name is given, the player will warp to that object's location and change to that object's room. +

+

+Technically this "edge warp" functionality is doing something very similar to the WarpTrigger class, but its close integration with the room concept makes it somewhat easier. +

+

+A few more intricacies of Rooms are covered in the Maze game section below, so have a look if any of this isn't clear. +

+
+ +

HUD

+
+

+The GameHUD (HUD is short for Heads-Up Display) is a simple singleton member of GameWorld that draws in 2D screen space and manages its Renderables directly, useful for UI/HUD like purposes. The whole point of a GameHUD is that it has game-specific logic, so you'll want to create a subclass in your scripts and set your GameWorld.hud_class_name to its name via the WorldPropertiesObject, much as you set globals_object_class_name. +

+

+When you're setting Renderable sizes and locations in a GameHUD, remember that it uses OpenGL screen space coordinates, where (0,0) is the center of the screen and (1,1) is the top right corner. +

+
+ +

Debug Views

+
+

+Game Mode has a few visualization modes that are helpful for debugging in the View menu: +

    +
  • Show all object origins: show each object's "origin" or XYZ location using a familiar red/green/blue axis marker.
  • +
  • Show all object bounds: show each object's "bounds", ie the edges of their current Art.
  • +
  • Show all object collision: show each object's collision shapes - see the Collision section below.
  • +
+

+

+If you want to use debug lines for a more specific purpose, check out the renderable_line.DebugLineRenderable class - you can feed it a list of 3D coordinate tuples and it will draw those lines in the world. +

+
+ +

Collision Detection and Resolution

+
+

+Each GameObject has a Collideable component that allows it to participate in collisions with other objects. A Collideable in turn can have zero or more CollisionShapes, of which there are two types: Circle and Box (or "AABB" for Axis-Aligned Bounding Box, meaning an unrotated rectangle). Mostly commonly an object's Collideable will either have a single shape, as in the case of dynamic objects like the Player and Pickup classes, or multiple shapes arranged to approximate the shapes of tiles in an object's Art's "collision layer" - see more on this below. +

+
+ cronotest example game showing circle, box, and tile-based collision +

+ Cronotest example game showing circle, box, and tile-based collision. +

+
+

+These basic collision types are represented in the CST_* enumerated values in the collision module: CST_NONE, CST_CIRCLE, CST_AABB, and CST_TILE. Set a GameObject's collision_shape_type property to one of these to get each behavior. +

+

+CST_NONE means a Collideable will not bother generating any shapes and effectively do nothing, CST_CIRCLE and CST_AABB refer to the circle and box shapes described above, and CST_TILE refers to the generation of multiple box shapes alluded to above. An object's Circle collision size can be tuned with the col_radius property, and an object's AABB collision size can be tuned with the col_width and col_height properties. If you enable the collision debug view, you can see these changes reflected in real time. +

+

Tile-Based Collision

+

+CST_TILE collision leverages Playscii's tile-based nature by letting you define a layer in an object's Art to be its "collision layer" - a layer whose name is defined in the GameObject.col_layer_name property - so that you can easily author collision for complex environment objects. By default any layer in an Art named "collision" will be used for this purpose, and any non-blank (character index 0) tile on that layer will be treated as a solid block. In the image above, you can see the red shapes with the blue outlines that define the background object's collision layer. Static background objects are the most common use case for tile-based collision +

+

Static vs Dynamic Collision

+

+A GameObject's collision can be static or dynamic. If it's static, it can never move. Objects with CST_TILE collision are always static, as Playscii does not currently have a computationally efficient way to handle complex tile-based collisions for moving objects. The CT_* enum values defined in the collision module define arbitrary categories, and CTG_STATIC and CTG_DYNAMIC are lists of these values. You probably won't have to check or define these values much, just understand the static vs dynamic distinction and set it appropriately for each class. +

+

Tunneling

+

+Tunneling refers to bugs where moving objects can punch through other objects without the expected collision behavior. If you notice this happening for a given object class, you can set its fast_move_steps property to something greater than 0 to make its collision checks more granular - basically, each move is subdivided into fast_move_steps steps, the object stops moving if a collision is found, and the collision resolution phase that happens later will push the colliding object out of what it hit. This is enabled by default for the game_util_objects.Projectile class. Playscii's collision code is still maturing so if you see collision problems you can't easily fix, please file a bug. +

+
+ +

Sound and Music Playback

+
+

+Playscii's audio capabilities are not extensive but they should cover basic uses. Sound assets can be in any format supported by SDL2_mixer, and go in the sounds/ subfolder of your game folder. +

+

+GameObject.play_sound plays a sound by name, and names are mapped to asset filenames in an object's sound_filenames dictionary. Sounds can play N times or loop indefinitely, and you can stop them by name with stop_sound. You can also define looping sounds to play while an object is in a given state via looping_state_sounds +

+

+Music is controlled globally with GameWorld.play_music / stop_music. +

+
+ +

Handling Input

+
+

+ Playscii's InputLord class handles application input and takes care of basic things like player movement, but you may want to have objects (the player, most commonly) handle input directly. In these cases, set the class's handle_key_events and/or handle_mouse_events properties to True, and override GameObject's handle_key_down/handle_key_up and/or clicked/unclicked functions. InputLord passes in the key as a string and modifier key statues as booleans, so you don't need to worry about decoding from SDL2 keycodes or anything. Mouse events are passed in as button numbers and give the world coordinates of the click (X and Y axes). +

+
+ +

the Developer Console

+
+

+Playscii has a powerful developer console that can be opened by pressing ~ aka the tilde key, whose placement may vary on non-US layouts. If it's something unreasonable on your keyboard, you can rebind it to something better in your binds.cfg. +

+

+Type help at the dev console to see a list of available commands, with a brief summary of what each does. Some of these are more germane to Art Mode and/or redundant with functionality available from menus. Some commands require arguments after them; if so a usage hint will display if you type the command sans arguments. +

+

+ The dev console can also run arbitrary python expressions within the application's namespace! This is very powerful and potentially dangerous, so save your work before experimenting. The console's execution mechanism sets a few values so you can easily access them: +

    +
  • app - the application instance itself
  • +
  • ui - the application's top-level UI instance
  • +
  • camera - the current camera (Art Mode and Game Mode each have their own camera)
  • +
  • art - the current active Art in Art Mode
  • +
  • world - the GameWorld instance
  • +
  • player - the player instance in Game Mode
  • +
  • sel - the selected object in Game Mode, if only a single object is selected
  • +
  • hud - the GameWorld's GameHUD instance
  • +
+

+

+An example of how one might use this: select an object in Game Mode, open the console and type sel.art.set_tile_at(0, 0, 0, 0, 1 + 3, 4, 5). This will set the top left tile of the selected object's current Art to a specific character and color. That particular function is a bit wordy to call, but it demonstrates that you can call actual functions, use expressions, and set values directly from the console. The better you know Playscii's internals, the more powerful this tool can be for debugging and quick hacks. +

+
+ +

Crash/Error Handling

+
+

+As you're iterating on game code, it's possible your code will cause Playscii to crash. Since 0.8.1, where possible Playscii will try to catch this and print the Python exception information to the console instead of crashing. If you run into a situation where this reasonably should have happened but you got a crash instead, please file a bug. +

+
+ +

Workflow

+
+

+If you've been reading this document sequentially most of this will have been covered already, but I hope it's clear by now that Playscii's design places a high value on making it so you can "live edit" and see changes reflected immediately as much as possible, avoiding the productivity and morale drags of having to restart the application or game every time a small change is made. +

+

+A proficient Playscii workflow includes using state save files to rapidly reset after code changes, exposing important class tuning values for live property editing, and using the dev console when other UI doesn't easily expose things. Also worth mentioning is that any changes made to Arts that objects reference in Art Mode will be reflected instantly back in Game Mode, so you can iterate rapidly on art and animation assets. +

+

+I'm always looking to make this workflow better, so please send me any suggestions you have. +

+
+ +

Tour of Example Games

+
+

+Playscii includes some example games to demonstrate many of the features available in Game Mode, so here's a summary of the learning value of each. In addition the first released Playscii game, Endless Ladder Climbing 2, was created with an older version of Playscii but also does some reasonably ambitious things, so you can download that and examine the scripts/ folder in its game folder if you're eager to learn more. +

+ +

Cronotest

+
+
Cronotest game
+

+No real "game" to it, this was the first test space for Game Mode made in April-May of 2015, and shows off what was new at the time: bitmap image conversion from a certain beloved 1990s JRPG, a Player class that uses facing to drive front/side/back view stand and walk state animations, and basic examples of circle (player and the urn), box (the chest), and tile (room walls, bed, stair railing) collision types. +

+
+ +

Maze

+
+
Maze game
+

+This game was built to put the Rooms features through their paces. Its world consists of several large tile-based background objects, a few pickups, and some very basic NPCs spawned by ObjectSpawners - all collected into different rooms and connected by a combination of "edge warps" and conventional WarpTriggers. It was made with Playscii 0.7.1 in October 2015 and I made a video detailing its features. +

+
+ +

Flood

+
+
Flood game
+

+The goal of this game is to "flood" all the tiles with the same color, starting with the top left tile, before you run out of turns. Press number keys 1-5 to choose the next color to flood squares adjacent to the ones you've already flooded. +

+

+This game is a simple example of direct input handling - there's no actual Player object spawned, the Board class itself handles input. The Board also directly manipulates the tiles of its own, dynamically-generated Art - notice there are no pre-authored .PSCI files in the game's folder. Setting GameObject.generate_art to True tells the object not to worry about having an art_src set. +

+
+ +

Shmup

+
+
Shmup game
+

+A simple 2D shoot-em-up to show off Projectiles, ObjectSpawners, and a generated starfield. Note how the EnemySpawner class overrides get_spawn_class_name to produce a weighted random enemy population. Various objects use the lifespan property to auto-destroy themselves after a fixed time. The starfield uses Art.shift_all_frames(0, 1) to efficiently scroll downward - under the hood, this uses numpy's ndarray.roll to shift the data without rewriting every tile every update. +

+
+ +

Platso

+
+
Platso game
+

+A very basic single-screen platformer featuring a world with gravity and jumping, input handling to ensure each jump requires a keypress, and monsters with some basic behavior logic. Note PlatformMonster's use of set_timer_function to run its check_wall_hits method, a potentially expensive custom collision check, every 1/5 of a second instead of every frame. +

+

+Platformers live and die by their control feel and the solidity of their collision resolution and for this game those are definitely not where I'd like them to be, so if you have any suggestions on how to improve it, please let me know! +

+
+ +

+ +<< back to main documentation page + +


+ +
+ diff --git a/docs/html/howto_main.html b/docs/html/howto_main.html new file mode 100644 index 0000000..77c31aa --- /dev/null +++ b/docs/html/howto_main.html @@ -0,0 +1,197 @@ + + + + Playscii - Documentation (Main) + + + + + +
+ Playscii logo +
+
+ +
+ +
+ +

Documentation

+ +

+ Playscii (pronounced play-skee) is an art, animation, and game creation tool. +

+ +

+ See the Art Mode page for detailed info on how to create artwork and animations with Playscii. +

+ +

+ See the Game Mode page for detailed info on how to create games with Playscii. +

+ +

+ General README-type information on running and building Playscii follows. +

+ +
+ +

Table of Contents

+ + + +
+ +

System Requirements

+
+

+ Playscii should run in Windows Vista, 7, 8.1, and 10 (32-bit and 64-bit), macOS 10.12 Sierra or higher, and any reasonably modern desktop version of Linux. +

+

+ Hardware-wise you'll need a video card that's capable of OpenGL 2.1, with GLSL 1.30 support. If your computer was made after 2008 or so, you're probably fine. Playscii will detect your supported GLSL version on startup and quit with an error message if version 1.30 or higher is not found. +

+
+ +

Running

+
+

+If you're looking at Playscii in the itch.io app, simply click Install and then Launch! Note that if you're doing this in Linux, you're running from source and should follow the instructions for installing dependencies in the section below. +

+

+If you downloaded the ZIP file with "win32" in its name, you should have a Windows build you can run by double-clicking playscii.exe, without needing to install anything listed below. +

+

+ If you downloaded the DMG file, this is the Mac application bundle which can be installed in the standard manner, by opening the disk image file and then dragging Playscii.app into your Applications folder. You don't need to install anything else. +

+ Please note that as of at least macOS 10.13 "High Sierra" and later, you will have to bypass an OS-level security feature to run Playscii, as it is non-notarized software. I have no plans to offer notarized macOS builds. Once you've got Playscii.app in your Applications folder, run the following command from a Terminal:
+ xattr -dr com.apple.quarantine /Applications/Playscii.app
+ You should then be able to click the app to launch it as normal. +
+

+

+If you downloaded the ZIP file with "source" in its name or from the project's source code repository, you can run Playscii from its source code on any of the supported operating systems if you have Python and a few libraries installed. See the Running from Source and Building sections below. +

+
+ +

Configuration

+
+

+ Most users won't need to edit them, but just in case - Playscii places its configuration files in OS-appropriate folders: +

    +
  • + Windows 7-10: C:\Users\[your username]\AppData\Local\Playscii +
  • +
  • + Linux: ~/.config/Playscii +
  • +
  • + macOS: ~/Library/Application Support/Playscii +
  • +
+

+

+ Documents (your art, color palettes, etc) are stored in eg ~/Documents/Playscii in macOS and Linux, and the appropriate "My Documents" folder in Windows. +

+

+ You can override many program defaults in the file playscii.cfg. This file starts with a few possible "commented-out" overrides to get you started. You can enable one by deleting the # character at the start of the line. Every line in that file must be a valid Python expression, so edit carefully! +

+

+ Likewise you can change Playscii's keyboard command binds in the binds.cfg file. +

+
+ +

Running from Source

+
+

+ Running from source is only recommended if a binary build isn't available for your OS and/or you want to play with the latest still-in-development version. If you're doing so, you'll need some version of Python 3 - sorry, Python 2 is not supported - and the following libraries: +

+
    +
  • + PySDL2 +
  • +
  • + PyOpenGL +
  • +
  • + Numpy +
  • +
  • + Pillow or any compatible derivative of Python Image Library (PIL) +
  • +
  • + appdirs +
  • +
  • + pdoc - only needed if you want to generate documentation from Playscii's source itself. Mainly useful for game creation. +
  • +
+

+These libraries are all pretty easy to install using PIP, the package manager that comes with Python 3.4 and later. Find the pip executable and run it from the command line, like so: +

+pip install pysdl2 pyopengl numpy pillow appdirs pdoc +

+In Windows the pip executable is in the Scripts\ subfolder of your Python install folder, eg c:\Python34. On some Unix-like systems (Linux and macOS) the pip binary to run may be called pip3 to distinguish it from any Python 2 installations. On Unix-like systems you may also need to run pip as super user to let it install system libraries, eg by pre-pending sudo to the command above. +

+

+On most systems, SDL2_mixer - which Playscii's Game Mode uses for sound playback - is a separate library from SDL2 core, so you'll also need to install that, by providing SDL2_mixer.dll and all its dependency DLLs in Windows, or as a system library (eg from a package manager) on *NIX-based operating systems. +

+

+Once you have the dependencies installed, you can run Playscii from source like so: +

+

+python playscii.py [optional name of art file to open] +

+
+ +

Building

+
+

+ To produce Windows EXE builds, in addition to the above dependencies you'll also need PyInstaller. +

+

+ Simply run build_windows.bat and it will place a complete build in the dist\ subfolder. You may need to provide needed DLLs, such as SDL2.dll, SDL2_mixer.dll and its dependencies. +

+

+ The process for Mac Application bundles is quite similar: install PyInstaller, and run the build_mac.sh script. +

+

+ Michael Lazar has created a fork of Playscii on Github, with only a few very minor changes, that has been reported by some Mac users to work well on their newer systems. See these notes from that repository for specific commands to run to get the right build environment. I cannot offer support for builds made with this fork, however. +

+
+ +

Roadmap

+
+

+Many of Playscii's intended features have now been implemented, but you can see a list of planned features on the Playscii Trello. Please don't take anything there as a promise, though. If you'd find something on there especially valuable, feel free to vote or comment! +

+
+ +

+ +<< back to Playscii main page + +


+ +
+ diff --git a/docs/html/logo_bg_tile.png b/docs/html/logo_bg_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d18bf15d5e316a9ca72b6a7c29c8de24489093 GIT binary patch literal 20969 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Π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�ZlJO`6U-$BMoymFxn4;|#NleTYy#k@d!A95O1GLPqP7cUkw{h@858$Po5T2+MGaYT$57WMWD0 zGp4gD^EZmF2xlCd?|94wIk8kE3twpznr`y+sX!aGG`ek{3_tgnCbaV||8;OgCd~?| z{tdPn{rxSfsk8c`mlM+Sy)DY>`7>VZk3TPK=*WPiDd|^&o1g!MdyKvd{TDWK>cVf| zq%X#8uO>wXJgxVqXJgvV({VT5Z|ZTogsrXdbulG#}5OH3-$-{1o z=zHX2eDUjCei?sPO8BjanOD2XNs%Jc3@m;{>6UL3^t1F0P9x5 z3ZNhRWR|!hN&Fd|Awt6CSToR{d2p;yH7Ikg!97T#2h5=bze&*7G!=CuPJFxt>OIt=MzhA0Eg|5Hu=yiJU}$9UGhOKCy38 zDPp*Uk)8$dcOX?t*4i@ zSy}uBc}4ESzi;vYwhZ2?)e2of1nhJk3b5%6!eZ@}Svw$xKq|d3Ek7?^hAl-b>Cqdu c@8$yhAK5gn*w~KP*Z=?k07*qoM6N<$g1Hn{>Hq)$ literal 0 HcmV?d00001 diff --git a/docs/html/pslogo_w_text2.png b/docs/html/pslogo_w_text2.png new file mode 100644 index 0000000000000000000000000000000000000000..9d286ddf0585cb5663b879ba24cbd819e0dd92d5 GIT binary patch literal 28566 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 literal 0 HcmV?d00001 diff --git a/docs/html/speccy.png b/docs/html/speccy.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8f63f96d61ff56ed555e6567a42c11b2335cd0 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4M42G$P6SOym^!cq!^2X+?^QKos)S9e-G!lpRn`N@;VkfoEM{Qfw*q1z##1S!89+hy5>H=O_B$+cjDn^w zj@8Zq>JjpEaSYKo-`ck~>xctSOZ(AQj>Z)p50zRu_5KJX2_BMZ?-pS*509H@^;Gn< z*msM%T{ezFxo>{x*-vPUJ#sw5BII_&y2ivnUd^XckuJPu`*_Nndq?efWyOUjz>ETr|p@j zlEas_s(;C|h2CzD9g?P!qRR3)N0S`ZO08KDZo0TZZ>iUrNl{+2WZyJT zJerfW%HK|D_QuxSqpQ0&bW9ES8gTIctJ=%aDwW#X&r4R<+D!|*xqsXG4~yD2GH5P% zcS6=ILMr$N%Nf<=bgM7-mf3E(b70TR3g-Oa?ZbP0 Hl+XkKV#cXM literal 0 HcmV?d00001 diff --git a/docs/html/tool_erase.png b/docs/html/tool_erase.png new file mode 100644 index 0000000000000000000000000000000000000000..b663a298ff80029d9ef581b1f9c7cb6eb22b6660 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5ap9)5S5w;`G}K8#xas2(&&_k96S9-dNTttuvw7XOd^0 zi0r{r*RCjj6!Lg|-|oi)zS;>LB{iDQ@BCM~?eb4CtwlhvT|n-*gz}7=84L_>T(;~} zlwx?lcgYkFXEEN4wX#b^ES{f;s=l4Q_7&&!`3YukSZ1cb+CBgHit8XpdAjS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5=)5S5w;`G`{-h2#-9L~}D?+QNcN)$@^W8{3u?NWNT z)1(g@SM4!MVsa3f{KWJ?tb)TEu?cMj8~U|5)V*!nrW~Ak)Yfa&-56_jZS_~Csf-)m zxn7oEx69&NV9VXJcU&uu_LtxKr*o>XMe@Q2cT@F+7L~!gvloF}@hK BNz(uT literal 0 HcmV?d00001 diff --git a/docs/html/tool_paint.png b/docs/html/tool_paint.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef7d2e095d97ecc8df69ad63fbd9e5b0f6c2c72 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5`)5S5w;`G}I-h2%TJgn@G5AKkx@Y!*uc%g*Jf|_mT zmU&+GvoBC^xE5u2AY`*8>(UzG)2GAEHa#-&e0B4H{j5$yGjAcjf=MDy0dm#y)suTT u^gR967OZ_@p6v6hJzdDW_>}(72@G#i@7JBuS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5apQ)5S5w;`G*_+q?}194wa)-a5%MdFt6O?wmnU7hLxJ zdhpJI;lX)}brDY&?7I@By7T)#kDRq9XU;5CxbVQ|j>^%xh*araLeqgJ3GS`i(Gq>Z zg|TXhV&miL3hmQ^npY$9y;2gF&Dpkrshvge#?}L89_rQ1b6UluROOnmJ=y<}%TtzB WHYO34omGt>S9-eoxvXS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5apZ)5S5w;`H30gMtkP9NAY6-s#yjbN0jI?n_x#-1)eW zbIHyHKbNNTw%q&ms<~9Jz2f!iAmA>?dw-XK6+ZWhJCt^jS`Dz R>JyOrJYD@<);T3K0RZ-gRNepp literal 0 HcmV?d00001 diff --git a/docs/html/tool_select.png b/docs/html/tool_select.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c22f06de5cd5951f7bf3edcb13cce7e02b6047 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5b!s)5S5w;&gJt0=6IgtVcFYWaRESc;dv32A|~Q|NsB* zXPmD5sS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5-)5S5w;`H0e2e}v&IGjy?z5nyMRC7W=(5D-_Eo@Gx zd4({F1+IM=ZLs-8Rwl!vnG%kh5BCc6R(+Ea{iqz`(h;-BbjAI3=PyZ}`*-GY!(JDL cN0wgJGhO4e4xgFz@ejymPgg&ebxsLQ0Eg;A1ONa4 literal 0 HcmV?d00001 diff --git a/docs/html/tool_select_sub.png b/docs/html/tool_select_sub.png new file mode 100644 index 0000000000000000000000000000000000000000..87980672da0ce1e610cb1e735434b6e569506a0a GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5p)5S5w;&gJt0=6IgtVcFYWaRESc;dv32A|~Q|NsB* zXPmD5sS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5apT)5S5w;`GrVN4^6J9FtqyKW_eLQr{+?>TzL$?o1Uq zuAr=?Q!X=#b#!Df9=LYoZg@}N=L2mmvC95jZpCXuIXg5KKba|}`C+G@!PA1Lj%I32 zFF04mOH5{L=#~0+wE6XGrMc=3`ST)E`OZ9EJ9GAq-;oc$Uu0O+7nt{;KJEm_WuC5n JF6*2UngA%mPoDq) literal 0 HcmV?d00001 diff --git a/docs/links.txt b/docs/links.txt new file mode 100644 index 0000000..078c438 --- /dev/null +++ b/docs/links.txt @@ -0,0 +1,106 @@ +possibly-helpful links + + +collision: + +triplefox's response: +http://pastebin.com/By7QdCcu + +Metanet classics: +http://www.metanetsoftware.com/technique/tutorialA.html +http://www.metanetsoftware.com/technique/tutorialB.html + +Handmade Hero has a few sections on collision: https://www.youtube.com/watch?v=_g8DLrNyVsQ + +http://jonathanwhiting.com/tutorial/collision/ + +http://tim.hibal.org/blog/2d-character-movement/ + +https://github.com/pybox2d/pybox2d use Box2D just for collision? objects can be placed in "kinematic" mode and won't simulate, just collide + + + +parallelization: + +https://docs.python.org/3/library/multiprocessing.html + +https://timothyawiseman.wordpress.com/2012/12/21/a-really-simple-multiprocessing-python-example/ + + +image conversion: + +http://trixter.oldskool.org/2014/06/19/8088-domination-post-mortem-part-1/ + +http://sol.gfxile.net/textfx + +https://www.youtube.com/watch?v=L6CkYou6hYU + +https://www.youtube.com/watch?v=Iqxfdw-k1OU + +http://www.compuphase.com/cmetric.htm - "nonlinear RGB", faster (than Lab) color space conversion + +http://www.syntacticbayleaves.com/2008/12/03/determining-image-similarity/ + +http://www.guguncube.com/1656/python-image-similarity-comparison-using-several-techniques + +http://wiki.unity3d.com/index.php/Dithering_Shader + + + + +SDL/OpenGL resources: + +http://docs.gl + +https://open.gl/introduction + +https://www.opengl.org/wiki/Core_Language_%28GLSL%29 + +http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html + +http://sdl.beuc.net/sdl.wiki/SDL_Average_FPS_Measurement + +http://www.arcsynthesis.org/gltut/Positioning/Tut05%20Optimization%20Base%20Vertex.html - specifically, use of glDrawElementsBaseVertex to draw a single layer from a renderable + +https://developer.apple.com/opengl/capabilities/index.html - GL feature/version support on OSX + + +Tool reference: + +http://ragzouken.itch.io/kooltool - 8) + +http://www.aseprite.org - sprite editor with non-OS native retro-feelin' UI + +http://www.warmplace.ru/soft/sunvox - unusual DAW + +https://bitbucket.org/runhello/geodesic/wiki/Home - Andi's Icosa + +https://github.com/andyherbert/ansiedit - cool web-based editor + +http://fontstruct.com/gallery - slick looking tile-based font builder + +https://github.com/abagames/mgl - kenta cho's framework + +https://pypi.python.org/pypi/Compositor/ - "Morphologically Optimal ASCII Art" + +http://www.kameli.net/marq/?page_id=2717 - PETSCII editor from ~2013 + +http://satellitesrecords.com/artists/c64.htm - C64 synthesizer created by Ryo Kawasaki + +http://rexpaint.blogspot.com/p/features.html - nice featureful ascii editor, Cogmind dev + + +World/screen projection: + +http://webglfactory.blogspot.com/2011/05/how-to-convert-world-to-screen.html + +http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/MousePicking + +http://www.gamedev.net/topic/508784-unproject--mouse-coordinates-sdl-using-opengl/ + +https://www.opengl.org/discussion_boards/showthread.php/165951-Glut-Mouse-Coordinates + +http://www.antongerdelan.net/opengl/raycasting.html + +https://gist.github.com/LordNed/6e7d0f5069112665b6364faa32692d25 + diff --git a/docs/thanks.txt b/docs/thanks.txt new file mode 100644 index 0000000..b9ba4c9 --- /dev/null +++ b/docs/thanks.txt @@ -0,0 +1,64 @@ + +Playscii was made with the support of many nice people: + + +Patrons: + +Andrew Anderson +Evan Armour +Jason Bakker +Aaron Brown +Ben Burbank +Josh Closs +Lachlan Cooper +Sam Crisp +Holger Dors +Matthew Duhamel +Jacques Frechet +Katelyn Gigante +Isaac Halvorson +Leon Hartwig +Aubrey Hesselgren +Nick Keirle +Jón Kristinsson +Jeremy Lonien +Rohit Nirmal +James Noble +David Pittman +Shannon Smith +Jack Turner +Chris Welch +Andrew Yoder + + +Programming Help: + +Shawn Walker +Sean Barrett +Mark Wonnacott +Ian MacLarty +Goldbuick +Tin Tvrtković +Sean Gubelman +Erin Congden +Rohit Nirmal + +Tool Design Inspiration: + +Anna Anthropy +Andi McClure +Bret Victor +Tim Sweeney (ZZT) +Craig Hickman (Kid Pix) +Bill Atkinson (HyperCard) + +Love, Encouragement, Moral Support: + +L Stiger +Gail, Gil, and Elise LeBreton +Brendan Sinclair +Liz Ryerson +Johnnemann Nordhagen +Aubrey Hesselgren +Zak McClendon +#tool-design diff --git a/docs/todo.txt b/docs/todo.txt new file mode 100644 index 0000000..9da5c67 --- /dev/null +++ b/docs/todo.txt @@ -0,0 +1,9 @@ +TODO + +this file is no longer in use. see the bug list for bugs: + +https://heptapod.host/jp-lebreton/playscii/issues + +and the trello for features / improvements: + +https://trello.com/b/BLQBXn5H/playscii diff --git a/docs/ui.txt b/docs/ui.txt new file mode 100644 index 0000000..96810eb --- /dev/null +++ b/docs/ui.txt @@ -0,0 +1,93 @@ +UI design notes + +menu bar: +- about/credits screen +- file: new, open, save, save as, close, export current frame to PNG, export animated GIF, quit +- edit: cut/copy/paste, select all/none/invert +- art: next/previous art, crop to selection, resize, [list of loaded art] +- frame: add to end/insert/duplicate/remove/change order/change delay +- layer: add/duplicate/remove/change current Z, same functionality as the pane described above +- tool: list of tools, active one is checked +- help: help screen, readme, website? + +layer/frame view: +- matrix w/ layers are rows, frames are columns, scrolls horizontally if lots of frames, vertically if lots of layers +- thumbnails of each frame across the top +- clicking frame or layer section of status bar expands/minimizes it +- exposes layer functionality: add/duplicate/remove layer, adjust layer Z +-- layer Z order /is/ the layer list ordering, no other index kinda number +- exposes frame functionality: add/duplicate/remove frame, change frame order, change frame delay +- playback controls: play/pause, next/previous frame, first/last frame +- onion skin settings: on/off, # of frames to show + +--- + +mark wonnacott likes EDSCII's spacebar-invoked charset/palette popup, and in kooltool it's effectively multi-tab also offering a tools pane... what if playscii's popup had tabs and that replaced a more conventional left-hand toolbar? + +how to show range of open documents? (save for later, when MDI is needed for game editing) + +--- + +possible features + +tools: +paint +erase +pick/grab +select +cut/copy/paste +shift contents of current layer +flip (top/bottom or left/right) or rotate (0/90/180/270) char +draw line +draw square +draw circle +fill +text + +tool settings: +paint: brush size, filter affect char/fg/bg +erase: filter affect char/fg/bg +pick: filter affect char/fg/bg +cut/copy/paste: affect all layers, filter affect char/fg/bg +draw line: line thickness +draw square: filled/hollow, square/nonsquare aspect +draw ellipse: filled/hollow, circle/ellipse aspect +fill: filter affect char/fg/bg + +navigation: +pan view +zoom view +shift active layer +shift active frame + +toggle grid +toggle onion skin +onion skin settings: # of previous frames, # of next frames, max/min opacity + +char/fg/bg settings: +swap selected fg/bg +previous/next char +previous/next fg color +previous/next bg color + +file/meta/misc: +undo/redo +load/open +save [with current name | with name Z] +new document [of size X by Y] [with name Z] +convert raster image (to current document size/charset/palette) +export current frame to PNG +export all frames to GIF +load charset +load palette +convert to charset (find matches from current to target charset, convert chars) +convert to palette (same as above but for colors) +crop document (to size X by Y) (to current selection) +add frame at index X +duplicate frame at index X +add layer with depth Z +duplicate layer X + +invoke command line +open help/about screen +execute python expression diff --git a/docs/uvs.txt b/docs/uvs.txt new file mode 100644 index 0000000..9417aa2 --- /dev/null +++ b/docs/uvs.txt @@ -0,0 +1,81 @@ + +uv transform worksheet + +a --------------- b +| | +| | +| | +| | +| | +| | +c --------------- d + +normal +0,0 ----------- 1,0 +| | +| | +| | +| | +| | +| | +0,1 ----------- 1,1 + +rotate 90 +0,1 ----------- 0,0 +| | +| | +| | +| | +| | +| | +1,1 ----------- 1,0 + +rotate 180 +1,1 ----------- 0,1 +| | +| | +| | +| | +| | +| | +1,0 ----------- 0,0 + +rotate 270 +1,0 ----------- 1,1 +| | +| | +| | +| | +| | +| | +0,0 ----------- 0,1 + +flip X +1,0 ----------- 0,0 +| | +| | +| | +| | +| | +| | +1,1 ----------- 0,1 + +flip Y +0,1 ----------- 1,1 +| | +| | +| | +| | +| | +| | +0,0 ----------- 1,0 + +flip X & Y +1,1 ----------- 0,1 +| | +| | +| | +| | +| | +| | +1,0 ----------- 0,0 diff --git a/edit_command.py b/edit_command.py new file mode 100644 index 0000000..91fb6ea --- /dev/null +++ b/edit_command.py @@ -0,0 +1,252 @@ +import time + +class EditCommand: + + "undo/redo-able representation of an art edit (eg paint, erase) operation" + + def __init__(self, art): + self.art = art + self.start_time = art.app.get_elapsed_time() + self.finish_time = None + # nested dictionary with frame(layer(column(row))) structure - + # this prevents multiple commands operating on the same tile + # from stomping each other + self.tile_commands = {} + + def get_number_of_commands(self): + commands = 0 + for frame in self.tile_commands.values(): + for layer in frame.values(): + for column in layer.values(): + for tile in column.values(): + commands += 1 + return commands + + def __str__(self): + # get unique-ish ID from memory address + addr = self.__repr__() + addr = addr[addr.find('0'):-1] + s = 'EditCommand_%s: %s tiles, time %s' % (addr, self.get_number_of_commands(), + self.finish_time) + return s + + def add_command_tiles(self, new_command_tiles): + for ct in new_command_tiles: + # create new tables for frames/layers/columns if not present + if not ct.frame in self.tile_commands: + self.tile_commands[ct.frame] = {} + if not ct.layer in self.tile_commands[ct.frame]: + self.tile_commands[ct.frame][ct.layer] = {} + if not ct.y in self.tile_commands[ct.frame][ct.layer]: + self.tile_commands[ct.frame][ct.layer][ct.y] = {} + # preserve "before" state of any command we overwrite + if ct.x in self.tile_commands[ct.frame][ct.layer][ct.y]: + old_ct = self.tile_commands[ct.frame][ct.layer][ct.y][ct.x] + ct.set_before(old_ct.b_char, old_ct.b_fg, old_ct.b_bg, + old_ct.b_xform) + self.tile_commands[ct.frame][ct.layer][ct.y][ct.x] = ct + + def undo_commands_for_tile(self, frame, layer, x, y): + # no commands at all yet, maybe + if len(self.tile_commands) == 0: + return + # tile might not have undo commands, eg text entry beyond start region + if not y in self.tile_commands[frame][layer] or \ + not x in self.tile_commands[frame][layer][y]: + return + self.tile_commands[frame][layer][y][x].undo() + + def undo(self): + for frame in self.tile_commands.values(): + for layer in frame.values(): + for column in layer.values(): + for tile_command in column.values(): + tile_command.undo() + + def apply(self): + for frame in self.tile_commands.values(): + for layer in frame.values(): + for column in layer.values(): + for tile_command in column.values(): + tile_command.apply() + + +class EntireArtCommand: + + """ + undo/redo-able representation of a whole-art operation, eg: + resize/crop, run art script, add/remove layer, etc + """ + + # art arrays to grab + array_types = ['chars', 'fg_colors', 'bg_colors', 'uv_mods'] + + def __init__(self, art, origin_x=0, origin_y=0): + self.art = art + # remember origin of resize command + self.origin_x, self.origin_y = origin_x, origin_y + self.before_frame = art.active_frame + self.before_layer = art.active_layer + self.start_time = self.finish_time = art.app.get_elapsed_time() + + def save_tiles(self, before=True): + # save copies of tile data lists + prefix = 'b' if before else 'a' + for atype in self.array_types: + # save list as eg "b_chars" for "character data before operation" + src_data = getattr(self.art, atype) + var_name = '%s_%s' % (prefix, atype) + # deep copy each frame's data, else before == after + new_data = [] + for frame in src_data: + new_data.append(frame.copy()) + setattr(self, var_name, new_data) + if before: + self.before_size = (self.art.width, self.art.height) + else: + self.after_size = (self.art.width, self.art.height) + + def undo(self): + # undo might remove frames/layers that were added + self.art.set_active_frame(self.before_frame) + self.art.set_active_layer(self.before_layer) + if self.before_size != self.after_size: + x, y = self.before_size + self.art.resize(x, y, self.origin_x, self.origin_y) + for atype in self.array_types: + new_data = getattr(self, 'b_' + atype) + setattr(self.art, atype, new_data[:]) + if self.before_size != self.after_size: + # Art.resize will set geo_changed and mark all frames changed + self.art.app.ui.adjust_for_art_resize(self.art) + self.art.mark_all_frames_changed() + + def apply(self): + if self.before_size != self.after_size: + x, y = self.after_size + self.art.resize(x, y, self.origin_x, self.origin_y) + for atype in self.array_types: + new_data = getattr(self, 'a_' + atype) + setattr(self.art, atype, new_data[:]) + if self.before_size != self.after_size: + self.art.app.ui.adjust_for_art_resize(self.art) + self.art.mark_all_frames_changed() + + +class EditCommandTile: + + def __init__(self, art): + self.art = art + self.creation_time = self.art.app.get_elapsed_time() + # initialize everything + # previously did 'string list of serialized items' + setattr + # which made prettier code but was slower + self.frame = self.layer = self.x = self.y = None + self.b_char = self.b_fg = self.b_bg = self.b_xform = None + self.a_char = self.a_fg = self.a_bg = self.a_xform = None + + def __str__(self): + s = 'F%s L%s %s,%s @ %.2f: ' % (self.frame, self.layer, str(self.x).rjust(2, '0'), str(self.y).rjust(2, '0'), self.creation_time) + s += 'c%s f%s b%s x%s -> ' % (self.b_char, self.b_fg, self.b_bg, self.b_xform) + s += 'c%s f%s b%s x%s' % (self.a_char, self.a_fg, self.a_bg, self.a_xform) + return s + + def __eq__(self, value): + return self.frame == value.frame and self.layer == value.layer and \ + self.x == value.x and self.y == value.y and \ + self.b_char == value.b_char and self.b_fg == value.b_fg and \ + self.b_bg == value.b_bg and self.b_xform == value.b_xform and \ + self.a_char == value.a_char and self.a_fg == value.a_fg and \ + self.a_bg == value.a_bg and self.a_xform == value.a_xform + + def copy(self): + "returns a deep copy of this tile command" + new_ect = EditCommandTile(self.art) + # TODO: old or new timestamp? does it matter? + #new_ect.creation_time = self.art.app.get_elapsed_time() + new_ect.creation_time = self.creation_time + # copy all properties + new_ect.frame, new_ect.layer = self.frame, self.layer + new_ect.x, new_ect.y = self.x, self.y + new_ect.b_char, new_ect.b_xform = self.b_char, self.b_xform + new_ect.b_fg, new_ect.b_bg = self.b_fg, self.b_bg + new_ect.a_char, new_ect.a_xform = self.a_char, self.a_xform + new_ect.a_fg, new_ect.a_bg = self.a_fg, self.a_bg + return new_ect + + def set_tile(self, frame, layer, x, y): + self.frame, self.layer = frame, layer + self.x, self.y = x, y + + def set_before(self, char, fg, bg, xform): + self.b_char, self.b_xform = char, xform + self.b_fg, self.b_bg = fg, bg + + def set_after(self, char, fg, bg, xform): + self.a_char, self.a_xform = char, xform + self.a_fg, self.a_bg = fg, bg + + def is_null(self): + return self.a_char == self.b_char and self.a_fg == self.b_fg and self.a_bg == self.b_bg and self.a_xform == self.b_xform + + def undo(self): + # tile's frame or layer may have been deleted + if self.layer > self.art.layers - 1 or self.frame > self.art.frames - 1: + return + if self.x >= self.art.width or self.y >= self.art.height: + return + tool = self.art.app.ui.selected_tool + set_all = tool.affects_char and tool.affects_fg_color and tool.affects_fg_color and tool.affects_xform + self.art.set_tile_at(self.frame, self.layer, self.x, self.y, + self.b_char, self.b_fg, self.b_bg, self.b_xform, set_all) + + def apply(self): + tool = self.art.app.ui.selected_tool + set_all = tool.affects_char and tool.affects_fg_color and tool.affects_fg_color and tool.affects_xform + self.art.set_tile_at(self.frame, self.layer, self.x, self.y, + self.a_char, self.a_fg, self.a_bg, self.a_xform, set_all) + + +class CommandStack: + + def __init__(self, art): + self.art = art + self.undo_commands, self.redo_commands = [], [] + + def __str__(self): + s = 'stack for %s:\n' % self.art.filename + s += '===\nundo:\n' + for cmd in self.undo_commands: + s += str(cmd) + '\n' + s += '\n===\nredo:\n' + for cmd in self.redo_commands: + s += str(cmd) + '\n' + return s + + def commit_commands(self, new_commands): + self.undo_commands += new_commands[:] + self.clear_redo() + + def undo(self): + if len(self.undo_commands) == 0: + return + command = self.undo_commands.pop() + self.art.app.cursor.undo_preview_edits() + command.undo() + self.redo_commands.append(command) + self.art.app.cursor.update_cursor_preview() + + def redo(self): + if len(self.redo_commands) == 0: + return + command = self.redo_commands.pop() + # un-apply cursor preview before applying redo, else preview edits + # edits will "stick" + self.art.app.cursor.undo_preview_edits() + command.apply() + # add to end of undo stack + self.undo_commands.append(command) + self.art.app.cursor.update_cursor_preview() + + def clear_redo(self): + self.redo_commands = [] diff --git a/formats/in_ans.py b/formats/in_ans.py new file mode 100644 index 0000000..3fb6f8c --- /dev/null +++ b/formats/in_ans.py @@ -0,0 +1,182 @@ + +from art_import import ArtImporter + +DEFAULT_FG, DEFAULT_BG = 7, 0 +WIDTH = 80 +MAX_LINES = 250 + +class ANSImporter(ArtImporter): + format_name = 'ANSI' + format_description = """ +Classic scene format using ANSI standard codes. +Assumes 80 columns, DOS character set and EGA palette. + """ + allowed_file_extensions = ['ans', 'txt'] + + def get_sequence(self, data): + "returns a list of ints from given data ending in a letter" + i = 0 + seq = [] + while not 64 <= data[i] <= 126: + seq.append(data[i]) + i += 1 + seq.append(data[i]) + return seq + + def get_commands_from_sequence(self, seq): + "returns command type & commands (separated by semicolon) from sequence" + cmds = [] + new_cmd = '' + for k in seq[:-1]: + if k != 59: + new_cmd += chr(k) + else: + cmds.append(new_cmd) + new_cmd = '' + # include last command + cmds.append(new_cmd) + return chr(seq[-1]), cmds + + def run_import(self, in_filename, options={}): + self.set_art_charset('dos') + self.set_art_palette('ansi') + # resize to arbitrary height, crop once we know final line count + self.resize(WIDTH, MAX_LINES) + self.art.clear_frame_layer(0, 0, DEFAULT_BG + 1) + data = open(in_filename, 'rb').read() + x, y = 0, 0 + # cursor save/restore codes position + saved_x, saved_y = 0, 0 + # final value of y might be lower than last line touched if + # cursor up/reset codes used; track highest value + max_y = 0 + fg, bg = DEFAULT_FG, DEFAULT_BG + i = 0 + fg_bright, bg_bright = False, False + while i < len(data): + if x >= WIDTH: + x = 0 + y += 1 + if y > max_y: max_y = y + # how much we will advance through bytes for next iteration + increment = 1 + # command sequence + if data[i] == 27 and data[i+1] == 91: + increment += 1 + # grab full length of sequence + seq = self.get_sequence(data[i+2:]) + # split sequence into individual commands + cmd_type, cmds = self.get_commands_from_sequence(seq) + # display control + if cmd_type == 'm': + # empty command = reset + if len(cmds) == 0: + fg, bg = DEFAULT_FG, DEFAULT_BG + fg_bright, bg_bright = False, False + else: + for cmd in cmds: + code = int(cmd) + # reset colors + if code == 0: + fg, bg = DEFAULT_FG, DEFAULT_BG + fg_bright, bg_bright = False, False + # "bright" colors + elif code == 1: + # bump fg color if isn't already bright + if not fg_bright: + fg += 8 + fg_bright = True + elif code == 5: + if not bg_bright: + bg += 8 + bg_bright = True + # swap fg/bg + elif code == 7: + fg, bg = bg, fg + # change fg color + elif 30 <= code <= 37: + fg = code - 30 + if fg_bright: fg += 8 + # change bg color + elif 40 <= code <= 47: + bg = code - 40 + if bg_bright: bg += 8 + #else: print('unhandled display code %s' % code) + # cursor up/down/forward/back + elif cmd_type == 'A': + y -= int(cmds[0]) if cmds[0] else 1 + elif cmd_type == 'B': + y += int(cmds[0]) if cmds[0] else 1 + if y > max_y: max_y = y + elif cmd_type == 'C': + x += int(cmds[0]) if cmds[0] else 1 + elif cmd_type == 'D': + x -= int(cmds[0]) if cmds[0] else 1 + # break + elif ord(cmd_type) == 26: + break + # set line wrap (ignore for now) + elif cmd_type == 'h': + pass + # move cursor to Y,X + elif cmd_type == 'H' or cmd_type == 'f': + if len(cmds) == 0 or len(cmds[0]) == 0: + new_y = 0 + else: + new_y = int(cmds[0]) - 1 + if len(cmds) < 2 or len(cmds[1]) == 0: + new_x = 0 + else: + new_x = int(cmds[1]) - 1 + x, y = new_x, new_y + if y > max_y: max_y = y + # clear line/screen + elif cmd_type == 'J': + cmd = int(cmds[0]) if cmds else 0 + # 0: clear from cursor to end of screen + if cmd == 0: + for xi in range(x, WIDTH): + self.art.set_char_index_at(0, 0, xi, y, 0) + # 1: clear from cursor to beginning of screen + elif cmd == 1: + for xi in range(x): + self.art.set_char_index_at(0, 0, xi, y, 0) + # 2: clear entire screen, move cursor to 0,0 + elif cmd == 2: + x, y = 0, 0 + self.art.clear_frame_layer(0, 0, DEFAULT_BG + 1) + # save cursor position + elif cmd_type == 's': + saved_x, saved_y = x, y + # restore cursor position + elif cmd_type == 'u': + x, y = saved_x, saved_y + #else: print('unhandled escape code %s' % cmd_type) + increment += len(seq) + # CR + LF + elif data[i] == 13 and data[i+1] == 10: + increment += 1 + x = 0 + y += 1 + if y > max_y: max_y = y + # LF + elif data[i] == 10: + x = 0 + y += 1 + if y > max_y: max_y = y + # indent + elif data[i] == 9: + x += 8 + # regular character + else: + char = data[i] + # account for color 0 (transparent) + self.art.set_tile_at(0, 0, x, y, char, fg + 1, bg + 1) + x += 1 + i += increment + # resize to last line touched + self.resize(WIDTH, max_y) + # rare cases where no lines covered + if self.art.height == 0: + return False + return True diff --git a/formats/in_ata.py b/formats/in_ata.py new file mode 100644 index 0000000..a889148 --- /dev/null +++ b/formats/in_ata.py @@ -0,0 +1,67 @@ + +from art_import import ArtImporter + +# import as white on black for ease of edit + export +DEFAULT_FG, DEFAULT_BG =113, 1 +# most ATAs are 40 columns, but some are a couple chars longer and a few are 80! +WIDTH, HEIGHT = 80, 40 + +class ATAImporter(ArtImporter): + format_name = 'ATASCII' + format_description = """ +ATARI 8-bit computer version of ASCII. +Imports with ATASCII character set and Atari palette. + """ + allowed_file_extensions = ['ata'] + + def run_import(self, in_filename, options={}): + self.set_art_charset('atari') + self.set_art_palette('atari') + self.resize(WIDTH, HEIGHT) + self.art.clear_frame_layer(0, 0, DEFAULT_BG) + # iterate over the bytes + data = open(in_filename, 'rb').read() + i = 0 + x, y = 0, 0 + while i < len(data): + fg, bg = DEFAULT_FG, DEFAULT_BG + if x >= WIDTH: + x = 0 + y += 1 + if y >= HEIGHT: + y = HEIGHT - 1 + char = data[i] + # handle control characters + # (most not supported!) + # https://en.wikipedia.org/wiki/ATASCII#Control_characters_2 + # tab + if char == 127: + x += 4 + i += 1 + continue + # backspace + elif char == 126: + x -= 1 + i += 1 + continue + # line break + elif char == 155: + x = 0 + y += 1 + i += 1 + continue + # over 127: inverted set + elif char > 127: + fg, bg = DEFAULT_BG, DEFAULT_FG + # being a little fancy here, redo if it backfires + char -= 128 + # handle mismatch between playscii's version of ATASCII (which + # prefers to have character index 0 empty) and the real ATASCII + if char == 0: + char = 32 + elif char == 32: + char = 0 + self.art.set_tile_at(0, 0, x, y, char, fg, bg) + x += 1 + i += 1 + return True diff --git a/formats/in_bitmap.py b/formats/in_bitmap.py new file mode 100644 index 0000000..0fe480d --- /dev/null +++ b/formats/in_bitmap.py @@ -0,0 +1,195 @@ + +# bitmap image conversion predates the import/export system so it's a bit weird. +# conversion happens over time, so it merely kicks off the process. + +import os +from PIL import Image + +from ui_file_chooser_dialog import ImageFileChooserDialog +from ui_dialog import UIDialog, Field +from ui_art_dialog import ImportOptionsDialog +from image_convert import ImageConverter +from art_import import ArtImporter +from palette import PaletteFromFile +from art import DEFAULT_CHARSET, DEFAULT_PALETTE, DEFAULT_WIDTH, DEFAULT_HEIGHT + +# custom chooser showing image previews, shares parent w/ "palette from image" + +class ConvertImageChooserDialog(ImageFileChooserDialog): + + title = 'Convert image' + confirm_caption = 'Choose' + + def confirm_pressed(self): + filename = self.field_texts[0] + if not os.path.exists(filename) or not os.path.isfile(filename): + return + self.ui.app.last_import_dir = self.current_dir + self.dismiss() + # get dialog box class and invoke it + dialog_class = self.ui.app.importer.options_dialog_class + # tell the dialog which image we chose, store its size + w, h = Image.open(filename).size + options = { + 'filename': filename, + 'image_width': w, + 'image_height': h + } + self.ui.open_dialog(dialog_class, options) + + +# custom dialog box providing convert options + +class ConvertImageOptionsDialog(ImportOptionsDialog): + + title = 'Convert bitmap image options' + field0_label = 'Color palette:' + field1_label = 'Current palette (%s)' + field2_label = 'From source image; # of colors:' + field3_label = ' ' + field5_label = 'Converted art size:' + field6_label = 'Best fit to current size (%s)' + field7_label = '%% of source image: (%s)' + field8_label = ' ' + field10_label = 'Smooth (bicubic) scale source image' + radio_groups = [(1, 2), (6, 7)] + field_width = UIDialog.default_short_field_width + # to get the layout we want, we must specify 0 padding lines and + # add some blank ones :/ + y_spacing = 0 + fields = [ + Field(label=field0_label, type=None, width=0, oneline=True), + Field(label=field1_label, type=bool, width=0, oneline=True), + Field(label=field2_label, type=bool, width=0, oneline=True), + Field(label=field3_label, type=int, width=field_width, oneline=True), + Field(label='', type=None, width=0, oneline=True), + Field(label=field5_label, type=None, width=0, oneline=True), + Field(label=field6_label, type=bool, width=0, oneline=True), + Field(label=field7_label, type=bool, width=0, oneline=True), + Field(label=field8_label, type=float, width=field_width, oneline=True), + Field(label='', type=None, width=0, oneline=True), + Field(label=field10_label, type=bool, width=0, oneline=True), + Field(label='', type=None, width=0, oneline=True) + ] + invalid_color_error = 'Palettes must be between 2 and 256 colors.' + invalid_scale_error = 'Scale must be greater than 0.0' + # redraw dynamic labels + always_redraw_labels = True + + def get_initial_field_text(self, field_number): + if field_number == 1: + return UIDialog.true_field_text + elif field_number == 3: + # # of colors from source image + return '64' + elif field_number == 6: + return UIDialog.true_field_text + elif field_number == 8: + # % of source image size + return '50.0' + elif field_number == 10: + return ' ' + return '' + + def get_field_label(self, field_index): + label = self.fields[field_index].label + # custom label replacements to show palette, possible convert sizes + if field_index == 1: + label %= self.ui.active_art.palette.name if self.ui.active_art else DEFAULT_PALETTE + elif field_index == 6: + # can't assume any art is open, use defaults if needed + w = self.ui.active_art.width if self.ui.active_art else DEFAULT_WIDTH + h = self.ui.active_art.height if self.ui.active_art else DEFAULT_HEIGHT + label %= '%s x %s' % (w, h) + elif field_index == 7: + # scale # might not be valid + valid,_ = self.is_input_valid() + if not valid: + return label % '???' + label %= '%s x %s' % self.get_tile_scale() + return label + + def get_tile_scale(self): + "returns scale in tiles of image dimensions" + # filename won't be set just after dialog is created + if not hasattr(self, 'filename'): + return 0, 0 + scale = float(self.field_texts[8]) / 100 + # can't assume any art is open, use defaults if needed + if self.ui.active_art: + cw = self.ui.active_art.charset.char_width + ch = self.ui.active_art.charset.char_height + else: + charset = self.ui.app.load_charset(DEFAULT_CHARSET) + cw, ch = charset.char_width, charset.char_height + width = self.image_width / cw + height = self.image_height / ch + width *= scale + height *= scale + return int(width), int(height) + + def is_input_valid(self): + # colors: int between 2 and 256 + try: int(self.field_texts[3]) + except: return False, self.invalid_color_error + colors = int(self.field_texts[3]) + if colors < 2 or colors > 256: + return False, self.invalid_color_error + # % scale: >0 float + try: float(self.field_texts[8]) + except: return False, self.invalid_scale_error + if float(self.field_texts[8]) <= 0: + return False, self.invalid_scale_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + self.dismiss() + # compile options for importer + options = {} + # create new palette from image? + if self.field_texts[1].strip(): + options['palette'] = self.ui.active_art.palette.name if self.ui.active_art else DEFAULT_PALETTE + else: + # create new palette + palette_filename = os.path.basename(self.filename) + colors = int(self.field_texts[3]) + new_pal = PaletteFromFile(self.ui.app, self.filename, + palette_filename, colors) + # palette now loaded and saved to disk + options['palette'] = new_pal.name + # rescale art? + if self.field_texts[6].strip(): + options['art_width'] = self.ui.active_art.width if self.ui.active_art else DEFAULT_WIDTH + options['art_height'] = self.ui.active_art.height if self.ui.active_art else DEFAULT_HEIGHT + else: + # art dimensions = scale% of image dimensions, in tiles + options['art_width'], options['art_height'] = self.get_tile_scale() + options['bicubic_scale'] = bool(self.field_texts[10].strip()) + ImportOptionsDialog.do_import(self.ui.app, self.filename, options) + + +class BitmapImageImporter(ArtImporter): + format_name = 'Bitmap image' + format_description = """ +Bitmap image in PNG, JPEG, or BMP format. + """ + file_chooser_dialog_class = ConvertImageChooserDialog + options_dialog_class = ConvertImageOptionsDialog + completes_instantly = False + + def run_import(self, in_filename, options={}): + # modify self.app.ui.active_art based on options + palette = self.app.load_palette(options['palette']) + self.art.set_palette(palette) + width, height = options['art_width'], options['art_height'] + self.art.resize(width, height) # Importer.init will adjust UI + bicubic_scale = options['bicubic_scale'] + # let ImageConverter do the actual heavy lifting + ic = ImageConverter(self.app, in_filename, self.art, bicubic_scale) + # early failures: file no longer exists, PIL fails to load and convert image + if not ic.init_success: + return False + self.app.update_window_title() + return True diff --git a/formats/in_bitmap_2color.py b/formats/in_bitmap_2color.py new file mode 100644 index 0000000..8e80a85 --- /dev/null +++ b/formats/in_bitmap_2color.py @@ -0,0 +1,86 @@ + +import numpy as np + +from image_convert import ImageConverter +from ui_dialog import UIDialog, Field, SkipFieldType +from formats.in_bitmap import BitmapImageImporter, ConvertImageChooserDialog, ConvertImageOptionsDialog + + +class TwoColorConvertImageOptionsDialog(ConvertImageOptionsDialog): + # simplified version of parent options dialog, reusing as much as possible + title = 'Convert 2-color bitmap image options' + field5_label = ConvertImageOptionsDialog.field5_label + field6_label = ConvertImageOptionsDialog.field6_label + field7_label = ConvertImageOptionsDialog.field7_label + field8_label = ConvertImageOptionsDialog.field8_label + field10_label = ConvertImageOptionsDialog.field10_label + field_width = ConvertImageOptionsDialog.field_width + fields = [ + Field(label='', type=SkipFieldType, width=0, oneline=True), + Field(label='', type=SkipFieldType, width=0, oneline=True), + Field(label='', type=SkipFieldType, width=0, oneline=True), + Field(label='', type=SkipFieldType, width=0, oneline=True), + Field(label='', type=SkipFieldType, width=0, oneline=True), + Field(label=field5_label, type=None, width=0, oneline=True), + Field(label=field6_label, type=bool, width=0, oneline=True), + Field(label=field7_label, type=bool, width=0, oneline=True), + Field(label=field8_label, type=float, width=field_width, oneline=True), + Field(label='', type=None, width=0, oneline=True), + Field(label=field10_label, type=bool, width=0, oneline=True), + Field(label='', type=None, width=0, oneline=True) + ] + + def __init__(self, ui, options): + ConvertImageOptionsDialog.__init__(self, ui, options) + self.active_field = 6 + + def get_initial_field_text(self, field_number): + # alternate defaults - use 1:1 scaling + if field_number == 6: + return ' ' + elif field_number == 7: + return UIDialog.true_field_text + elif field_number == 8: + # % of source image size - alternate default + return '100.0' + else: + return ConvertImageOptionsDialog.get_initial_field_text(self, field_number) + + +class TwoColorImageConverter(ImageConverter): + + def get_color_combos_for_block(self, src_block): + colors, counts = np.unique(src_block, False, False, return_counts=True) + if len(colors) > 0: + return (1, 2), [(2, 1)] + # handle blocks with 0 unique colors, ie clear tiles out of image bounds + # (just return white background) + else: + return [2], [] + + +class TwoColorBitmapImageImporter(BitmapImageImporter): + format_name = '2-color bitmap image' + format_description = """ +Variation on bitmap image conversion that forces +a black and white (1-bit) palette, and doesn't use +fg/bg color swaps. Suitable for plaintext export. + """ + file_chooser_dialog_class = ConvertImageChooserDialog + options_dialog_class = TwoColorConvertImageOptionsDialog + completes_instantly = False + + def run_import(self, in_filename, options={}): + # force palette to 1-bit black and white + palette = self.app.load_palette('bw') + self.art.set_palette(palette) + + width, height = options['art_width'], options['art_height'] + self.art.resize(width, height) # Importer.init will adjust UI + bicubic_scale = options['bicubic_scale'] + ic = TwoColorImageConverter(self.app, in_filename, self.art, bicubic_scale) + # early failures: file no longer exists, PIL fails to load and convert image + if not ic.init_success: + return False + self.app.update_window_title() + return True diff --git a/formats/in_bitmap_sequence.py b/formats/in_bitmap_sequence.py new file mode 100644 index 0000000..384cd35 --- /dev/null +++ b/formats/in_bitmap_sequence.py @@ -0,0 +1,116 @@ + +# "convert folder of images to animation" +# heavy lifting still done by ImageConverter, this mainly coordinates +# conversion of multiple frames + +import os, time + +import image_convert +import formats.in_bitmap as bm + +class ImageSequenceConverter: + + def __init__(self, app, image_filenames, art, bicubic_scale): + self.init_success = False + self.app = app + self.start_time = time.time() + self.image_filenames = image_filenames + # App.update_window_title uses image_filename for titlebar + self.image_filename = '' + # common name of sequence + self.image_name = os.path.splitext(self.image_filename)[0] + self.art = art + self.bicubic_scale = bicubic_scale + # queue up first frame + self.next_image(first=True) + self.init_success = True + + def next_image(self, first=False): + # pop last image off stack + if not first: + self.image_filenames.pop(0) + # done? + if len(self.image_filenames) == 0: + self.finish() + return + # next frame + self.art.set_active_frame(self.art.active_frame + 1) + try: + self.current_frame_converter = image_convert.ImageConverter(self.app, + self.image_filenames[0], + self.art, + self.bicubic_scale, self) + except: + self.fail() + return + if not self.current_frame_converter.init_success: + self.fail() + return + self.image_filename = self.image_filenames[0] + self.preview_sprite = self.current_frame_converter.preview_sprite + self.app.update_window_title() + + def fail(self): + self.app.log('Bad frame %s' % self.image_filenames[0], error=True) + self.finish(True) + + def update(self): + # create converter for new frame if current one is done, + # else update current one + if self.current_frame_converter.finished: + self.next_image() + else: + self.current_frame_converter.update() + + def finish(self, cancelled=False): + time_taken = time.time() - self.start_time + (verb, error) = ('cancelled', True) if cancelled else ('finished', False) + self.app.log('Conversion of image sequence %s %s after %.3f seconds' % (self.image_name, verb, time_taken), error) + self.app.converter = None + self.app.update_window_title() + + +class ConvertImageSequenceChooserDialog(bm.ConvertImageChooserDialog): + title = 'Convert folder' + confirm_caption = 'Choose First Image' + + +class BitmapImageSequenceImporter(bm.BitmapImageImporter): + format_name = 'Bitmap image folder' + format_description = """ +Converts a folder of Bitmap images (PNG, JPEG, or BMP) +into an animation. Dimensions will be based on first +image chosen. + """ + file_chooser_dialog_class = ConvertImageSequenceChooserDialog + #options_dialog_class = bm.ConvertImageOptionsDialog + + def run_import(self, in_filename, options={}): + palette = self.app.load_palette(options['palette']) + self.art.set_palette(palette) + width, height = options['art_width'], options['art_height'] + self.art.resize(width, height) # Importer.init will adjust UI + bicubic_scale = options['bicubic_scale'] + # get dir listing with full pathname + in_dir = os.path.dirname(in_filename) + in_files = ['%s/%s' % (in_dir, f) for f in os.listdir(in_dir)] + in_files.sort() + # assume numeric sequence starts from chosen file + in_files = in_files[in_files.index(in_filename):] + # remove files from end of list if they don't end in a number + while not os.path.splitext(in_files[-1])[0][-1].isdecimal() and \ + len(in_files) > 0: + in_files.pop() + # add frames to art as needed + while self.art.frames < len(in_files): + self.art.add_frame_to_end(log=False) + self.art.set_active_frame(0) + # create converter + isc = ImageSequenceConverter(self.app, in_files, self.art, + bicubic_scale) + # bail on early failure + if not isc.init_success: + return False + self.app.converter = isc + self.app.update_window_title() + return True diff --git a/formats/in_edscii.py b/formats/in_edscii.py new file mode 100644 index 0000000..a90e92e --- /dev/null +++ b/formats/in_edscii.py @@ -0,0 +1,92 @@ + +from art_import import ArtImporter +from ui_dialog import UIDialog, Field +from ui_art_dialog import ImportOptionsDialog + + +class EDSCIIImportOptionsDialog(ImportOptionsDialog): + title = 'Import EDSCII (legacy format) art' + field0_label = 'Width override (leave 0 to guess):' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=int, width=field_width, oneline=False) + ] + invalid_width_error = 'Invalid width override.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return '0' + return '' + + def is_input_valid(self): + # valid widths: any >=0 int + try: int(self.field_texts[0]) + except: return False, self.invalid_width_error + if int(self.field_texts[0]) < 0: + return False, self.invalid_width_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + width = int(self.field_texts[0]) + width = width if width > 0 else None + options = {'width_override':width} + self.dismiss() + # self.filename is set in our importer's file_chooser_dialog_class + ImportOptionsDialog.do_import(self.ui.app, self.filename, options) + + +class EDSCIIImporter(ArtImporter): + + format_name = 'EDSCII' + format_description = """ +Binary format for EDSCII, Playscii's predecessor. +Assumes single frame, single layer document. +Current character set and palette will be used. + """ + options_dialog_class = EDSCIIImportOptionsDialog + + def run_import(self, in_filename, options={}): + data = open(in_filename, 'rb').read() + # document width = find longest stretch before a \n + longest_line = 0 + for line in data.splitlines(): + if len(line) > longest_line: + longest_line = len(line) + # user can override assumed document width, needed for a few files + width = options.get('width_override', None) or int(longest_line / 3) + # derive height from width + # 2-byte line breaks might produce non-int result, cast erases this + height = int(len(data) / width / 3) + self.art.resize(width, height) + # populate char/color arrays by scanning width-long chunks of file + def chunks(l, n): + for i in range(0, len(l), n): + yield l[i:i+n] + # 3 bytes per tile, +1 for line ending + # BUT: files saved in windows may have 2 byte line breaks, try to detect + lb_length = 1 + lines = chunks(data, (width * 3) + lb_length) + for line in lines: + if line[-2] == ord('\r') and line[-1] == ord('\n'): + #self.app.log('EDSCIIImporter: windows-style line breaks detected') + lb_length = 2 + break + # recreate generator after first use + lines = chunks(data, (width * 3) + lb_length) + x, y = 0, 0 + for line in lines: + index = 0 + while index < len(line) - lb_length: + char = line[index] + # +1 to color indices; playscii color index 0 = transparent + fg = line[index+1] + 1 + bg = line[index+2] + 1 + self.art.set_tile_at(0, 0, x, y, char, fg, bg) + index += 3 + x += 1 + if x >= width: + x = 0 + y += 1 + return True diff --git a/formats/in_endoom.py b/formats/in_endoom.py new file mode 100644 index 0000000..10bda82 --- /dev/null +++ b/formats/in_endoom.py @@ -0,0 +1,42 @@ + +from art_import import ArtImporter + +class EndDoomImporter(ArtImporter): + format_name = 'ENDOOM' + format_description = """ +ENDOOM lump file format for Doom engine games. +80x25 DOS ASCII with EGA palette. +Background colors can only be EGA colors 0-8. + """ + + def run_import(self, in_filename, options={}): + """ + from http://doomwiki.org/wiki/ENDOOM: + 80x25 tiles, dos charset, ega palette + each tile is 2 bytes: + first byte = ASCII (code page 437) char index + second byte = color: + bits 0-3 = fg color, bits 4-6 = bg color, bit 7 = blink + """ + self.set_art_charset('dos') + self.set_art_palette('ega') + self.art.resize(80, 25) + data = open(in_filename, 'rb').read(4000) + x, y = 0, 0 + for i,byte in enumerate(data): + if i % 2 != 0: + continue + color_byte = data[i+1] + bits = bin(color_byte)[2:] + bits = bits.rjust(7, '0') + bg_bits = bits[:3] + fg_bits = bits[3:] + offset = 1 + fg = int(fg_bits, 2) + offset + bg = int(bg_bits, 2) + offset + self.art.set_tile_at(0, 0, x, y, byte, fg, bg) + x += 1 + if x >= self.art.width: + x = 0 + y += 1 + return True diff --git a/formats/in_txt.py b/formats/in_txt.py new file mode 100644 index 0000000..ac7259d --- /dev/null +++ b/formats/in_txt.py @@ -0,0 +1,32 @@ + +from art_import import ArtImporter + +class TextImporter(ArtImporter): + + format_name = 'Plain text' + format_description = """ +ASCII art in ordinary text format. +Assumes single frame, single layer document. +Current character set and palette will be used. + """ + + def run_import(self, in_filename, options={}): + lines = open(in_filename).readlines() + # determine length of longest line + longest = 0 + for line in lines: + if len(line) > longest: + longest = len(line) + if len(lines) == 0 or longest == 0: + return False + self.art.resize(longest, len(lines)) + x, y = 0, 0 + for line in lines: + for char in line: + char_index = self.art.charset.char_mapping.get(char, None) + if char_index: + self.art.set_char_index_at(0, 0, x, y, char_index) + x += 1 + x = 0 + y += 1 + return True diff --git a/formats/out_ans.py b/formats/out_ans.py new file mode 100644 index 0000000..0012505 --- /dev/null +++ b/formats/out_ans.py @@ -0,0 +1,62 @@ + +from art_export import ArtExporter + +WIDTH = 80 +ENCODING = 'cp1252' # old default +ENCODING = 'us-ascii' # DEBUG +ENCODING = 'latin_1' # DEBUG - seems to handle >128 chars ok? + +class ANSExporter(ArtExporter): + format_name = 'ANSI' + format_description = """ +Classic scene format using ANSI standard codes. +Assumes 80 columns, DOS character set and EGA palette. +Exports active layer of active frame. + """ + file_extension = 'ans' + + def get_display_command(self, fg, bg): + "return a display command sequence string for given colors" + # reset colors on every tile + s = chr(27) + chr(91) + '0;' + if fg >= 8: + s += '1;' + fg -= 8 + if bg >= 8: + s += '5;' + bg -= 8 + s += '%s;' % (fg + 30) + s += '%s' % (bg + 40) + s += 'm' + return s + + def write(self, data): + self.outfile.write(data.encode(ENCODING)) + + def run_export(self, out_filename, options): + # binary file; encoding into ANSI bytes happens just before write + self.outfile = open(out_filename, 'wb') + layer = self.art.active_layer + frame = self.art.active_frame + for y in range(self.art.height): + for x in range(WIDTH): + # cut off tiles beyond supported width + if x >= self.art.width - 1: + continue + char, fg, bg, xform = self.art.get_tile_at(frame, layer, x, y) + # offset palette indices so 0 = black not transparent + fg -= 1 + bg -= 1 + # write a display command every tile + # works fine, though it's a larger file - any real downside to this? + self.write(self.get_display_command(fg, bg)) + # write the character for this tile + if char > 31: + self.write(chr(char)) + else: + # special (top row) chars won't display in terminal anyway + self.write(chr(0)) + # carriage return + line feed + self.outfile.write(b'\r\n') + self.outfile.close() + return True diff --git a/formats/out_ata.py b/formats/out_ata.py new file mode 100644 index 0000000..85f77fc --- /dev/null +++ b/formats/out_ata.py @@ -0,0 +1,35 @@ + +from art_export import ArtExporter +from art import TileIter + +class ANSExporter(ArtExporter): + format_name = 'ATASCII' + format_description = """ +ATARI 8-bit computer version of ASCII. +Assumes ATASCII character set and Atari palette. +Any tile with non-black background will be considered inverted. + """ + file_extension = 'ata' + + def run_export(self, out_filename, options): + # binary file; encoding into ANSI bytes happens just before write + self.outfile = open(out_filename, 'wb') + for frame, layer, x, y in TileIter(self.art): + # only read from layer 0 of frame 0 + if layer > 0 or frame > 0: + continue + ch, fg, bg, _ = self.art.get_tile_at(frame, layer, x, y) + # swap char indices 0 (heart) and 32 (blank space) + if ch == 0: + ch = 32 + elif ch == 32: + ch = 0 + # non-black (color 1) background = use inverted set + if bg > 1: + ch += 128 + self.outfile.write(bytes([ch])) + # line break + if x == self.art.width - 1: + self.outfile.write(bytes([155])) + self.outfile.close() + return True diff --git a/formats/out_endoom.py b/formats/out_endoom.py new file mode 100644 index 0000000..7f2c9b6 --- /dev/null +++ b/formats/out_endoom.py @@ -0,0 +1,38 @@ + +from art_export import ArtExporter + +WIDTH, HEIGHT = 80, 25 + +class EndDoomExporter(ArtExporter): + format_name = 'ENDOOM' + format_description = """ +ENDOOM lump file format for Doom engine games. +80x25 DOS ASCII with EGA palette. +Background colors can only be EGA colors 0-8. + """ + def run_export(self, out_filename, options): + if self.art.width < WIDTH or self.art.height < HEIGHT: + self.app.log("ENDOOM export: Art isn't big enough!") + return False + outfile = open(out_filename, 'wb') + for y in range(HEIGHT): + for x in range(WIDTH): + char, fg, bg, xform = self.art.get_tile_at(0, 0, x, y) + # decrement color for EGA, index 0 is transparent in playscii + fg -= 1 + bg -= 1 + # colors can't be negative + fg = max(0, fg) + bg = max(0, bg) + char_byte = bytes([char]) + outfile.write(char_byte) + fg_bits = bin(fg)[2:].rjust(4, '0') + # BG color can't be above 8 + bg %= 8 + bg_bits = bin(bg)[2:].rjust(3, '0') + color_bits = '0' + bg_bits + fg_bits + color_byte = int(color_bits, 2) + color_byte = bytes([color_byte]) + outfile.write(color_byte) + outfile.close() + return True diff --git a/formats/out_gif.py b/formats/out_gif.py new file mode 100644 index 0000000..0d53f35 --- /dev/null +++ b/formats/out_gif.py @@ -0,0 +1,15 @@ + +from art_export import ArtExporter +from image_export import export_animation + +class GIFExporter(ArtExporter): + format_name = 'Animated GIF image' + format_description = """ +Animated GIF of all frames in current document, with +transparency and proper frame timings. + """ + file_extension = 'gif' + def run_export(self, out_filename, options): + # heavy lifting done by image_export module + export_animation(self.app, self.app.ui.active_art, out_filename) + return True diff --git a/formats/out_png.py b/formats/out_png.py new file mode 100644 index 0000000..1dcf0a7 --- /dev/null +++ b/formats/out_png.py @@ -0,0 +1,81 @@ + +from art_export import ArtExporter +from image_export import export_still_image +from ui_dialog import UIDialog, Field +from ui_art_dialog import ExportOptionsDialog + +DEFAULT_SCALE = 4 +DEFAULT_CRT = True + +class PNGExportOptionsDialog(ExportOptionsDialog): + title = 'PNG image export options' + field0_label = 'Scale factor (%s pixels)' + field1_label = 'CRT filter' + fields = [ + Field(label=field0_label, type=int, width=6, oneline=False), + Field(label=field1_label, type=bool, width=0, oneline=True) + ] + # redraw dynamic labels + always_redraw_labels = True + invalid_scale_error = 'Scale must be greater than 0' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return str(DEFAULT_SCALE) + elif field_number == 1: + return [' ', UIDialog.true_field_text][DEFAULT_CRT] + + def get_field_label(self, field_index): + label = self.fields[field_index].label + if field_index == 0: + valid,_ = self.is_input_valid() + if not valid: + label %= '???' + else: + # calculate exported image size + art = self.ui.active_art + scale = int(self.field_texts[0]) + width = art.charset.char_width * art.width * scale + height = art.charset.char_height * art.height * scale + label %= '%s x %s' % (width, height) + return label + + def is_input_valid(self): + # scale factor: >0 int + try: int(self.field_texts[0]) + except: return False, self.invalid_scale_error + if int(self.field_texts[0]) <= 0: + return False, self.invalid_scale_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + self.dismiss() + # compile options for exporter + options = { + 'scale': int(self.field_texts[0]), + 'crt': bool(self.field_texts[1].strip()) + } + ExportOptionsDialog.do_export(self.ui.app, self.filename, options) + + +class PNGExporter(ArtExporter): + format_name = 'PNG image' + format_description = """ +PNG format (lossless compression) still image of current frame. +Can be exported with or without CRT filter effect. +If palette has only one transparent (alpha <1.0) color, +exported image will be 8-bit with same palette as this Art. +Otherwise it will be 32-bit with alpha transparency. +If CRT filter is enabled, image will always be 32-bit. + """ + file_extension = 'png' + options_dialog_class = PNGExportOptionsDialog + + def run_export(self, out_filename, options): + # heavy lifting done by image_export module + return export_still_image(self.app, self.app.ui.active_art, + out_filename, + crt=options.get('crt', DEFAULT_CRT), + scale=options.get('scale', DEFAULT_SCALE)) diff --git a/formats/out_png_set.py b/formats/out_png_set.py new file mode 100644 index 0000000..2ef426c --- /dev/null +++ b/formats/out_png_set.py @@ -0,0 +1,170 @@ + +import os + +from art_export import ArtExporter +from image_export import export_still_image +from ui_dialog import UIDialog, Field +from ui_art_dialog import ExportOptionsDialog +from renderable import LAYER_VIS_FULL, LAYER_VIS_NONE + +FILE_EXTENSION = 'png' + +DEFAULT_SCALE = 1 +DEFAULT_CRT = False + +def get_full_filename(in_filename, frame, layer_name, + use_frame, use_layer, + forbidden_chars): + "Returns properly mutated filename for given frame/layer data" + # strip out path and extension from filename as we mutate it + dirname = os.path.dirname(in_filename) + base_filename = os.path.basename(in_filename) + base_filename = os.path.splitext(base_filename)[0] + fn = base_filename + if use_frame: + fn += '_%s' % (str(frame).rjust(4, '0')) + if use_layer: + fn += '_%s' % layer_name + # strip unfriendly chars from output filename + for forbidden_char in ['\\', '/', '*', ':']: + fn = fn.replace(forbidden_char, '') + # add path and extension for final mutated filename + return '%s/%s.%s' % (dirname, fn, FILE_EXTENSION) + +class PNGSetExportOptionsDialog(ExportOptionsDialog): + title = 'PNG set export options' + tile_width = 60 # extra width for filename preview + field0_label = 'Scale factor (%s pixels)' + field1_label = 'CRT filter' + field2_label = 'Export frames' + field3_label = 'Export layers' + field4_label = 'First filename (in set of %s):' + field5_label = ' %s' + fields = [ + Field(label=field0_label, type=int, width=6, oneline=False), + Field(label=field1_label, type=bool, width=0, oneline=True), + Field(label=field2_label, type=bool, width=0, oneline=True), + Field(label=field3_label, type=bool, width=0, oneline=True), + Field(label=field4_label, type=None, width=0, oneline=True), + Field(label=field5_label, type=None, width=0, oneline=True) + ] + # redraw dynamic labels + always_redraw_labels = True + invalid_scale_error = 'Scale must be greater than 0' + + def get_initial_field_text(self, field_number): + art = self.ui.active_art + if field_number == 0: + return str(DEFAULT_SCALE) + elif field_number == 1: + return [' ', UIDialog.true_field_text][DEFAULT_CRT] + elif field_number == 2: + # default false if only one frame + return [' ', UIDialog.true_field_text][art.frames > 1] + elif field_number == 3: + # default false if only one layer + return [' ', UIDialog.true_field_text][art.layers > 1] + + def get_field_label(self, field_index): + label = self.fields[field_index].label + if field_index == 0: + valid,_ = self.is_input_valid() + if not valid: + label %= '???' + else: + # calculate exported image size + art = self.ui.active_art + scale = int(self.field_texts[0]) + width = art.charset.char_width * art.width * scale + height = art.charset.char_height * art.height * scale + label %= '%s x %s' % (width, height) + # show how many images exported set will be + elif field_index == 4: + export_frames = bool(self.field_texts[2].strip()) + export_layers = bool(self.field_texts[3].strip()) + art = self.ui.active_art + if export_frames and export_layers: + label %= str(art.frames * art.layers) + elif export_frames: + label %= str(art.frames) + elif export_layers: + label %= str(art.layers) + else: + label %= '1' + # preview frame + layer filename mutations based on current settings + elif field_index == 5: + export_frames = bool(self.field_texts[2].strip()) + export_layers = bool(self.field_texts[3].strip()) + art = self.ui.active_art + fn = get_full_filename(self.filename, 0, art.layer_names[0], + export_frames, export_layers, + self.ui.app.forbidden_filename_chars) + fn = os.path.basename(fn) + label %= fn + return label + + def is_input_valid(self): + # scale factor: >0 int + try: int(self.field_texts[0]) + except: return False, self.invalid_scale_error + if int(self.field_texts[0]) <= 0: + return False, self.invalid_scale_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + self.dismiss() + # compile options for importer + options = { + 'scale': int(self.field_texts[0]), + 'crt': bool(self.field_texts[1].strip()), + 'frames': bool(self.field_texts[2].strip()), + 'layers': bool(self.field_texts[3].strip()) + } + ExportOptionsDialog.do_export(self.ui.app, self.filename, options) + + +class PNGSetExporter(ArtExporter): + format_name = 'PNG image set' + format_description = """ +PNG image set for each frame and/or layer. + """ + file_extension = FILE_EXTENSION + options_dialog_class = PNGSetExportOptionsDialog + + def run_export(self, out_filename, options): + export_frames = options['frames'] + export_layers = options['layers'] + art = self.app.ui.active_art + # remember user's active frame/layer/viz settings so we + # can set em back when done + start_frame = art.active_frame + start_layer = art.active_layer + start_onion = self.app.onion_frames_visible + start_layer_viz = self.app.inactive_layer_visibility + self.app.onion_frames_visible = False + # if multi-player, only show active layer + self.app.inactive_layer_visibility = LAYER_VIS_NONE if export_layers else LAYER_VIS_FULL + success = True + for frame in range(art.frames): + # if exporting layers but not frames, only export active frame + if not export_frames and frame != art.active_frame: + continue + art.set_active_frame(frame) + for layer in range(art.layers): + art.set_active_layer(layer) + full_filename = get_full_filename(out_filename, frame, + art.layer_names[layer], + export_frames, export_layers, + self.app.forbidden_filename_chars) + if not export_still_image(self.app, art, full_filename, + crt=options.get('crt', DEFAULT_CRT), + scale=options.get('scale', DEFAULT_SCALE)): + success = False + # put everything back how user left it + art.set_active_frame(start_frame) + art.set_active_layer(start_layer) + self.app.onion_frames_visible = start_onion + self.app.inactive_layer_visibility = start_layer_viz + return success diff --git a/formats/out_txt.py b/formats/out_txt.py new file mode 100644 index 0000000..0954e5c --- /dev/null +++ b/formats/out_txt.py @@ -0,0 +1,29 @@ +from art_export import ArtExporter + +class TextExporter(ArtExporter): + format_name = 'Plain text' + format_description = """ +ASCII art in ordinary text format. +Assumes single frame, single layer document. +Current character set will be used; make sure it supports +any extended characters you want translated. + """ + file_extension = 'txt' + def run_export(self, out_filename, options): + # utf-8 is safest encoding to use here, but non-default on Windows + outfile = open(out_filename, 'w', encoding='utf-8') + for y in range(self.art.height): + for x in range(self.art.width): + char = self.art.get_char_index_at(0, 0, x, y) + found_char = False + for k,v in self.art.charset.char_mapping.items(): + if v == char: + found_char = True + outfile.write(k) + break + # if char not found, just write a blank space + if not found_char: + outfile.write(' ') + outfile.write('\n') + outfile.close() + return True diff --git a/framebuffer.py b/framebuffer.py new file mode 100644 index 0000000..08cb664 --- /dev/null +++ b/framebuffer.py @@ -0,0 +1,122 @@ +import numpy as np +from OpenGL import GL + + +class Framebuffer: + + start_crt_enabled = False + disable_crt = False + clear_color = (0, 0, 0, 1) + # declared as an option here in case people want to sub their own via CFG + crt_fragment_shader_filename = 'framebuffer_f_crt.glsl' + + def __init__(self, app, width=None, height=None): + self.app = app + self.width, self.height = width or self.app.window_width, height or self.app.window_height + # bind vao before compiling shaders + if self.app.use_vao: + self.vao = GL.glGenVertexArrays(1) + GL.glBindVertexArray(self.vao) + self.vbo = GL.glGenBuffers(1) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vbo) + fb_verts = np.array([-1, -1, 1, -1, -1, 1, 1, 1], dtype=np.float32) + GL.glBufferData(GL.GL_ARRAY_BUFFER, fb_verts.nbytes, fb_verts, + GL.GL_STATIC_DRAW) + # texture, depth buffer, framebuffer + self.texture = GL.glGenTextures(1) + self.depth_buffer = GL.glGenRenderbuffers(1) + self.framebuffer = GL.glGenFramebuffers(1) + self.setup_texture_and_buffers() + # shaders + self.plain_shader = self.app.sl.new_shader('framebuffer_v.glsl', 'framebuffer_f.glsl') + if not self.disable_crt: + self.crt_shader = self.app.sl.new_shader('framebuffer_v.glsl', self.crt_fragment_shader_filename) + self.crt = self.get_crt_enabled() + # shader uniforms and attributes + self.plain_tex_uniform = self.plain_shader.get_uniform_location('fbo_texture') + self.plain_attrib = self.plain_shader.get_attrib_location('v_coord') + GL.glEnableVertexAttribArray(self.plain_attrib) + GL.glVertexAttribPointer(self.plain_attrib, 2, GL.GL_FLOAT, GL.GL_FALSE, 0, None) + if not self.disable_crt: + self.crt_tex_uniform = self.crt_shader.get_uniform_location('fbo_texture') + self.crt_time_uniform = self.crt_shader.get_uniform_location('elapsed_time') + self.crt_res_uniform = self.crt_shader.get_uniform_location('resolution') + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + if self.app.use_vao: + GL.glBindVertexArray(0) + + def get_crt_enabled(self): + return self.disable_crt or self.start_crt_enabled + + def setup_texture_and_buffers(self): + GL.glBindTexture(GL.GL_TEXTURE_2D, self.texture) + GL.glTexParameterf(GL.GL_TEXTURE_2D, + GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR) + GL.glTexParameterf(GL.GL_TEXTURE_2D, + GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR) + GL.glTexParameterf(GL.GL_TEXTURE_2D, + GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE) + GL.glTexParameterf(GL.GL_TEXTURE_2D, + GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE) + GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, + self.width, self.height, 0, + GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, None) + GL.glBindRenderbuffer(GL.GL_RENDERBUFFER, self.depth_buffer) + GL.glRenderbufferStorage(GL.GL_RENDERBUFFER, GL.GL_DEPTH_COMPONENT16, + self.width, self.height) + GL.glBindRenderbuffer(GL.GL_RENDERBUFFER, 0) + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, self.framebuffer) + GL.glFramebufferTexture2D(GL.GL_FRAMEBUFFER, GL.GL_COLOR_ATTACHMENT0, + GL.GL_TEXTURE_2D, self.texture, 0) + GL.glFramebufferRenderbuffer(GL.GL_FRAMEBUFFER, GL.GL_DEPTH_ATTACHMENT, + GL.GL_RENDERBUFFER, self.depth_buffer) + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0) + + def resize(self, new_width, new_height): + self.width, self.height = new_width, new_height + self.setup_texture_and_buffers() + + def toggle_crt(self): + self.crt = not self.crt + + def destroy(self): + if self.app.use_vao: + GL.glDeleteVertexArrays(1, [self.vao]) + GL.glDeleteBuffers(1, [self.vbo]) + GL.glDeleteRenderbuffers(1, [self.depth_buffer]) + GL.glDeleteTextures([self.texture]) + GL.glDeleteFramebuffers(1, [self.framebuffer]) + + def render(self): + if self.crt and not self.disable_crt: + GL.glUseProgram(self.crt_shader.program) + GL.glUniform1i(self.crt_tex_uniform, 0) + GL.glUniform2f(self.crt_res_uniform, self.width, self.height) + GL.glUniform1f(self.crt_time_uniform, self.app.get_elapsed_time()) + else: + GL.glUseProgram(self.plain_shader.program) + GL.glUniform1i(self.plain_tex_uniform, 0) + GL.glBindTexture(GL.GL_TEXTURE_2D, self.texture) + GL.glClearColor(*self.clear_color) + GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + # VAO vs non-VAO paths + if self.app.use_vao: + GL.glBindVertexArray(self.vao) + else: + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vbo) + GL.glVertexAttribPointer(self.plain_attrib, 2, GL.GL_FLOAT, GL.GL_FALSE, 0, None) + GL.glEnableVertexAttribArray(self.plain_attrib) + GL.glDrawArrays(GL.GL_TRIANGLE_STRIP, 0, 4) + if self.app.use_vao: + GL.glBindVertexArray(0) + GL.glUseProgram(0) + + +class ExportFramebuffer(Framebuffer): + clear_color = (0, 0, 0, 0) + def get_crt_enabled(self): return True + + +class ExportFramebufferNoCRT(Framebuffer): + clear_color = (0, 0, 0, 0) + def get_crt_enabled(self): return False diff --git a/game_hud.py b/game_hud.py new file mode 100644 index 0000000..c39f266 --- /dev/null +++ b/game_hud.py @@ -0,0 +1,45 @@ + +from art import Art +from renderable import TileRenderable + + +class GameHUDArt(Art): + #recalc_quad_height = False + log_creation = False + quad_width = 0.1 + + +class GameHUDRenderable(TileRenderable): + def get_projection_matrix(self): + # much like UIRenderable, use UI's matrices to render in screen space + return self.app.ui.view_matrix + def get_view_matrix(self): + return self.app.ui.view_matrix + + +class GameHUD: + + "stub HUD, subclass and put your own stuff here" + + def __init__(self, world): + self.world = world + self.arts, self.renderables = [], [] + + def update(self): + for art in self.arts: + art.update() + for r in self.renderables: + r.update() + + def should_render(self): + return True + + def render(self): + if not self.should_render(): + return + for r in self.renderables: + r.render() + + def destroy(self): + for r in self.renderables: + r.destroy() diff --git a/game_object.py b/game_object.py new file mode 100644 index 0000000..6e16ea1 --- /dev/null +++ b/game_object.py @@ -0,0 +1,1209 @@ +import os, math, random + +from collections import namedtuple + +import vector + +from art import Art, ArtInstance +from renderable import GameObjectRenderable +from renderable_line import OriginIndicatorRenderable, BoundsIndicatorRenderable + +from collision import Contact, Collideable, CST_NONE, CST_CIRCLE, CST_AABB, CST_TILE, CT_NONE, CTG_STATIC, CTG_DYNAMIC, point_in_box + +# facings +GOF_LEFT = 0 +"Object is facing left" +GOF_RIGHT = 1 +"Object is facing right" +GOF_FRONT = 2 +"Object is facing front" +GOF_BACK = 3 +"Object is facing back" + +FACINGS = { + GOF_LEFT: 'left', + GOF_RIGHT: 'right', + GOF_FRONT: 'front', + GOF_BACK: 'back' +} +"Dict mapping GOF_* facing enum values to strings" + +FACING_DIRS = { + GOF_LEFT: (-1, 0), + GOF_RIGHT: (1, 0), + GOF_FRONT: (0, -1), + GOF_BACK: (0, 1) +} +"Dict mapping GOF_* facing enum values to (x,y) orientations" + +DEFAULT_STATE = 'stand' + +# timer slots +TIMER_PRE_UPDATE = 0 +TIMER_UPDATE = 1 +TIMER_POST_UPDATE = 2 + +__pdoc__ = {} +__pdoc__['GameObject.x'] = "Object's location in 3D space." + + +class GameObject: + """ + Base class game object. GameObjects (GOs) are spawned into and managed by + a GameWorld. All GOs render and collide via a single Renderable and + Collideable, respectively. GOs can have states and facings. GOs are + serialized in game state save files. Much of Playscii game creation involves + creating flavors of GameObject. + See game_util_object module for some generic subclasses for things like + a player, spawners, triggers, attachments etc. + """ + art_src = 'game_object_default' + """ + If specified, this art file will be loaded from disk and used as object's + default appearance. If object has states/facings, this is the "base" + filename prefix, eg "hero" in "hero_stand_front.psci". + """ + state_changes_art = False + "If True, art will change with current state; depends on file naming." + stand_if_not_moving = False + "If True, object will go to stand state any time velocity is zero." + valid_states = [DEFAULT_STATE] + "List of valid states for this object, used to find anims" + facing_changes_art = False + "If True, art will change based on facing AND state" + generate_art = False + """ + If True, blank Art will be created with these dimensions, charset, + and palette + """ + use_art_instance = False + "If True, always use an ArtInstance of source Art" + animating = False + "If True, object's Art will animate on init/reset" + art_width, art_height = 8, 8 + art_charset, art_palette = None, None + y_sort = False + "If True, object will sort according to its Y position a la Zelda LttP" + lifespan = 0. + "If >0, object will self-destroy after this many seconds" + kill_distance_from_origin = 1000 + """ + If object gets further than this distance from origin, + (non-overridden) update will self-destroy + """ + spawner = None + "If another object spawned us, store reference to it here" + physics_move = True + "If False, don't do move physics updates for this object" + fast_move_steps = 0 + """ + If >0, subdivide high-velocity moves into fractions-of-this-object-sized + steps to avoid tunneling. turn this up if you notice an object tunneling. + # 1 = each step is object's full size + # 2 = each step is half object's size + # N = each step is 1/N object's size + """ + move_accel_x = move_accel_y = 200. + "Acceleration per update from player movement" + ground_friction = 10.0 + air_friction = 25.0 + mass = 1. + "Mass: negative number = infinitely dense" + bounciness = 0.25 + "Bounciness aka restitution, % of velocity reflected on bounce" + stop_velocity = 0.1 + "Near-zero point at which any velocity is set to zero" + log_move = False + log_load = False + log_spawn = False + visible = True + alpha = 1. + locked = False + "If True, location is protected from edit mode drags, can't click to select" + show_origin = False + show_bounds = False + show_collision = False + collision_shape_type = CST_NONE + "Collision shape: tile, circle, AABB - see the CST_* enum values" + collision_type = CT_NONE + "Type of collision (static, dynamic)" + col_layer_name = 'collision' + "Collision layer name for CST_TILE objects" + draw_col_layer = False + "If True, collision layer will draw normally" + col_offset_x, col_offset_y = 0., 0. + "Collision circle/box offset from origin" + col_radius = 1. + "Collision circle size, if CST_CIRCLE" + col_width, col_height = 1., 1. + "Collision AABB size, if CST_AABB" + art_off_pct_x, art_off_pct_y = 0.5, 0.5 + """ + Art offset from pivot: Renderable's origin_pct set to this if not None + 0,0 = top left; 1,1 = bottom right; 0.5,0.5 = center + """ + should_save = True + "If True, write this object to state save files" + serialized = ['name', 'x', 'y', 'z', 'art_src', 'visible', 'locked', 'y_sort', + 'art_off_pct_x', 'art_off_pct_y', 'alpha', 'state', 'facing', + 'animating', 'scale_x', 'scale_y'] + "List of members to serialize (no weak refs!)" + editable = ['show_collision', 'col_radius', 'col_width', 'col_height', + 'mass', 'bounciness', 'stop_velocity'] + """ + Members that don't need to be serialized, but should be exposed to + object edit UI + """ + set_methods = {'art_src': 'set_art_src', 'alpha': '_set_alpha', + 'scale_x': '_set_scale_x', 'scale_y': '_set_scale_y', + 'name': '_rename', 'col_radius': '_set_col_radius', + 'col_width': '_set_col_width', + 'col_height': '_set_col_height' + } + "If setting a given member should run some logic, specify the method here" + selectable = True + "If True, user can select this object in edit mode" + deleteable = True + "If True, user can delete this object in edit mode" + is_debug = False + "If True, object's visibility can be toggled with View menu option" + exclude_from_object_list = False + "If True, do not list object in edit mode UI - system use only!" + exclude_from_class_list = False + "If True, do not list class in edit mode UI - system use only!" + attachment_classes = {} + "Objects to spawn as attachments: key is member name, value is class" + noncolliding_classes = [] + "Blacklist of string names for classes to ignore collisions with" + sound_filenames = {} + 'Dict of sound filenames, keys are string "tags"' + looping_state_sounds = {} + "Dict of looping sounds that should play while in a given state" + update_if_outside_room = False + """ + If True, object's update function will run even if it's + outside the world's current room + """ + handle_key_events = False + "If True, handle key input events passed in from world / input handler" + handle_mouse_events = False + "If True, handle mouse click/wheel events passed in from world / input handler" + consume_mouse_events = False + "If True, prevent any other mouse click/wheel events from being processed" + def __init__(self, world, obj_data=None): + """ + Create new GameObject in world, from serialized data if provided. + """ + self.x, self.y, self.z = 0., 0., 0. + "Object's location in 3D space." + self.scale_x, self.scale_y, self.scale_z = 1., 1., 1. + "Object's scale in 3D space." + self.rooms = {} + "Dict of rooms we're in - if empty, object appears in all rooms" + self.state = DEFAULT_STATE + "String representing object state. Every object has one, even if it never changes." + self.facing = GOF_FRONT + "Every object gets a facing, even if it never changes" + self.name = self.get_unique_name() + # apply serialized data before most of init happens + # properties that need non-None defaults should be declared above + if obj_data: + for v in self.serialized: + if not v in obj_data: + if self.log_load: + self.app.dev_log("Serialized property '%s' not found for %s" % (v, self.name)) + continue + # if value is in data and serialized list but undeclared, do so + if not hasattr(self, v): + setattr(self, v, None) + # match type of variable as declared, eg loc might be written as + # an int in the JSON so preserve its floatness + if getattr(self, v) is not None: + src_type = type(getattr(self, v)) + setattr(self, v, src_type(obj_data[v])) + else: + setattr(self, v, obj_data[v]) + self.vel_x, self.vel_y, self.vel_z = 0, 0, 0 + "Object's velocity in units per second. Derived from acceleration." + self.move_x, self.move_y = 0, 0 + "User-intended acceleration" + self.last_x, self.last_y, self.last_z = self.x, self.y, self.z + self.last_update_end = 0 + self.flip_x = False + "Set by state, True if object's renderable should be flipped in X axis." + self.world = world + "GameWorld this object is managed by" + self.app = self.world.app + "For convenience, Application instance for this object's GameWorld" + self.destroy_time = 0 + "If >0, object will self-destroy at/after this time (in milliseconds)" + # lifespan property = easy auto-set for fixed lifetime objects + if self.lifespan > 0: + self.set_destroy_timer(self.lifespan) + self.timer_functions_pre_update = {} + "Dict of running GameObjectTimerFuctions that run during pre_update" + self.timer_functions_update = {} + "Dict of running GameObjectTimerFuctions that run during update" + self.timer_functions_post_update = {} + "Dict of running GameObjectTimerFuctions that run during post_update" + self.last_update_failed = False + "When True, object's last update threw an exception" + # load/create assets + self.arts = {} + "Dict of all Arts this object can reference, eg for states" + # if art_src not specified, create a new art according to dimensions + if self.generate_art: + self.art_src = '%s_art' % self.name + self.art = self.app.new_art(self.art_src, self.art_width, + self.art_height, self.art_charset, + self.art_palette) + # generated art will likely be only entry in this dict, + # but make sure it's there (eg generated art for Characters) + self.arts[self.art_src] = self.art + else: + self.load_arts() + if self.art is None or not self.art.valid: + # grab first available art + if len(self.arts) > 0: + for art in self.arts: + self.art = self.arts[art] + break + if not self.art: + self.app.log("Couldn't spawn GameObject with art %s" % self.art_src) + return + self.renderable = GameObjectRenderable(self.app, self.art, self) + self.renderable.alpha = self.alpha + self.origin_renderable = OriginIndicatorRenderable(self.app, self) + "Renderable for debug drawing of object origin." + self.bounds_renderable = BoundsIndicatorRenderable(self.app, self) + "1px LineRenderable showing object's bounding box" + for art in self.arts.values(): + if not art in self.world.art_loaded: + self.world.art_loaded.append(art) + self.orig_collision_type = self.collision_type + "Remember last collision type for enable/disable - don't set manually!" + self.collision = Collideable(self) + self.world.new_objects[self.name] = self + self.attachments = [] + if self.attachment_classes: + for atch_name,atch_class_name in self.attachment_classes.items(): + atch_class = self.world.classes[atch_class_name] + attachment = atch_class(self.world) + self.attachments.append(attachment) + attachment.attach_to(self) + setattr(self, atch_name, attachment) + self.should_destroy = False + "If True, object will be destroyed on next world update." + self.pre_first_update_run = False + "Flag that tells us we should run post_init next update." + self.last_state = None + self.last_warp_update = -1 + "Most recent warp world update, to prevent thrashing" + # set up art instance only after all art/renderable init complete + if self.use_art_instance: + self.set_art(ArtInstance(self.art)) + if self.animating and self.art.frames > 0: + self.start_animating() + if self.log_spawn: + self.app.log('Spawned %s with Art %s' % (self.name, os.path.basename(self.art.filename))) + + def get_unique_name(self): + "Generate and return a somewhat human-readable unique name for object" + name = str(self) + return '%s_%s' % (type(self).__name__, name[name.rfind('x')+1:-1]) + + def _rename(self, new_name): + # pass thru to world, this method exists for edit set method + self.world.rename_object(self, new_name) + + def pre_first_update(self): + """ + Run before first update; use this for any logic that depends on + init/creation being done ie all objects being present. + """ + pass + + def load_arts(self): + "Fill self.arts dict with Art references for eg states and facings." + self.art = self.app.load_art(self.art_src, False) + if self.art: + self.arts[self.art_src] = self.art + # if no states, use a single art always + if not self.state_changes_art: + self.arts[self.art_src] = self.art + return + for state in self.valid_states: + if self.facing_changes_art: + # load each facing for each state + for facing in FACINGS.values(): + art_name = '%s_%s_%s' % (self.art_src, state, facing) + art = self.app.load_art(art_name, False) + if art: + self.arts[art_name] = art + else: + # load each state + art_name = '%s_%s' % (self.art_src, state) + art = self.app.load_art(art_name, False) + if art: + self.arts[art_name] = art + # get reasonable default pose + self.art, self.flip_x = self.get_art_for_state() + + def is_point_inside(self, x, y): + "Return True if given point is inside our bounds" + left, top, right, bottom = self.get_edges() + return point_in_box(x, y, left, top, right, bottom) + + def get_edges(self): + "Return coords of our bounds (left, top, right, bottom)" + left = self.x - (self.renderable.width * self.art_off_pct_x) + right = self.x + (self.renderable.width * (1 - self.art_off_pct_x)) + top = self.y + (self.renderable.height * self.art_off_pct_y) + bottom = self.y - (self.renderable.height * (1 - self.art_off_pct_y)) + return left, top, right, bottom + + def distance_to_object(self, other): + "Return distance from center of this object to center of given object." + return self.distance_to_point(other.x, other.y) + + def distance_to_point(self, point_x, point_y): + "Return distance from center of this object to given point." + dx = self.x - point_x + dy = self.y - point_y + return math.sqrt(dx ** 2 + dy ** 2) + + def normal_to_object(self, other): + "Return tuple normal pointing in direction of given object." + return self.normal_to_point(other.x, other.y) + + def normal_to_point(self, point_x, point_y): + "Return tuple normal pointing in direction of given point." + dist = self.distance_to_point(point_x, point_y) + dx, dy = point_x - self.x, point_y - self.y + if dist == 0: + return 0, 0 + inv_dist = 1 / dist + return dx * inv_dist, dy * inv_dist + + def get_render_offset(self): + "Return a custom render offset. Override this in subclasses as needed." + return 0, 0, 0 + + def is_dynamic(self): + "Return True if object is dynamic." + return self.collision_type in CTG_DYNAMIC + + def is_entering_state(self, state): + "Return True if object is in given state this frame but not last frame." + return self.state == state and self.last_state != state + + def is_exiting_state(self, state): + "Return True if object is in given state last frame but not this frame." + return self.state != state and self.last_state == state + + def play_sound(self, sound_name, loops=0, allow_multiple=False): + "Start playing given sound." + # use sound_name as filename if it's not in our filenames dict + sound_filename = self.sound_filenames.get(sound_name, sound_name) + sound_filename = self.world.sounds_dir + sound_filename + self.world.app.al.object_play_sound(self, sound_filename, + loops, allow_multiple) + + def stop_sound(self, sound_name): + "Stop playing given sound." + sound_filename = self.sound_filenames.get(sound_name, sound_name) + sound_filename = self.world.sounds_dir + sound_filename + self.world.app.al.object_stop_sound(self, sound_filename) + + def stop_all_sounds(self): + "Stop all sounds playing on object." + self.world.app.al.object_stop_all_sounds(self) + + def enable_collision(self): + "Enable this object's collision." + self.collision_type = self.orig_collision_type + + def disable_collision(self): + "Disable this object's collision." + if self.collision_type == CT_NONE: + return + # remember prior collision type + self.orig_collision_type = self.collision_type + self.collision_type = CT_NONE + + def started_overlapping(self, other): + """ + Run when object begins overlapping with, but does not collide with, + another object. + """ + pass + + def started_colliding(self, other): + "Run when object begins colliding with another object." + self.resolve_collision_momentum(other) + + def stopped_colliding(self, other): + "Run when object stops colliding with another object." + if not other.name in self.collision.contacts: + # TODO: understand why this spams when player has a MazePickup + #self.world.app.log("%s stopped colliding with %s but wasn't in its contacts!" % (self.name, other.name)) + return + # called from check_finished_contacts + self.collision.contacts.pop(other.name) + + def resolve_collision_momentum(self, other): + "Resolve velocities between this object and given other object." + # don't resolve a pair twice + if self in self.world.cl.collisions_this_frame: + return + # determine new direction and velocity + total_vel = self.vel_x + self.vel_y + other.vel_x + other.vel_y + # negative mass = infinite + total_mass = max(0, self.mass) + max(0, other.mass) + if other.name not in self.collision.contacts or \ + self.name not in other.collision.contacts: + return + # redistribute velocity based on mass we're colliding with + if self.is_dynamic() and self.mass >= 0: + ax = self.collision.contacts[other.name].overlap.x + ay = self.collision.contacts[other.name].overlap.y + a_vel = total_vel * (self.mass / total_mass) + a_vel *= self.bounciness + self.vel_x, self.vel_y = -ax * a_vel, -ay * a_vel + if other.is_dynamic() and other.mass >= 0: + bx = other.collision.contacts[self.name].overlap.x + by = other.collision.contacts[self.name].overlap.y + b_vel = total_vel * (other.mass / total_mass) + b_vel *= other.bounciness + other.vel_x, other.vel_y = -bx * b_vel, -by * b_vel + # mark objects as resolved + self.world.cl.collisions_this_frame.append(self) + self.world.cl.collisions_this_frame.append(other) + + def check_finished_contacts(self): + """ + Updates our Collideable's contacts dict for contacts that were + happening last update but not this one, and call stopped_colliding. + """ + # put stopped-colliding objects in a list to process after checks + finished = [] + # keep separate list of names of objects no longer present + destroyed = [] + for obj_name,contact in self.collision.contacts.items(): + if contact.timestamp < self.world.cl.ticks: + # object might have been destroyed + obj = self.world.objects.get(obj_name, None) + if obj: + finished.append(obj) + else: + destroyed.append(obj_name) + for obj_name in destroyed: + self.collision.contacts.pop(obj_name) + for obj in finished: + self.stopped_colliding(obj) + obj.stopped_colliding(self) + + def get_contacting_objects(self): + "Return list of all objects we're currently contacting." + return [self.world.objects[obj] for obj in self.collision.contacts] + + def get_collisions(self): + "Return list of all overlapping shapes our shapes should collide with." + overlaps = [] + for shape in self.collision.shapes: + for other in self.world.cl.dynamic_shapes: + if other.go is self: + continue + if not other.go.should_collide(): + continue + if not self.can_collide_with(other.go): + continue + if not other.go.can_collide_with(self): + continue + overlaps.append(shape.get_overlap(other)) + for other in shape.get_overlapping_static_shapes(): + overlaps.append(other) + return overlaps + + def is_overlapping(self, other): + "Return True if we overlap with other object's collision" + return other.name in self.collision.contacts + + def are_bounds_overlapping(self, other): + "Return True if we overlap with other object's Art's bounds" + left, top, right, bottom = self.get_edges() + for x,y in [(left, top), (right, top), (right, bottom), (left, bottom)]: + if other.is_point_inside(x, y): + return True + return False + + def get_tile_at_point(self, point_x, point_y): + "Return x,y tile coord for given worldspace point" + left, top, right, bottom = self.get_edges() + x = (point_x - left) / self.art.quad_width + x = math.floor(x) + y = (point_y - top) / self.art.quad_height + y = math.ceil(-y) + return x, y + + def get_tiles_overlapping_box(self, box_left, box_top, box_right, box_bottom, log=False): + "Returns x,y coords for each tile overlapping given box" + if self.collision_shape_type != CST_TILE: + return [] + left, top = self.get_tile_at_point(box_left, box_top) + right, bottom = self.get_tile_at_point(box_right, box_bottom) + if bottom < top: + top, bottom = bottom, top + # stay in bounds + left = max(0, left) + right = min(right, self.art.width - 1) + top = max(1, top) + bottom = min(bottom, self.art.height) + tiles = [] + # account for range start being inclusive, end being exclusive + for x in range(left, right + 1): + for y in range(top - 1, bottom): + tiles.append((x, y)) + return tiles + + def overlapped(self, other, overlap): + """ + Called by CollisionLord when two objects overlap. + returns: bool "overlap allowed", bool "collision starting" + """ + started = other.name not in self.collision.contacts + # create or update contact info: (overlap, timestamp) + self.collision.contacts[other.name] = Contact(overlap, + self.world.cl.ticks) + can_collide = self.can_collide_with(other) + if not can_collide and started: + self.started_overlapping(other) + return can_collide, started + + def get_tile_loc(self, tile_x, tile_y, tile_center=True): + "Return top left / center of current Art's tile in world coordinates" + left, top, right, bottom = self.get_edges() + x = left + x += self.art.quad_width * tile_x + y = top + y -= self.art.quad_height * tile_y + if tile_center: + x += self.art.quad_width / 2 + y -= self.art.quad_height / 2 + return x, y + + def get_layer_z(self, layer_name): + "Return Z of layer with given name" + return self.z + self.art.layers_z[self.art.layer_names.index(layer_name)] + + def get_all_art(self): + "Return a list of all Art used by this object" + return list(self.arts.keys()) + + def start_animating(self): + "Start animation playback." + self.renderable.start_animating() + + def stop_animating(self): + "Pause animation playback on current frame." + self.renderable.stop_animating() + + def set_object_property(self, prop_name, new_value): + "Set property by given name to given value." + if not hasattr(self, prop_name): + return + if prop_name in self.set_methods: + method = getattr(self, self.set_methods[prop_name]) + method(new_value) + else: + setattr(self, prop_name, new_value) + + def get_art_for_state(self, state=None): + "Return Art (and 'flip X' bool) that best represents current state" + # use current state if none specified + state = self.state if state is None else state + art_state_name = '%s_%s' % (self.art_src, self.state) + # simple case: no facing, just state + if not self.facing_changes_art: + # return art for current state, use default if not available + if art_state_name in self.arts: + return self.arts[art_state_name], False + else: + default_name = '%s_%s' % (self.art_src, self.state or DEFAULT_STATE) + #assert(default_name in self.arts + # don't assert - if base+state name available, use that + if default_name in self.arts: + return self.arts[default_name], False + else: + #self.app.log('%s: Art with name %s not available, using %s' % (self.name, default_name, self.art_src)) + return self.arts[self.art_src], False + # more complex case: art determined by both state and facing + facing_suffix = FACINGS[self.facing] + # first see if anim exists for this exact state, skip subsequent logic + exact_name = '%s_%s' % (art_state_name, facing_suffix) + if exact_name in self.arts: + return self.arts[exact_name], False + # see what anims are available and try to choose best for facing + has_state = False + for anim in self.arts: + if anim.startswith(art_state_name): + has_state = True + break + # if NO anims for current state, fall back to default + if not has_state: + default_name = '%s_%s' % (self.art_src, DEFAULT_STATE) + art_state_name = default_name + front_name = '%s_%s' % (art_state_name, FACINGS[GOF_FRONT]) + left_name = '%s_%s' % (art_state_name, FACINGS[GOF_LEFT]) + right_name = '%s_%s' % (art_state_name, FACINGS[GOF_RIGHT]) + back_name = '%s_%s' % (art_state_name, FACINGS[GOF_BACK]) + has_front = front_name in self.arts + has_left = left_name in self.arts + has_right = right_name in self.arts + has_sides = has_left or has_right + # throw an error if nothing basic is available + #assert(has_front or has_sides) + if not has_front and not has_sides: + return self.arts[self.art_src], False + # if left/right opposite available, flip it + if self.facing == GOF_LEFT and has_right: + return self.arts[right_name], True + elif self.facing == GOF_RIGHT and has_left: + return self.arts[left_name], True + # if left or right but neither, use front + elif self.facing in [GOF_LEFT, GOF_RIGHT] and not has_sides: + return self.arts[front_name], False + # if no front but sides, use either + elif self.facing == GOF_FRONT and has_sides: + if has_right: + return self.arts[right_name], False + elif has_left: + return self.arts[left_name], False + # if no back, use sides or, as last resort, front + elif self.facing == GOF_BACK and has_sides: + if has_right: + return self.arts[right_name], False + elif has_left: + return self.arts[left_name], False + else: + return self.arts[front_name], False + # fall-through: keep using current art + return self.art, False + + def set_art(self, new_art, start_animating=True): + "Set object to use new given Art (passed by reference)." + if new_art is self.art: + return + self.art = new_art + self.renderable.set_art(self.art) + self.bounds_renderable.set_art(self.art) + if self.collision_shape_type == CST_TILE: + self.collision.create_shapes() + if (start_animating or self.animating) and new_art.frames > 1: + self.renderable.start_animating() + + def set_art_src(self, new_art_filename): + "Set object to use new given Art (passed by filename)" + if self.art_src == new_art_filename: + return + new_art = self.app.load_art(new_art_filename) + if not new_art: + return + self.art_src = new_art_filename + # reset arts dict + self.arts = {} + self.load_arts() + self.set_art(new_art) + + def set_loc(self, x, y, z=None): + "Set this object's location." + self.x, self.y = x, y + self.z = z or 0 + + def reset_last_loc(self): + 'Reset "last location" values used for updating state and fast_move' + self.last_x, self.last_y, self.last_z = self.x, self.y, self.z + + def set_scale(self, x, y, z): + "Set this object's scale." + self.scale_x, self.scale_y, self.scale_z = x, y, z + self.renderable.scale_x = self.scale_x + self.renderable.scale_y = self.scale_y + self.renderable.reset_size() + + def _set_scale_x(self, new_x): + self.set_scale(new_x, self.scale_y, self.scale_z) + + def _set_scale_y(self, new_y): + self.set_scale(self.scale_x, new_y, self.scale_z) + + def _set_col_radius(self, new_radius): + self.col_radius = new_radius + self.collision.shapes[0].radius = new_radius + + def _set_col_width(self, new_width): + self.col_width = new_width + self.collision.shapes[0].halfwidth = new_width / 2 + + def _set_col_height(self, new_height): + self.col_height = new_height + self.collision.shapes[0].halfheight = new_height / 2 + + def _set_alpha(self, new_alpha): + self.renderable.alpha = self.alpha = new_alpha + + def allow_move(self, dx, dy): + "Return True only if this object is allowed to move based on input." + return True + + def allow_move_x(self, dx): + "Return True if given movement in X axis is allowed." + return True + + def allow_move_y(self, dy): + "Return True if given movement in Y axis is allowed." + return True + + def move(self, dir_x, dir_y): + """ + Input player/sim-initiated velocity. Given value is multiplied by + acceleration in get_acceleration. + """ + # don't handle moves while game paused + # (add override flag if this becomes necessary) + if self.world.paused: + return + # check allow_move first + if not self.allow_move(dir_x, dir_y): + return + if self.allow_move_x(dir_x): + self.move_x += dir_x + if self.allow_move_y(dir_y): + self.move_y += dir_y + + def is_on_ground(self): + ''' + Return True if object is "on the ground". Subclasses define custom + logic here. + ''' + return True + + def get_friction(self): + "Return friction that should be applied for object's current context." + return self.ground_friction if self.is_on_ground() else self.air_friction + + def is_affected_by_gravity(self): + "Return True if object should be affected by gravity." + return False + + def get_gravity(self): + "Return x,y,z force of gravity for object's current context." + return self.world.gravity_x, self.world.gravity_y, self.world.gravity_z + + def get_acceleration(self, vel_x, vel_y, vel_z): + """ + Return x,y,z acceleration values for object's current context. + """ + force_x = self.move_x * self.move_accel_x + force_y = self.move_y * self.move_accel_y + force_z = 0 + if self.is_affected_by_gravity(): + grav_x, grav_y, grav_z = self.get_gravity() + force_x += grav_x * self.mass + force_y += grav_y * self.mass + force_z += grav_z * self.mass + # friction / drag + friction = self.get_friction() + speed = math.sqrt(vel_x ** 2 + vel_y ** 2 + vel_z ** 2) + force_x -= friction * self.mass * vel_x + force_y -= friction * self.mass * vel_y + force_z -= friction * self.mass * vel_z + # divide force by mass to get acceleration + accel_x = force_x / self.mass + accel_y = force_y / self.mass + accel_z = force_z / self.mass + # zero out acceleration beneath a threshold + # TODO: determine if this should be made tunable + return vector.cut_xyz(accel_x, accel_y, accel_z, 0.01) + + def apply_move(self): + """ + Apply current acceleration / velocity to position using Verlet + integration with half-step velocity estimation. + """ + accel_x, accel_y, accel_z = self.get_acceleration(self.vel_x, self.vel_y, self.vel_z) + timestep = self.world.app.timestep / 1000 + hsvel_x = self.vel_x + 0.5 * timestep * accel_x + hsvel_y = self.vel_y + 0.5 * timestep * accel_y + hsvel_z = self.vel_z + 0.5 * timestep * accel_z + self.x += hsvel_x * timestep + self.y += hsvel_y * timestep + self.z += hsvel_z * timestep + accel_x, accel_y, accel_z = self.get_acceleration(hsvel_x, hsvel_y, hsvel_z) + self.vel_x = hsvel_x + 0.5 * timestep * accel_x + self.vel_y = hsvel_y + 0.5 * timestep * accel_y + self.vel_z = hsvel_z + 0.5 * timestep * accel_z + self.vel_x, self.vel_y, self.vel_z = vector.cut_xyz(self.vel_x, self.vel_y, self.vel_z, self.stop_velocity) + + def moved_this_frame(self): + "Return True if object changed locations this frame." + delta = math.sqrt(abs(self.last_x - self.x) ** 2 + abs(self.last_y - self.y) ** 2 + abs(self.last_z - self.z) ** 2) + return delta > self.stop_velocity + + def warped_recently(self): + "Return True if object warped during last update." + return self.world.updates - self.last_warp_update <= 0 + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + """ + Handle "key pressed" event, with keyboard mods passed in. + GO subclasses can do stuff here if their handle_key_events=True + """ + pass + + def handle_key_up(self, key, shift_pressed, alt_pressed, ctrl_pressed): + """ + Handle "key released" event, with keyboard mods passed in. + GO subclasses can do stuff here if their handle_key_events=True + """ + pass + + def clicked(self, button, mouse_x, mouse_y): + """ + Handle mouse button down event, with button # and + click location (in world coordinates) passed in. + GO subclasses can do stuff here if their handle_mouse_events=True + """ + pass + + def unclicked(self, button, mouse_x, mouse_y): + """ + Handle mouse button up event, with button # and + click location (in world coordinates) passed in. + GO subclasses can do stuff here if their handle_mouse_events=True + """ + pass + + def hovered(self, mouse_x, mouse_y): + """ + Handle mouse hover (fires when object -starts- being hovered). + GO subclasses can do stuff here if their handle_mouse_events=True + """ + pass + + def unhovered(self, mouse_x, mouse_y): + """ + Handle mouse unhover. + GO subclasses can do stuff here if their handle_mouse_events=True + """ + pass + + def mouse_wheeled(self, wheel_y): + """ + Handle mouse wheel movement. + GO subclasses can do stuff here if their handle_mouse_events=True + """ + pass + + def set_timer_function(self, timer_name, timer_function, delay_min, + delay_max=0, repeats=-1, slot=TIMER_PRE_UPDATE): + """ + Run given function in X seconds or every X seconds Y times. + If max is given, next execution will be between min and max time. + if repeat is -1, run indefinitely. + "Slot" determines whether function will run in pre_update, update, or + post_update. + """ + timer = GameObjectTimerFunction(self, timer_name, timer_function, + delay_min, delay_max, repeats, slot) + # add to slot-appropriate dict + d = [self.timer_functions_pre_update, self.timer_functions_update, + self.timer_functions_post_update][slot] + d[timer_name] = timer + + def stop_timer_function(self, timer_name): + "Stop currently running timer function with given name." + timer = self.timer_functions_pre_update.get(timer_name, None) or \ + self.timer_functions_update.get(timer_name, None) or \ + self.timer_functions_post_update.get(timer_name, None) + if not timer: + self.app.log('Timer named %s not found on object %s' % (timer_name, + self.name)) + d = [self.timer_functions_pre_update, self.timer_functions_update, + self.timer_functions_post_update][timer.slot] + d.pop(timer_name) + + def update_state(self): + "Update object state based on current context, eg movement." + if self.state_changes_art and self.stand_if_not_moving and \ + not self.moved_this_frame(): + self.state = DEFAULT_STATE + + def update_facing(self): + "Update object facing based on current context, eg movement." + dx, dy = self.x - self.last_x, self.y - self.last_y + if dx == 0 and dy == 0: + return + # TODO: flag for "side view only" objects + if abs(dy) > abs(dx): + self.facing = GOF_BACK if dy >= 0 else GOF_FRONT + else: + self.facing = GOF_RIGHT if dx >= 0 else GOF_LEFT + + def update_state_sounds(self): + "Stop and play looping sounds appropriate to current/recent states." + for state,sound in self.looping_state_sounds.items(): + if self.is_entering_state(state): + self.play_sound(sound, loops=-1) + elif self.is_exiting_state(state): + self.stop_sound(sound) + + def frame_begin(self): + "Run at start of game loop iteration, before input/update/render." + self.move_x, self.move_y = 0, 0 + self.last_x, self.last_y, self.last_z = self.x, self.y, self.z + # if we're just entering stand state, play any sound for it + if self.last_state is None: + self.update_state_sounds() + self.last_state = self.state + + def frame_update(self): + "Run once per frame, after input + simulation update and before render." + if not self.art.updated_this_tick: + self.art.update() + # update art based on state (and possibly facing too) + if self.state_changes_art: + new_art, flip_x = self.get_art_for_state() + self.set_art(new_art) + self.flip_x = flip_x + + def pre_update(self): + "Run before any objects have updated this simulation tick." + pass + + def post_update(self): + "Run after all objects have updated this simulation tick." + pass + + def fast_move(self): + """ + Subdivide object's move this frame into steps to avoid tunneling. + Only called for objects with fast_move_steps >0. + """ + final_x, final_y = self.x, self.y + dx, dy = self.x - self.last_x, self.y - self.last_y + total_move_dist = math.sqrt(dx ** 2 + dy ** 2) + if total_move_dist == 0: + return + # get movement normal + inv_dist = 1 / total_move_dist + dir_x, dir_y = dx * inv_dist, dy * inv_dist + if self.collision_shape_type == CST_CIRCLE: + step_dist = self.col_radius * 2 + elif self.collision_shape_type == CST_AABB: + # get size in axis object is moving in + step_x, step_y = self.col_width * dir_x, self.col_height * dir_y + step_dist = math.sqrt(step_x ** 2 + step_y ** 2) + step_dist /= self.fast_move_steps + # if object isn't moving fast enough, don't step + if total_move_dist <= step_dist: + return + steps = int(total_move_dist / step_dist) + # start stepping from beginning of this frame's move distance + self.x, self.y = self.last_x, self.last_y + for i in range(steps): + self.x += dir_x * step_dist + self.y += dir_y * step_dist + collisions = self.get_collisions() + # if overlapping just leave as-is, collision update will resolve + if len(collisions) > 0: + return + # ran through all steps without a hit, set back to final position + self.x, self.y = final_x, final_y + + def get_time_since_last_update(self): + "Return time (in milliseconds) since end of this object's last update." + return self.world.get_elapsed_time() - self.last_update_end + + def update(self): + """ + Apply movement/physics, update state and facing, keep our Collideable's + location locked to us. Self-destroy if a timer is up or we've fallen + out of the world. + """ + if 0 < self.destroy_time <= self.world.get_elapsed_time(): + self.destroy() + # don't apply physics to selected objects being dragged + if self.physics_move and not self.name in self.world.drag_objects: + self.apply_move() + if self.fast_move_steps > 0: + self.fast_move() + self.update_state() + self.update_state_sounds() + if self.facing_changes_art: + self.update_facing() + # update collision shape before CollisionLord resolves any collisions + self.collision.update() + if abs(self.x) > self.kill_distance_from_origin or \ + abs(self.y) > self.kill_distance_from_origin: + self.app.log('%s reached %s from origin, destroying.' % (self.name, self.kill_distance_from_origin)) + self.destroy() + + def update_renderables(self): + """ + Keep our Renderable's location locked to us, and update any debug + Renderables (collision, bounds etc) similarly. + """ + # even if debug viz are off, update once on init to set correct state + if self.show_origin or self in self.world.selected_objects: + self.origin_renderable.update() + if self.show_bounds or self in self.world.selected_objects or \ + (self is self.world.hovered_focus_object and self.selectable): + self.bounds_renderable.update() + if self.show_collision and self.is_dynamic(): + self.collision.update_renderables() + if self.visible: + self.renderable.update() + + def get_debug_text(self): + "Subclass logic can return a string to display in debug line." + return None + + def should_collide(self): + "Return True if this object should collide in current context." + return self.collision_type != CT_NONE and self.is_in_current_room() + + def can_collide_with(self, other): + "Return True if this object is allowed to collide with given object." + for ncc_name in self.noncolliding_classes: + if isinstance(other, self.world.classes[ncc_name]): + return False + return True + + def is_in_room(self, room): + "Return True if this object is in the given (by reference) Room." + return len(self.rooms) == 0 or room.name in self.rooms + + def is_in_current_room(self): + "Return True if this object is in the world's currently active Room." + return len(self.rooms) == 0 or (self.world.current_room and self.world.current_room.name in self.rooms) + + def room_entered(self, room, old_room): + "Run when a room we're in is entered." + pass + + def room_exited(self, room, new_room): + "Run when a room we're in is exited." + pass + + def render_debug(self): + "Render debug lines, eg origin/bounds/collision." + # only show debug stuff if in edit mode + if not self.world.app.ui.is_game_edit_ui_visible(): + return + if self.show_origin or self in self.world.selected_objects: + self.origin_renderable.render() + if self.show_bounds or self in self.world.selected_objects or \ + (self.selectable and self is self.world.hovered_focus_object): + self.bounds_renderable.render() + if self.show_collision and self.collision_type != CT_NONE: + self.collision.render() + + def render(self, layer, z_override=None): + #print('GameObject %s layer %s has Z %s' % (self.art.filename, layer, self.art.layers_z[layer])) + self.renderable.render(layer, z_override) + + def get_dict(self): + """ + Return a dict serializing this object's state that + GameWorld.save_to_file can dump to JSON. Only properties defined in + this object's "serialized" list are stored. Direct object references + are not safe to serialize, use only primitive types like strings. + """ + d = { 'class_name': type(self).__name__ } + # serialize whatever other vars are declared in self.serialized + for prop_name in self.serialized: + if hasattr(self, prop_name): + d[prop_name] = getattr(self, prop_name) + return d + + def reset_in_place(self): + "Run GameWorld.reset_object_in_place on this object." + self.world.reset_object_in_place(self) + + def set_destroy_timer(self, destroy_in_seconds): + "Set object to destroy itself given number of seconds from now." + self.destroy_time = self.world.get_elapsed_time() + destroy_in_seconds * 1000 + + def destroy(self): + self.stop_all_sounds() + # remove rooms' references to us + for room in self.rooms.values(): + if self.name in room.objects: + room.objects.pop(self.name) + self.rooms = {} + if self in self.world.selected_objects: + self.world.selected_objects.remove(self) + if self.spawner: + if hasattr(self.spawner, 'spawned_objects') and \ + self in self.spawner.spawned_objects: + self.spawner.spawned_objects.remove(self) + self.origin_renderable.destroy() + self.bounds_renderable.destroy() + self.collision.destroy() + for attachment in self.attachments: + attachment.destroy() + self.renderable.destroy() + self.should_destroy = True + + +class GameObjectTimerFunction: + """ + Object that manages a function's execution schedule for a GameObject. + Use GameObject.set_timer_function to create these. + """ + def __init__(self, go, name, function, delay_min, delay_max, repeats, slot): + self.go = go + "GameObject using this timer" + self.name = name + "This timer's name" + self.function = function + "GO function to run" + self.delay_min = delay_min + "Delay before next execution" + self.delay_max = delay_max + "If specified, next execution will be between min and max" + self.repeats = repeats + "# of times to repeat. -1 = infinite" + self.slot = slot + "Execute before, during, or after object's update" + self.next_update = self.go.world.get_elapsed_time() + self.runs = 0 + self._set_next_time() + + def _set_next_time(self): + "Compute and set this timer's next update time" + # if no max delay, just use min, else rand(min, max) + if not self.delay_max or self.delay_max == 0: + delay = self.delay_min + else: + delay = random.random() * (self.delay_max - self.delay_min) + delay += self.delay_min + self.next_update += int(delay * 1000) + + def update(self): + "Check timer, running function as needed" + if self.go.world.get_elapsed_time() < self.next_update: + return + # TODO: if function needs to run multiple times, do that and update appropriately + self._execute() + # remove timer if it's executed enough already + if self.repeats != -1 and self.runs > self.repeats: + self.go.stop_timer_function(self.name) + else: + self._set_next_time() + + def _execute(self): + # pass our object into our function + self.function() + self.runs += 1 diff --git a/game_room.py b/game_room.py new file mode 100644 index 0000000..488e7d7 --- /dev/null +++ b/game_room.py @@ -0,0 +1,195 @@ + +from game_object import GameObject + +class GameRoom: + """ + A collection of GameObjects within a GameWorld. Can be used to limit scope + of object updates, collisions, etc. + """ + camera_marker_name = '' + "If set, camera will move to marker with this name when room entered" + camera_follow_player = False + "If True, camera will follow player while in this room" + left_edge_warp_dest_name, right_edge_warp_dest_name = '', '' + "If set, warp to room OR marker with this name when edge crossed" + top_edge_warp_dest_name, bottom_edge_warp_dest_name = '', '' + warp_edge_bounds_obj_name = '' + "Object whose art's bounds should be used as our \"edges\" for above" + serialized = ['name', 'camera_marker_name', 'left_edge_warp_dest_name', + 'right_edge_warp_dest_name', 'top_edge_warp_dest_name', + 'bottom_edge_warp_dest_name', 'warp_edge_bounds_obj_name', + 'camera_follow_player'] + "List of string names of members to serialize for this Room class." + log_changes = False + "Log changes to and from this room" + def __init__(self, world, name, room_data=None): + self.world = world + self.name = name + self.pre_first_update_run = False + # dict of objects by name:object + self.objects = {} + if not room_data: + return + # restore serialized properties + # TODO: this is copy-pasted from GameObject, find a way to unify + # TODO: GameWorld.set_data_for that takes instance, serialized list, data dict + for v in self.serialized: + if not v in room_data: + self.world.app.dev_log("Serialized property '%s' not found for room %s" % (v, self.name)) + continue + if not hasattr(self, v): + setattr(self, v, None) + # match type of variable as declared, eg loc might be written as + # an int in the JSON so preserve its floatness + if getattr(self, v) is not None: + src_type = type(getattr(self, v)) + setattr(self, v, src_type(room_data[v])) + else: + setattr(self, v, room_data[v]) + # find objects by name and add them + for obj_name in room_data.get('objects', []): + self.add_object_by_name(obj_name) + + def pre_first_update(self): + self.reset_edge_warps() + + def reset_edge_warps(self): + self.edge_obj = self.world.objects.get(self.warp_edge_bounds_obj_name, None) + # no warping if we don't know our bounds + if not self.edge_obj: + return + edge_dest_name_suffix = '_name' + def set_edge_dest(dest_property): + # property name to destination name + dest_name = getattr(self, dest_property) + # get room OR object with name + dest_room = self.world.rooms.get(dest_name, None) + dest_obj = self.world.objects.get(dest_name, None) + # derive member name from serialized property name + member_name = dest_property.replace(edge_dest_name_suffix, '') + setattr(self, member_name, dest_room or dest_obj or None) + for pname in ['left_edge_warp_dest_name', 'right_edge_warp_dest_name', + 'top_edge_warp_dest_name', 'bottom_edge_warp_dest_name']: + set_edge_dest(pname) + + def set_camera_marker_name(self, marker_name): + if not marker_name in self.world.objects: + self.world.app.log("Couldn't find camera marker with name %s" % marker_name) + return + self.camera_marker_name = marker_name + if self is self.world.current_room: + self.use_camera_marker() + + def use_camera_marker(self): + if not self.camera_marker_name in self.world.objects: + return + cam_mark = self.world.objects[self.camera_marker_name] + self.world.camera.set_loc_from_obj(cam_mark) + + def entered(self, old_room): + "Run when the player enters this room." + if self.log_changes: + self.world.app.log('Room "%s" entered' % self.name) + # set camera if marker is set + if self.world.room_camera_changes_enabled: + self.use_camera_marker() + if self.camera_follow_player: + self.world.enable_player_camera_lock() + else: + self.world.disable_player_camera_lock() + # tell objects in this room player has entered so eg spawners can fire + for obj in self.objects.values(): + obj.room_entered(self, old_room) + + def exited(self, new_room): + "Run when the player exits this room." + if self.log_changes: + self.world.app.log('Room "%s" exited' % self.name) + # tell objects in this room player has exited + for obj in self.objects.values(): + obj.room_exited(self, new_room) + + def add_object_by_name(self, obj_name): + "Add object with given name to this room." + obj = self.world.objects.get(obj_name, None) + if not obj: + self.world.app.log("Couldn't find object named %s" % obj_name) + return + self.add_object(obj) + + def add_object(self, obj): + "Add object (by reference) to this room." + self.objects[obj.name] = obj + obj.rooms[self.name] = self + + def remove_object_by_name(self, obj_name): + "Remove object with given name from this room." + obj = self.world.objects.get(obj_name, None) + if not obj: + self.world.app.log("Couldn't find object named %s" % obj_name) + return + self.remove_object(obj) + + def remove_object(self, obj): + "Remove object (by reference) from this room." + if obj.name in self.objects: + self.objects.pop(obj.name) + else: + self.world.app.log("GameRoom %s doesn't contain GameObject %s" % (self.name, obj.name)) + if self.name in obj.rooms: + obj.rooms.pop(self.name) + else: + self.world.app.log("GameObject %s not found in GameRoom %s" % (obj.name, self.name)) + + def get_dict(self): + "Return a dict that GameWorld.save_to_file can dump to JSON" + object_names = list(self.objects.keys()) + d = {'class_name': type(self).__name__, 'objects': object_names} + # serialize whatever other vars are declared in self.serialized + for prop_name in self.serialized: + if hasattr(self, prop_name): + d[prop_name] = getattr(self, prop_name) + return d + + def _check_edge_warp(self, game_object): + # bail if no bounds or edge warp destinations set + if not self.edge_obj: + return + if not self.left_edge_warp_dest and not self.right_edge_warp_dest and not self.top_edge_warp_dest and not self.bottom_edge_warp_dest: + return + if game_object.warped_recently(): + return + px, py = game_object.x, game_object.y + if self.edge_obj.is_point_inside(px, py): + return + left, top, right, bottom = self.edge_obj.get_edges() + # which edge are we beyond? + warp_dest = None + if top > py > bottom and px < left: + warp_dest = self.left_edge_warp_dest + elif top > py > bottom and px > right: + warp_dest = self.right_edge_warp_dest + elif left < px < right and py > top: + warp_dest = self.top_edge_warp_dest + elif left < px < right and py < bottom: + warp_dest = self.bottom_edge_warp_dest + if not warp_dest: + return + if issubclass(type(warp_dest), GameRoom): + self.world.change_room(warp_dest.name) + elif issubclass(type(warp_dest), GameObject): + # TODO: change room or not? use_marker_room flag a la WarpTrigger? + game_object.set_loc(warp_dest.x, warp_dest.y) + game_object.last_warp_update = self.world.updates + + def update(self): + if self is self.world.current_room: + self._check_edge_warp(self.world.player) + + def destroy(self): + if self.name in self.world.rooms: + self.world.rooms.pop(self.name) + # remove references to us in each of our objects + for obj in self.objects.values(): + obj.rooms.pop(self.name) + self.objects = {} diff --git a/game_util_objects.py b/game_util_objects.py new file mode 100644 index 0000000..5c3d3fb --- /dev/null +++ b/game_util_objects.py @@ -0,0 +1,431 @@ + +import os.path, random + +from game_object import GameObject, FACING_DIRS +from collision import CST_NONE, CST_CIRCLE, CST_AABB, CST_TILE, CT_NONE, CT_GENERIC_STATIC, CT_GENERIC_DYNAMIC, CT_PLAYER, CTG_STATIC, CTG_DYNAMIC + +class GameObjectAttachment(GameObject): + "GameObject that doesn't think about anything, just renders" + collision_type = CT_NONE + should_save = False + selectable = False + exclude_from_class_list = True + physics_move = False + offset_x, offset_y, offset_z = 0., 0., 0. + "Offset from parent object's origin" + fixed_z = False + "If True, Z will not be locked to GO we're attached to" + editable = GameObject.editable + ['offset_x', 'offset_y', 'offset_z'] + + def attach_to(self, game_object): + "Attach this object to given object." + self.parent = game_object + + def update(self): + # very minimal update! + if not self.art.updated_this_tick: + self.art.update() + + def post_update(self): + # after parent has moved, snap to its location + self.x = self.parent.x + self.offset_x + self.y = self.parent.y + self.offset_y + if not self.fixed_z: + self.z = self.parent.z + self.offset_z + + +class BlobShadow(GameObjectAttachment): + "Generic blob shadow attachment class" + art_src = 'blob_shadow' + alpha = 0.5 + +class StaticTileBG(GameObject): + "Generic static world object with tile-based collision" + collision_shape_type = CST_TILE + collision_type = CT_GENERIC_STATIC + physics_move = False + +class StaticTileObject(GameObject): + collision_shape_type = CST_TILE + collision_type = CT_GENERIC_STATIC + physics_move = False + y_sort = True + +class StaticBoxObject(GameObject): + "Generic static world object with AABB-based (rectangle) collision" + collision_shape_type = CST_AABB + collision_type = CT_GENERIC_STATIC + physics_move = False + +class DynamicBoxObject(GameObject): + collision_shape_type = CST_AABB + collision_type = CT_GENERIC_DYNAMIC + y_sort = True + +class Pickup(GameObject): + collision_shape_type = CST_CIRCLE + collision_type = CT_GENERIC_DYNAMIC + y_sort = True + attachment_classes = { 'shadow': 'BlobShadow' } + +class Projectile(GameObject): + "Generic projectile class" + fast_move_steps = 1 + collision_type = CT_GENERIC_DYNAMIC + collision_shape_type = CST_CIRCLE + move_accel_x = move_accel_y = 400. + noncolliding_classes = ['Projectile'] + lifespan = 10. + "Projectiles should be transient, limited max life" + should_save = False + + def __init__(self, world, obj_data=None): + GameObject.__init__(self, world, obj_data) + self.fire_dir_x, self.fire_dir_y = 0, 0 + + def fire(self, firer, dir_x=0, dir_y=1): + self.set_loc(firer.x, firer.y, firer.z) + self.reset_last_loc() + self.fire_dir_x, self.fire_dir_y = dir_x, dir_y + + def update(self): + if (self.fire_dir_x, self.fire_dir_y) != (0, 0): + self.move(self.fire_dir_x, self.fire_dir_y) + GameObject.update(self) + +class Character(GameObject): + "Generic character class" + state_changes_art = True + stand_if_not_moving = True + move_state = 'walk' + "Move state name - added to valid_states in init so subclasses recognized" + collision_shape_type = CST_CIRCLE + collision_type = CT_GENERIC_DYNAMIC + + def __init__(self, world, obj_data=None): + if not self.move_state in self.valid_states: + self.valid_states.append(self.move_state) + GameObject.__init__(self, world, obj_data) + # assume that character should start idling, if its art animates + if self.art.frames > 0: + self.start_animating() + + def update_state(self): + GameObject.update_state(self) + if self.state_changes_art and abs(self.vel_x) > 0.1 or abs(self.vel_y) > 0.1: + self.state = self.move_state + +class Player(Character): + "Generic player class" + log_move = False + collision_type = CT_PLAYER + editable = Character.editable + ['move_accel_x', 'move_accel_y', + 'ground_friction', 'air_friction', + 'bounciness', 'stop_velocity'] + + def pre_first_update(self): + if self.world.player is None: + self.world.player = self + if self.world.player_camera_lock: + self.world.camera.focus_object = self + else: + self.world.camera.focus_object = None + + def button_pressed(self, button_index): + pass + + def button_unpressed(self, button_index): + pass + + +class TopDownPlayer(Player): + + y_sort = True + attachment_classes = { 'shadow': 'BlobShadow' } + facing_changes_art = True + + def get_facing_dir(self): + return FACING_DIRS[self.facing] + + +class WorldPropertiesObject(GameObject): + "Special magic singleton object that stores and sets GameWorld properties" + art_src = 'world_properties_object' + visible = deleteable = selectable = False + locked = True + physics_move = False + exclude_from_object_list = True + exclude_from_class_list = True + world_props = ['game_title', 'gravity_x', 'gravity_y', 'gravity_z', + 'hud_class_name', 'globals_object_class_name', + 'camera_x', 'camera_y', 'camera_z', + 'bg_color_r', 'bg_color_g', 'bg_color_b', 'bg_color_a', + 'player_camera_lock', 'object_grid_snap', 'draw_hud', + 'collision_enabled', 'show_collision_all', 'show_bounds_all', + 'show_origin_all', 'show_all_rooms', + 'room_camera_changes_enabled', 'draw_debug_objects' + ] + """ + Properties we serialize on behalf of GameWorld + TODO: figure out how to make these defaults sync with those in GW? + """ + serialized = world_props + editable = [] + "All visible properties are serialized, not editable" + def __init__(self, world, obj_data=None): + GameObject.__init__(self, world, obj_data) + world_class = type(world) + for v in self.serialized: + if obj_data and v in obj_data: + # if world instance has property from loaded data, use it + if hasattr(self.world, v): + setattr(self.world, v, obj_data[v]) + setattr(self, v, obj_data[v]) + # use world class (default) property if loaded data lacks it + elif hasattr(world_class, v): + setattr(self, v, getattr(world_class, v)) + else: + # set explicitly as float, for camera & bg color + setattr(self, v, 0.0) + # special handling of bg color (a list) + self.world.bg_color = [self.bg_color_r, self.bg_color_g, self.bg_color_b, self.bg_color_a] + self.world.camera.set_loc(self.camera_x, self.camera_y, self.camera_z) + # TODO: figure out why collision_enabled seems to default False! + + def set_object_property(self, prop_name, new_value): + setattr(self, prop_name, new_value) + # special handling for some values, eg bg color and camera + if prop_name.startswith('bg_color_'): + component = {'r': 0, 'g': 1, 'b': 2, 'a': 3}[prop_name[-1]] + self.world.bg_color[component] = float(new_value) + elif prop_name.startswith('camera_') and len(prop_name) == len('camera_x'): + setattr(self.world.camera, prop_name[-1], new_value) + # some properties have unique set methods in GW + elif prop_name == 'show_collision_all': + self.world.toggle_all_collision_viz() + elif prop_name == 'show_bounds_all': + self.world.toggle_all_bounds_viz() + elif prop_name == 'show_origin_all': + self.world.toggle_all_origin_viz() + elif prop_name == 'player_camera_lock': + self.world.toggle_player_camera_lock() + # normal properties you can just set: set em + elif hasattr(self.world, prop_name): + setattr(self.world, prop_name, new_value) + + def update_from_world(self): + self.camera_x = self.world.camera.x + self.camera_y = self.world.camera.y + self.camera_z = self.world.camera.z + + +class WorldGlobalsObject(GameObject): + """ + Invisible object holding global state, variables etc in GameWorld.globals. + Subclass can be specified in WorldPropertiesObject. + NOTE: this object is spawned from scratch every load, it's never serialized! + """ + should_save = False + visible = deleteable = selectable = False + locked = True + exclude_from_object_list = True + exclude_from_class_list = True + physics_move = False + serialized = [] + editable = [] + + +class LocationMarker(GameObject): + "Very simple GameObject that marks an XYZ location for eg camera points" + art_src = 'loc_marker' + serialized = ['name', 'x', 'y', 'z', 'visible', 'locked'] + editable = [] + alpha = 0.5 + physics_move = False + is_debug = True + + +class StaticTileTrigger(GameObject): + """ + Generic static trigger with tile-based collision. + Overlaps but doesn't collide. + """ + is_debug = True + collision_shape_type = CST_TILE + collision_type = CT_GENERIC_STATIC + noncolliding_classes = ['GameObject'] + physics_move = False + serialized = ['name', 'x', 'y', 'z', 'art_src', 'visible', 'locked'] + + def started_overlapping(self, other): + #self.app.log('Trigger overlapped with %s' % other.name) + pass + +class WarpTrigger(StaticTileTrigger): + "Trigger that warps object to a room/marker when they touch it." + is_debug = True + art_src = 'trigger_default' + alpha = 0.5 + destination_marker_name = None + "If set, warp to this location marker" + destination_room_name = None + "If set, make this room the world's current" + use_marker_room = True + "If True, change to destination marker's room" + warp_class_names = ['Player'] + "List of class names to warp on contact with us." + serialized = StaticTileTrigger.serialized + ['destination_room_name', + 'destination_marker_name', + 'use_marker_room'] + + def __init__(self, world, obj_data=None): + StaticTileTrigger.__init__(self, world, obj_data) + self.warp_classes = [self.world.get_class_by_name(class_name) for class_name in self.warp_class_names] + + def started_overlapping(self, other): + if other.warped_recently(): + return + # bail if object's class isn't allowed + valid_class = False + for c in self.warp_classes: + if isinstance(other, c): + valid_class = True + break + if not valid_class: + return + if self.destination_room_name: + if other is self.world.player: + # if overlapping object is player, change current room + # to destination room + self.world.change_room(self.destination_room_name) + else: + # if object is only in one room, move them to destination room + if len(other.rooms) == 1: + old_room = other.rooms.values()[0] + old_room.remove_object(other) + self.destination_room.add_object(other) + elif self.destination_marker_name: + marker = self.world.objects.get(self.destination_marker_name, None) + if not marker: + self.app.log('Warp destination object %s not found' % self.destination_marker_name) + return + other.set_loc(marker.x, marker.y, marker.z) + # warp to marker's room if specified, pick a random one if multiple + if self.use_marker_room and len(marker.rooms) == 1: + room = random.choice(list(marker.rooms.values())) + # warn if both room and marker are set but they conflict + if self.destination_room_name and \ + room.name != self.destination_room_name: + self.app.log("Marker %s's room differs from destination room %s" % (marker.name, self.destination_room_name)) + self.world.change_room(room.name) + other.last_warp_update = self.world.updates + + +class ObjectSpawner(LocationMarker): + "Simple object that spawns an object when triggered" + is_debug = True + spawn_class_name = None + spawn_obj_name = '' + spawn_random_in_bounds = False + "If True, spawn somewhere in this object's bounds, else spawn at location" + spawn_obj_data = {} + "Dict of properties to set on newly spawned object" + times_to_fire = -1 + "Number of times we can fire, -1 = infinite" + trigger_on_room_enter = True + "Set False for any subclass that triggers in some other way" + destroy_on_room_exit = True + "if True, spawned object will be destroyed when player leaves its room" + serialized = LocationMarker.serialized + ['spawn_class_name', 'spawn_obj_name', + 'times_to_fire', 'destroy_on_room_exit' + ] + + def __init__(self, world, obj_data=None): + LocationMarker.__init__(self, world, obj_data) + self.times_fired = 0 + # list of objects we've spawned + self.spawned_objects = [] + + def get_spawn_class_name(self): + "Return class name of object to spawn." + return self.spawn_class_name + + def get_spawn_location(self): + "Return x,y location we should spawn a new object at." + if not self.spawn_random_in_bounds: + return self.x, self.y + left, top, right, bottom = self.get_edges() + x = left + random.random() * (right - left) + y = top + random.random() * (bottom - top) + return x, y + + def can_spawn(self): + "Return True if spawner is allowed to spawn." + return True + + def do_spawn(self): + "Spawn and returns object." + class_name = self.get_spawn_class_name() + if not class_name: + return None + x, y = self.get_spawn_location() + new_obj = self.world.spawn_object_of_class(class_name, x, y) + if self.spawn_obj_name: + self.world.rename_object(new_obj, self.spawn_obj_name) + # new object should be in same rooms as us + new_obj.rooms.update(self.rooms) + self.spawned_objects.append(new_obj) + # save a reference to us, the spawner + new_obj.spawner = self + # TODO: put new object in our room(s), apply spawn_obj_data + return new_obj + + def trigger(self): + "Poke this spawner to do its thing, returns an object if spawned" + if self.times_to_fire != -1 and self.times_fired >= self.times_to_fire: + return None + if not self.can_spawn(): + return None + if self.times_fired != -1: + self.times_fired += 1 + return self.do_spawn() + + def room_entered(self, room, old_room): + if self.trigger_on_room_enter: + self.trigger() + + def room_exited(self, room, new_room): + if not self.destroy_on_room_exit: + return + for obj in self.spawned_objects: + obj.destroy() + + +class SoundBlaster(LocationMarker): + "Simple object that plays sound when triggered" + is_debug = True + sound_name = '' + "String name of sound to play, minus any extension" + can_play = True + "If False, won't play sound when triggered" + play_on_room_enter = True + loops = -1 + "Number of times to loop, if -1 loop indefinitely" + serialized = LocationMarker.serialized + ['sound_name', 'can_play', + 'play_on_room_enter'] + + def __init__(self, world, obj_data=None): + LocationMarker.__init__(self, world, obj_data) + # find file, try common extensions + for ext in ['', '.ogg', '.wav']: + filename = self.sound_name + ext + if self.world.sounds_dir and os.path.exists(self.world.sounds_dir + filename): + self.sound_filenames[self.sound_name] = filename + return + self.world.app.log("Couldn't find sound file %s for SoundBlaster %s" % (self.sound_name, self.name)) + + def room_entered(self, room, old_room): + self.play_sound(self.sound_name, self.loops) + + def room_exited(self, room, new_room): + self.stop_sound(self.sound_name) diff --git a/game_world.py b/game_world.py new file mode 100644 index 0000000..e8a8a7b --- /dev/null +++ b/game_world.py @@ -0,0 +1,1173 @@ + +import os, sys, math, time, importlib, json, traceback +from collections import namedtuple + +import sdl2 + +import game_object, game_util_objects, game_hud, game_room +import collision, vector +from camera import Camera +from grid import GameGrid +from art import ART_DIR +from charset import CHARSET_DIR +from palette import PALETTE_DIR + +TOP_GAME_DIR = 'games/' +DEFAULT_STATE_FILENAME = 'start' +STATE_FILE_EXTENSION = 'gs' +GAME_SCRIPTS_DIR = 'scripts/' +SOUNDS_DIR = 'sounds/' + +# generic starter script with a GO and Player subclass +STARTER_SCRIPT = """ +from game_object import GameObject +from game_util_objects import Player + + +class MyGamePlayer(Player): + "Generic starter player class for newly created games." + art_src = 'default_player' + # no "move" state art, so just use stand state for now + move_state = 'stand' + + +class MyGameObject(GameObject): + "Generic starter object class for newly created games." + def update(self): + # write "hello" in a color that shifts over time + color = self.art.palette.get_random_color_index() + self.art.write_string(0, 0, 3, 2, 'hello!', color) + # run parent class update + GameObject.update(self) +""" + + +# Quickie class to debug render order +RenderItem = namedtuple('RenderItem', ['obj', 'layer', 'sort_value']) + + +class GameCamera(Camera): + pan_friction = 0.2 + use_bounds = False + +class GameWorld: + """ + Holds global state for Game Mode. Spawns, manages, and renders GameObjects. + Properties serialized via WorldPropertiesObject. + Global state can be controlled via a WorldGlobalsObject. + """ + game_title = 'Untitled Game' + "Title for game, shown in window titlebar when not editing" + gravity_x, gravity_y, gravity_z = 0., 0., 0. + "Gravity applied to all objects who are affected by gravity." + bg_color = [0., 0., 0., 1.] + "OpenGL wiewport color to render behind everything else, ie the void." + hud_class_name = 'GameHUD' + "String name of HUD class to use" + properties_object_class_name = 'WorldPropertiesObject' + globals_object_class_name = 'WorldGlobalsObject' + "String name of WorldGlobalsObject class to use." + player_camera_lock = True + "If True, camera will be locked to player's location." + object_grid_snap = True + # editable properties + # TODO: + #update_when_unfocused = False + #"If True, game sim will update even when window doesn't have input focus" + draw_hud = True + allow_pause = True + "If False, user cannot pause game sim" + collision_enabled = True + "If False, CollisionLord won't bother thinking about collision at all." + # toggles for "show all" debug viz modes + show_collision_all = False + show_bounds_all = False + show_origin_all = False + show_all_rooms = False + "If True, show all rooms not just current one." + draw_debug_objects = True + "If False, objects with is_debug=True won't be drawn." + room_camera_changes_enabled = True + "If True, snap camera to new room's associated camera marker." + list_only_current_room_objects = False + "If True, list UI will only show objects in current room." + builtin_module_names = ['game_object', 'game_util_objects', 'game_hud', + 'game_room'] + builtin_base_classes = (game_object.GameObject, game_hud.GameHUD, + game_room.GameRoom) + + def __init__(self, app): + self.app = app + "Application that created this world." + self.game_dir = None + "Currently loaded game directory." + self.sounds_dir = None + self.game_name = None + "Game's internal name, based on its directory." + self.selected_objects = [] + self.hovered_objects = [] + self.hovered_focus_object = None + "Set by check_hovers(), to the object that will be selected if edit mode user clicks" + self.last_click_on_ui = False + self.last_mouse_click_x, self.last_mouse_click_y = 0, 0 + self.properties = None + "Our WorldPropertiesObject" + self.globals = None + "Our WorldGlobalsObject - not required" + self.camera = GameCamera(self.app) + self.grid = GameGrid(self.app) + self.grid.visible = False + self.player = None + self.paused = False + self._pause_time = 0 + self.updates = 0 + "Number of updates this we have performed." + self.modules = {'game_object': game_object, + 'game_util_objects': game_util_objects, + 'game_hud': game_hud, 'game_room': game_room} + self.classname_to_spawn = None + self.objects = {} + "Dict of objects by name:object" + self.new_objects = {} + "Dict of just-spawned objects, added to above on update() after spawn" + self.rooms = {} + "Dict of rooms by name:room" + self.current_room = None + self.cl = collision.CollisionLord(self) + self.hud = None + self.art_loaded = [] + self.drag_objects = {} + "Offsets for objects player is edit-dragging" + self.last_state_loaded = DEFAULT_STATE_FILENAME + + def play_music(self, music_filename, fade_in_time=0): + "Play given music file in any SDL2_mixer-supported format." + music_filename = self.game_dir + SOUNDS_DIR + music_filename + self.app.al.set_music(music_filename) + self.app.al.start_music(music_filename) + + def pause_music(self): + self.app.al.pause_music() + + def resume_music(self): + self.app.al.resume_music() + + def stop_music(self): + "Stop any currently playing music." + self.app.al.stop_all_music() + + def is_music_playing(self): + "Return True if there is music playing." + return self.app.al.is_music_playing() + + def pick_next_object_at(self, x, y): + "Return next unselected object at given point." + objects = self.get_objects_at(x, y) + # early out + if len(objects) == 0: + return None + # don't bother cycling if only one object found + if len(objects) == 1 and objects[0].selectable and \ + not objects[0] in self.selected_objects: + return objects[0] + # cycle through objects at point til an unselected one is found + for obj in objects: + if not obj.selectable: + continue + if obj in self.selected_objects: + continue + return obj + return None + + def get_objects_at(self, x, y, allow_locked=False): + "Return list of all objects whose bounds fall within given point." + objects = [] + for obj in self.objects.values(): + if obj.locked and not allow_locked: + continue + # only allow selecting of visible objects + # (can still be selected via list panel) + if obj.visible and obj.is_point_inside(x, y): + objects.append(obj) + # sort objects in Z, highest first + objects.sort(key=lambda obj: obj.z, reverse=True) + return objects + + def select_click(self): + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + # remember last place we clicked + self.last_mouse_click_x, self.last_mouse_click_y = x, y + if self.classname_to_spawn: + new_obj = self.spawn_object_of_class(self.classname_to_spawn, x, y) + if self.current_room: + self.current_room.add_object(new_obj) + self.app.ui.message_line.post_line('Spawned %s' % new_obj.name) + return + objects = self.get_objects_at(x, y) + next_obj = self.pick_next_object_at(x, y) + if len(objects) == 0: + self.deselect_all() + # ctrl: unselect first selected object found under mouse + elif self.app.il.ctrl_pressed: + for obj in self.selected_objects: + if obj in objects: + self.deselect_object(obj) + break + # shift: add to current selection + elif self.app.il.shift_pressed: + self.select_object(next_obj) + # no mod keys: select only object under cursor, deselect all if none + elif not next_obj and len(objects) == 0: + self.deselect_all() + # special case: must use shift-click for objects + # beneath (lower Z) topmost + elif next_obj is not objects[0]: + pass + else: + self.select_object(next_obj) + # remember object offsets from cursor for dragging + for obj in self.selected_objects: + self.drag_objects[obj.name] = (obj.x - x, obj.y - y, obj.z - z) + + def clicked(self, button): + # if edit UI is up, select stuff + if self.app.ui.is_game_edit_ui_visible(): + if button == sdl2.SDL_BUTTON_LEFT: + self.select_click() + # else pass clicks to any objects under mouse + else: + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + # 'locked" only relevant to edit mode, ignore it if in play mode + objects = self.get_objects_at(x, y, allow_locked=True) + for obj in objects: + if obj.handle_mouse_events and \ + (not obj.locked or not self.app.can_edit): + obj.clicked(button, x, y) + if obj.consume_mouse_events: + break + + def select_unclick(self): + # clicks on UI are consumed and flag world to not accept unclicks + # (keeps unclicks after dialog dismiss from deselecting objects) + if self.last_click_on_ui: + self.last_click_on_ui = False + # clear drag objects, since we're leaving valid drag context + # fixes unwanted drag after eg ESC exiting a menu + self.drag_objects.clear() + return + # if we're clicking to spawn something, don't drag/select + if self.classname_to_spawn: + return + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + # remember selected objects now, they might be deselected but still + # need to have their collision turned back on. + selected_objects = self.selected_objects[:] + if len(self.selected_objects) > 0 and not self.app.il.shift_pressed: + # if mouse has traveled much since click, deselect all objects + # except one mouse is over. + dx = self.last_mouse_click_x - x + dy = self.last_mouse_click_y - y + if math.sqrt(dx ** 2 + dy ** 2) < 1.5: + for obj in self.get_objects_at(x, y): + if obj in self.selected_objects: + self.deselect_all() + self.select_object(obj) + break + # end drag, forget drag object offsets + self.drag_objects.clear() + for obj in selected_objects: + obj.enable_collision() + if obj.collision_shape_type == collision.CST_TILE: + obj.collision.create_shapes() + obj.collision.update() + + def unclicked(self, button): + if self.app.ui.is_game_edit_ui_visible(): + if button == sdl2.SDL_BUTTON_LEFT: + self.select_unclick() + else: + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + objects = self.get_objects_at(x, y) + for obj in objects: + if obj.handle_mouse_events: + obj.unclicked(button, x, y) + + def check_hovers(self): + "Update objects on their mouse hover status" + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + new_hovers = self.get_objects_at(x, y) + # if this object will be selected on left click; draw bounds & label + if self.app.ui.is_game_edit_ui_visible(): + next_obj = self.pick_next_object_at(x, y) + self.hovered_focus_object = next_obj + # if in play mode, notify objects who have begun to be hovered + else: + for obj in new_hovers: + if obj.handle_mouse_events and not obj in self.hovered_objects: + obj.hovered(x, y) + # check for objects un-hovered by this move + for obj in self.hovered_objects: + if obj.handle_mouse_events and not obj in new_hovers: + obj.unhovered(x, y) + self.hovered_objects = new_hovers + + def mouse_wheeled(self, wheel_y): + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + objects = self.get_objects_at(x, y, allow_locked=True) + for obj in objects: + if obj.handle_mouse_events and \ + (not obj.locked or not self.app.can_edit): + obj.mouse_wheeled(wheel_y) + if obj.consume_mouse_events: + break + + def mouse_moved(self, dx, dy): + if self.app.ui.active_dialog: + return + # bail if mouse didn't move (in world space - include camera) last input + if self.app.mouse_dx == 0 and self.app.mouse_dy == 0 and \ + not self.camera.moved_this_frame: + return + # if last onclick was a UI element, don't drag + if self.last_click_on_ui: + return + self.check_hovers() + # not dragging anything? + if len(self.selected_objects) == 0: + return + # 0-length drags cause unwanted snapping + if dx == 0 and dy == 0: + return + # set dragged objects to mouse + offset from mouse when drag started + x, y, z = vector.screen_to_world(self.app, self.app.mouse_x, + self.app.mouse_y) + for obj_name,offset in self.drag_objects.items(): + obj = self.objects[obj_name] + if obj.locked: + continue + obj.disable_collision() + obj.x = x + offset[0] + obj.y = y + offset[1] + obj.z = z + offset[2] + if self.object_grid_snap: + obj.x = round(obj.x) + obj.y = round(obj.y) + # if odd width/height, origin will be between quads and + # edges will be off-grid; nudge so that edges are on-grid + if obj.art.width % 2 != 0: + obj.x += obj.art.quad_width / 2 + if obj.art.height % 2 != 0: + obj.y += obj.art.quad_height / 2 + + def select_object(self, obj, force=False): + "Add given object to our list of selected objects." + if not self.app.can_edit: + return + if obj and (obj.selectable or force) and not obj in self.selected_objects: + self.selected_objects.append(obj) + self.app.ui.object_selection_changed() + + def deselect_object(self, obj): + "Remove given object from our list of selected objects." + if obj in self.selected_objects: + self.selected_objects.remove(obj) + self.app.ui.object_selection_changed() + + def deselect_all(self): + "Deselect all objects." + self.selected_objects = [] + self.app.ui.object_selection_changed() + + def create_new_game(self, new_game_dir, new_game_title): + "Create appropriate dirs and files for a new game, return success." + self.unload_game() + new_dir = self.app.documents_dir + TOP_GAME_DIR + new_game_dir + '/' + if os.path.exists(new_dir): + self.app.log('Game dir %s already exists!' % new_game_dir) + return False + os.mkdir(new_dir) + os.mkdir(new_dir + ART_DIR) + os.mkdir(new_dir + GAME_SCRIPTS_DIR) + os.mkdir(new_dir + SOUNDS_DIR) + os.mkdir(new_dir + CHARSET_DIR) + os.mkdir(new_dir + PALETTE_DIR) + # create a generic starter script with a GO and Player subclass + f = open(new_dir + GAME_SCRIPTS_DIR + new_game_dir + '.py', 'w') + f.write(STARTER_SCRIPT) + f.close() + # load game + self.set_game_dir(new_game_dir) + self.properties = self.spawn_object_of_class('WorldPropertiesObject') + self.objects.update(self.new_objects) + self.new_objects = {} + # HACK: set some property defaults, no idea why they don't take :[ + self.collision_enabled = self.properties.collision_enabled = True + self.game_title = self.properties.game_title = new_game_title + self.save_to_file(DEFAULT_STATE_FILENAME) + return True + + def unload_game(self): + "Unload currently loaded game." + for obj in self.objects.values(): + obj.destroy() + self.cl.reset() + self.camera.reset() + self.player = None + self.globals = None + self.properties = None + if self.hud: + self.hud.destroy() + self.hud = None + self.objects, self.new_objects = {}, {} + self.rooms = {} + # art_loaded is cleared when game dir is set + self.selected_objects = [] + self.app.al.stop_all_music() + + def get_first_object_of_type(self, class_name, allow_subclasses=True): + "Return first object found with given class name." + c = self.get_class_by_name(class_name) + for obj in self.objects.values(): + # use isinstance so we catch subclasses + if c and allow_subclasses: + if isinstance(obj, c): + return obj + elif type(obj).__name__ == class_name: + return obj + + def get_all_objects_of_type(self, class_name, allow_subclasses=True): + "Return list of all objects found with given class name." + c = self.get_class_by_name(class_name) + objects = [] + for obj in self.objects.values(): + if c and allow_subclasses: + if isinstance(obj, c): + objects.append(obj) + elif type(obj).__name__ == class_name: + objects.append(obj) + return objects + + def set_for_all_objects(self, name, value): + "Set given variable name to given value for all objects." + for obj in self.objects.values(): + setattr(obj, name, value) + + def edit_art_for_selected(self): + if len(self.selected_objects) == 0: + return + self.app.exit_game_mode() + for obj in self.selected_objects: + for art_filename in obj.get_all_art(): + self.app.load_art_for_edit(art_filename) + + def move_selected(self, move_x, move_y, move_z): + "Shift position of selected objects by given x,y,z amount." + for obj in self.selected_objects: + obj.x += move_x + obj.y += move_y + obj.z += move_z + + def reset_game(self): + "Reset currently loaded game to last loaded state." + if self.game_dir: + self.load_game_state(self.last_state_loaded) + + def set_game_dir(self, dir_name, reset=False): + "Load game from given game directory." + if self.game_dir and dir_name == self.game_dir: + self.load_game_state(DEFAULT_STATE_FILENAME) + return + # loading a new game, wipe art list + self.art_loaded = [] + # check in user documents dir first + game_dir = TOP_GAME_DIR + dir_name + doc_game_dir = self.app.documents_dir + game_dir + for d in [doc_game_dir, game_dir]: + if not os.path.exists(d): + continue + self.game_dir = d + self.game_name = dir_name + if not d.endswith('/'): + self.game_dir += '/' + self.app.log('Game data folder is now %s' % self.game_dir) + # set sounds dir before loading state; some obj inits depend on it + self.sounds_dir = self.game_dir + SOUNDS_DIR + if reset: + # load in a default state, eg start.gs + self.load_game_state(DEFAULT_STATE_FILENAME) + else: + # if no reset load submodules into namespace from the get-go + self._import_all() + self.classes = self._get_all_loaded_classes() + break + if not self.game_dir: + self.app.log("Couldn't find game directory %s" % dir_name) + + def _remove_non_current_game_modules(self): + """ + Remove modules from previously-loaded games from both sys and + GameWorld's dicts. + """ + modules_to_remove = [] + games_dir_prefix = TOP_GAME_DIR.replace('/', '') + this_game_dir_prefix = '%s.%s' % (games_dir_prefix, self.game_name) + for module_name in sys.modules: + # remove any module that isn't for this game or part of its path + if module_name != games_dir_prefix and \ + module_name != this_game_dir_prefix and \ + module_name.startswith(games_dir_prefix) and \ + not module_name.startswith(this_game_dir_prefix + '.'): + modules_to_remove.append(module_name) + for module_name in modules_to_remove: + sys.modules.pop(module_name) + if module_name in self.modules: + self.modules.pop(module_name) + + def _get_game_modules_list(self): + "Return list of current game's modules from its scripts/ dir" + # build list of module files + modules_list = self.builtin_module_names[:] + # create appropriately-formatted python import path + module_path_prefix = '%s.%s.%s.' % (TOP_GAME_DIR.replace('/', ''), + self.game_name, + GAME_SCRIPTS_DIR.replace('/', '')) + for filename in os.listdir(self.game_dir + GAME_SCRIPTS_DIR): + # exclude emacs temp files and special world start script + if not filename.endswith('.py'): + continue + if filename.startswith('.#'): + continue + new_module_name = module_path_prefix + filename.replace('.py', '') + modules_list.append(new_module_name) + return modules_list + + def _import_all(self): + """ + Populate GameWorld.modules with the modules GW._get_all_loaded_classes + refers to when finding classes to spawn. + """ + # on first load, documents dir may not be in import path + if not self.app.documents_dir in sys.path: + sys.path += [self.app.documents_dir] + # clean modules dict before (re)loading anything + self._remove_non_current_game_modules() + # make copy of old modules table for import vs reload check + old_modules = self.modules.copy() + self.modules = {} + # load/reload new modules + for module_name in self._get_game_modules_list(): + try: + # always reload built in modules + if module_name in self.builtin_module_names or \ + module_name in old_modules: + m = importlib.reload(old_modules[module_name]) + else: + m = importlib.import_module(module_name) + self.modules[module_name] = m + except Exception as e: + self.app.log_import_exception(e, module_name) + + def toggle_pause(self): + "Toggles game pause state." + if not self.allow_pause: + return + self.paused = not self.paused + s = 'Game %spaused.' % ['un', ''][self.paused] + self.app.ui.message_line.post_line(s) + + def get_elapsed_time(self): + """ + Return total time world has been running (ie not paused) in + milliseconds. + """ + return self.app.get_elapsed_time() - self._pause_time + + def enable_player_camera_lock(self): + if self.player: + self.camera.focus_object = self.player + + def disable_player_camera_lock(self): + # change only if player has focus + if self.player and self.camera.focus_object is self.player: + self.camera.focus_object = None + + def toggle_player_camera_lock(self): + "Toggle whether camera is locked to player's location." + if self.player and self.camera.focus_object is self.player: + self.disable_player_camera_lock() + else: + self.enable_player_camera_lock() + + def toggle_grid_snap(self): + self.object_grid_snap = not self.object_grid_snap + + def handle_input(self, event, shift_pressed, alt_pressed, ctrl_pressed): + # pass event's key to any objects that want to handle it + if not event.type in [sdl2.SDL_KEYDOWN, sdl2.SDL_KEYUP]: + return + key = sdl2.SDL_GetKeyName(event.key.keysym.sym).decode() + key = key.lower() + args = (key, shift_pressed, alt_pressed, ctrl_pressed) + for obj in self.objects.values(): + if obj.handle_key_events: + if event.type == sdl2.SDL_KEYDOWN: + self.try_object_method(obj, obj.handle_key_down, args) + elif event.type == sdl2.SDL_KEYUP: + self.try_object_method(obj, obj.handle_key_up, args) + # TODO: handle_ functions for other types of input + + def get_colliders_at_point(self, point_x, point_y, + include_object_names=[], + include_class_names=[], + exclude_object_names=[], + exclude_class_names=[]): + """ + Return lists of colliding objects and shapes at given point that pass + given filters. + Includes are processed before excludes. + """ + whitelist_objects = len(include_object_names) > 0 + whitelist_classes = len(include_class_names) > 0 + blacklist_objects = len(exclude_object_names) > 0 + blacklist_classes = len(exclude_class_names) > 0 + # build list of objects to check + # always ignore non-colliders + colliders = [] + for obj in self.objects.values(): + if obj.should_collide(): + colliders.append(obj) + check_objects = [] + if whitelist_objects or whitelist_classes: + # list of class names -> list of classes + include_classes = [self.get_class_by_name(class_name) for class_name in include_class_names] + # only given objects of given classes + if whitelist_objects and whitelist_classes: + for obj_name in include_object_names: + obj = self.objects[obj_name] + for c in include_classes: + if isinstance(obj, c) and not obj in check_objects: + check_objects.append(obj) + # only given objects of any class + elif whitelist_objects and not whitelist_classes: + check_objects += [self.objects[obj_name] for obj_name in include_object_names] + # all colliders of given classes + elif whitelist_classes: + for obj in colliders: + for c in include_classes: + if isinstance(obj, c) and not obj in check_objects: + check_objects.append(obj) + else: + check_objects = colliders[:] + check_objects_unfiltered = check_objects[:] + if blacklist_objects or blacklist_classes: + exclude_classes = [self.get_class_by_name(class_name) for class_name in exclude_class_names] + for obj in check_objects_unfiltered: + if obj.name in exclude_object_names: + check_objects.remove(obj) + continue + for c in exclude_classes: + if isinstance(obj, c): + check_objects.remove(obj) + # check all objects that passed the filter(s) and build hit list + hit_objects = [] + hit_shapes = [] + for obj in check_objects: + # check bounds + if not obj.is_point_inside(point_x, point_y): + continue + # point overlaps with tile collision? + if obj.collision_shape_type == collision.CST_TILE: + tile_x, tile_y = obj.get_tile_at_point(point_x, point_y) + if (tile_x, tile_y) in obj.collision.tile_shapes: + hit_objects.append(obj) + hit_shapes.append(obj.collision.tile_shapes[(tile_x, tile_y)]) + else: + # point overlaps with primitive shape(s)? + for shape in obj.collision.shapes: + if shape.is_point_inside(point_y, point_y): + hit_objects.append(obj) + hit_shapes.append(shape) + return hit_objects, hit_shapes + + def frame_begin(self): + "Run at start of game loop iteration, before input/update/render." + for obj in self.objects.values(): + obj.art.updated_this_tick = False + obj.frame_begin() + + def frame_update(self): + for obj in self.objects.values(): + obj.frame_update() + + def try_object_method(self, obj, method, args=()): + "Try to run given object's given method, printing error if encountered." + #print('running %s.%s' % (obj.name, method.__name__)) + try: + method(*args) + if method.__name__ == 'update': + obj.last_update_failed = False + except Exception as e: + if method.__name__ == 'update' and obj.last_update_failed: + return + obj.last_update_failed = True + for line in traceback.format_exc().split('\n'): + if line and not 'try_object_method' in line and line.strip() != 'method()': + self.app.log(line.rstrip()) + s = 'Error in %s.%s! See console.' % (obj.name, method.__name__) + self.app.ui.message_line.post_line(s, 10, True) + + def pre_update(self): + "Run GO and Room pre_updates before GameWorld.update" + # add newly spawned objects to table + self.objects.update(self.new_objects) + self.new_objects = {} + # run pre_first_update / pre_update on all appropriate objects + for obj in self.objects.values(): + if not obj.pre_first_update_run: + self.try_object_method(obj, obj.pre_first_update) + obj.pre_first_update_run = True + # only run pre_update if not paused + elif not self.paused and (obj.is_in_current_room() or obj.update_if_outside_room): + # update timers + # (copy timers list in case a timer removes itself from object) + for timer in list(obj.timer_functions_pre_update.values())[:]: + timer.update() + obj.pre_update() + for room in self.rooms.values(): + if not room.pre_first_update_run: + room.pre_first_update() + room.pre_first_update_run = True + + def update(self): + self.mouse_moved(self.app.mouse_dx, self.app.mouse_dy) + if self.properties: + self.properties.update_from_world() + if not self.paused: + # update objects based on movement, then resolve collisions + for obj in self.objects.values(): + if obj.is_in_current_room() or obj.update_if_outside_room: + # update timers + for timer in list(obj.timer_functions_update.values())[:]: + timer.update() + self.try_object_method(obj, obj.update) + # subclass update may not call GameObject.update, + # set last update time here once we're sure it's done + obj.last_update_end = self.get_elapsed_time() + if self.collision_enabled: + self.cl.update() + for room in self.rooms.values(): + room.update() + # display debug text for selected object(s) + for obj in self.selected_objects: + s = obj.get_debug_text() + if s: + self.app.ui.debug_text.post_lines(s) + # remove objects marked for destruction + to_destroy = [] + for obj in self.objects.values(): + if obj.should_destroy: + to_destroy.append(obj.name) + for obj_name in to_destroy: + self.objects.pop(obj_name) + if len(to_destroy) > 0: + self.app.ui.edit_list_panel.items_changed() + if self.hud: + self.hud.update() + if self.paused: + self._pause_time += self.app.get_elapsed_time() - self.app.last_time + else: + self.updates += 1 + + def post_update(self): + "Run after GameWorld.update." + if self.paused: + return + for obj in self.objects.values(): + if obj.is_in_current_room() or obj.update_if_outside_room: + # update timers + for timer in list(obj.timer_functions_post_update.values())[:]: + timer.update() + obj.post_update() + + def render(self): + "Sort and draw all objects in Game Mode world." + visible_objects = [] + for obj in self.objects.values(): + if obj.should_destroy: + continue + obj.update_renderables() + # filter out objects outside current room here + # (if no current room or object is in no rooms, render it always) + in_room = self.current_room is None or obj.is_in_current_room() + hide_debug = obj.is_debug and not self.draw_debug_objects + # respect object's "should render at all" flag + if obj.visible and not hide_debug and \ + (self.show_all_rooms or in_room): + visible_objects.append(obj) + # + # process non "Y sort" objects first + # + draw_order = [] + collision_items = [] + y_objects = [] + for obj in visible_objects: + if obj.y_sort: + y_objects.append(obj) + continue + for i,z in enumerate(obj.art.layers_z): + # ignore invisible layers + if not obj.art.layers_visibility[i]: + continue + # only draw collision layer if show collision is set, OR if + # "draw collision layer" is set + if obj.collision_shape_type == collision.CST_TILE and \ + obj.col_layer_name == obj.art.layer_names[i] and \ + not obj.draw_col_layer: + if obj.show_collision: + item = RenderItem(obj, i, z + obj.z) + collision_items.append(item) + continue + item = RenderItem(obj, i, z + obj.z) + draw_order.append(item) + draw_order.sort(key=lambda item: item.sort_value, reverse=False) + # + # process "Y sort" objects + # + y_objects.sort(key=lambda obj: obj.y, reverse=True) + # draw layers of each Y-sorted object in Z order + for obj in y_objects: + items = [] + for i,z in enumerate(obj.art.layers_z): + if not obj.art.layers_visibility[i]: + continue + if obj.collision_shape_type == collision.CST_TILE and \ + obj.col_layer_name == obj.art.layer_names[i]: + if obj.show_collision: + item = RenderItem(obj, i, 0) + collision_items.append(item) + continue + item = RenderItem(obj, i, z) + items.append(item) + items.sort(key=lambda item: item.sort_value, reverse=False) + for item in items: + draw_order.append(item) + for item in draw_order: + item.obj.render(item.layer) + self.grid.render() + # + # draw debug stuff: collision tiles, origins/boxes, debug lines + # + for item in collision_items: + item.obj.render(item.layer) + for obj in self.objects.values(): + obj.render_debug() + if self.hud and self.draw_hud: + self.hud.render() + + def save_last_state(self): + "Save over last loaded state." + # strip down to base filename w/o extension :/ + last_state = self.last_state_loaded + last_state = os.path.basename(last_state) + last_state = os.path.splitext(last_state)[0] + self.save_to_file(last_state) + + def save_to_file(self, filename=None): + "Save current world state to a file." + objects = [] + for obj in self.objects.values(): + if obj.should_save: + objects.append(obj.get_dict()) + d = {'objects': objects} + # save rooms if any exist + if len(self.rooms) > 0: + rooms = [room.get_dict() for room in self.rooms.values()] + d['rooms'] = rooms + if self.current_room: + d['current_room'] = self.current_room.name + if filename and filename != '': + if not filename.endswith(STATE_FILE_EXTENSION): + filename += '.' + STATE_FILE_EXTENSION + filename = '%s%s' % (self.game_dir, filename) + else: + # state filename example: + # games/mytestgame2/1431116386.gs + timestamp = int(time.time()) + filename = '%s%s.%s' % (self.game_dir, timestamp, + STATE_FILE_EXTENSION) + json.dump(d, open(filename, 'w'), + sort_keys=True, indent=1) + self.app.log('Saved game state %s to disk.' % filename) + self.app.update_window_title() + + def _get_all_loaded_classes(self): + """ + Return classname,class dict of all GameObject classes in loaded modules. + """ + classes = {} + for module in self.modules.values(): + for k,v in module.__dict__.items(): + # skip anything that's not a game class + if not type(v) is type: + continue + base_classes = (game_object.GameObject, game_hud.GameHUD, game_room.GameRoom) + # TODO: find out why above works but below doesn't!! O___O + #base_classes = self.builtin_base_classes + if issubclass(v, base_classes): + classes[k] = v + return classes + + def get_class_by_name(self, class_name): + "Return Class object for given class name." + return self.classes.get(class_name, None) + + def reset_object_in_place(self, obj): + """ + "Reset" given object to its class defaults. + Actually destroys object in place and creates a new one. + """ + x, y = obj.x, obj.y + obj_class = obj.__class__.__name__ + spawned = self.spawn_object_of_class(obj_class, x, y) + if spawned: + self.app.log('%s reset to class defaults' % obj.name) + if obj is self.player: + self.player = spawned + obj.destroy() + + def duplicate_selected_objects(self): + "Duplicate all selected objects. Calls GW.duplicate_object" + new_objects = [] + for obj in self.selected_objects: + new_objects.append(self.duplicate_object(obj)) + # report on objects created + if len(new_objects) == 1: + self.app.log('%s created from %s' % (new_objects[0].name, obj.name)) + elif len(new_objects) > 1: + self.app.log('%s new objects created' % len(new_objects)) + + def duplicate_object(self, obj): + "Create a duplicate of given object." + d = obj.get_dict() + # offset new object's location + x, y = d['x'], d['y'] + x += obj.renderable.width + y -= obj.renderable.height + d['x'], d['y'] = x, y + # new object needs a unique name, use a temp one until object exists + # for real and we can give it a proper, more-likely-to-be-unique one + d['name'] = obj.name + ' TEMP COPY NAME' + new_obj = self.spawn_object_from_data(d) + # give object a non-duplicate name + self.rename_object(new_obj, new_obj.get_unique_name()) + # tell object's rooms about it + for room_name in new_obj.rooms: + self.world.rooms[room_name].add_object(new_obj) + # update list after changes have been applied to object + self.app.ui.edit_list_panel.items_changed() + return new_obj + + def rename_object(self, obj, new_name): + "Give specified object a new name. Doesn't accept already-in-use names." + self.objects.update(self.new_objects) + for other_obj in self.objects.values(): + if not other_obj is self and other_obj.name == new_name: + self.app.ui.message_line.post_line("Can't rename %s to %s, name already in use" % (obj.name, new_name)) + return + self.objects.pop(obj.name) + old_name = obj.name + obj.name = new_name + self.objects[obj.name] = obj + for room in self.rooms.values(): + if obj in room.objects.values(): + room.objects.pop(old_name) + room.objects[obj.name] = self + + def spawn_object_of_class(self, class_name, x=None, y=None): + "Spawn a new object of given class name at given location." + if not class_name in self.classes: + # no need for log here, import_all prints exception cause + #self.app.log("Couldn't find class %s" % class_name) + return + d = {'class_name': class_name} + if x is not None and y is not None: + d['x'], d['y'] = x, y + new_obj = self.spawn_object_from_data(d) + self.app.ui.edit_list_panel.items_changed() + return new_obj + + def spawn_object_from_data(self, object_data): + "Spawn a new object with properties populated from given data dict." + # load module and class + class_name = object_data.get('class_name', None) + if not class_name or not class_name in self.classes: + # no need for log here, import_all prints exception cause + #self.app.log("Couldn't parse class %s" % class_name) + return + obj_class = self.classes[class_name] + # pass in object data + new_object = obj_class(self, object_data) + return new_object + + def add_room(self, new_room_name, new_room_classname='GameRoom'): + "Add a new Room with given name of (optional) given class." + if new_room_name in self.rooms: + self.log('Room called %s already exists!' % new_room_name) + return + new_room_class = self.classes[new_room_classname] + new_room = new_room_class(self, new_room_name) + self.rooms[new_room.name] = new_room + + def remove_room(self, room_name): + "Delete Room with given name." + if not room_name in self.rooms: + return + room = self.rooms.pop(room_name) + if room is self.current_room: + self.current_room = None + room.destroy() + + def change_room(self, new_room_name): + "Set world's current active room to Room with given name." + if not new_room_name in self.rooms: + self.app.log("Couldn't change to missing room %s" % new_room_name) + return + old_room = self.current_room + self.current_room = self.rooms[new_room_name] + # tell old and new rooms they've been exited and entered, respectively + if old_room: + old_room.exited(self.current_room) + self.current_room.entered(old_room) + + def rename_room(self, room, new_room_name): + "Rename given Room to new given name." + old_name = room.name + room.name = new_room_name + self.rooms.pop(old_name) + self.rooms[new_room_name] = room + # update all objects in this room + for obj in self.objects.values(): + if old_name in obj.rooms: + obj.rooms.pop(old_name) + obj.rooms[new_room_name] = room + + def load_game_state(self, filename=DEFAULT_STATE_FILENAME): + "Load game state with given filename." + if not os.path.exists(filename): + filename = self.game_dir + filename + if not filename.endswith(STATE_FILE_EXTENSION): + filename += '.' + STATE_FILE_EXTENSION + self.app.enter_game_mode() + self.unload_game() + # tell list panel to reset, its contents might get jostled + self.app.ui.edit_list_panel.game_reset() + # import all submodules and catalog classes + self._import_all() + self.classes = self._get_all_loaded_classes() + try: + d = json.load(open(filename)) + #self.app.log('Loading game state %s...' % filename) + except: + self.app.log("Couldn't load game state from %s" % filename) + #self.app.log(sys.exc_info()) + return + errors = False + # spawn objects + for obj_data in d['objects']: + obj = self.spawn_object_from_data(obj_data) + if not obj: + errors = True + # spawn a WorldPropertiesObject if one doesn't exist + for obj in self.new_objects.values(): + if type(obj).__name__ == self.properties_object_class_name: + self.properties = obj + break + if not self.properties: + self.properties = self.spawn_object_of_class(self.properties_object_class_name, 0, 0) + # spawn a WorldGlobalStateObject + self.globals = self.spawn_object_of_class(self.globals_object_class_name, 0, 0) + # just for first update, merge new objects list into objects list + self.objects.update(self.new_objects) + # create rooms + for room_data in d.get('rooms', []): + # get room class + room_class_name = room_data.get('class_name', None) + room_class = self.classes.get(room_class_name, game_room.GameRoom) + room = room_class(self, room_data['name'], room_data) + self.rooms[room.name] = room + start_room = self.rooms.get(d.get('current_room', None), None) + if start_room: + self.change_room(start_room.name) + # spawn hud + hud_class = self.classes[d.get('hud_class', self.hud_class_name)] + self.hud = hud_class(self) + self.hud_class_name = hud_class.__name__ + if not errors and self.app.init_success: + self.app.log('Loaded game state from %s' % filename) + self.last_state_loaded = filename + self.set_for_all_objects('show_collision', self.show_collision_all) + self.set_for_all_objects('show_bounds', self.show_bounds_all) + self.set_for_all_objects('show_origin', self.show_origin_all) + self.app.update_window_title() + self.app.ui.edit_list_panel.items_changed() + #self.report() + + def report(self): + "Print (not log) information about current world state." + print('--------------\n%s report:' % self) + obj_arts, obj_rends, obj_dbg_rends, obj_cols, obj_col_rends = 0, 0, 0, 0, 0 + attachments = 0 + # create merged dict of existing and just-spawned objects + all_objects = self.objects.copy() + all_objects.update(self.new_objects) + print('%s objects:' % len(all_objects)) + for obj in all_objects.values(): + obj_arts += len(obj.arts) + if obj.renderable is not None: + obj_rends += 1 + if obj.origin_renderable is not None: + obj_dbg_rends += 1 + if obj.bounds_renderable is not None: + obj_dbg_rends += 1 + if obj.collision: + obj_cols += 1 + obj_col_rends += len(obj.collision.renderables) + attachments += len(obj.attachments) + print(""" + %s arts in objects, %s arts loaded, + %s HUD arts, %s HUD renderables, + %s renderables, %s debug renderables, + %s collideables, %s collideable viz renderables, + %s attachments""" % (obj_arts, len(self.art_loaded), len(self.hud.arts), + len(self.hud.renderables), + obj_rends, obj_dbg_rends, + obj_cols, obj_col_rends, attachments)) + self.cl.report() + print('%s charsets loaded, %s palettes' % (len(self.app.charsets), + len(self.app.palettes))) + print('%s arts loaded for edit' % len(self.app.art_loaded_for_edit)) + + def toggle_all_origin_viz(self): + "Toggle visibility of XYZ markers for all object origins." + self.show_origin_all = not self.show_origin_all + self.set_for_all_objects('show_origin', self.show_origin_all) + + def toggle_all_bounds_viz(self): + "Toggle visibility of boxes for all object bounds." + self.show_bounds_all = not self.show_bounds_all + self.set_for_all_objects('show_bounds', self.show_bounds_all) + + def toggle_all_collision_viz(self): + "Toggle visibility of debug lines for all object Collideables." + self.show_collision_all = not self.show_collision_all + self.set_for_all_objects('show_collision', self.show_collision_all) + + def destroy(self): + self.unload_game() + self.art_loaded = [] diff --git a/games/crawler/art/maze1.psci b/games/crawler/art/maze1.psci new file mode 100644 index 0000000..0ce8715 --- /dev/null +++ b/games/crawler/art/maze1.psci @@ -0,0 +1,2431 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 15.07056893846701, + -11.14376966393841, + 17.074097831634077 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 20, + "palette": "c64_pepto", + "selected_bg_color": 1, + "selected_char": 0, + "selected_fg_color": 0, + "selected_xform": 0, + "width": 20 +} \ No newline at end of file diff --git a/games/crawler/art/maze2.psci b/games/crawler/art/maze2.psci new file mode 100644 index 0000000..bc4fe15 --- /dev/null +++ b/games/crawler/art/maze2.psci @@ -0,0 +1,5431 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 17.807096370837836, + -14.04672870100407, + 17.5524355605633 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 30, + "palette": "c64_pepto", + "selected_bg_color": 1, + "selected_char": 255, + "selected_fg_color": 5, + "selected_xform": 0, + "width": 30 +} \ No newline at end of file diff --git a/games/crawler/charsets/jpetscii_crawler.char b/games/crawler/charsets/jpetscii_crawler.char new file mode 100644 index 0000000..222b2a6 --- /dev/null +++ b/games/crawler/charsets/jpetscii_crawler.char @@ -0,0 +1,24 @@ +// JPETSCII variant with added characters for the crawler game +jpetscii_crawler.png +16, 20 + ABCDEFGHIJKLMNO +PQRSTUVWXYZ[]{} +"abcdefghijklmno +pqrstuvwxyz +1234567890-=_+:; +!@#$%^&*(),.? + + + + + + + + + + `' + + + + +// end diff --git a/games/crawler/charsets/jpetscii_crawler.png b/games/crawler/charsets/jpetscii_crawler.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d2335853ea4d4cf04fcd94ec302248dfe0aa01 GIT binary patch literal 27784 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�pM#fdKP2!|v6{0Ui}VhCYB%vVr1T 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 f(#|* a vertical slice for each grid square that shows either a wall or an empty space + +art.composite_to(src_frame, src_layer, src_x, src_y, width, height, + dest_art, dest_frame, dest_layer, dest_x, dest_y) +(art.composite_from) + +very useful: +https://weblogs.asp.net/bleroy/dungeon-master +"just draw the entire left/right perspective wall and clip out portions of it where there's a passage" method = good + +face-on wall tilers: "distance 0", "distance 1", etc + +naming: +"left 1 (1 tile immediately to our left) distance 3 (3 tiles away from POV)", "front distance 2 (2 tiles from POV)", etc + +""" + +DIR_NORTH = (0, -1) +DIR_SOUTH = (0, 1) +DIR_EAST = (1, 0) +DIR_WEST = (-1, 0) +LEFT_TURN_DIRS = { DIR_NORTH: DIR_WEST, DIR_WEST: DIR_SOUTH, + DIR_SOUTH: DIR_EAST, DIR_EAST: DIR_NORTH } +RIGHT_TURN_DIRS = { DIR_NORTH: DIR_EAST, DIR_EAST: DIR_SOUTH, + DIR_SOUTH: DIR_WEST, DIR_WEST: DIR_NORTH } +DIR_NAMES = { DIR_NORTH: 'north', DIR_SOUTH: 'south', + DIR_EAST: 'east', DIR_WEST: 'west' } +OPPOSITE_DIRS = { DIR_NORTH: DIR_SOUTH, DIR_SOUTH: DIR_NORTH, + DIR_EAST: DIR_WEST, DIR_WEST: DIR_EAST } + + +class CompositeTester(GameObject): + # slightly confusing terms here, our "source" will be loaded at runtime + art_src = 'comptest_dest' + use_art_instance = True + + def pre_first_update(self): + # load composite source art + comp_src_art = self.app.load_art('comptest_src', False) + self.art.composite_from(comp_src_art, 0, 0, 0, 0, + comp_src_art.width, comp_src_art.height, + 0, 0, 3, 2) diff --git a/games/crawler/scripts/line_tester.py b/games/crawler/scripts/line_tester.py new file mode 100644 index 0000000..ad71edc --- /dev/null +++ b/games/crawler/scripts/line_tester.py @@ -0,0 +1,57 @@ + +import vector + +from game_object import GameObject +from renderable_line import DebugLineRenderable + + +# stuff for troubleshooting "get tiles intersecting line" etc + + +class DebugMarker(GameObject): + art_width, art_height = 1, 1 + art_off_pct_x, art_off_pct_y = 0.0, 0.0 + generate_art = True + should_save = False + alpha = 0.5 + def pre_first_update(self): + # red X with yellow background + self.art.set_tile_at(0, 0, 0, 0, 24, 3, 8) + self.z = 0.1 + + +class LineTester(GameObject): + art_width, art_height = 40, 40 + art_off_pct_x, art_off_pct_y = 0.0, 0.0 + generate_art = True + + def pre_first_update(self): + self.mark_a = self.world.spawn_object_of_class('DebugMarker', -3, 33) + self.mark_b = self.world.spawn_object_of_class('DebugMarker', -10, 40) + self.z = -0.01 + self.world.grid.visible = True + self.line = DebugLineRenderable(self.app, self.art) + self.line.z = 0.0 + self.line.line_width = 3 + + def update(self): + GameObject.update(self) + # debug line + self.line.set_lines([(self.mark_a.x, self.mark_a.y, 0.0), + (self.mark_b.x, self.mark_b.y, 0.0)]) + # paint tiles under line + self.art.clear_frame_layer(0, 0, 7) + line_func = vector.get_tiles_along_line + line_func = vector.get_tiles_along_integer_line + tiles = line_func(self.mark_a.x, self.mark_a.y, + self.mark_b.x, self.mark_b.y) + for tile in tiles: + x, y = self.get_tile_at_point(tile[0], tile[1]) + char, fg = 1, 6 + self.art.set_tile_at(0, 0, x, y, char, fg) + + def render(self, layer, z_override=None): + GameObject.render(self, layer, z_override) + # TODO not sure why this is necessary, pre_first_update should run before first render(), right? blech + if hasattr(self, 'line') and self.line: + self.line.render() diff --git a/games/crawler/scripts/player.py b/games/crawler/scripts/player.py new file mode 100644 index 0000000..16f5caa --- /dev/null +++ b/games/crawler/scripts/player.py @@ -0,0 +1,58 @@ + +from game_object import GameObject +from game_util_objects import Player + +from games.crawler.scripts.crawler import DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST, LEFT_TURN_DIRS, RIGHT_TURN_DIRS, DIR_NAMES, OPPOSITE_DIRS + + +class CrawlPlayer(Player): + should_save = False # we are spawned by maze + generate_art = True + art_width, art_height = 1, 1 + art_charset, art_palette = 'jpetscii', 'c64_pepto' + art_off_pct_x, art_off_pct_y = 0, 0 + # bespoke grid-based movement method + physics_move = False + handle_key_events = True + + view_range_tiles = 8 + fg_color = 8 # yellow + dir_chars = { DIR_NORTH: 147, + DIR_SOUTH: 163, + DIR_EAST: 181, + DIR_WEST: 180 + } + + def pre_first_update(self): + Player.pre_first_update(self) + # top-down facing + self.direction = DIR_NORTH + self.maze.update_tile_visibilities() + self.art.set_tile_at(0, 0, 0, 0, self.dir_chars[self.direction], self.fg_color) + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + # turning? + if key == 'left': + self.direction = LEFT_TURN_DIRS[self.direction] + elif key == 'right': + self.direction = RIGHT_TURN_DIRS[self.direction] + # moving? + elif key == 'up' or key == 'down': + x, y = self.maze.get_tile_at_point(self.x, self.y) + if key == 'up': + new_x = x + self.direction[0] + new_y = y + self.direction[1] + else: + new_x = x - self.direction[0] + new_y = y - self.direction[1] + # is move valid? + if self.maze.is_tile_solid(new_x, new_y): + # TEMP negative feedback + dir_name = DIR_NAMES[self.direction] if key == 'up' else DIR_NAMES[OPPOSITE_DIRS[self.direction]] + self.app.log("can't go %s!" % dir_name) + else: + self.x, self.y = self.maze.x + new_x, self.maze.y - new_y + # update art to show facing + self.art.set_char_index_at(0, 0, 0, 0, self.dir_chars[self.direction]) + # update maze tiles + self.maze.update_tile_visibilities() diff --git a/games/crawler/scripts/topview.py b/games/crawler/scripts/topview.py new file mode 100644 index 0000000..45401c3 --- /dev/null +++ b/games/crawler/scripts/topview.py @@ -0,0 +1,123 @@ + +from game_object import GameObject +from vector import get_tiles_along_integer_line + +from art import TileIter + +from random import randint # DEBUG + +from games.crawler.scripts.crawler import DIR_NORTH, DIR_SOUTH, DIR_EAST, DIR_WEST, LEFT_TURN_DIRS, RIGHT_TURN_DIRS, DIR_NAMES, OPPOSITE_DIRS + + +class CrawlTopDownView(GameObject): + art_src = 'maze2' + art_off_pct_x, art_off_pct_y = 0, 0 + # we will be modifying this view at runtime so don't write on the source art + use_art_instance = True + # first character we find with this index will be where we spawn player + playerstart_char_index = 147 + # undiscovered = player has never seen this tile + undiscovered_color_index = 1 # black + # discovered = player has seen this tile but isn't currently looking at it + discovered_color_index = 12 # dark grey + + def pre_first_update(self): + # scan art for spot to spawn player + player_x, player_y = -1, -1 + for frame, layer, x, y in TileIter(self.art): + if self.art.get_char_index_at(frame, layer, x, y) == self.playerstart_char_index: + player_x, player_y = self.x + x, self.y - y + # clear the tile at this spot in our art + self.art.set_char_index_at(frame, layer, x, y, 0) + break + self.world.player = self.world.spawn_object_of_class('CrawlPlayer', player_x, player_y) + # give player a ref to us + self.world.player.maze = self + # make a copy of original layer to color for visibility, hide original + self.art.duplicate_layer(0) + self.art.layers_visibility[0] = False + for frame, layer, x, y in TileIter(self.art): + if layer == 0: + continue + # set all tiles undiscovered + self.art.set_color_at(0, layer, x, y, self.undiscovered_color_index) + self.art.mark_all_frames_changed() # DEBUG - this fixes the difference in result when use_art_instance=True! why? + # keep a list of tiles player can see + self.player_visible_tiles = [] + + def is_tile_solid(self, x, y): + return self.art.get_char_index_at(0, 0, x, y) != 0 + + # world to tile: self.get_tile_at_point(world_x, world_y) + # tile to world: self.get_tile_loc(tile_x, tile_y) + + def get_visible_tiles(self, x, y, dir_x, dir_y, tile_range, see_thru_walls=False): + "return tiles visible from given point facing given direction" + # NOTE: all the calculations here are done in this object's art's tile + # coordinates, not world space. so -Y is up/north, -X is left/west. + tiles = [] + # find back left corner of frustum and direction to scan along + if (dir_x, dir_y) == DIR_NORTH: + scan_start_x, scan_start_y = x - tile_range, y - tile_range + scan_dir_x, scan_dir_y = 1, 0 + elif (dir_x, dir_y) == DIR_SOUTH: + scan_start_x, scan_start_y = x + tile_range, y + tile_range + scan_dir_x, scan_dir_y = -1, 0 + elif (dir_x, dir_y) == DIR_EAST: + scan_start_x, scan_start_y = x + tile_range, y - tile_range + scan_dir_x, scan_dir_y = 0, 1 + elif (dir_x, dir_y) == DIR_WEST: + scan_start_x, scan_start_y = x - tile_range, y + tile_range + scan_dir_x, scan_dir_y = 0, -1 + # scan back of frustum tile by tile left to right, + # checking each tile hit + scan_distance = 0 + scan_length = tile_range * 2 + 1 # TODO make sure this is correct + while scan_distance < scan_length: + scan_x = scan_start_x + (scan_dir_x * scan_distance) + scan_y = scan_start_y + (scan_dir_y * scan_distance) + hit_tiles = get_tiles_along_integer_line(x, y, scan_x, scan_y) + for tile in hit_tiles: + tile_x, tile_y = tile[0], tile[1] + # skip out-of-bounds tiles + if 0 > tile_x or tile_x >= self.art.width or \ + 0 > tile_y or tile_y >= self.art.height: + continue + # whether this tile is solid or not, we have seen it + if not tile in tiles: + tiles.append((tile_x, tile_y)) + if not see_thru_walls and self.is_tile_solid(*tile): + break + scan_distance += 1 + return tiles + + def update_tile_visibilities(self): + """ + update our art's tile visuals based on what tiles can be, can't be, + or have been seen. + """ + previously_visible_tiles = self.player_visible_tiles[:] + p = self.world.player + px, py = self.get_tile_at_point(p.x, p.y) + self.player_visible_tiles = self.get_visible_tiles(px, py, + *p.direction, + p.view_range_tiles, + see_thru_walls=False) + #print(self.player_visible_tiles) + # color currently visible tiles + for tile in self.player_visible_tiles: + #print(tile) + if 0 > tile[0] or tile[0] >= self.art.width or \ + 0 > tile[1] or tile[1] >= self.art.height: + continue + if self.is_tile_solid(*tile): + orig_color = self.art.get_fg_color_index_at(0, 0, *tile) + self.art.set_color_at(0, 1, *tile, orig_color) + else: + #self.art.set_color_at(0, 1, *tile, randint(2, 14)) # DEBUG + pass + # color "previously seen" tiles + for tile in previously_visible_tiles: + if not tile in self.player_visible_tiles and \ + self.is_tile_solid(*tile): + self.art.set_color_at(0, 1, *tile, self.discovered_color_index) diff --git a/games/crawler/start.gs b/games/crawler/start.gs new file mode 100644 index 0000000..76fee0f --- /dev/null +++ b/games/crawler/start.gs @@ -0,0 +1,68 @@ +{ + "objects": [ + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": -2.6214004608647863, + "camera_y": 2.427993948091052, + "camera_z": 14.94938506263711, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "Crawler", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": true, + "player_camera_lock": true, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "comptest_dest", + "class_name": "CompositeTester", + "facing": 2, + "locked": false, + "name": "CompositeTester_0922C170", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -28.0, + "y": -8.0, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0, + "art_off_pct_y": 0, + "art_src": "maze1", + "class_name": "CrawlTopDownView", + "facing": 2, + "locked": false, + "name": "CrawlTopDownView_7f8c74de6820", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -17.0, + "y": 12.0, + "y_sort": false, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/cronotest/art/bed.psci b/games/cronotest/art/bed.psci new file mode 100644 index 0000000..f47a108 --- /dev/null +++ b/games/cronotest/art/bed.psci @@ -0,0 +1,1832 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 5, + -6.0, + 11.168324452166797 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 39, + "char": 108, + "fg": 44, + "xform": 0 + }, + { + "bg": 21, + "char": 100, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 105, + "fg": 40, + "xform": 0 + }, + { + "bg": 35, + "char": 68, + "fg": 39, + "xform": 0 + }, + { + "bg": 35, + "char": 106, + "fg": 40, + "xform": 0 + }, + { + "bg": 21, + "char": 78, + "fg": 40, + "xform": 0 + }, + { + "bg": 40, + "char": 99, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 92, + "fg": 40, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 39, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 40, + "char": 78, + "fg": 44, + "xform": 0 + }, + { + "bg": 39, + "char": 118, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 157, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 55, + "fg": 40, + "xform": 0 + }, + { + "bg": 40, + "char": 108, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 108, + "fg": 44, + "xform": 0 + }, + { + "bg": 40, + "char": 115, + "fg": 33, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 40, + "xform": 0 + }, + { + "bg": 14, + "char": 99, + "fg": 39, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 9, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 92, + "fg": 21, + "xform": 0 + }, + { + "bg": 2, + "char": 78, + "fg": 40, + "xform": 0 + }, + { + "bg": 39, + "char": 33, + "fg": 21, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 101, + "fg": 37, + "xform": 0 + }, + { + "bg": 9, + "char": 79, + "fg": 44, + "xform": 0 + }, + { + "bg": 30, + "char": 115, + "fg": 29, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 30, + "xform": 0 + }, + { + "bg": 12, + "char": 102, + "fg": 17, + "xform": 0 + }, + { + "bg": 44, + "char": 113, + "fg": 17, + "xform": 0 + }, + { + "bg": 33, + "char": 134, + "fg": 18, + "xform": 0 + }, + { + "bg": 35, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 30, + "char": 109, + "fg": 21, + "xform": 0 + }, + { + "bg": 44, + "char": 109, + "fg": 30, + "xform": 0 + }, + { + "bg": 9, + "char": 110, + "fg": 17, + "xform": 0 + }, + { + "bg": 37, + "char": 106, + "fg": 17, + "xform": 0 + }, + { + "bg": 33, + "char": 106, + "fg": 17, + "xform": 0 + }, + { + "bg": 21, + "char": 110, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 109, + "fg": 33, + "xform": 0 + }, + { + "bg": 33, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 102, + "fg": 21, + "xform": 0 + }, + { + "bg": 30, + "char": 97, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 30, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 46, + "fg": 12, + "xform": 0 + }, + { + "bg": 33, + "char": 102, + "fg": 30, + "xform": 0 + }, + { + "bg": 21, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 95, + "fg": 12, + "xform": 0 + }, + { + "bg": 37, + "char": 39, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 101, + "fg": 37, + "xform": 0 + }, + { + "bg": 37, + "char": 107, + "fg": 33, + "xform": 0 + }, + { + "bg": 33, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 102, + "fg": 21, + "xform": 0 + }, + { + "bg": 37, + "char": 31, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 145, + "fg": 37, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 146, + "fg": 37, + "xform": 0 + }, + { + "bg": 9, + "char": 102, + "fg": 17, + "xform": 0 + }, + { + "bg": 21, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 37, + "char": 67, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 46, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 30, + "xform": 0 + }, + { + "bg": 17, + "char": 101, + "fg": 37, + "xform": 0 + }, + { + "bg": 37, + "char": 67, + "fg": 30, + "xform": 0 + }, + { + "bg": 21, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 91, + "fg": 37, + "xform": 0 + }, + { + "bg": 37, + "char": 98, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 121, + "fg": 43, + "xform": 0 + }, + { + "bg": 17, + "char": 121, + "fg": 25, + "xform": 0 + }, + { + "bg": 17, + "char": 121, + "fg": 43, + "xform": 0 + }, + { + "bg": 37, + "char": 13, + "fg": 17, + "xform": 0 + }, + { + "bg": 9, + "char": 66, + "fg": 30, + "xform": 0 + }, + { + "bg": 33, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 33, + "char": 86, + "fg": 39, + "xform": 0 + }, + { + "bg": 44, + "char": 120, + "fg": 12, + "xform": 0 + }, + { + "bg": 40, + "char": 69, + "fg": 21, + "xform": 0 + }, + { + "bg": 21, + "char": 86, + "fg": 39, + "xform": 0 + }, + { + "bg": 21, + "char": 86, + "fg": 39, + "xform": 0 + }, + { + "bg": 40, + "char": 5, + "fg": 21, + "xform": 0 + }, + { + "bg": 10, + "char": 87, + "fg": 9, + "xform": 0 + }, + { + "bg": 21, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 39, + "char": 100, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 120, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 98, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 72, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 72, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 39, + "char": 120, + "fg": 21, + "xform": 0 + }, + { + "bg": 42, + "char": 66, + "fg": 33, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 39, + "char": 118, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 121, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 121, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 121, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 121, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 121, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 118, + "fg": 14, + "xform": 0 + }, + { + "bg": 3, + "char": 33, + "fg": 21, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0.1 + } + ] + } + ], + "height": 15, + "palette": "chrono_bg", + "width": 10 +} \ No newline at end of file diff --git a/games/cronotest/art/chest.psci b/games/cronotest/art/chest.psci new file mode 100644 index 0000000..c3acfbe --- /dev/null +++ b/games/cronotest/art/chest.psci @@ -0,0 +1,320 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 7, + -3.380808832219176, + 8.418119671221483 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 144, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 144, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 164, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 164, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 165, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 222, + "fg": 19, + "xform": 0 + }, + { + "bg": 10, + "char": 254, + "fg": 19, + "xform": 0 + }, + { + "bg": 10, + "char": 253, + "fg": 19, + "xform": 0 + }, + { + "bg": 10, + "char": 165, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 101, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 117, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 131, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 132, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 132, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 133, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 165, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 7, + "palette": "chrono_bg", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/chrono_bg.psci b/games/cronotest/art/chrono_bg.psci new file mode 100644 index 0000000..40755b9 --- /dev/null +++ b/games/cronotest/art/chrono_bg.psci @@ -0,0 +1,24224 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 21.068935656602946, + -22.00913696783814, + 16.839929741810913 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 4, + "char": 100, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 121, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 121, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 11, + "xform": 0 + }, + { + "bg": 6, + "char": 120, + "fg": 7, + "xform": 0 + }, + { + "bg": 9, + "char": 90, + "fg": 16, + "xform": 0 + }, + { + "bg": 12, + "char": 86, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 86, + "fg": 13, + "xform": 0 + }, + { + "bg": 9, + "char": 91, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 86, + "fg": 13, + "xform": 0 + }, + { + "bg": 9, + "char": 89, + "fg": 16, + "xform": 0 + }, + { + "bg": 6, + "char": 120, + "fg": 7, + "xform": 0 + }, + { + "bg": 5, + "char": 82, + "fg": 11, + "xform": 0 + }, + { + "bg": 5, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 108, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 86, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 72, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 91, + "fg": 40, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 16, + "xform": 0 + }, + { + "bg": 3, + "char": 108, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 108, + "fg": 2, + "xform": 0 + }, + { + "bg": 11, + "char": 95, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 95, + "fg": 9, + "xform": 0 + }, + { + "bg": 8, + "char": 137, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 93, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 13, + "char": 102, + "fg": 7, + "xform": 0 + }, + { + "bg": 13, + "char": 95, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 39, + "fg": 9, + "xform": 0 + }, + { + "bg": 6, + "char": 20, + "fg": 5, + "xform": 0 + }, + { + "bg": 11, + "char": 102, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 101, + "fg": 5, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 86, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 86, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 87, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 100, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 117, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 86, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 17, + "char": 87, + "fg": 16, + "xform": 0 + }, + { + "bg": 3, + "char": 92, + "fg": 17, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 16, + "char": 91, + "fg": 17, + "xform": 0 + }, + { + "bg": 17, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 16, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 108, + "fg": 5, + "xform": 0 + }, + { + "bg": 11, + "char": 95, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 101, + "fg": 7, + "xform": 0 + }, + { + "bg": 15, + "char": 3, + "fg": 8, + "xform": 0 + }, + { + "bg": 13, + "char": 67, + "fg": 8, + "xform": 0 + }, + { + "bg": 13, + "char": 67, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 102, + "fg": 11, + "xform": 0 + }, + { + "bg": 13, + "char": 67, + "fg": 8, + "xform": 0 + }, + { + "bg": 15, + "char": 67, + "fg": 8, + "xform": 0 + }, + { + "bg": 6, + "char": 102, + "fg": 7, + "xform": 0 + }, + { + "bg": 11, + "char": 113, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 44, + "fg": 7, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 53, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 121, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 123, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 72, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 72, + "fg": 3, + "xform": 0 + }, + { + "bg": 16, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 18, + "char": 108, + "fg": 17, + "xform": 0 + }, + { + "bg": 16, + "char": 123, + "fg": 18, + "xform": 0 + }, + { + "bg": 4, + "char": 72, + "fg": 3, + "xform": 0 + }, + { + "bg": 16, + "char": 107, + "fg": 17, + "xform": 0 + }, + { + "bg": 18, + "char": 121, + "fg": 40, + "xform": 0 + }, + { + "bg": 10, + "char": 105, + "fg": 5, + "xform": 0 + }, + { + "bg": 38, + "char": 95, + "fg": 7, + "xform": 0 + }, + { + "bg": 6, + "char": 117, + "fg": 11, + "xform": 0 + }, + { + "bg": 7, + "char": 123, + "fg": 6, + "xform": 0 + }, + { + "bg": 13, + "char": 113, + "fg": 8, + "xform": 0 + }, + { + "bg": 13, + "char": 120, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 67, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 102, + "fg": 7, + "xform": 0 + }, + { + "bg": 13, + "char": 121, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 118, + "fg": 8, + "xform": 0 + }, + { + "bg": 7, + "char": 101, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 115, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 138, + "fg": 7, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 5, + "xform": 0 + }, + { + "bg": 14, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 105, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 31, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 108, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 127, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 40, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 87, + "fg": 16, + "xform": 0 + }, + { + "bg": 40, + "char": 108, + "fg": 16, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 11, + "char": 87, + "fg": 5, + "xform": 0 + }, + { + "bg": 11, + "char": 108, + "fg": 6, + "xform": 0 + }, + { + "bg": 11, + "char": 123, + "fg": 6, + "xform": 0 + }, + { + "bg": 11, + "char": 118, + "fg": 15, + "xform": 0 + }, + { + "bg": 12, + "char": 87, + "fg": 13, + "xform": 0 + }, + { + "bg": 8, + "char": 87, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 87, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 12, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 87, + "fg": 15, + "xform": 0 + }, + { + "bg": 12, + "char": 87, + "fg": 13, + "xform": 0 + }, + { + "bg": 26, + "char": 113, + "fg": 15, + "xform": 0 + }, + { + "bg": 6, + "char": 82, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 113, + "fg": 7, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 44, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 44, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 44, + "xform": 0 + }, + { + "bg": 14, + "char": 67, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 44, + "fg": 21, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 105, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 91, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 91, + "fg": 17, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 17, + "xform": 0 + }, + { + "bg": 5, + "char": 77, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 67, + "fg": 11, + "xform": 0 + }, + { + "bg": 38, + "char": 67, + "fg": 7, + "xform": 0 + }, + { + "bg": 6, + "char": 117, + "fg": 11, + "xform": 0 + }, + { + "bg": 8, + "char": 100, + "fg": 6, + "xform": 0 + }, + { + "bg": 15, + "char": 108, + "fg": 13, + "xform": 0 + }, + { + "bg": 15, + "char": 87, + "fg": 13, + "xform": 0 + }, + { + "bg": 13, + "char": 86, + "fg": 15, + "xform": 0 + }, + { + "bg": 13, + "char": 102, + "fg": 8, + "xform": 0 + }, + { + "bg": 15, + "char": 87, + "fg": 13, + "xform": 0 + }, + { + "bg": 15, + "char": 107, + "fg": 13, + "xform": 0 + }, + { + "bg": 8, + "char": 155, + "fg": 22, + "xform": 0 + }, + { + "bg": 6, + "char": 115, + "fg": 11, + "xform": 0 + }, + { + "bg": 6, + "char": 10, + "fg": 11, + "xform": 0 + }, + { + "bg": 24, + "char": 87, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 92, + "fg": 25, + "xform": 0 + }, + { + "bg": 2, + "char": 64, + "fg": 25, + "xform": 0 + }, + { + "bg": 2, + "char": 91, + "fg": 25, + "xform": 0 + }, + { + "bg": 2, + "char": 92, + "fg": 25, + "xform": 0 + }, + { + "bg": 14, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 66, + "fg": 25, + "xform": 0 + }, + { + "bg": 14, + "char": 115, + "fg": 40, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 29, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 105, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 47, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 18, + "char": 123, + "fg": 3, + "xform": 0 + }, + { + "bg": 17, + "char": 92, + "fg": 37, + "xform": 0 + }, + { + "bg": 5, + "char": 77, + "fg": 42, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 67, + "fg": 7, + "xform": 0 + }, + { + "bg": 6, + "char": 111, + "fg": 7, + "xform": 0 + }, + { + "bg": 6, + "char": 117, + "fg": 11, + "xform": 0 + }, + { + "bg": 15, + "char": 123, + "fg": 6, + "xform": 0 + }, + { + "bg": 8, + "char": 86, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 67, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 44, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 102, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 67, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 86, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 101, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 115, + "fg": 11, + "xform": 0 + }, + { + "bg": 7, + "char": 101, + "fg": 6, + "xform": 0 + }, + { + "bg": 28, + "char": 113, + "fg": 31, + "xform": 0 + }, + { + "bg": 2, + "char": 102, + "fg": 25, + "xform": 0 + }, + { + "bg": 25, + "char": 21, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 29, + "xform": 0 + }, + { + "bg": 25, + "char": 101, + "fg": 31, + "xform": 0 + }, + { + "bg": 39, + "char": 6, + "fg": 14, + "xform": 0 + }, + { + "bg": 25, + "char": 101, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 105, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 69, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 41, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 67, + "fg": 31, + "xform": 0 + }, + { + "bg": 3, + "char": 120, + "fg": 18, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 67, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 91, + "fg": 18, + "xform": 0 + }, + { + "bg": 4, + "char": 72, + "fg": 18, + "xform": 0 + }, + { + "bg": 6, + "char": 67, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 95, + "fg": 7, + "xform": 0 + }, + { + "bg": 6, + "char": 117, + "fg": 5, + "xform": 0 + }, + { + "bg": 30, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 8, + "char": 102, + "fg": 15, + "xform": 0 + }, + { + "bg": 23, + "char": 66, + "fg": 32, + "xform": 0 + }, + { + "bg": 23, + "char": 86, + "fg": 9, + "xform": 0 + }, + { + "bg": 9, + "char": 99, + "fg": 23, + "xform": 0 + }, + { + "bg": 23, + "char": 86, + "fg": 9, + "xform": 0 + }, + { + "bg": 8, + "char": 101, + "fg": 15, + "xform": 0 + }, + { + "bg": 8, + "char": 101, + "fg": 7, + "xform": 0 + }, + { + "bg": 6, + "char": 115, + "fg": 5, + "xform": 0 + }, + { + "bg": 11, + "char": 113, + "fg": 7, + "xform": 0 + }, + { + "bg": 39, + "char": 87, + "fg": 33, + "xform": 0 + }, + { + "bg": 39, + "char": 72, + "fg": 33, + "xform": 0 + }, + { + "bg": 2, + "char": 87, + "fg": 21, + "xform": 0 + }, + { + "bg": 3, + "char": 72, + "fg": 33, + "xform": 0 + }, + { + "bg": 3, + "char": 72, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 72, + "fg": 33, + "xform": 0 + }, + { + "bg": 2, + "char": 72, + "fg": 33, + "xform": 0 + }, + { + "bg": 40, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 109, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 92, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 79, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 6, + "char": 100, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 78, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 6, + "xform": 0 + }, + { + "bg": 18, + "char": 108, + "fg": 3, + "xform": 0 + }, + { + "bg": 18, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 109, + "fg": 18, + "xform": 0 + }, + { + "bg": 11, + "char": 105, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 109, + "fg": 6, + "xform": 0 + }, + { + "bg": 30, + "char": 109, + "fg": 6, + "xform": 0 + }, + { + "bg": 8, + "char": 92, + "fg": 12, + "xform": 0 + }, + { + "bg": 32, + "char": 21, + "fg": 9, + "xform": 0 + }, + { + "bg": 32, + "char": 101, + "fg": 9, + "xform": 0 + }, + { + "bg": 9, + "char": 101, + "fg": 32, + "xform": 0 + }, + { + "bg": 32, + "char": 63, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 91, + "fg": 12, + "xform": 0 + }, + { + "bg": 30, + "char": 111, + "fg": 22, + "xform": 0 + }, + { + "bg": 6, + "char": 126, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 155, + "fg": 11, + "xform": 0 + }, + { + "bg": 28, + "char": 118, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 101, + "fg": 25, + "xform": 0 + }, + { + "bg": 2, + "char": 102, + "fg": 25, + "xform": 0 + }, + { + "bg": 24, + "char": 113, + "fg": 37, + "xform": 0 + }, + { + "bg": 24, + "char": 118, + "fg": 2, + "xform": 0 + }, + { + "bg": 24, + "char": 101, + "fg": 25, + "xform": 0 + }, + { + "bg": 24, + "char": 113, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 92, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 79, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 95, + "fg": 33, + "xform": 0 + }, + { + "bg": 21, + "char": 91, + "fg": 20, + "xform": 0 + }, + { + "bg": 20, + "char": 78, + "fg": 21, + "xform": 0 + }, + { + "bg": 21, + "char": 68, + "fg": 18, + "xform": 0 + }, + { + "bg": 21, + "char": 104, + "fg": 44, + "xform": 0 + }, + { + "bg": 21, + "char": 71, + "fg": 40, + "xform": 0 + }, + { + "bg": 21, + "char": 71, + "fg": 39, + "xform": 0 + }, + { + "bg": 21, + "char": 71, + "fg": 39, + "xform": 0 + }, + { + "bg": 21, + "char": 71, + "fg": 40, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 20, + "xform": 0 + }, + { + "bg": 20, + "char": 110, + "fg": 2, + "xform": 0 + }, + { + "bg": 21, + "char": 108, + "fg": 18, + "xform": 0 + }, + { + "bg": 38, + "char": 109, + "fg": 5, + "xform": 0 + }, + { + "bg": 7, + "char": 110, + "fg": 5, + "xform": 0 + }, + { + "bg": 7, + "char": 110, + "fg": 21, + "xform": 0 + }, + { + "bg": 30, + "char": 111, + "fg": 33, + "xform": 0 + }, + { + "bg": 22, + "char": 110, + "fg": 35, + "xform": 0 + }, + { + "bg": 22, + "char": 110, + "fg": 35, + "xform": 0 + }, + { + "bg": 22, + "char": 110, + "fg": 35, + "xform": 0 + }, + { + "bg": 22, + "char": 110, + "fg": 21, + "xform": 0 + }, + { + "bg": 30, + "char": 109, + "fg": 35, + "xform": 0 + }, + { + "bg": 7, + "char": 110, + "fg": 21, + "xform": 0 + }, + { + "bg": 7, + "char": 110, + "fg": 5, + "xform": 0 + }, + { + "bg": 11, + "char": 111, + "fg": 5, + "xform": 0 + }, + { + "bg": 31, + "char": 106, + "fg": 33, + "xform": 0 + }, + { + "bg": 4, + "char": 110, + "fg": 22, + "xform": 0 + }, + { + "bg": 25, + "char": 106, + "fg": 22, + "xform": 0 + }, + { + "bg": 28, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 28, + "char": 106, + "fg": 21, + "xform": 0 + }, + { + "bg": 18, + "char": 100, + "fg": 44, + "xform": 0 + }, + { + "bg": 37, + "char": 78, + "fg": 40, + "xform": 0 + }, + { + "bg": 44, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 39, + "fg": 5, + "xform": 0 + }, + { + "bg": 4, + "char": 79, + "fg": 3, + "xform": 0 + }, + { + "bg": 21, + "char": 123, + "fg": 2, + "xform": 0 + }, + { + "bg": 20, + "char": 106, + "fg": 16, + "xform": 0 + }, + { + "bg": 41, + "char": 68, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 85, + "fg": 31, + "xform": 0 + }, + { + "bg": 35, + "char": 123, + "fg": 16, + "xform": 0 + }, + { + "bg": 21, + "char": 93, + "fg": 39, + "xform": 0 + }, + { + "bg": 33, + "char": 77, + "fg": 21, + "xform": 0 + }, + { + "bg": 33, + "char": 79, + "fg": 44, + "xform": 0 + }, + { + "bg": 21, + "char": 68, + "fg": 10, + "xform": 0 + }, + { + "bg": 21, + "char": 107, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 44, + "char": 108, + "fg": 40, + "xform": 0 + }, + { + "bg": 3, + "char": 114, + "fg": 21, + "xform": 0 + }, + { + "bg": 3, + "char": 71, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 110, + "fg": 14, + "xform": 0 + }, + { + "bg": 10, + "char": 110, + "fg": 39, + "xform": 0 + }, + { + "bg": 10, + "char": 71, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 77, + "fg": 10, + "xform": 0 + }, + { + "bg": 39, + "char": 78, + "fg": 10, + "xform": 0 + }, + { + "bg": 10, + "char": 71, + "fg": 40, + "xform": 0 + }, + { + "bg": 10, + "char": 110, + "fg": 39, + "xform": 0 + }, + { + "bg": 3, + "char": 71, + "fg": 39, + "xform": 0 + }, + { + "bg": 3, + "char": 71, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 71, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 110, + "fg": 14, + "xform": 0 + }, + { + "bg": 22, + "char": 111, + "fg": 42, + "xform": 0 + }, + { + "bg": 2, + "char": 78, + "fg": 39, + "xform": 0 + }, + { + "bg": 18, + "char": 100, + "fg": 2, + "xform": 0 + }, + { + "bg": 18, + "char": 82, + "fg": 17, + "xform": 0 + }, + { + "bg": 18, + "char": 101, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 93, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 107, + "fg": 3, + "xform": 0 + }, + { + "bg": 16, + "char": 123, + "fg": 40, + "xform": 0 + }, + { + "bg": 16, + "char": 110, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 35, + "char": 108, + "fg": 3, + "xform": 0 + }, + { + "bg": 18, + "char": 93, + "fg": 43, + "xform": 0 + }, + { + "bg": 31, + "char": 95, + "fg": 18, + "xform": 0 + }, + { + "bg": 18, + "char": 95, + "fg": 43, + "xform": 0 + }, + { + "bg": 44, + "char": 71, + "fg": 33, + "xform": 0 + }, + { + "bg": 21, + "char": 78, + "fg": 16, + "xform": 0 + }, + { + "bg": 44, + "char": 109, + "fg": 33, + "xform": 0 + }, + { + "bg": 21, + "char": 71, + "fg": 33, + "xform": 0 + }, + { + "bg": 4, + "char": 114, + "fg": 33, + "xform": 0 + }, + { + "bg": 2, + "char": 114, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 101, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 115, + "fg": 14, + "xform": 0 + }, + { + "bg": 39, + "char": 33, + "fg": 4, + "xform": 0 + }, + { + "bg": 39, + "char": 130, + "fg": 45, + "xform": 0 + }, + { + "bg": 39, + "char": 113, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 4, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 108, + "fg": 10, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 59, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 40, + "char": 38, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 37, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 37, + "fg": 6, + "xform": 0 + }, + { + "bg": 2, + "char": 118, + "fg": 29, + "xform": 0 + }, + { + "bg": 40, + "char": 71, + "fg": 2, + "xform": 0 + }, + { + "bg": 20, + "char": 106, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 108, + "fg": 20, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 109, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 60, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 60, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 95, + "fg": 9, + "xform": 0 + }, + { + "bg": 40, + "char": 68, + "fg": 9, + "xform": 0 + }, + { + "bg": 21, + "char": 110, + "fg": 39, + "xform": 0 + }, + { + "bg": 21, + "char": 110, + "fg": 39, + "xform": 0 + }, + { + "bg": 33, + "char": 110, + "fg": 40, + "xform": 0 + }, + { + "bg": 43, + "char": 106, + "fg": 35, + "xform": 0 + }, + { + "bg": 10, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 33, + "char": 71, + "fg": 43, + "xform": 0 + }, + { + "bg": 44, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 33, + "char": 71, + "fg": 44, + "xform": 0 + }, + { + "bg": 44, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 33, + "char": 68, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 114, + "fg": 33, + "xform": 0 + }, + { + "bg": 2, + "char": 110, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 110, + "fg": 42, + "xform": 0 + }, + { + "bg": 2, + "char": 79, + "fg": 39, + "xform": 0 + }, + { + "bg": 2, + "char": 78, + "fg": 39, + "xform": 0 + }, + { + "bg": 2, + "char": 78, + "fg": 39, + "xform": 0 + }, + { + "bg": 2, + "char": 55, + "fg": 39, + "xform": 0 + }, + { + "bg": 2, + "char": 68, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 78, + "fg": 45, + "xform": 0 + }, + { + "bg": 2, + "char": 77, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 95, + "fg": 4, + "xform": 0 + }, + { + "bg": 42, + "char": 109, + "fg": 33, + "xform": 0 + }, + { + "bg": 42, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 42, + "char": 110, + "fg": 21, + "xform": 0 + }, + { + "bg": 21, + "char": 108, + "fg": 47, + "xform": 0 + }, + { + "bg": 21, + "char": 68, + "fg": 42, + "xform": 0 + }, + { + "bg": 43, + "char": 110, + "fg": 21, + "xform": 0 + }, + { + "bg": 43, + "char": 110, + "fg": 21, + "xform": 0 + }, + { + "bg": 33, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 95, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 14, + "char": 77, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 123, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 77, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 78, + "fg": 44, + "xform": 0 + }, + { + "bg": 14, + "char": 78, + "fg": 44, + "xform": 0 + }, + { + "bg": 39, + "char": 114, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 71, + "fg": 9, + "xform": 0 + }, + { + "bg": 3, + "char": 108, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 91, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 106, + "fg": 2, + "xform": 0 + }, + { + "bg": 39, + "char": 99, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 6, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 1, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 145, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 71, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 64, + "fg": 42, + "xform": 0 + }, + { + "bg": 14, + "char": 55, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 105, + "fg": 14, + "xform": 0 + }, + { + "bg": 39, + "char": 78, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 78, + "fg": 9, + "xform": 0 + }, + { + "bg": 40, + "char": 78, + "fg": 33, + "xform": 0 + }, + { + "bg": 39, + "char": 78, + "fg": 9, + "xform": 0 + }, + { + "bg": 39, + "char": 78, + "fg": 9, + "xform": 0 + }, + { + "bg": 40, + "char": 78, + "fg": 33, + "xform": 0 + }, + { + "bg": 39, + "char": 78, + "fg": 9, + "xform": 0 + }, + { + "bg": 14, + "char": 108, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 91, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 99, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 99, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 39, + "char": 109, + "fg": 21, + "xform": 0 + }, + { + "bg": 40, + "char": 108, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 106, + "fg": 40, + "xform": 0 + }, + { + "bg": 39, + "char": 114, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 40, + "char": 91, + "fg": 14, + "xform": 0 + }, + { + "bg": 39, + "char": 126, + "fg": 44, + "xform": 0 + }, + { + "bg": 2, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 3, + "char": 71, + "fg": 44, + "xform": 0 + }, + { + "bg": 40, + "char": 92, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 2, + "char": 92, + "fg": 10, + "xform": 0 + }, + { + "bg": 44, + "char": 99, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 40, + "char": 90, + "fg": 21, + "xform": 0 + }, + { + "bg": 42, + "char": 80, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 110, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 149, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 143, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 142, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 84, + "fg": 14, + "xform": 0 + }, + { + "bg": 39, + "char": 113, + "fg": 14, + "xform": 0 + }, + { + "bg": 39, + "char": 106, + "fg": 10, + "xform": 0 + }, + { + "bg": 39, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 39, + "char": 118, + "fg": 14, + "xform": 0 + }, + { + "bg": 39, + "char": 91, + "fg": 16, + "xform": 0 + }, + { + "bg": 39, + "char": 106, + "fg": 16, + "xform": 0 + }, + { + "bg": 39, + "char": 106, + "fg": 10, + "xform": 0 + }, + { + "bg": 39, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 100, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 92, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 83, + "fg": 42, + "xform": 0 + }, + { + "bg": 2, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 91, + "fg": 39, + "xform": 0 + }, + { + "bg": 14, + "char": 62, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 114, + "fg": 44, + "xform": 0 + }, + { + "bg": 2, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 42, + "char": 41, + "fg": 14, + "xform": 0 + }, + { + "bg": 21, + "char": 78, + "fg": 42, + "xform": 0 + }, + { + "bg": 21, + "char": 78, + "fg": 42, + "xform": 0 + }, + { + "bg": 21, + "char": 78, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 41, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 79, + "fg": 40, + "xform": 0 + }, + { + "bg": 21, + "char": 101, + "fg": 40, + "xform": 0 + }, + { + "bg": 2, + "char": 101, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 82, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 74, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 6, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 118, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 135, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 42, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 84, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 16, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 16, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 16, + "char": 110, + "fg": 33, + "xform": 0 + }, + { + "bg": 21, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 105, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 103, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 108, + "fg": 40, + "xform": 0 + }, + { + "bg": 14, + "char": 71, + "fg": 39, + "xform": 0 + }, + { + "bg": 14, + "char": 71, + "fg": 39, + "xform": 0 + }, + { + "bg": 39, + "char": 111, + "fg": 42, + "xform": 0 + }, + { + "bg": 3, + "char": 107, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 95, + "fg": 40, + "xform": 0 + }, + { + "bg": 40, + "char": 93, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 110, + "fg": 2, + "xform": 0 + }, + { + "bg": 40, + "char": 111, + "fg": 39, + "xform": 0 + }, + { + "bg": 42, + "char": 92, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 103, + "fg": 47, + "xform": 0 + }, + { + "bg": 3, + "char": 117, + "fg": 42, + "xform": 0 + }, + { + "bg": 39, + "char": 105, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 108, + "fg": 44, + "xform": 0 + }, + { + "bg": 3, + "char": 108, + "fg": 2, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 102, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 115, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 15, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 14, + "fg": 42, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 14, + "char": 71, + "fg": 21, + "xform": 0 + }, + { + "bg": 14, + "char": 90, + "fg": 21, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 71, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 106, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 111, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 71, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 84, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 89, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 91, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 105, + "fg": 47, + "xform": 0 + }, + { + "bg": 39, + "char": 91, + "fg": 33, + "xform": 0 + }, + { + "bg": 14, + "char": 106, + "fg": 21, + "xform": 0 + }, + { + "bg": 2, + "char": 92, + "fg": 21, + "xform": 0 + }, + { + "bg": 42, + "char": 105, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 42, + "xform": 0 + }, + { + "bg": 3, + "char": 77, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 24, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 113, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 111, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 91, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 8, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 13, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 108, + "fg": 42, + "xform": 0 + }, + { + "bg": 41, + "char": 100, + "fg": 42, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 90, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 117, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 107, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 108, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 86, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 30, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 3, + "char": 99, + "fg": 42, + "xform": 0 + }, + { + "bg": 3, + "char": 29, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 40, + "char": 78, + "fg": 21, + "xform": 0 + }, + { + "bg": 39, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 108, + "fg": 44, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 86, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 105, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 49, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 33, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 23, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 8, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 33, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 25, + "fg": 5, + "xform": 0 + }, + { + "bg": 41, + "char": 90, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 135, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 111, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 92, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 105, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 91, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 100, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 127, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 3, + "char": 27, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 78, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 40, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 44, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 79, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 89, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 82, + "fg": 47, + "xform": 0 + }, + { + "bg": 41, + "char": 8, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 30, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 113, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 105, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 14, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 104, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 90, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 111, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 27, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 91, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 103, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 44, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 105, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 44, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 99, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 98, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 113, + "fg": 6, + "xform": 0 + }, + { + "bg": 41, + "char": 113, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 64, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 101, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 12, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 29, + "fg": 42, + "xform": 0 + }, + { + "bg": 14, + "char": 83, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 105, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 100, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 42, + "xform": 0 + }, + { + "bg": 6, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 10, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 41, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 10, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 72, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 123, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 34, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 34, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 101, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 115, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 101, + "fg": 6, + "xform": 0 + }, + { + "bg": 41, + "char": 96, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 145, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 89, + "fg": 14, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 74, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 42, + "xform": 0 + }, + { + "bg": 3, + "char": 29, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 66, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 27, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 27, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 41, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 41, + "char": 75, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 101, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 20, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 64, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 69, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 1, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 118, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 96, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 44, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 90, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 13, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 29, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 39, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 29, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 44, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 113, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 101, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 8, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 64, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 101, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 131, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 100, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 122, + "fg": 47, + "xform": 0 + }, + { + "bg": 41, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 10, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 100, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 91, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 37, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 86, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 91, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 86, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 6, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 138, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 82, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 35, + "char": 94, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 25, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 91, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 77, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 42, + "xform": 0 + }, + { + "bg": 6, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 5, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 27, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 39, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 39, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 91, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 102, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 76, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 21, + "char": 94, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 34, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 114, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 41, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 108, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 77, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 6, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 22, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 89, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 141, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 87, + "fg": 42, + "xform": 0 + }, + { + "bg": 41, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 29, + "fg": 5, + "xform": 0 + }, + { + "bg": 41, + "char": 79, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 102, + "fg": 14, + "xform": 0 + }, + { + "bg": 42, + "char": 137, + "fg": 14, + "xform": 0 + }, + { + "bg": 47, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 101, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 99, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 100, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 10, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 42, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 93, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 87, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 5, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 29, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 14, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 41, + "char": 109, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 150, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 29, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 2, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 94, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 14, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 107, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 100, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 111, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 5, + "char": 78, + "fg": 14, + "xform": 0 + }, + { + "bg": 47, + "char": 99, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 140, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 140, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 78, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 140, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 78, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 140, + "fg": 14, + "xform": 0 + }, + { + "bg": 2, + "char": 140, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 110, + "fg": 2, + "xform": 0 + }, + { + "bg": 14, + "char": 110, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 40, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 77, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 5, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 109, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 3, + "char": 104, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 78, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 114, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 41, + "xform": 0 + }, + { + "bg": 6, + "char": 114, + "fg": 41, + "xform": 0 + }, + { + "bg": 14, + "char": 77, + "fg": 41, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 91, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 117, + "fg": 5, + "xform": 0 + }, + { + "bg": 41, + "char": 95, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 29, + "fg": 41, + "xform": 0 + }, + { + "bg": 14, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 107, + "fg": 47, + "xform": 0 + }, + { + "bg": 42, + "char": 92, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 123, + "fg": 42, + "xform": 0 + }, + { + "bg": 3, + "char": 27, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 107, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 92, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 114, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 44, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 123, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 79, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 71, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 117, + "fg": 42, + "xform": 0 + }, + { + "bg": 14, + "char": 77, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 100, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 108, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 83, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 67, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 117, + "fg": 6, + "xform": 0 + }, + { + "bg": 47, + "char": 104, + "fg": 3, + "xform": 0 + }, + { + "bg": 41, + "char": 95, + "fg": 6, + "xform": 0 + }, + { + "bg": 14, + "char": 123, + "fg": 47, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 4, + "char": 77, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 6, + "xform": 0 + }, + { + "bg": 5, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 87, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 79, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 78, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 95, + "fg": 42, + "xform": 0 + }, + { + "bg": 47, + "char": 157, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 10, + "fg": 47, + "xform": 0 + }, + { + "bg": 47, + "char": 79, + "fg": 41, + "xform": 0 + }, + { + "bg": 41, + "char": 111, + "fg": 47, + "xform": 0 + }, + { + "bg": 6, + "char": 109, + "fg": 5, + "xform": 0 + }, + { + "bg": 14, + "char": 123, + "fg": 5, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 114, + "fg": 4, + "xform": 0 + }, + { + "bg": 4, + "char": 78, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 110, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 108, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 111, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 114, + "fg": 3, + "xform": 0 + }, + { + "bg": 42, + "char": 117, + "fg": 14, + "xform": 0 + }, + { + "bg": 14, + "char": 108, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 30, + "fg": 14, + "xform": 0 + }, + { + "bg": 47, + "char": 108, + "fg": 42, + "xform": 0 + }, + { + "bg": 42, + "char": 93, + "fg": 3, + "xform": 0 + }, + { + "bg": 47, + "char": 78, + "fg": 41, + "xform": 0 + }, + { + "bg": 47, + "char": 104, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 123, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 6, + "char": 78, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 77, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 79, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 106, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 94, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0.3 + } + ] + } + ], + "height": 48, + "palette": "chrono_bg", + "width": 42 +} \ No newline at end of file diff --git a/games/cronotest/art/crono_stand_back.psci b/games/cronotest/art/crono_stand_back.psci new file mode 100644 index 0000000..0fc69cb --- /dev/null +++ b/games/cronotest/art/crono_stand_back.psci @@ -0,0 +1,488 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 5.543197011980822, + -6.245611946839135, + 11.168324452166797 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 203, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 136, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 219, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 213, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 219, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 219, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 213, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 198, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 218, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 28, + "fg": 4, + "xform": 0 + }, + { + "bg": 11, + "char": 236, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 7, + "char": 212, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 153, + "fg": 10, + "xform": 0 + }, + { + "bg": 11, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 204, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 28, + "fg": 11, + "xform": 0 + }, + { + "bg": 8, + "char": 213, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 236, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 203, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 11, + "palette": "crono_sprite", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/crono_stand_front.psci b/games/cronotest/art/crono_stand_front.psci new file mode 100644 index 0000000..782388d --- /dev/null +++ b/games/cronotest/art/crono_stand_front.psci @@ -0,0 +1,488 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 5.543197011980822, + -6.245611946839135, + 11.168324452166797 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 125, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 27, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 210, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 220, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 219, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 133, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 101, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 200, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 211, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 28, + "fg": 7, + "xform": 0 + }, + { + "bg": 8, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 165, + "fg": 11, + "xform": 0 + }, + { + "bg": 8, + "char": 27, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 214, + "fg": 9, + "xform": 0 + }, + { + "bg": 11, + "char": 28, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 101, + "fg": 11, + "xform": 0 + }, + { + "bg": 8, + "char": 214, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 149, + "fg": 6, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 131, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 11, + "palette": "crono_sprite", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/crono_stand_right.psci b/games/cronotest/art/crono_stand_right.psci new file mode 100644 index 0000000..138cbc4 --- /dev/null +++ b/games/cronotest/art/crono_stand_right.psci @@ -0,0 +1,488 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 5.543197011980822, + -6.245611946839135, + 11.168324452166797 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 196, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 99, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 219, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 234, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 125, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 28, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 236, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 27, + "fg": 5, + "xform": 0 + }, + { + "bg": 7, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 152, + "fg": 12, + "xform": 0 + }, + { + "bg": 10, + "char": 194, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 234, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 149, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 131, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 209, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 165, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 235, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 131, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 165, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 11, + "palette": "crono_sprite", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/crono_walk_back.psci b/games/cronotest/art/crono_walk_back.psci new file mode 100644 index 0000000..b916b11 --- /dev/null +++ b/games/cronotest/art/crono_walk_back.psci @@ -0,0 +1,2853 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 5.543197011980822, + -6.245611946839135, + 11.168324452166797 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 193, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 204, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 203, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 125, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 199, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 168, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 27, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 212, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 212, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 5, + "char": 131, + "fg": 11, + "xform": 0 + }, + { + "bg": 3, + "char": 186, + "fg": 4, + "xform": 0 + }, + { + "bg": 8, + "char": 212, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 210, + "fg": 10, + "xform": 0 + }, + { + "bg": 11, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 219, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 202, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 132, + "fg": 12, + "xform": 0 + }, + { + "bg": 10, + "char": 218, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 11, + "char": 148, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 102, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 242, + "fg": 2, + "xform": 0 + }, + { + "bg": 8, + "char": 115, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 194, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 211, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 200, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 115, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 210, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 28, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 99, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 184, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 153, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 133, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 204, + "fg": 9, + "xform": 0 + }, + { + "bg": 11, + "char": 32, + "fg": 4, + "xform": 0 + }, + { + "bg": 11, + "char": 32, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 195, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 215, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 10, + "xform": 0 + }, + { + "bg": 11, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 195, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 100, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 117, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 210, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 219, + "fg": 5, + "xform": 0 + }, + { + "bg": 8, + "char": 117, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 184, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 194, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 213, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 27, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 193, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 116, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 235, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 186, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 216, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 132, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 27, + "fg": 4, + "xform": 0 + }, + { + "bg": 11, + "char": 192, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 201, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 246, + "fg": 10, + "xform": 0 + }, + { + "bg": 8, + "char": 195, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 193, + "fg": 7, + "xform": 0 + }, + { + "bg": 8, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 203, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 169, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 195, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 203, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 219, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 196, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 212, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 217, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 32, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 10, + "xform": 0 + }, + { + "bg": 11, + "char": 193, + "fg": 2, + "xform": 0 + }, + { + "bg": 11, + "char": 194, + "fg": 3, + "xform": 0 + }, + { + "bg": 10, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 131, + "fg": 10, + "xform": 0 + }, + { + "bg": 10, + "char": 236, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 9, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 10, + "xform": 0 + }, + { + "bg": 12, + "char": 23, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 100, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 131, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 164, + "fg": 8, + "xform": 0 + }, + { + "bg": 5, + "char": 100, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 100, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 215, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 118, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 218, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 63, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 212, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 234, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 32, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 10, + "xform": 0 + }, + { + "bg": 11, + "char": 100, + "fg": 2, + "xform": 0 + }, + { + "bg": 11, + "char": 115, + "fg": 4, + "xform": 0 + }, + { + "bg": 10, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 116, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 133, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 210, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 165, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 214, + "fg": 6, + "xform": 0 + }, + { + "bg": 10, + "char": 218, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 214, + "fg": 2, + "xform": 0 + }, + { + "bg": 8, + "char": 235, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 186, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 184, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 246, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 200, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 201, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 151, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 234, + "fg": 2, + "xform": 0 + }, + { + "bg": 10, + "char": 209, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 165, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 164, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 99, + "fg": 4, + "xform": 0 + }, + { + "bg": 10, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 213, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 132, + "fg": 10, + "xform": 0 + }, + { + "bg": 9, + "char": 116, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 32, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 195, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 211, + "fg": 10, + "xform": 0 + }, + { + "bg": 8, + "char": 195, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 234, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 27, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 131, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 213, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 11, + "palette": "crono_sprite", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/crono_walk_front.psci b/games/cronotest/art/crono_walk_front.psci new file mode 100644 index 0000000..8ec54ef --- /dev/null +++ b/games/cronotest/art/crono_walk_front.psci @@ -0,0 +1,2853 @@ +{ + "active_frame": 3, + "active_layer": 0, + "camera": [ + 5.543197011980822, + -6.245611946839135, + 11.168324452166797 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 93, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 219, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 154, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 192, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 151, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 150, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 194, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 180, + "fg": 7, + "xform": 0 + }, + { + "bg": 10, + "char": 199, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 101, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 219, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 133, + "fg": 3, + "xform": 0 + }, + { + "bg": 10, + "char": 194, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 184, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 204, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 234, + "fg": 12, + "xform": 0 + }, + { + "bg": 7, + "char": 192, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 210, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 215, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 202, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 213, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 220, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 236, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 125, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 193, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 192, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 203, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 202, + "fg": 10, + "xform": 0 + }, + { + "bg": 10, + "char": 122, + "fg": 7, + "xform": 0 + }, + { + "bg": 8, + "char": 194, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 152, + "fg": 12, + "xform": 0 + }, + { + "bg": 10, + "char": 125, + "fg": 3, + "xform": 0 + }, + { + "bg": 10, + "char": 236, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 195, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 192, + "fg": 3, + "xform": 0 + }, + { + "bg": 10, + "char": 218, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 62, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 27, + "fg": 10, + "xform": 0 + }, + { + "bg": 8, + "char": 210, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 118, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 203, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 131, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 236, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 99, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 164, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 141, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 193, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 219, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 27, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 154, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 236, + "fg": 5, + "xform": 0 + }, + { + "bg": 10, + "char": 185, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 11, + "char": 99, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 201, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 65, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 212, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 185, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 210, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 7, + "xform": 0 + }, + { + "bg": 11, + "char": 210, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 220, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 204, + "fg": 6, + "xform": 0 + }, + { + "bg": 8, + "char": 185, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 32, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 217, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 100, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 89, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 202, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 170, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 131, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 204, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 200, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 234, + "fg": 2, + "xform": 0 + }, + { + "bg": 8, + "char": 210, + "fg": 12, + "xform": 0 + }, + { + "bg": 3, + "char": 117, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 125, + "fg": 9, + "xform": 0 + }, + { + "bg": 10, + "char": 154, + "fg": 9, + "xform": 0 + }, + { + "bg": 8, + "char": 149, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 193, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 213, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 212, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 236, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 32, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 100, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 118, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 211, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 168, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 204, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 27, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 131, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 168, + "fg": 7, + "xform": 0 + }, + { + "bg": 3, + "char": 220, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 186, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 165, + "fg": 11, + "xform": 0 + }, + { + "bg": 7, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 208, + "fg": 0, + "xform": 0 + }, + { + "bg": 11, + "char": 132, + "fg": 4, + "xform": 0 + }, + { + "bg": 11, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 99, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 10, + "char": 236, + "fg": 4, + "xform": 0 + }, + { + "bg": 10, + "char": 125, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 198, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 152, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 109, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 235, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 136, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 133, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 192, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 204, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 122, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 101, + "fg": 4, + "xform": 0 + }, + { + "bg": 8, + "char": 117, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 165, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 154, + "fg": 12, + "xform": 0 + }, + { + "bg": 7, + "char": 117, + "fg": 10, + "xform": 0 + }, + { + "bg": 10, + "char": 210, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 234, + "fg": 7, + "xform": 0 + }, + { + "bg": 10, + "char": 61, + "fg": 11, + "xform": 0 + }, + { + "bg": 10, + "char": 125, + "fg": 12, + "xform": 0 + }, + { + "bg": 7, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 101, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 136, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 93, + "fg": 12, + "xform": 0 + }, + { + "bg": 7, + "char": 131, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 131, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 115, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 214, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 99, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 11, + "palette": "crono_sprite", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/crono_walk_right.psci b/games/cronotest/art/crono_walk_right.psci new file mode 100644 index 0000000..581fce2 --- /dev/null +++ b/games/cronotest/art/crono_walk_right.psci @@ -0,0 +1,2853 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 5.543197011980822, + -6.245611946839135, + 11.168324452166797 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 203, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 154, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 100, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 27, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 183, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 99, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 117, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 133, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 62, + "fg": 7, + "xform": 0 + }, + { + "bg": 10, + "char": 28, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 212, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 165, + "fg": 3, + "xform": 0 + }, + { + "bg": 11, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 10, + "char": 213, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 214, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 132, + "fg": 11, + "xform": 0 + }, + { + "bg": 10, + "char": 131, + "fg": 11, + "xform": 0 + }, + { + "bg": 3, + "char": 213, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 236, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 117, + "fg": 12, + "xform": 0 + }, + { + "bg": 11, + "char": 212, + "fg": 6, + "xform": 0 + }, + { + "bg": 10, + "char": 193, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 209, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 4, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 211, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 234, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 100, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 146, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 27, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 100, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 204, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 214, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 89, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 195, + "fg": 6, + "xform": 0 + }, + { + "bg": 2, + "char": 186, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 194, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 220, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 217, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 192, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 235, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 194, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 184, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 27, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 200, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 209, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 199, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 132, + "fg": 10, + "xform": 0 + }, + { + "bg": 2, + "char": 133, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 235, + "fg": 5, + "xform": 0 + }, + { + "bg": 7, + "char": 154, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 32, + "fg": 6, + "xform": 0 + }, + { + "bg": 10, + "char": 27, + "fg": 11, + "xform": 0 + }, + { + "bg": 3, + "char": 211, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 131, + "fg": 7, + "xform": 0 + }, + { + "bg": 11, + "char": 242, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 192, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 11, + "char": 115, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 85, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 234, + "fg": 6, + "xform": 0 + }, + { + "bg": 3, + "char": 117, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 8, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 211, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 28, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 116, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 219, + "fg": 5, + "xform": 0 + }, + { + "bg": 5, + "char": 153, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 209, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 133, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 202, + "fg": 3, + "xform": 0 + }, + { + "bg": 7, + "char": 117, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 236, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 3, + "xform": 0 + }, + { + "bg": 10, + "char": 220, + "fg": 7, + "xform": 0 + }, + { + "bg": 10, + "char": 183, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 117, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 131, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 101, + "fg": 8, + "xform": 0 + }, + { + "bg": 12, + "char": 169, + "fg": 11, + "xform": 0 + }, + { + "bg": 10, + "char": 88, + "fg": 12, + "xform": 0 + }, + { + "bg": 3, + "char": 195, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 133, + "fg": 11, + "xform": 0 + }, + { + "bg": 11, + "char": 204, + "fg": 12, + "xform": 0 + }, + { + "bg": 8, + "char": 195, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 32, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 125, + "fg": 6, + "xform": 0 + }, + { + "bg": 10, + "char": 198, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 203, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 131, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 236, + "fg": 3, + "xform": 0 + }, + { + "bg": 8, + "char": 193, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 5, + "char": 209, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 203, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 219, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 193, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 125, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 204, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 215, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 131, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 153, + "fg": 7, + "xform": 0 + }, + { + "bg": 8, + "char": 202, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 4, + "xform": 0 + }, + { + "bg": 5, + "char": 100, + "fg": 4, + "xform": 0 + }, + { + "bg": 2, + "char": 198, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 198, + "fg": 7, + "xform": 0 + }, + { + "bg": 11, + "char": 134, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 220, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 202, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 165, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 3, + "xform": 0 + }, + { + "bg": 6, + "char": 99, + "fg": 10, + "xform": 0 + }, + { + "bg": 0, + "char": 210, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 196, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 220, + "fg": 8, + "xform": 0 + }, + { + "bg": 3, + "char": 101, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 196, + "fg": 1, + "xform": 0 + }, + { + "bg": 5, + "char": 234, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 169, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 125, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 214, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 115, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 8, + "char": 192, + "fg": 0, + "xform": 0 + }, + { + "bg": 7, + "char": 27, + "fg": 5, + "xform": 0 + }, + { + "bg": 3, + "char": 209, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 11, + "char": 204, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 193, + "fg": 2, + "xform": 0 + }, + { + "bg": 8, + "char": 117, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 210, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 199, + "fg": 7, + "xform": 0 + }, + { + "bg": 8, + "char": 212, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 218, + "fg": 8, + "xform": 0 + }, + { + "bg": 11, + "char": 132, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 133, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 201, + "fg": 10, + "xform": 0 + }, + { + "bg": 8, + "char": 202, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 208, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 8, + "xform": 0 + }, + { + "bg": 8, + "char": 132, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 50, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 11, + "palette": "crono_sprite", + "width": 7 +} \ No newline at end of file diff --git a/games/cronotest/art/frontwall.psci b/games/cronotest/art/frontwall.psci new file mode 100644 index 0000000..d6ed383 --- /dev/null +++ b/games/cronotest/art/frontwall.psci @@ -0,0 +1,12122 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 24.97903469294033, + -30.930990834573723, + 15.313439144094088 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 123, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 123, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 123, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 14, + "char": 97, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 121, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 121, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 69, + "fg": 3, + "xform": 0 + }, + { + "bg": 2, + "char": 86, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 121, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 121, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 1, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 1, + "xform": 0 + }, + { + "bg": 2, + "char": 101, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + } + ] + } + ], + "height": 48, + "palette": "chrono_bg", + "width": 42 +} \ No newline at end of file diff --git a/games/cronotest/art/railing.psci b/games/cronotest/art/railing.psci new file mode 100644 index 0000000..c1cf584 --- /dev/null +++ b/games/cronotest/art/railing.psci @@ -0,0 +1,1124 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 8.838716783875718, + -4.093956077609326, + 11.734229051028327 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 5, + "char": 92, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 87, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 91, + "fg": 3, + "xform": 0 + }, + { + "bg": 5, + "char": 86, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 5, + "char": 87, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 107, + "fg": 6, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 6, + "char": 86, + "fg": 4, + "xform": 0 + }, + { + "bg": 5, + "char": 87, + "fg": 3, + "xform": 0 + }, + { + "bg": 4, + "char": 120, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 72, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 95, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 72, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 29, + "fg": 7, + "xform": 0 + }, + { + "bg": 4, + "char": 123, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 118, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 67, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 121, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 0, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 4, + "char": 95, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 67, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 67, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 3, + "char": 86, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 89, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 99, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 89, + "fg": 4, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 105, + "fg": 4, + "xform": 0 + }, + { + "bg": 3, + "char": 114, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 108, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0.0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 1, + "char": 94, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 19, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 29, + "xform": 0 + } + ], + "z": 0.1 + } + ] + } + ], + "height": 7, + "palette": "chrono_bg", + "width": 13 +} \ No newline at end of file diff --git a/games/cronotest/art/urn.psci b/games/cronotest/art/urn.psci new file mode 100644 index 0000000..6b092d1 --- /dev/null +++ b/games/cronotest/art/urn.psci @@ -0,0 +1,392 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 2.389406694765217, + -3.852805199434878, + 4.537893891307499 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 105, + "fg": 18, + "xform": 0 + }, + { + "bg": 0, + "char": 106, + "fg": 18, + "xform": 0 + }, + { + "bg": 0, + "char": 107, + "fg": 18, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 46, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 121, + "fg": 18, + "xform": 0 + }, + { + "bg": 46, + "char": 122, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 123, + "fg": 18, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 46, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 46, + "char": 137, + "fg": 45, + "xform": 0 + }, + { + "bg": 46, + "char": 138, + "fg": 45, + "xform": 0 + }, + { + "bg": 46, + "char": 139, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 46, + "char": 176, + "fg": 45, + "xform": 0 + }, + { + "bg": 46, + "char": 177, + "fg": 45, + "xform": 0 + }, + { + "bg": 46, + "char": 178, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 134, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 135, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 45, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 103, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 104, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 118, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 122, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 134, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 135, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "z": 0.1 + } + ] + } + ], + "height": 6, + "palette": "chrono_bg", + "width": 5 +} \ No newline at end of file diff --git a/games/cronotest/palettes/chrono_bg.png b/games/cronotest/palettes/chrono_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..471f55618bb830b13c47befe8ab3cb25b74da054 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fx!3HFaxW7JSU|@9dba4!+nDcg)qW@tB35WG7 zyeGE`IbGYi)AXQ8$I?wZET>JFQ0${LadL2qP`4{DbCG8i}kDgX7&z%zWJGr6I>)MPT25$C}JQw+^#5&sDUvys<{!*EBasRt}7wv8B z7SErz(|)b}-W`thHn-gWf7|N3KjzHE_X|V+*-AAOm@qudU^sMVRCO+kj&!Qx`t(+_eBzR0nM+?1$&C;jE?8?M^hpDcIX`e14Q@chSP zDVDD;eEygE;A7dj|JG}&<2G#gQ*)`}%iV3x>#Z@I2Q+g|e8hA6&!;V$gMq=y;OXk; Jvd$@?2>_!nt&;!% literal 0 HcmV?d00001 diff --git a/games/cronotest/palettes/crono_sprite.png b/games/cronotest/palettes/crono_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ad536673c1ea938171b8d3107d91b2cfd1a6bc GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^89>az!3HEnU+nq~qzXM<978JRB$oti_;J30{mluB zM*mq49a>rAD%<7RKb%r8D0ncHKO(Rp{@*eFJ)hW&%N|VKzhNQM`aKQ@nf82=68rIY z{e*`5e|Xu1DxS{#aH_9~k$thC$%%s*EWAYqQjX0sJ#H5i5JC(LN8E(?Q>AlyfR;0O My85}Sb4q9e01Tx*>i_@% literal 0 HcmV?d00001 diff --git a/games/cronotest/scripts/cronotest_classes.py b/games/cronotest/scripts/cronotest_classes.py new file mode 100644 index 0000000..661c610 --- /dev/null +++ b/games/cronotest/scripts/cronotest_classes.py @@ -0,0 +1,31 @@ +import math + +from game_util_objects import TopDownPlayer, StaticTileBG, StaticTileObject, DynamicBoxObject, Pickup +from collision import CST_AABB + +class CronoPlayer(TopDownPlayer): + art_src = 'crono' + + col_radius = 1.5 + + # AABB testing + #collision_shape_type = CST_AABB + #col_offset_x, col_offset_y = 0, 1.25 + + col_width = 3 + col_height = 3 + art_off_pct_y = 0.9 + +class Chest(DynamicBoxObject): + art_src = 'chest' + col_width, col_height = 6, 4 + col_offset_y = -0.5 + +class Urn(Pickup): + art_src = 'urn' + col_radius = 2 + art_off_pct_y = 0.85 + +class Bed(StaticTileObject): + art_src = 'bed' + art_off_pct_x, art_off_pct_y = 0.5, 1 diff --git a/games/cronotest/start.gs b/games/cronotest/start.gs new file mode 100644 index 0000000..5fa562d --- /dev/null +++ b/games/cronotest/start.gs @@ -0,0 +1,163 @@ +{ + "objects": [ + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "games/cronotest/art/chest.psci", + "class_name": "Chest", + "facing": 2, + "locked": false, + "name": "Chest_7f74a2e68198", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -11.5, + "y": -0.5, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 1, + "art_src": "games/cronotest/art/bed.psci", + "class_name": "Bed", + "facing": 2, + "locked": false, + "name": "Bed_7f74a2e689e8", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 11.0, + "y": -8.95, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.9, + "art_src": "crono", + "class_name": "CronoPlayer", + "facing": 2, + "locked": false, + "name": "CronoPlayer_7f74a2e68630", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.29548660434491913, + "y": -1.8182171605321618, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 1.0, + "art_src": "games/cronotest/art/railing.psci", + "class_name": "StaticTileBG", + "facing": 2, + "locked": false, + "name": "StaticTileBG_7f74a2e23a58", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -4.4779006956760306, + "y": -13.021624732346341, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 1.0, + "art_src": "games/cronotest/art/frontwall.psci", + "class_name": "GameObject", + "facing": 2, + "locked": true, + "name": "GameObject_7f74a2e688d0", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.031815419357635655, + "y": -23.95867406907374, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.85, + "art_src": "urn", + "class_name": "Urn", + "facing": 2, + "locked": false, + "name": "Urn_7f74a2e68358", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -6.002785870079216, + "y": -6.6930952442337555, + "y_sort": true, + "z": 0.0 + }, + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": 0.2943722076058254, + "camera_y": -1.7974211407970777, + "camera_z": 20.0, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "Cronotest art + collision example", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": true, + "player_camera_lock": true, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "games/cronotest/art/chrono_bg.psci", + "class_name": "StaticTileBG", + "facing": 2, + "locked": true, + "name": "StaticTileBG_7f74a2e77860", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.0, + "y": 0.0, + "y_sort": false, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/cronotest/test1.gs b/games/cronotest/test1.gs new file mode 100644 index 0000000..e709fdb --- /dev/null +++ b/games/cronotest/test1.gs @@ -0,0 +1,116 @@ +{ + "camera_x": -11.700722110451439, + "camera_y": -6.822838461704266, + "camera_z": 24.918933315020546, + "gravity_x": 0, + "gravity_y": 0, + "gravity_z": 0, + "objects": [ + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 1, + "art_src": "games/cronotest/art/bed.psci", + "class_name": "Bed", + "facing": 2, + "locked": false, + "state": "stand", + "visible": true, + "x": 11.0, + "y": -8.95, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.85, + "art_src": "urn", + "class_name": "Urn", + "facing": 2, + "locked": false, + "state": "stand", + "visible": true, + "x": -16.001171252242354, + "y": -12.423482751095209, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 1.0, + "art_src": "games/cronotest/art/railing.psci", + "class_name": "StaticTileBG", + "facing": 2, + "locked": false, + "state": "stand", + "visible": true, + "x": -4.4779006956760306, + "y": -13.021624732346341, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.9, + "art_src": "crono", + "class_name": "CronoPlayer", + "facing": 1, + "is_player": true, + "locked": false, + "state": "stand", + "visible": true, + "x": -11.75855640123209, + "y": -6.835257383561769, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "games/cronotest/art/chrono_bg.psci", + "class_name": "StaticTileBG", + "facing": 2, + "locked": true, + "state": "stand", + "visible": true, + "x": 0.0, + "y": 0.0, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 1.0, + "art_src": "games/cronotest/art/frontwall.psci", + "class_name": "GameObject", + "facing": 2, + "locked": true, + "state": "stand", + "visible": true, + "x": 0.031815419357635655, + "y": -23.95867406907374, + "y_sort": true, + "z": 0.0 + }, + { + "alpha": 1.0, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "games/cronotest/art/chest.psci", + "class_name": "Chest", + "facing": 2, + "locked": false, + "state": "stand", + "visible": true, + "x": -12.0, + "y": 2.0, + "y_sort": true, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/fireplace/art/credit.psci b/games/fireplace/art/credit.psci new file mode 100644 index 0000000..967b4e6 --- /dev/null +++ b/games/fireplace/art/credit.psci @@ -0,0 +1,871 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 17.5, + -2.0, + 16.875 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 140, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 58, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 34, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 135, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 140, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 34, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 129, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 135, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 141, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 131, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 131, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 46, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 140, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 4, + "palette": "c64_original", + "selected_bg_color": 0, + "selected_char": 1, + "selected_fg_color": 16, + "selected_xform": 0, + "width": 35 +} \ No newline at end of file diff --git a/games/fireplace/art/help.psci b/games/fireplace/art/help.psci new file mode 100644 index 0000000..a770a02 --- /dev/null +++ b/games/fireplace/art/help.psci @@ -0,0 +1,4231 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 17.5, + -10.0, + 16.875 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 16, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 5, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 20, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 19, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 3, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 9, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 9, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 133, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 143, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 139, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 16, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 135, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 135, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 150, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 135, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 131, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 135, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 16, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 140, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 143, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 140, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 16, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 130, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 134, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 134, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 139, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 3, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 18, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 20, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 133, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 133, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 16, + "char": 43, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 16, + "char": 45, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 131, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 146, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 140, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 129, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 145, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 142, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 16, + "char": 132, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 146, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 130, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 144, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 136, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 147, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 140, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 131, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 132, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 129, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 152, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 10, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 16, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 49, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 48, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 49, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 55, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 20, + "palette": "c64_original", + "selected_bg_color": 16, + "selected_char": 3, + "selected_fg_color": 1, + "selected_xform": 0, + "width": 35 +} \ No newline at end of file diff --git a/games/fireplace/palettes/fireplace.png b/games/fireplace/palettes/fireplace.png new file mode 100644 index 0000000000000000000000000000000000000000..22a84e663eabcbf2dfbb4e836194b935e5699b5f GIT binary patch literal 906 zcmWlXL1-jJ6hQyzq2g9Tt=2+=b*O~`Tc|^UBNS^N+RbF>gw~y4FEr9%3w@YFv$W94 zAPqL|90u*fAVEf%!>r69=zt?c$YF$uW+jIKBd!o(l(6IwFh~~muotoIh5tXFe|Wsl z|DSB%a@MZAcm)8~wl+830;sK2{mRO-RedG=>_dQO{@i}!c5^qg_J{iDP@kXq`MjK* zmnUV}1}Fgb08RkPDjx5YPmap690i^PumD^HA%cWJZlE2G#wOmclS7vsM{=24XM@)H zB)pt=o;;{9CB~POo-%eU#9Yd$QX{4MO65u=N`+Fkgs>S?lyZzo`Iudv8p{P;?339p znGEo-i;5Iw5sEzs9B?&Q5+nyk09Ov(tequc+V+6QAbi-7d z3u!P$K?035&sPyiah25k6y3JyCxQ^dIad|ewq4f^f*_9LEX#_b7!HS%$z(R0Ef$OAa(QuaLDzoo zRmRV~xA}GofM0l;wcq~w=-;PnyubBk6FpotuIZOvKl$b7YIJjJu96?N@2z*qYpY*;cW~{imFCOq&wsjo c|IYo|#rJ=Id~ehLrh>s%^VY_<>+jzE9}n0Z)&Kwi literal 0 HcmV?d00001 diff --git a/games/fireplace/scripts/fireplace.py b/games/fireplace/scripts/fireplace.py new file mode 100644 index 0000000..5f1bfec --- /dev/null +++ b/games/fireplace/scripts/fireplace.py @@ -0,0 +1,265 @@ + +# PETSCII Fireplace for Playscii +# https://jp.itch.io/petscii-fireplace + +""" +High level approach here is to use a single GameObject that occupies the whole +screen, and draw to it using virtual (don't directly render) simulated particles. +This is more like a traditional 3D particle system, and fairly computationally +expensive compared to many old demoscene fire tricks. But it's easy to think about +and tune, which was the right call for a one-day exercise :] +""" + +import os, webbrowser +from random import random, randint, choice + +from game_object import GameObject +from art import TileIter + +# +# some tuning knobs +# + +# total # of particles to spawn and maintain; +# user can change this at runtime with +/- +TARGET_PARTICLES_DEFAULT = 100 +# don't fill entire bottom of screen with fire; let it drift up and out +SPAWN_MARGIN_X = 8 +# each particle's character "decays" towards 0 in random jumps +CHAR_DECAY_RATE_MAX = 16 +# music is just an OGG file, modders feel free to provide your own in sounds/ +MUSIC_FILENAME = 'music.ogg' +MUSIC_URL = 'http://brotherandroid.com' +# random ranges for time in seconds til next message pops up +MESSAGE_DELAY_MIN, MESSAGE_DELAY_MAX = 300, 600 +MESSAGES = [ + 'Happy Holidays', + 'Merry Christmas', + 'Happy New Year', + 'Happy Hanukkah', + 'Happy Kwanzaa', + 'Feliz Navidad', + 'Joyeux Noel' +] + + +class Fireplace(GameObject): + + "The main game object, manages particles, handles input, draws the fire." + + generate_art = True + art_charset = 'c64_petscii' + art_width, art_height = 54, 30 # approximately 16x9 aspect + art_palette = 'fireplace' + handle_key_events = True + + def pre_first_update(self): + self.art.add_layer(z=0.01) + self.target_particles = TARGET_PARTICLES_DEFAULT + # get list of character indices, sorted based on # of non-blank pixels. + # this correlates roughly with visual density, so each particle can + # appear to fizzle out over time. + chars = list(range(self.art.charset.last_index)) + weights = {} + for i in chars: + pixels = self.art.charset.get_solid_pixels_in_char(i) + weights[i] = pixels + self.weighted_chars = sorted(chars, key=weights.__getitem__) + # spawn initial particles + self.particles = [] + for i in range(self.target_particles): + p = FireParticle(self) + self.particles.append(p) + # help screen + self.help_screen = self.world.spawn_object_of_class("HelpScreen", 0, 0) + self.help_screen.z = 1 + self.help_screen.set_scale(0.75, 0.75, 1) + # start with help screen up, uncomment to hide on start + #self.help_screen.visible = False + # don't bother creating credit screen if no music present + self.credit_screen = None + self.music_exists = False + if os.path.exists(self.world.sounds_dir + MUSIC_FILENAME): + self.app.log('%s found in %s' % (MUSIC_FILENAME, self.world.sounds_dir)) + self.world.play_music(MUSIC_FILENAME) + self.music_paused = False + self.music_exists = True + # music credit screen, click for link to artist's website + self.credit_screen = self.world.spawn_object_of_class("CreditScreen", 0, -6) + self.credit_screen.z = 1.1 + self.credit_screen.set_scale(0.75, 0.75, 1) + else: + self.app.log('No %s found in %s' % (MUSIC_FILENAME, self.world.sounds_dir)) + self.set_new_message_time() + + def update(self): + # shift messages on layer 2 upward gradually + if self.app.frames % 10 == 0: + self.art.shift(0, 1, 0, -1) + # at random intervals, print a friendly message on screen + if self.world.get_elapsed_time() / 1000 > self.next_message_time: + self.post_new_message() + self.set_new_message_time() + # update all particles, then mark for deletion in a separate list. + # newbie tip: iterating through a list while removing items from it + # can lead to bad bugs! + for p in self.particles: + p.update() + to_destroy = [] + for p in self.particles: + # cull particles that go out off screen + if p.y < 0: + to_destroy.append(p) + if p.x < 0 or p.x > self.art.width - 1: + to_destroy.append(p) + # possible future optimization: {(x,y):[particles]} spatial dict? + # for now just iterate through every pair + for other in self.particles: + if p is other: + continue + if other in to_destroy: + continue + # merge colors & chars if we overlap another, then destroy it + if p.x == other.x and p.y == other.y: + p.merge(other) + to_destroy.append(other) + # cull particles that have "gone out" + if p.char <= 0: + to_destroy.append(p) + if p.fg <= 0 and p.bg <= 0: + to_destroy.append(p) + for p in to_destroy: + if p in self.particles: + # once removed from this list, particle will be garbage-collected + self.particles.remove(p) + # dim existing tiles + for frame, layer, x, y in TileIter(self.art): + # dim message layer at a lower rate + if layer == 1 and self.app.frames % 3 != 0: + continue + if randint(0, 4) == 1: + ch, fg, bg, _ = self.art.get_tile_at(frame, layer, x, y) + # don't decay char index for messages on layer 2 to keep it legible + if y != 0 and layer == 0: + ch = self.weighted_chars[ch - 1] + self.art.set_tile_at(frame, layer, x, y, ch, fg - 1, bg - 1) + # draw particles + # (looks nicer if we don't clear between frames, actually) + #self.art.clear_frame_layer(0, 0) + for p in self.particles: + self.art.set_tile_at(0, 0, p.x, p.y, self.weighted_chars[p.char], p.fg, p.bg) + # spawn new particles to maintain target count + while len(self.particles) < self.target_particles: + p = FireParticle(self) + self.particles.append(p) + GameObject.update(self) + + def set_new_message_time(self): + self.next_message_time = self.world.get_elapsed_time() / 1000 + randint(MESSAGE_DELAY_MIN, MESSAGE_DELAY_MAX) + + def post_new_message(self): + msg_text = choice(MESSAGES) + x = randint(0, self.art.width - len(msg_text)) + # spawn in lower half of screen + y = randint(int(self.art.height / 2), self.art.height) + # write to second layer + self.art.write_string(0, 1, x, y, msg_text, randint(12, 16)) + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + # in many Playscii games all input goes through the Player object; + # here input is handled by this object. + if key == 'escape' and not self.world.app.can_edit: + self.world.app.should_quit = True + elif key == 'h': + self.help_screen.visible = not self.help_screen.visible + if self.credit_screen: + self.credit_screen.visible = not self.credit_screen.visible + elif key == 'm' and self.music_exists: + if self.music_paused: + self.world.resume_music() + self.music_paused = False + else: + self.world.pause_music() + self.music_paused = True + elif key == 'c': + if not self.app.fb.disable_crt: + self.app.fb.toggle_crt() + elif key == '=' or key == '+': + self.target_particles += 10 + self.art.write_string(0, 0, 0, 0, 'Embers: %s' % self.target_particles, 15, 1) + elif key == '-': + if self.target_particles <= 10: + return + self.target_particles -= 10 + self.art.write_string(0, 0, 0, 0, 'Embers: %s' % self.target_particles, 15, 1) + + +class FireParticle: + + "Simulated particle, spawned and ticked and rendered by a Fireplace object." + + def __init__(self, fp): + # pick char and color here; Fireplace should just run sim + self.y = fp.art.height + # spawn at random point along bottom edge, within margin + self.x = randint(SPAWN_MARGIN_X, fp.art.width - SPAWN_MARGIN_X) + # char here is not character index but density, which decays; + # fp.weighted_chars is used to look up actual index + self.char = randint(100, fp.art.charset.last_index - 1) + # spawn with random foreground + background colors + # idea: spawn with relatively high brightness, + # ie high density bright FG, low density bright BG? + # (update: this didn't end up being necessary, more noisy is good) + self.fg = randint(0, len(fp.art.palette.colors) - 1) + self.bg = randint(0, len(fp.art.palette.colors) - 1) + # hang on to fireplace + self.fp = fp + + def update(self): + # no need for out-of-range checks; fireplace will cull particles that + # reach the top of the screen + self.y -= randint(1, 2) + # randomly move up, up-left, or up-right + self.x += randint(-1, 1) + # reduce char index by randomized rate + self.char -= randint(1, CHAR_DECAY_RATE_MAX) + # dim fg/bg colors by randomized rate + self.fg -= randint(0, 1) + self.bg -= randint(0, 1) + # don't bother with range checks on colors; + # if random embers "flare up" that's cool + #self.fg = max(0, self.fg) + #self.bg = max(0, self.bg) + + def merge(self, other): + # merge (sum w/ other) colors & chars (ie when particles overlap) + self.char += other.char + self.fg += other.fg + self.bg += other.bg + + +class HelpScreen(GameObject): + art_src = 'help' + alpha = 0.7 + + +class CreditScreen(GameObject): + + "Separate object for the clickable area of the help screen." + + art_src = 'credit' + alpha = 0.7 + handle_mouse_events = True + + def clicked(self, button, mouse_x, mouse_y): + if self.visible: + webbrowser.open(MUSIC_URL) + + def hovered(self, mouse_x, mouse_y): + # hilight text on hover + for frame, layer, x, y in TileIter(self.art): + self.art.set_color_at(frame, layer, x, y, 2) + + def unhovered(self, mouse_x, mouse_y): + for frame, layer, x, y in TileIter(self.art): + self.art.set_color_at(frame, layer, x, y, 16) diff --git a/games/fireplace/sounds/music_howto.txt b/games/fireplace/sounds/music_howto.txt new file mode 100644 index 0000000..7b50845 --- /dev/null +++ b/games/fireplace/sounds/music_howto.txt @@ -0,0 +1 @@ +Place an OGG sound file called "music.ogg" in this folder to hear it while the fireplace is running. diff --git a/games/fireplace/start.gs b/games/fireplace/start.gs new file mode 100644 index 0000000..73a0723 --- /dev/null +++ b/games/fireplace/start.gs @@ -0,0 +1,49 @@ +{ + "objects": [ + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": 0, + "camera_y": 0, + "camera_z": 15, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "PETSCII Fireplace", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": true, + "player_camera_lock": true, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": true, + "show_origin_all": false + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "Fireplace_7f074ab37358_art", + "class_name": "Fireplace", + "facing": 2, + "locked": false, + "name": "Fireplace_7f074ab37358", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.0007062918608009561, + "y": -0.002189216100444674, + "y_sort": false, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/flood/scripts/game.py b/games/flood/scripts/game.py new file mode 100644 index 0000000..6d221c3 --- /dev/null +++ b/games/flood/scripts/game.py @@ -0,0 +1,133 @@ + +from random import choice + +from art import TileIter +from game_object import GameObject + +# TODO: +# solver? https://stackoverflow.com/questions/1430962/how-to-optimally-solve-the-flood-fill-puzzle + + +TILE_COLORS = [3, 4, 5, 6, 7] +STARTING_TURNS = 15 +BOARD_WIDTH, BOARD_HEIGHT = 10, 10 + +# game states +GS_PLAYING = 0 +GS_WON = 1 +GS_LOST = 2 + + +class Board(GameObject): + generate_art = True + art_width, art_height = BOARD_WIDTH, BOARD_HEIGHT + art_charset = 'jpetscii' + art_palette = 'c64_original' + handle_key_events = True + + def __init__(self, world, obj_data): + GameObject.__init__(self, world, obj_data) + self.reset() + + def reset(self): + for frame, layer, x, y in TileIter(self.art): + color = choice(TILE_COLORS) + self.art.set_color_at(frame, layer, x, y, color, False) + self.captured_tiles = [(0, 0)] + # before play, flood with color of starting (top left) tile + start_color = self.art.get_bg_color_index_at(0, 0, 0, 0) + self.flood_with_color(start_color) + self.turns = STARTING_TURNS + self.game_state = GS_PLAYING + + def get_adjacent_tiles(self, x, y): + tiles = [] + if x > 0: + tiles.append((x-1, y)) + if x < BOARD_WIDTH - 1: + tiles.append((x+1, y)) + if y > 0: + tiles.append((x, y-1)) + if y < BOARD_HEIGHT - 1: + tiles.append((x, y+1)) + return tiles + + def flood_with_color(self, flood_color): + # set captured tiles to new color + for tile_x,tile_y in self.captured_tiles: + self.art.set_color_at(0, 0, tile_x, tile_y, flood_color, False) + # capture like-colored tiles adjacent to captured tiles + for frame, layer, x, y in TileIter(self.art): + if not (x, y) in self.captured_tiles: + continue + adjacents = self.get_adjacent_tiles(x, y) + for adj_x,adj_y in adjacents: + adj_color = self.art.get_bg_color_index_at(frame, layer, adj_x, adj_y) + if adj_color == flood_color: + self.captured_tiles.append((adj_x, adj_y)) + + def color_picked(self, color): + self.flood_with_color(TILE_COLORS[color]) + self.turns -= 1 + if len(self.captured_tiles) == BOARD_WIDTH * BOARD_HEIGHT: + self.game_state = GS_WON + elif self.turns == 0: + self.game_state = GS_LOST + # TODO: reset after delay / feedback? + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + if self.game_state != GS_PLAYING: + self.reset() + return + # get list of valid keys from length of tile_colors + valid_keys = ['%s' % str(i + 1) for i in range(len(TILE_COLORS))] + if not key in valid_keys: + return + key = int(key) - 1 + self.color_picked(key) + + +class ColorBar(GameObject): + generate_art = True + art_width, art_height = len(TILE_COLORS), 1 + art_charset = 'jpetscii' + art_palette = 'c64_original' + + def __init__(self, world, obj_data): + GameObject.__init__(self, world, obj_data) + i = 0 + for frame, layer, x, y in TileIter(self.art): + self.art.set_color_at(frame, layer, x, y, TILE_COLORS[i], False) + self.art.write_string(frame, layer, x, y, str(i + 1), 1) + i += 1 + + +class TurnsBar(GameObject): + text = 'turns: %s' + generate_art = True + art_width, art_height = len(text) + 3, 1 + art_charset = 'jpetscii' + art_palette = 'c64_original' + + def __init__(self, world, obj_data): + GameObject.__init__(self, world, obj_data) + self.board = None + + def pre_first_update(self): + self.board = self.world.get_all_objects_of_type('Board')[0] + + def draw_text(self): + if not self.board: + return + self.art.clear_frame_layer(0, 0) + new_text = self.text % self.board.turns + if self.board.game_state == GS_WON: + new_text = 'won!!' + elif self.board.game_state == GS_LOST: + new_text = 'lost :(' + color = TILE_COLORS[self.board.turns % len(TILE_COLORS)] + self.art.write_string(0, 0, 0, 0, new_text, color, 0) + + def update(self): + GameObject.update(self) + self.draw_text() diff --git a/games/flood/start.gs b/games/flood/start.gs new file mode 100644 index 0000000..d4375c5 --- /dev/null +++ b/games/flood/start.gs @@ -0,0 +1,87 @@ +{ + "objects": [ + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "TurnsBar_7faf04947f60_art", + "class_name": "TurnsBar", + "facing": 2, + "locked": false, + "name": "TurnsBar_7faf04947f60", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.0, + "y": 11.5, + "y_sort": false, + "z": 0.0 + }, + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": 0, + "camera_y": 0, + "camera_z": 14.361272552123562, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "Flood the Board", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": true, + "player_camera_lock": true, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "Board_7f4cb53af1d0_art", + "class_name": "Board", + "facing": 2, + "locked": false, + "name": "Board_7f4cb53af1d0", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -0.10763889209677793, + "y": 0.28819444444444453, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "ColorBar_7fa709339dd8_art", + "class_name": "ColorBar", + "facing": 2, + "locked": false, + "name": "ColorBar_7fa709339dd8", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -0.4188704619202457, + "y": -10.032944574608543, + "y_sort": false, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/maze/art/artifact.psci b/games/maze/art/artifact.psci new file mode 100644 index 0000000..38c3a06 --- /dev/null +++ b/games/maze/art/artifact.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 9.164452067389453 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 61, + "fg": 15, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/ax.psci b/games/maze/art/ax.psci new file mode 100644 index 0000000..d7ca5dd --- /dev/null +++ b/games/maze/art/ax.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 6.805135228775052 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 88, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/bg1.psci b/games/maze/art/bg1.psci new file mode 100644 index 0000000..94d8bdb --- /dev/null +++ b/games/maze/art/bg1.psci @@ -0,0 +1,14434 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 18.896433007983518, + -17.115383932418407, + 17.25524389712486 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 75, + "fg": 9, + "xform": 1 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 60, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 30, + "palette": "c64_original", + "width": 40 +} \ No newline at end of file diff --git a/games/maze/art/bg2.psci b/games/maze/art/bg2.psci new file mode 100644 index 0000000..03c1b67 --- /dev/null +++ b/games/maze/art/bg2.psci @@ -0,0 +1,14434 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 17.54592793729281, + -16.436225220213267, + 7.893471049087522 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 55, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 35, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 45, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 45, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 41, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 96, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 98, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 20, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 15, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 23, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 38, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 51, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 109, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 96, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 97, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 97, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 97, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 98, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 109, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 129, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 129, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 129, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 34, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 96, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 98, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 96, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 98, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 43, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 127, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 57, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 111, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 45, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 41, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 96, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 141, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 98, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 126, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 126, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 126, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 124, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 126, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 124, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 124, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 128, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 109, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 109, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 130, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 126, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 109, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 109, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 45, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 57, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 51, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 41, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 53, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 51, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 53, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 41, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 51, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 14, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 30, + "palette": "c64_original", + "width": 40 +} \ No newline at end of file diff --git a/games/maze/art/bg3.psci b/games/maze/art/bg3.psci new file mode 100644 index 0000000..3698912 --- /dev/null +++ b/games/maze/art/bg3.psci @@ -0,0 +1,4114 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 10.0, + -8.5, + 10.339730073999807 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 57, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 43, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 159, + "fg": 5, + "xform": 1 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 56, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 15, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 17, + "palette": "c64_original", + "width": 20 +} \ No newline at end of file diff --git a/games/maze/art/debris.psci b/games/maze/art/debris.psci new file mode 100644 index 0000000..4b55f30 --- /dev/null +++ b/games/maze/art/debris.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 5.427468781813435 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 9, + "char": 233, + "fg": 10, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/horiztrig_sm.psci b/games/maze/art/horiztrig_sm.psci new file mode 100644 index 0000000..df60fbd --- /dev/null +++ b/games/maze/art/horiztrig_sm.psci @@ -0,0 +1,70 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 0.5, + -1.0, + 13.120374326841103 + ], + "charset": "c64_petscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 69, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 69, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 69, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 94, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 94, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 3 +} \ No newline at end of file diff --git a/games/maze/art/key.psci b/games/maze/art/key.psci new file mode 100644 index 0000000..47605e7 --- /dev/null +++ b/games/maze/art/key.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 10.51465982453033 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 248, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/lock.psci b/games/maze/art/lock.psci new file mode 100644 index 0000000..21824e9 --- /dev/null +++ b/games/maze/art/lock.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 4.854507800375921 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 8, + "char": 223, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/npc.psci b/games/maze/art/npc.psci new file mode 100644 index 0000000..e000318 --- /dev/null +++ b/games/maze/art/npc.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 16 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 251, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/outsideBG.psci b/games/maze/art/outsideBG.psci new file mode 100644 index 0000000..a7f50fb --- /dev/null +++ b/games/maze/art/outsideBG.psci @@ -0,0 +1,1474 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 7.5, + -4.0, + 18.020032620006088 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + }, + { + "name": "Layer 2", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 57, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 53, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 45, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 33, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 36, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 41, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 52, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 80, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 55, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 44, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 35, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 45, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 52, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 15, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 21, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 20, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 19, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 9, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 4, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 5, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 3.0 + } + ] + } + ], + "height": 8, + "palette": "c64_original", + "width": 15 +} \ No newline at end of file diff --git a/games/maze/art/player_stand.psci b/games/maze/art/player_stand.psci new file mode 100644 index 0000000..9f9e048 --- /dev/null +++ b/games/maze/art/player_stand.psci @@ -0,0 +1,33 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1, + -1.0, + 3.0367990740061646 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 252, + "fg": 13, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/art/portal.psci b/games/maze/art/portal.psci new file mode 100644 index 0000000..644ae7e --- /dev/null +++ b/games/maze/art/portal.psci @@ -0,0 +1,123 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 2.0, + -2.0, + 4.611834012376883 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 164, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 164, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 165, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 165, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 164, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 165, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 3, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 4, + "palette": "c64_original", + "width": 4 +} \ No newline at end of file diff --git a/games/maze/art/portalBG.psci b/games/maze/art/portalBG.psci new file mode 100644 index 0000000..9ba3a08 --- /dev/null +++ b/games/maze/art/portalBG.psci @@ -0,0 +1,12034 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 19.16832888077641, + -9.12305638142787, + 14.398908824414697 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 55, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 41, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 51, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 149, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 2, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 5, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 25, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 15, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 14, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 4, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 95, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 95, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 13, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 25, + "palette": "c64_original", + "width": 40 +} \ No newline at end of file diff --git a/games/maze/art/portalgate.psci b/games/maze/art/portalgate.psci new file mode 100644 index 0000000..8e8e12d --- /dev/null +++ b/games/maze/art/portalgate.psci @@ -0,0 +1,1006 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 5.261098742185768, + -4.57161302230278, + 7.023027440451251 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 9, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 9, + "xform": 0 + }, + { + "bg": 10, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 149, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 10, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 8, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 11, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 4, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 15, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 10, + "xform": 0 + }, + { + "bg": 15, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 4, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 14, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 3, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 4, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 148, + "fg": 2, + "xform": 0 + }, + { + "bg": 15, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 16, + "char": 148, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 9, + "palette": "c64_original", + "width": 9 +} \ No newline at end of file diff --git a/games/maze/art/ruinBG.psci b/games/maze/art/ruinBG.psci new file mode 100644 index 0000000..548f7c2 --- /dev/null +++ b/games/maze/art/ruinBG.psci @@ -0,0 +1,7234 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 16.840079319610158, + -7.136310069001161, + 12.423104157166355 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 39, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 44, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 64, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 153, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 35, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 12, + "xform": 0 + }, + { + "bg": 13, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 13, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 13, + "char": 156, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 36, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 53, + "fg": 13, + "xform": 0 + }, + { + "bg": 13, + "char": 46, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 42, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 47, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 189, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 122, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 193, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 153, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 245, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 233, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 13, + "char": 122, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 146, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 217, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 153, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 95, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 13, + "char": 202, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 13, + "char": 173, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 13, + "char": 104, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 13, + "char": 156, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 13, + "char": 173, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 13, + "char": 173, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 233, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 89, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 181, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 61, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 217, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 216, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 104, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 169, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 155, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 157, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 16, + "xform": 0 + }, + { + "bg": 1, + "char": 92, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 173, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 156, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 247, + "fg": 13, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 15, + "palette": "c64_original", + "width": 40 +} \ No newline at end of file diff --git a/games/maze/art/seaBG.psci b/games/maze/art/seaBG.psci new file mode 100644 index 0000000..7b8c533 --- /dev/null +++ b/games/maze/art/seaBG.psci @@ -0,0 +1,10834 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 19.605875185031014, + -12.91121652122058, + 15.095760175633085 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 7, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 187, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 30, + "palette": "c64_original", + "width": 30 +} \ No newline at end of file diff --git a/games/maze/art/southBG2.psci b/games/maze/art/southBG2.psci new file mode 100644 index 0000000..a255ef8 --- /dev/null +++ b/games/maze/art/southBG2.psci @@ -0,0 +1,6754 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 21.33364119572919, + -11.486257048083855, + 10.014015558529602 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 14, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 55, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 36, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 54, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 52, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 53, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 55, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 244, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 50, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 37, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 40, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 33, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 54, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 41, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 46, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 39, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 80, + "fg": 15, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + }, + { + "bg": 1, + "char": 254, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 20, + "palette": "c64_original", + "width": 28 +} \ No newline at end of file diff --git a/games/maze/art/vertrig.psci b/games/maze/art/vertrig.psci new file mode 100644 index 0000000..6457ee5 --- /dev/null +++ b/games/maze/art/vertrig.psci @@ -0,0 +1,214 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 0.5, + -7.5, + 13.120374326841103 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "collision", + "tiles": [ + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + }, + { + "bg": 2, + "char": 255, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "viz", + "tiles": [ + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 15, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/maze/scripts/hud.py b/games/maze/scripts/hud.py new file mode 100644 index 0000000..bebc160 --- /dev/null +++ b/games/maze/scripts/hud.py @@ -0,0 +1,27 @@ + +from game_hud import GameHUD, GameHUDRenderable + +class MazeHUD(GameHUD): + + message_color = 4 + + def __init__(self, world): + GameHUD.__init__(self, world) + self.msg_art = self.world.app.new_art('mazehud_msg', 42, 1, + 'jpetscii', 'c64_original') + self.msg = GameHUDRenderable(self.world.app, self.msg_art) + self.arts = [self.msg_art] + self.renderables = [self.msg] + self.msg.x = -0.9 + self.msg.y = 0.9 + aspect = self.world.app.window_height / self.world.app.window_width + self.msg.scale_x = 0.075 * aspect + self.msg.scale_y = 0.05 + self.current_msg = '' + self.msg_art.clear_frame_layer(0, 0, 0, self.message_color) + self.post_msg('Welcome to MAZE, the amazing example game!') + + def post_msg(self, msg_text): + self.current_msg = msg_text + self.msg_art.clear_frame_layer(0, 0, 0, self.message_color) + self.msg_art.write_string(0, 0, 0, 0, self.current_msg) diff --git a/games/maze/scripts/objects.py b/games/maze/scripts/objects.py new file mode 100644 index 0000000..4aa610b --- /dev/null +++ b/games/maze/scripts/objects.py @@ -0,0 +1,232 @@ + +import math, random + +from art import TileIter +from game_object import GameObject +from game_util_objects import Player, StaticTileBG +from collision import CST_NONE, CST_CIRCLE, CST_AABB, CST_TILE, CT_NONE, CT_GENERIC_STATIC, CT_GENERIC_DYNAMIC, CT_PLAYER, CTG_STATIC, CTG_DYNAMIC + +class MazeBG(StaticTileBG): + z = -0.1 + +class MazeNPC(GameObject): + art_src = 'npc' + use_art_instance = True + col_radius = 0.5 + collision_shape_type = CST_CIRCLE + collision_type = CT_GENERIC_STATIC + bark = 'Well hello there!' + + def started_colliding(self, other): + if not isinstance(other, Player): + return + self.world.hud.post_msg(self.bark) + + def pre_first_update(self): + self.z = 0.1 + # TODO: investigate why this random color set doesn't seem to work + random.seed(self.name) + random_color = random.randint(3, len(self.art.palette.colors)) + for art in self.arts.values(): + art.set_all_non_transparent_colors(random_color) + +class MazeBaker(MazeNPC): + bark = 'Sorry, all outta bread today!' + +class MazeCritter(MazeNPC): + + "dynamically-spawned NPC that wobbles around" + + collision_type = CT_GENERIC_DYNAMIC + should_save = False + move_rate = 0.25 + bark = 'wheee!' + + def update(self): + # skitter around randomly + x, y = (random.random() * 2) - 1, (random.random() * 2) - 1 + x *= self.move_rate + y *= self.move_rate + self.move(x, y) + GameObject.update(self) + + +class MazePickup(GameObject): + + collision_shape_type = CST_CIRCLE + collision_type = CT_GENERIC_DYNAMIC + col_radius = 0.5 + + hold_offset_y = 1.2 + consume_on_use = True + sound_filenames = {'pickup': 'pickup.ogg'} + + def __init__(self, world, obj_data=None): + GameObject.__init__(self, world, obj_data) + self.holder = None + + def started_colliding(self, other): + if not isinstance(other, Player): + return + if self is other.held_object: + return + other.pick_up(self) + + def stopped_colliding(self, other): + if not isinstance(other, Player): + return + if self is not other.held_object: + self.enable_collision() + + def picked_up(self, new_holder): + self.holder = new_holder + self.world.hud.post_msg('got %s!' % self.display_name) + self.disable_collision() + self.play_sound('pickup') + + def used(self, user): + if 'used' in self.sound_filenames: + self.play_sound('used') + if self.consume_on_use: + self.destroy() + + def destroy(self): + if self.holder: + self.holder.held_object = None + self.holder = None + GameObject.destroy(self) + + def update(self): + GameObject.update(self) + if not self.holder: + return + # if held, shadow holder + self.x = self.holder.x + # bob slightly above holder's head + bob_y = math.sin(self.world.get_elapsed_time() / 100) / 10 + self.y = self.holder.y + self.hold_offset_y + bob_y + self.z = self.holder.z + + +class MazeKey(MazePickup): + art_src = 'key' + display_name = 'a gold key' + used_message = 'unlocked!' + +class MazeAx(MazePickup): + art_src = 'ax' + display_name = 'an ax' + consume_on_use = False + used_message = 'chop!' + # TODO: see if there's a way to add to MazePickup's sound dict here :/ + sound_filenames = {'pickup': 'pickup.ogg', + 'used': 'break.ogg'} + +class MazePortalKey(MazePickup): + art_src = 'artifact' + display_name = 'the Artifact of Zendor' + used_message = '!!??!?!!?!?!?!!' + consume_on_use = False + sound_filenames = {'pickup': 'artifact.ogg', + 'used': 'portal.ogg'} + + def update(self): + MazePickup.update(self) + ch, fg, bg, xform = self.art.get_tile_at(0, 0, 0, 0) + # before artifact is held, fluctuate char + if not self.holder: + ch += 1 + ch %= self.art.charset.last_index + if ch == 0: + ch = 1 + # always fluctuate its color + fg += 1 + fg %= len(self.art.palette.colors) + self.art.set_tile_at(0, 0, 0, 0, ch, fg, bg, xform) + + +class MazeLock(StaticTileBG): + art_src = 'lock' + collision_shape_type = CST_CIRCLE + collision_type = CT_GENERIC_DYNAMIC + col_radius = 0.5 + mass = 0.0 + key_type = MazeKey + + def started_colliding(self, other): + if not isinstance(other, Player): + return + if other.held_object and type(other.held_object) is self.key_type: + self.unlocked(other) + else: + self.world.hud.post_msg('blocked - need %s!' % self.key_type.display_name) + + def unlocked(self, other): + self.disable_collision() + self.visible = False + other.use_item() + + +class MazeBlockage(MazeLock): + art_src = 'debris' + key_type = MazeAx + + +class MazePortalGate(MazeLock): + + art_src = 'portalgate' + key_type = MazePortalKey + collision_shape_type = CST_TILE + collision_type = CT_GENERIC_STATIC + + def update(self): + MazeLock.update(self) + if self.collision_type == CT_NONE: + if not self.art.is_script_running('evap'): + self.art.run_script_every('evap') + return + # cycle non-black colors + BLACK = 1 + LAST_COLOR = len(self.art.palette.colors) - 1 + for frame, layer, x, y in TileIter(self.art): + ch, fg, bg, xform = self.art.get_tile_at(frame, layer, x, y) + # alternate wedge characters + if ch == 148: + ch = 149 + elif ch == 149: + ch = 148 + if fg != BLACK and fg != 0: + fg += 1 + if fg > LAST_COLOR: + fg = 2 + if bg != BLACK and bg != 0: + bg += 1 + if bg > LAST_COLOR: + bg = 2 + self.art.set_tile_at(frame, layer, x, y, ch, fg, bg, xform) + + +class MazePortal(GameObject): + art_src = 'portal' + def update(self): + GameObject.update(self) + if self.app.updates % 2 != 0: + return + ramps = {11: 10, 10: 3, 3: 11} + for frame, layer, x, y in TileIter(self.art): + ch, fg, bg, xform = self.art.get_tile_at(frame, layer, x, y) + fg = ramps.get(fg, None) + self.art.set_tile_at(frame, layer, x, y, ch, fg, bg, xform) + + +class MazeStandingNPC(GameObject): + art_src = 'npc' + col_radius = 0.5 + collision_shape_type = CST_CIRCLE + collision_type = CT_GENERIC_DYNAMIC + bark = 'Well hello there!' + + def started_colliding(self, other): + if not isinstance(other, Player): + return + self.world.hud.post_msg(self.bark) diff --git a/games/maze/scripts/player.py b/games/maze/scripts/player.py new file mode 100644 index 0000000..3df525d --- /dev/null +++ b/games/maze/scripts/player.py @@ -0,0 +1,55 @@ + +import math + +from game_util_objects import Player, BlobShadow +from games.maze.scripts.rooms import OutsideRoom + +class PlayerBlobShadow(BlobShadow): + z = 0 + fixed_z = True + scale_x = scale_y = 0.5 + offset_y = -0.5 + def pre_first_update(self): + BlobShadow.pre_first_update(self) + # TODO: figure out why class default scale isn't taking? + self.set_scale(0.5, 0.5, 1) + + +class MazePlayer(Player): + art_src = 'player' + move_state = 'stand' + col_radius = 0.5 + # TODO: setting this to 2 fixes tunneling, but shouldn't slow down the player! + fast_move_steps = 2 + attachment_classes = { 'shadow': 'PlayerBlobShadow' } + + def __init__(self, world, obj_data=None): + Player.__init__(self, world, obj_data) + self.held_object = None + + def pick_up(self, pickup): + # drop any other held item first + if self.held_object: + self.drop(self.held_object, pickup) + self.held_object = pickup + pickup.picked_up(self) + + def drop(self, pickup, new_pickup=None): + # drop pickup in place of one we're swapping with, else drop at feet + if new_pickup: + pickup.x, pickup.y = new_pickup.x, new_pickup.y + else: + pickup.x, pickup.y = self.x, self.y + pickup.holder = None + + def use_item(self): + self.world.hud.post_msg(self.held_object.used_message) + self.held_object.used(self) + + def update(self): + Player.update(self) + if type(self.world.current_room) is OutsideRoom: + self.z = 5 + math.sin(self.world.get_elapsed_time() / 300) * 2 + else: + # slightly above blob shadow + self.z = 0.01 diff --git a/games/maze/scripts/rooms.py b/games/maze/scripts/rooms.py new file mode 100644 index 0000000..6c66fe0 --- /dev/null +++ b/games/maze/scripts/rooms.py @@ -0,0 +1,26 @@ + +from game_room import GameRoom + + +class MazeRoom(GameRoom): + + def exited(self, new_room): + GameRoom.exited(self, new_room) + # clear message line when exiting + if self.world.hud: + self.world.hud.post_msg('') + + +class OutsideRoom(MazeRoom): + + camera_follow_player = True + + def entered(self, old_room): + MazeRoom.entered(self, old_room) + self.world.collision_enabled = False + self.world.app.camera.y_tilt = 4 + + def exited(self, new_room): + MazeRoom.exited(self, new_room) + self.world.collision_enabled = True + self.world.app.camera.y_tilt = 0 diff --git a/games/maze/sounds/artifact.ogg b/games/maze/sounds/artifact.ogg new file mode 100644 index 0000000000000000000000000000000000000000..696862f09af716214ece40150b03cfa2597f1cff GIT binary patch literal 26944 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 literal 0 HcmV?d00001 diff --git a/games/maze/sounds/caves.ogg b/games/maze/sounds/caves.ogg new file mode 100644 index 0000000000000000000000000000000000000000..321973e72b470984d4422881748dddf0c3dbd0e1 GIT binary patch literal 195496 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%0D=37el(e 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

t67?7i#chI~%EC#^DHk!(5 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 yU`#GqF4-c|@+K!zG&3{D5X-2+ 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 literal 0 HcmV?d00001 diff --git a/games/maze/sounds/portal.ogg b/games/maze/sounds/portal.ogg new file mode 100644 index 0000000000000000000000000000000000000000..145ab6865f761668f35f02aa7a44b4b84040ca22 GIT binary patch literal 31834 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 ZpHAmYXb&YyEwdv0$w}=v3@kwNzW^zva6AA2 literal 0 HcmV?d00001 diff --git a/games/maze/start.gs b/games/maze/start.gs new file mode 100644 index 0000000..82e4e01 --- /dev/null +++ b/games/maze/start.gs @@ -0,0 +1,767 @@ +{ + "current_room": "starting", + "objects": [ + { + "art_src": "trigger_default", + "class_name": "WarpTrigger", + "destination_marker_name": null, + "destination_room_name": "cave2", + "locked": false, + "name": "Tstart2cave2a", + "use_marker_room": true, + "visible": true, + "x": -1.0, + "y": -13.0, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "lock", + "class_name": "MazeLock", + "facing": 2, + "locked": false, + "name": "cavelock2", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 9.5, + "y": 15.5, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "npc", + "class_name": "MazeBaker", + "facing": 2, + "locked": false, + "name": "baker", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -52.559257663276675, + "y": 2.972578982963758, + "y_sort": false, + "z": 0.1 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "startcam", + "visible": true, + "x": -3.7439999999999998, + "y": 5.472000000000001, + "z": 16.009167380557365 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "debris", + "class_name": "MazeBlockage", + "facing": 2, + "locked": false, + "name": "MazeBlockage_7fa9d67fd828", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -5.5, + "y": 1.5, + "y_sort": false, + "z": 0.0 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "towncam", + "visible": true, + "x": -44.10279257082698, + "y": 4.0, + "z": 17.070995359986807 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "portalBG", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "portalBG", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 36.0, + "y": 2.5, + "y_sort": false, + "z": -0.1 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "ruinscam", + "visible": true, + "x": -54.0788068588908, + "y": -25.46569798795009, + "z": 10.869957460577599 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "npc", + "class_name": "MazeNPC", + "facing": 2, + "locked": false, + "name": "hermit", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -58.170556930229274, + "y": 12.337916715178741, + "y_sort": false, + "z": 0.1 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "cave1cam", + "visible": true, + "x": -16.30483967372331, + "y": -18.07218161059315, + "z": 7.648539833909864 + }, + { + "art_src": "trigger_default", + "class_name": "WarpTrigger", + "destination_marker_name": null, + "destination_room_name": "cave1", + "locked": false, + "name": "Tstart2cave1", + "use_marker_room": true, + "visible": true, + "x": -16.0, + "y": -13.0, + "z": 0.0 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "portalcam", + "visible": true, + "x": 35.291462350930885, + "y": 3.106521280843485, + "z": 14.390099166413725 + }, + { + "art_src": "trigger_default", + "class_name": "WarpTrigger", + "destination_marker_name": null, + "destination_room_name": "cave2", + "locked": false, + "name": "Tstart2cave2b", + "use_marker_room": true, + "visible": true, + "x": 10.0, + "y": -13.0, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "bg2", + "class_name": "MazeBG", + "facing": 3, + "locked": false, + "name": "townBG", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -44.0, + "y": 4.0, + "y_sort": false, + "z": -0.1 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "seacam", + "visible": true, + "x": 14.373101157977933, + "y": 32.867089627789134, + "z": 16.0 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "cave2cam", + "visible": true, + "x": 4.804288025292883, + "y": -22.311180826149485, + "z": 11.429005565617334 + }, + { + "art_src": "trigger_default", + "class_name": "WarpTrigger", + "destination_marker_name": "outsidemark", + "destination_room_name": null, + "locked": false, + "name": "Tportal2outside", + "use_marker_room": true, + "visible": true, + "x": 48.59283481841614, + "y": 2.2222249748833316, + "z": 0.0 + }, + { + "class_name": "ObjectSpawner", + "destroy_on_room_exit": false, + "locked": false, + "name": "critterspawner2", + "spawn_class_name": "MazeCritter", + "spawn_obj_name": "critter2", + "times_to_fire": 1, + "visible": true, + "x": -41.5, + "y": 2.5, + "z": 0.0 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "ruinswarp", + "visible": true, + "x": -59.5, + "y": -26.5, + "z": 0.0 + }, + { + "class_name": "ObjectSpawner", + "destroy_on_room_exit": false, + "locked": false, + "name": "critterspawner3", + "spawn_class_name": "MazeCritter", + "spawn_obj_name": "critter3", + "times_to_fire": 1, + "visible": true, + "x": -37.5, + "y": 2.5, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "portal", + "class_name": "MazePortal", + "facing": 2, + "locked": false, + "name": "MazePortal_7fc29eeccc18", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -24.0, + "y": 34.0, + "y_sort": false, + "z": -0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "player", + "class_name": "MazePlayer", + "facing": 0, + "locked": false, + "name": "MazePlayer_7f81aab05b00", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -9.855148054461994, + "y": 11.503396436924467, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "portal", + "class_name": "MazePortal", + "facing": 2, + "locked": false, + "name": "MazePortal_7fe84782d0b8", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 48.5, + "y": 2.5, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "ruinBG", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "ruinsBG", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -46.0, + "y": -26.0, + "y_sort": false, + "z": -0.1 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "outsidemark", + "visible": true, + "x": -23.5, + "y": 33.5, + "z": 0.0 + }, + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": -3.7439999999999998, + "camera_y": 5.472000000000001, + "camera_z": 16.009167380557365, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": false, + "draw_hud": true, + "game_title": "Maze, the amazing example game!", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "MazeHUD", + "object_grid_snap": true, + "player_camera_lock": false, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "outsidecamstart", + "visible": true, + "x": -0.1545352492661648, + "y": 14.47792490660747, + "z": 27.301729651051534 + }, + { + "art_src": "trigger_default", + "class_name": "WarpTrigger", + "destination_marker_name": "ruinswarp", + "destination_room_name": null, + "locked": false, + "name": "Ttown2ruins", + "use_marker_room": true, + "visible": true, + "x": -59.0, + "y": -4.0, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "key", + "class_name": "MazeKey", + "facing": 2, + "locked": false, + "name": "MazeKey_7f0479f45a20", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 8.555555256207787, + "y": -1.3703703703703702, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "ax", + "class_name": "MazeAx", + "facing": 2, + "locked": false, + "name": "ax", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -16.5, + "y": -18.5, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "debris", + "class_name": "MazeBlockage", + "facing": 2, + "locked": false, + "name": "southblockage", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -16.5, + "y": -13.5, + "y_sort": false, + "z": 0.0 + }, + { + "can_play": true, + "class_name": "SoundBlaster", + "locked": false, + "name": "cavesound", + "play_on_room_enter": true, + "sound_name": "caves", + "visible": true, + "x": 9.185406956013711, + "y": -26.05735487265739, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "bg1", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "startBG", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -4.0, + "y": 4.0, + "y_sort": false, + "z": -0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "bg3", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "cave1bg", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -16.0, + "y": -19.0, + "y_sort": false, + "z": -0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "southBG2", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "cave2bg", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 5.0, + "y": -20.5, + "y_sort": false, + "z": -0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "portalgate", + "class_name": "MazePortalGate", + "facing": 2, + "locked": false, + "name": "MazePortalGate_7fe29bd58d30", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 48.5, + "y": 2.5, + "y_sort": false, + "z": 0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "outsideBG", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "outsideBG", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -24.268732973199565, + "y": 39.64642715552863, + "y_sort": false, + "z": -0.2 + }, + { + "class_name": "ObjectSpawner", + "destroy_on_room_exit": false, + "locked": false, + "name": "critterspawner1", + "spawn_class_name": "MazeCritter", + "spawn_obj_name": "critter1", + "times_to_fire": 1, + "visible": true, + "x": -44.97214883980052, + "y": 9.097588892218281, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "seaBG", + "class_name": "MazeBG", + "facing": 2, + "locked": false, + "name": "seaBG", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 15.0, + "y": 34.0, + "y_sort": false, + "z": -0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "artifact", + "class_name": "MazePortalKey", + "facing": 2, + "locked": false, + "name": "MazePortalKey_7fe74c8c9048", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 13.5, + "y": 43.5, + "y_sort": false, + "z": 0.0 + } + ], + "rooms": [ + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": true, + "camera_marker_name": "outsidecamstart", + "class_name": "OutsideRoom", + "left_edge_warp_dest_name": "", + "name": "outside", + "objects": [ + "townBG", + "MazePortal_7fc29eeccc18", + "MazePortal_7fe84782d0b8", + "startBG", + "cave1bg", + "cave2bg", + "ruinsBG", + "outsidemark", + "outsideBG", + "portalBG", + "seaBG", + "outsidecamstart" + ], + "right_edge_warp_dest_name": "", + "top_edge_warp_dest_name": "", + "warp_edge_bounds_obj_name": "" + }, + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": false, + "camera_marker_name": "cave1cam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "ruins", + "name": "cave1", + "objects": [ + "southblockage", + "cave1bg", + "cavesound", + "cave1cam" + ], + "right_edge_warp_dest_name": "", + "top_edge_warp_dest_name": "starting", + "warp_edge_bounds_obj_name": "cave1bg" + }, + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": false, + "camera_marker_name": "startcam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "town", + "name": "starting", + "objects": [ + "Tstart2cave2a", + "startBG", + "Tstart2cave1", + "Tstart2cave2b", + "MazeBlockage_7fa9d67fd828", + "startcam", + "cavelock2" + ], + "right_edge_warp_dest_name": "portal", + "top_edge_warp_dest_name": "sea", + "warp_edge_bounds_obj_name": "startBG" + }, + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": true, + "camera_marker_name": "ruinscam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "", + "name": "ruins", + "objects": [ + "ruinscam", + "cavesound", + "ruinswarp", + "ruinsBG" + ], + "right_edge_warp_dest_name": "cave1", + "top_edge_warp_dest_name": "", + "warp_edge_bounds_obj_name": "ruinsBG" + }, + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": false, + "camera_marker_name": "portalcam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "starting", + "name": "portal", + "objects": [ + "MazePortal_7fe84782d0b8", + "Tportal2outside", + "MazePortalGate_7fe29bd58d30", + "portalBG", + "portalcam" + ], + "right_edge_warp_dest_name": "", + "top_edge_warp_dest_name": "", + "warp_edge_bounds_obj_name": "portalBG" + }, + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": false, + "camera_marker_name": "cave2cam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "", + "name": "cave2", + "objects": [ + "cavesound", + "cave2bg", + "cave2cam" + ], + "right_edge_warp_dest_name": "", + "top_edge_warp_dest_name": "starting", + "warp_edge_bounds_obj_name": "cave2bg" + }, + { + "bottom_edge_warp_dest_name": "", + "camera_follow_player": false, + "camera_marker_name": "towncam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "", + "name": "town", + "objects": [ + "townBG", + "critterspawner1", + "baker", + "critterspawner3", + "critterspawner2", + "Ttown2ruins", + "towncam" + ], + "right_edge_warp_dest_name": "starting", + "top_edge_warp_dest_name": "", + "warp_edge_bounds_obj_name": "townBG" + }, + { + "bottom_edge_warp_dest_name": "starting", + "camera_follow_player": false, + "camera_marker_name": "seacam", + "class_name": "MazeRoom", + "left_edge_warp_dest_name": "", + "name": "sea", + "objects": [ + "seaBG", + "seacam" + ], + "right_edge_warp_dest_name": "", + "top_edge_warp_dest_name": "", + "warp_edge_bounds_obj_name": "seaBG" + } + ] +} \ No newline at end of file diff --git a/games/platso/art/monster_stand.psci b/games/platso/art/monster_stand.psci new file mode 100644 index 0000000..4c56582 --- /dev/null +++ b/games/platso/art/monster_stand.psci @@ -0,0 +1,147 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1.5, + -1.5, + 3.0588513758923073 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 198, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 144, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 239, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 146, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 243, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 243, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 198, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 144, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 239, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 146, + "fg": 6, + "xform": 0 + }, + { + "bg": 0, + "char": 242, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 242, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 3, + "palette": "c64_original", + "width": 3 +} \ No newline at end of file diff --git a/games/platso/art/platworld.psci b/games/platso/art/platworld.psci new file mode 100644 index 0000000..bc04d67 --- /dev/null +++ b/games/platso/art/platworld.psci @@ -0,0 +1,24034 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 25.479192481920578, + -27.525740941237288, + 15.162619751731762 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "collision", + "tiles": [ + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 187, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "backdrop", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 5, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 7, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 10, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 10, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 10, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 3, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 255, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 254, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 6, + "xform": 0 + }, + { + "bg": 12, + "char": 253, + "fg": 6, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 76, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 12, + "char": 187, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 12, + "xform": 0 + } + ], + "visible": 1, + "z": -0.1 + } + ] + } + ], + "height": 40, + "palette": "c64_original", + "width": 50 +} \ No newline at end of file diff --git a/games/platso/art/player_stand.psci b/games/platso/art/player_stand.psci new file mode 100644 index 0000000..6d037a9 --- /dev/null +++ b/games/platso/art/player_stand.psci @@ -0,0 +1,177 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 3.932563498956305, + -3.1765643047985757, + 6.540795313908221 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 251, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 168, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 255, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 169, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 202, + "fg": 16, + "xform": 0 + }, + { + "bg": 16, + "char": 127, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 204, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 16, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 5, + "palette": "c64_original", + "width": 5 +} \ No newline at end of file diff --git a/games/platso/art/player_walk.psci b/games/platso/art/player_walk.psci new file mode 100644 index 0000000..8b41897 --- /dev/null +++ b/games/platso/art/player_walk.psci @@ -0,0 +1,663 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 3.1541974518242744, + -2.3903888982749955, + 9.711611763557475 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.05, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 251, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 243, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 243, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 150, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 151, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 227, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.05, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 251, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 242, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 255, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 199, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.05, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 251, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 242, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 242, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 183, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.05, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 251, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 255, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 209, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 199, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 213, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 5, + "palette": "c64_original", + "width": 5 +} \ No newline at end of file diff --git a/games/platso/art/warptrigger.psci b/games/platso/art/warptrigger.psci new file mode 100644 index 0000000..e2e2d38 --- /dev/null +++ b/games/platso/art/warptrigger.psci @@ -0,0 +1,243 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 6.071495962526748, + -0.24702223108995436, + 10.311633934764973 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "collision", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 5, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 4, + "palette": "c64_original", + "width": 9 +} \ No newline at end of file diff --git a/games/platso/scripts/platso.py b/games/platso/scripts/platso.py new file mode 100644 index 0000000..50a300e --- /dev/null +++ b/games/platso/scripts/platso.py @@ -0,0 +1,142 @@ + +import math, random + +from game_object import GameObject +from game_util_objects import StaticTileBG, Player, Character, WarpTrigger +from collision import CST_AABB + +class PlatformWorld(StaticTileBG): + draw_col_layer = True + +class PlatformPlayer(Player): + + # from http://www.piratehearts.com/blog/2010/08/30/40/: + # JumpSpeed = sqrt(2.0f * Gravity * JumpHeight); + + art_src = 'player' + #collision_shape_type = CST_AABB + col_width = 2 + col_height = 3 + handle_key_events = True + fast_move_steps = 1 + col_radius = 1.75 + move_accel_x = 400 + move_accel_y = 2500 + ground_friction = 20 + air_friction = 15 + max_jump_press_time = 0.15 + editable = Player.editable + ['max_jump_press_time'] + jump_key = 'x' + + def __init__(self, world, obj_data=None): + Player.__init__(self, world, obj_data) + self.jump_time = 0 + # don't jump again until jump is released and pressed again + self.jump_ready = True + self.started_jump = False + + def started_colliding(self, other): + Player.started_colliding(self, other) + if isinstance(other, PlatformMonster): + # landing atop monster? + dx, dy = other.x - self.x, other.y - self.y + if abs(dy) > abs(dx) and dy < -1: + other.destroy() + + def is_affected_by_gravity(self): + return True + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + if key == self.jump_key and self.jump_ready: + self.jump() + self.jump_ready = False + self.started_jump = True + + def handle_key_up(self, key, shift_pressed, alt_pressed, ctrl_pressed): + if key == self.jump_key: + self.jump_ready = True + + def allow_move_y(self, dy): + # disable regular up/down movement, jump button sets move_y directly + return False + + def update_state(self): + self.state = 'stand' if self.is_on_ground() and (self.move_x, self.move_y) == (0, 0) else 'walk' + + def moved_this_frame(self): + delta = math.sqrt(abs(self.last_x - self.x) ** 2 + abs(self.last_y - self.y) ** 2 + abs(self.last_z - self.z) ** 2) + return delta > self.stop_velocity + + def is_on_ground(self): + # works for now: just check for -Y contact with first world object + ground = self.world.get_first_object_of_type('PlatformWorld') + contact = self.collision.contacts.get(ground.name, None) + if not contact: + return False + return contact.overlap.y < 0 + + def jump(self): + self.jump_time += self.get_time_since_last_update() / 1000 + if self.jump_time < self.max_jump_press_time: + self.move_y += 1 + + def update(self): + on_ground = self.is_on_ground() + if on_ground and self.jump_time > 0: + self.jump_time = 0 + # poll jump key for variable length jump + if self.world.app.il.is_key_pressed(self.jump_key) and \ + (self.started_jump or not on_ground): + self.jump() + self.started_jump = False + Player.update(self) + # wobble as we walk a la ELC2 + if self.state == 'walk' and on_ground: + self.y += math.sin(self.world.app.updates) / 5 + +class PlatformMonster(Character): + art_src = 'monster' + move_state = 'stand' + animating = True + fast_move_steps = 2 + move_accel_x = 100 + col_radius = 1 + + def pre_first_update(self): + # pick random starting direction + self.move_dir_x = random.choice([-1, 1]) + self.set_timer_function('hit_wall', self.check_wall_hits, 0.2) + + def is_affected_by_gravity(self): + return True + + def allow_move_y(self, dy): + return False + + def check_wall_hits(self): + "Turn around if a wall is immediately ahead of direction we're moving." + # check collision in direction we're moving + margin = 0.1 + if self.move_dir_x > 0: + x = self.x + self.col_radius + margin + else: + x = self.x - self.col_radius - margin + y = self.y + # DEBUG see trace destination + #lines = [(self.x, self.y, 0), (x, y, 0)] + #self.app.debug_line_renderable.set_lines(lines) + hits, shapes = self.world.get_colliders_at_point(x, y, + #include_object_names=[], + include_class_names=['PlatformWorld', + 'PlatformMonster'], + exclude_object_names=[self.name]) + if len(hits) > 0: + self.move_dir_x = -self.move_dir_x + + def update(self): + self.move(self.move_dir_x, 0) + Character.update(self) + + +class PlatformWarpTrigger(WarpTrigger): + warp_class_names = ['Player', 'PlatformMonster'] diff --git a/games/platso/start.gs b/games/platso/start.gs new file mode 100644 index 0000000..391119f --- /dev/null +++ b/games/platso/start.gs @@ -0,0 +1,156 @@ +{ + "objects": [ + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "platworld", + "class_name": "PlatformWorld", + "facing": 2, + "locked": true, + "name": "bg", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.0, + "y": 0.0, + "y_sort": false, + "z": -0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "monster", + "class_name": "PlatformMonster", + "facing": 2, + "locked": false, + "name": "PlatformMonster_7fa6568bb1d0", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -6.059425457722554, + "y": 7.0, + "y_sort": false, + "z": 0.0 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "topwarpmark", + "visible": true, + "x": -5.630180148546872, + "y": 19.354543134005176, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "monster", + "class_name": "PlatformMonster", + "facing": 2, + "locked": false, + "name": "PlatformMonster_7fa656435320", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": -20.112994148537886, + "y": 3.0, + "y_sort": false, + "z": 0.0 + }, + { + "class_name": "LocationMarker", + "locked": false, + "name": "cameramark", + "visible": true, + "x": -0.9597252146192882, + "y": -1.107799301680745, + "z": 18.680436366706225 + }, + { + "art_src": "warptrigger", + "class_name": "PlatformWarpTrigger", + "destination_marker_name": "topwarpmark", + "destination_room_name": null, + "locked": false, + "name": "WarpTrigger_7f20b6c2bf98", + "use_marker_room": true, + "visible": true, + "x": -2.5, + "y": -22.0, + "z": 0.0 + }, + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": -0.9597252146192882, + "camera_y": -1.107799301680745, + "camera_z": 18.680436366706225, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "PLATSO", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": -800.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": true, + "player_camera_lock": false, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "monster", + "class_name": "PlatformMonster", + "facing": 2, + "locked": false, + "name": "PlatformMonster_7fa656435a20", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 14.300627894346023, + "y": 7.0, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "player", + "class_name": "PlatformPlayer", + "facing": 2, + "locked": false, + "name": "PlatformPlayer_7f0fe491c9e8", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 3.63842628232969, + "y": -16.25, + "y_sort": false, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/shmup/art/asteroid.psci b/games/shmup/art/asteroid.psci new file mode 100644 index 0000000..2093ca1 --- /dev/null +++ b/games/shmup/art/asteroid.psci @@ -0,0 +1,81 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 3, + -3.0, + 10.339437341021961 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 10, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 10, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 10, + "char": 149, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 3, + "palette": "c64_original", + "width": 3 +} \ No newline at end of file diff --git a/games/shmup/art/bg_frame.psci b/games/shmup/art/bg_frame.psci new file mode 100644 index 0000000..807c81b --- /dev/null +++ b/games/shmup/art/bg_frame.psci @@ -0,0 +1,14794 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 17.75833754179403, + -30.617397029743437, + 17.619696383734336 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 108, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 19, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 8, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 13, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 21, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 16, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 80, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 110, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 56, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 52, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 38, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 41, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 50, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 37, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 1 + }, + { + "bg": 1, + "char": 140, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 74, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 142, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 41, + "palette": "c64_original", + "width": 30 +} \ No newline at end of file diff --git a/games/shmup/art/blockline_horiz.psci b/games/shmup/art/blockline_horiz.psci new file mode 100644 index 0000000..1422cb1 --- /dev/null +++ b/games/shmup/art/blockline_horiz.psci @@ -0,0 +1,394 @@ +{ + "active_frame": 0, + "active_layer": 1, + "camera": [ + 15.0, + -0.5, + 19.23057319529262 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 30 +} \ No newline at end of file diff --git a/games/shmup/art/boom.psci b/games/shmup/art/boom.psci new file mode 100644 index 0000000..5b83e5a --- /dev/null +++ b/games/shmup/art/boom.psci @@ -0,0 +1,1545 @@ +{ + "active_frame": 4, + "active_layer": 0, + "camera": [ + 4.961168420067169, + -3.2063775207684735, + 6.28984822227487 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 108, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 110, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 119, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 140, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 105, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 107, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 122, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 137, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 139, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 151, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 150, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 102, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 103, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 104, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 118, + "fg": 3, + "xform": 0 + }, + { + "bg": 3, + "char": 122, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 120, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 111, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 134, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 135, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 136, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 150, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 127, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 151, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 108, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 110, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 200, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 140, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 108, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 110, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 201, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 140, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 12, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 142, + "fg": 12, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 7, + "palette": "c64_original", + "width": 7 +} \ No newline at end of file diff --git a/games/shmup/art/enemy1.psci b/games/shmup/art/enemy1.psci new file mode 100644 index 0000000..17bf219 --- /dev/null +++ b/games/shmup/art/enemy1.psci @@ -0,0 +1,81 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 1.6467229806608072, + -1.271009990327077, + 4.685469196537706 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 172, + "fg": 7, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 173, + "fg": 7, + "xform": 3 + }, + { + "bg": 7, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 7, + "char": 172, + "fg": 8, + "xform": 1 + }, + { + "bg": 7, + "char": 47, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 214, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 3, + "palette": "c64_original", + "width": 3 +} \ No newline at end of file diff --git a/games/shmup/art/enemy2.psci b/games/shmup/art/enemy2.psci new file mode 100644 index 0000000..e003b8f --- /dev/null +++ b/games/shmup/art/enemy2.psci @@ -0,0 +1,147 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 2.6353900058944917, + -2.080875532273818, + 5.25886715549832 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.25, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 245, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 228, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 217, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 229, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.25, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 228, + "fg": 2, + "xform": 1 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 228, + "fg": 2, + "xform": 0 + }, + { + "bg": 2, + "char": 217, + "fg": 1, + "xform": 0 + }, + { + "bg": 1, + "char": 229, + "fg": 2, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 3, + "palette": "c64_original", + "width": 3 +} \ No newline at end of file diff --git a/games/shmup/art/enemy_proj.psci b/games/shmup/art/enemy_proj.psci new file mode 100644 index 0000000..fa49c84 --- /dev/null +++ b/games/shmup/art/enemy_proj.psci @@ -0,0 +1,87 @@ +{ + "active_frame": 2, + "active_layer": 0, + "camera": [ + 0.5, + -0.5, + 3.943004140277209 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 77, + "fg": 7, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 61, + "fg": 15, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 122, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 61, + "fg": 15, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/shmup/art/player.psci b/games/shmup/art/player.psci new file mode 100644 index 0000000..258cd3f --- /dev/null +++ b/games/shmup/art/player.psci @@ -0,0 +1,459 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 4.5, + -4.0, + 8.747186434947835 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 3, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 3, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 9, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 8, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 6, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 6, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 6, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 6, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 6, + "char": 251, + "fg": 1, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 7, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 7, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 1, + "char": 251, + "fg": 5, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + }, + { + "bg": 0, + "char": 0, + "fg": 0, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 8, + "palette": "c64_original", + "width": 9 +} \ No newline at end of file diff --git a/games/shmup/art/player_proj.psci b/games/shmup/art/player_proj.psci new file mode 100644 index 0000000..46112ea --- /dev/null +++ b/games/shmup/art/player_proj.psci @@ -0,0 +1,123 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 0.5, + -0.5, + 3.943004140277209 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 199, + "fg": 3, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 199, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 199, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 199, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 199, + "fg": 8, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + }, + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 0, + "char": 199, + "fg": 9, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 1 +} \ No newline at end of file diff --git a/games/shmup/art/spawn_area.psci b/games/shmup/art/spawn_area.psci new file mode 100644 index 0000000..429d16b --- /dev/null +++ b/games/shmup/art/spawn_area.psci @@ -0,0 +1,346 @@ +{ + "active_frame": 0, + "active_layer": 0, + "camera": [ + 15.999969418465653, + -1.0, + 19.23057319529262 + ], + "charset": "jpetscii", + "frames": [ + { + "delay": 0.1, + "layers": [ + { + "name": "Layer 1", + "tiles": [ + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + }, + { + "bg": 1, + "char": 1, + "fg": 2, + "xform": 0 + } + ], + "visible": 1, + "z": 0 + }, + { + "name": "collision", + "tiles": [ + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + }, + { + "bg": 1, + "char": 255, + "fg": 11, + "xform": 0 + } + ], + "visible": 1, + "z": 0.1 + } + ] + } + ], + "height": 1, + "palette": "c64_original", + "width": 26 +} \ No newline at end of file diff --git a/games/shmup/scripts/shmup.py b/games/shmup/scripts/shmup.py new file mode 100644 index 0000000..e04bab0 --- /dev/null +++ b/games/shmup/scripts/shmup.py @@ -0,0 +1,240 @@ + +import math, random + +from game_object import GameObject +from game_util_objects import Player, Character, Projectile, StaticTileBG, ObjectSpawner + +class ShmupPlayer(Player): + state_changes_art = False + move_state = 'stand' + art_src = 'player' + handle_key_events = True + invincible = False # DEBUG + serialized = Player.serialized + ['invincible'] + respawn_delay = 3 + # refire delay, else holding X chokes game + fire_delay = 0.15 + + def __init__(self, world, obj_data=None): + Player.__init__(self, world, obj_data) + # track last death and last fire time for respawn and refire delays + self.last_death_time = 0 + self.last_fire_time = 0 + # save our start position + self.start_x, self.start_y = self.x, self.y + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + if key == 'x' and self.state == 'dead': + # respawn after short delay + time = self.world.get_elapsed_time() / 1000 + if time >= self.last_death_time + self.respawn_delay: + self.state = 'stand' + self.set_loc(self.start_x, self.start_y) + self.visible = True + + def update_state(self): + # only two states, ignore stuff parent class does for this + pass + + def die(self, killer): + if self.invincible or self.state == 'dead': + return + boom = Boom(self.world) + boom.set_loc(self.x, self.y) + self.state = 'dead' + self.last_death_time = self.world.get_elapsed_time() / 1000 + self.visible = False + + def update(self): + Player.update(self) + # poll fire key directly for continuous fire (with refire delay) + if self.state != 'dead' and self.world.app.il.is_key_pressed('x'): + time = self.world.get_elapsed_time() / 1000 + if time >= self.last_fire_time + self.fire_delay: + proj = ShmupPlayerProjectile(self.world) + proj.fire(self, 0, 1) + self.last_fire_time = self.world.get_elapsed_time() / 1000 + + +class PlayerBlocker(StaticTileBG): + "keeps player from advancing too far upfield" + art_src = 'blockline_horiz' + noncolliding_classes = ['Projectile', 'ShmupEnemy'] + +class EnemySpawner(ObjectSpawner): + "sits at top of screen and spawns enemies" + art_src = 'spawn_area' + spawn_random_in_bounds = True + trigger_on_room_enter = False + + def __init__(self, world, obj_data=None): + ObjectSpawner.__init__(self, world, obj_data) + self.next_spawn_time = 0 + self.target_enemy_count = 1 + + def can_spawn(self): + player = self.world.get_first_object_of_type('ShmupPlayer') + # only spawn if player has fired, there's room, and it's time + return player and player.state != 'dead' and \ + player.last_fire_time > 0 and \ + len(self.spawned_objects) < self.target_enemy_count and \ + self.world.get_elapsed_time() >= self.next_spawn_time + + def get_spawn_class_name(self): + roll = random.random() + # pick random enemy type to spawn + if roll > 0.8: + return 'Enemy1' + elif roll > 0.6: + return 'Enemy2' + else: + return 'Asteroid' + + def update(self): + StaticTileBG.update(self) + # bump up enemy counts as time goes on + time = self.world.get_elapsed_time() / 1000 + if time > 60: + self.target_enemy_count = 4 + elif time > 30: + self.target_enemy_count = 3 + elif time > 10: + self.target_enemy_count = 2 + enemy = self.trigger() + # if we spawned, pick next spawn time within random range + if enemy: + next_delay = random.random() * 3 + self.next_spawn_time = self.world.get_elapsed_time() + next_delay * 1000 + +class EnemyDeleter(StaticTileBG): + "deletes enemies once they hit a certain point on screen" + art_src = 'blockline_horiz' + def started_colliding(self, other): + if isinstance(other, ShmupEnemy): + other.destroy() + +class ShmupEnemy(Character): + state_changes_art = False + move_state = 'stand' + should_save = False + invincible = False # DEBUG + serialized = Character.serialized + ['invincible'] + + def started_colliding(self, other): + if isinstance(other, ShmupPlayer): + other.die(self) + + def fire_proj(self): + proj = ShmupEnemyProjectile(self.world) + # fire downward + proj.fire(self, 0, -1) + + def update(self): + self.move(0, -1) + Character.update(self) + +class Enemy1(ShmupEnemy): + art_src = 'enemy1' + move_accel_y = 100 + + def update(self): + # sine wave motion in X + time = self.world.get_elapsed_time() + self.x = math.sin(time / 200) * 6 + # fire very occasionally + if random.random() < 0.05: + self.fire_proj() + ShmupEnemy.update(self) + +class Enemy2(ShmupEnemy): + art_src = 'enemy2' + animating = True + move_accel_y = 50 + + def pre_first_update(self): + ShmupEnemy.pre_first_update(self) + # pick random lateral movement goal + self.goal_x, y = self.spawner.get_spawn_location() + + def update(self): + # move to random goal X + dx = self.goal_x - self.x + if 0 < abs(dx) < 0.5: + self.x = self.goal_x + elif dx > 0: + self.move(1, 0) + elif dx < 0: + self.move(-1, 0) + else: + # fire salvo + if random.random() < 0.1: + self.fire_proj() + ShmupEnemy.update(self) + +class Asteroid(ShmupEnemy): + "totally inert, just moves slowly down the screen" + art_src = 'asteroid' + move_accel_y = 200 + +class ShmupPlayerProjectile(Projectile): + animating = True + art_src = 'player_proj' + use_art_instance = True + noncolliding_classes = Projectile.noncolliding_classes + ['Boom', 'Player'] + def started_colliding(self, other): + if isinstance(other, ShmupEnemy) and not other.invincible: + boom = Boom(self.world) + boom.set_loc(self.x, self.y) + # spawn burst, destroy enemy + other.destroy() + self.destroy() + +class ShmupEnemyProjectile(Projectile): + animating = True + art_src = 'enemy_proj' + use_art_instance = True + noncolliding_classes = Projectile.noncolliding_classes + ['Boom', 'ShmupEnemy'] + def started_colliding(self, other): + if isinstance(other, ShmupPlayer) and other.state != 'dead': + other.die(self) + self.destroy() + +class Boom(GameObject): + art_src = 'boom' + animating = True + use_art_instance = True + should_save = False + z = 0.5 + scale_x, scale_y = 3, 3 + lifespan = 0.5 + def get_acceleration(self, vel_x, vel_y, vel_z): + return 0, 0, -100 + +class Starfield(GameObject): + + "scrolling background with stars generated on-the-fly - no PSCI file!" + + generate_art = True + art_width, art_height = 30, 41 + art_charset = 'jpetscii' + alpha = 0.25 # NOTE: this will be overriden by saved instance because it's in the list of serialized properties + # indices of star characters + star_chars = [201] + + def pre_first_update(self): + self.art.clear_frame_layer(0, 0) + + def create_star(self): + "create a star at a random point along the top edge" + x = int(random.random() * self.art_width) + char = random.choice(self.star_chars) + color = self.art.palette.get_random_color_index() + self.art.set_tile_at(0, 0, x, 0, char, color) + + def update(self): + # maybe create a star at the top, clear bottom line, then shift-wrap + if random.random() < 0.25: + self.create_star() + self.art.clear_line(0, 0, self.art_height - 1) + self.art.shift_all_frames(0, 1) + GameObject.update(self) diff --git a/games/shmup/start.gs b/games/shmup/start.gs new file mode 100644 index 0000000..82f247b --- /dev/null +++ b/games/shmup/start.gs @@ -0,0 +1,139 @@ +{ + "objects": [ + { + "bg_color_a": 0, + "bg_color_b": 0, + "bg_color_g": 0, + "bg_color_r": 0, + "camera_x": 0, + "camera_y": 0.5976516786404464, + "camera_z": 21.114262986283173, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "SHMUP!", + "globals_object_class_name": "WorldGlobalsObject", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": false, + "player_camera_lock": false, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + }, + { + "class_name": "EnemySpawner", + "destroy_on_room_exit": true, + "locked": false, + "name": "EnemySpawner_7efd6601d3c8", + "spawn_class_name": null, + "spawn_obj_name": "", + "times_to_fire": -1, + "visible": false, + "x": 0.14662682279777428, + "y": 18.974880574109132, + "z": 0.0 + }, + { + "alpha": 0.6, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "Starfield_7f5392c94f28_art", + "class_name": "Starfield", + "facing": 2, + "locked": true, + "name": "Starfield_7f5392c94f28", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.0, + "y": 0.0, + "y_sort": false, + "z": -0.5 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "blockline_horiz", + "class_name": "PlayerBlocker", + "facing": 2, + "locked": false, + "name": "PlayerBlocker_7fdf8004d5c0", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": false, + "x": 0.09775121519851826, + "y": -4.729789676694888, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "bg_frame", + "class_name": "StaticTileBG", + "facing": 2, + "locked": true, + "name": "bg_frame", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": true, + "x": 0.0, + "y": 0.0, + "y_sort": false, + "z": 0.1 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "blockline_horiz", + "class_name": "EnemyDeleter", + "facing": 2, + "locked": false, + "name": "EnemyDeleter_7f5364165da0", + "scale_x": 1.0, + "scale_y": 1.0, + "state": "stand", + "visible": false, + "x": -0.09775121519851382, + "y": -19.68572595864547, + "y_sort": false, + "z": 0.0 + }, + { + "alpha": 1.0, + "animating": false, + "art_off_pct_x": 0.5, + "art_off_pct_y": 0.5, + "art_src": "player", + "class_name": "ShmupPlayer", + "facing": 2, + "invincible": false, + "locked": false, + "name": "ShmupPlayer_7faab653d4a8", + "scale_x": 0.5, + "scale_y": 0.5, + "state": "stand", + "visible": true, + "x": 0.28300364472611744, + "y": -12.941906968542662, + "y_sort": false, + "z": 0.0 + } + ] +} \ No newline at end of file diff --git a/games/wildflowers/scripts/flower.py b/games/wildflowers/scripts/flower.py new file mode 100644 index 0000000..a7af5a0 --- /dev/null +++ b/games/wildflowers/scripts/flower.py @@ -0,0 +1,169 @@ + +import time, random + +from game_object import GameObject +from art import UV_FLIPX, UV_FLIPY, UV_ROTATE180, ART_DIR +from renderable import TileRenderable + +from games.wildflowers.scripts.ramps import PALETTE_RAMPS +from games.wildflowers.scripts.petal import Petal +from games.wildflowers.scripts.frond import Frond + + +# TODO: random size range? +# (should also change camera zoom, probably frond/petal counts) +FLOWER_WIDTH, FLOWER_HEIGHT = 16, 16 + + +class FlowerObject(GameObject): + + generate_art = True + should_save = False + physics_move = False + art_width, art_height = FLOWER_WIDTH, FLOWER_HEIGHT + + min_petals, max_petals = 0, 4 + min_fronds, max_fronds = 0, 8 + # every flower must have at least this many petals + fronds + minimum_complexity = 4 + # app updates per grow update; 1 = grow every frame + ticks_per_grow = 4 + + # DEBUG: if True, add current time to date seed as a decimal, + # to test with highly specific values + # (note: this turns the seed from an int into a float) + seed_includes_time = False + # DEBUG: if nonzero, use this seed for testing + debug_seed = 0 + debug_log = False + + def __init__(self, world, obj_data=None): + GameObject.__init__(self, world, obj_data) + # set random seed based on date, a different flower each day + t = time.localtime() + year, month, day = t.tm_year, t.tm_mon, t.tm_mday + weekday = t.tm_wday # 0 = monday + date = year * 10000 + month * 100 + day + if self.seed_includes_time: + date += t.tm_hour * 0.01 + t.tm_min * 0.0001 + t.tm_sec * 0.000001 + if self.debug_seed != 0: + self.seed = self.debug_seed + else: + self.seed = date + random.seed(self.seed) + # pick a random dark BG color (will be quantized to palette) + r, g, b = random.random() / 10, random.random() / 10, random.random() / 10 + # set up art with character set, size, and a random (supported) palette + self.art.set_charset_by_name('jpetscii') + palette = random.choice(list(PALETTE_RAMPS.keys())) + self.art.set_palette_by_name(palette) + # quantize bg color and set it for art and world + self.bg_index = self.art.palette.get_closest_color_index(int(r * 255), int(g * 255), int(b * 255)) + bg_color = self.art.palette.colors[self.bg_index] + self.world.bg_color[0] = bg_color[0] / 255.0 + self.world.bg_color[1] = bg_color[1] / 255.0 + self.world.bg_color[2] = bg_color[2] / 255.0 + self.world.bg_color[3] = 1.0 # set here or alpha is zero? + self.art.resize(self.art_width, self.art_height) + self.app.ui.adjust_for_art_resize(self) # grid etc + self.art.clear_frame_layer(0, 0, bg_color=self.bg_index) + # petals on a layer underneath fronds? + #self.art.add_layer(z=-0.001, name='petals') + self.finished_growing = False + # some flowers can be more petal-centric or frond-centric, + # but keep a certain minimum complexity + petal_count = random.randint(self.min_petals, self.max_petals) + frond_count = random.randint(self.min_fronds, self.max_fronds) + while petal_count + frond_count < self.minimum_complexity: + petal_count = random.randint(self.min_petals, self.max_petals) + frond_count = random.randint(self.min_fronds, self.max_fronds) + self.petals = [] + #petal_count = 5 # DEBUG + for i in range(petal_count): + self.petals.append(Petal(self, i)) + # sort petals by radius largest to smallest, + # so big ones don't totally stomp smaller ones + self.petals.sort(key=lambda item: item.goal_radius, reverse=True) + self.fronds = [] + #frond_count = 0 # DEBUG + for i in range(frond_count): + self.fronds.append(Frond(self, i)) + # track # of growth updates we've had + self.grows = 0 + # create an art document we can add frames to and later export + self.export_filename = '%s%swildflower_%s' % (self.app.documents_dir, ART_DIR, self.seed) + self.exportable_art = self.app.new_art(self.export_filename, + self.art_width, self.art_height, + self.art.charset.name, + self.art.palette.name) + # re-set art's filename to be in documents dir rather than game dir :/ + self.exportable_art.set_filename(self.export_filename) + # image export process needs a renderable + r = TileRenderable(self.app, self.exportable_art) + + def update(self): + GameObject.update(self) + # grow only every few ticks, so you can watch the design grow + if self.app.updates % self.ticks_per_grow != 0: + return + if not self.finished_growing: + self.update_growth() + + def update_growth(self): + if self.debug_log: + print('update growth:') + grew = False + for p in self.petals: + if not p.finished_growing: + grew = True + p.grow() + # break so that each petal grows one at a time + break + for f in self.fronds: + # break if still growing petals + if grew: + break + if not f.finished_growing: + grew = True + painted = f.grow() + while not painted and not f.finished_growing: + painted = f.grow() + # break so that each frond grows one at a time + break + self.copy_new_frame() + self.grows += 1 + if not grew: + self.finished_growing = True + self.exportable_art.set_active_frame(self.exportable_art.frames - 1) + if self.debug_log: + print('flower finished') + + def paint_mirrored(self, layer, x, y, char, fg, bg=None): + # only paint if in top left quadrant + if x > (self.art_width / 2) - 1 or y > (self.art_height / 2) - 1: + return + # draw in top left + self.art.set_tile_at(0, layer, x, y, char, fg, bg) + # mirror in other three quadrants + top_right = (self.art_width - 1 - x, y) + bottom_left = (x, self.art_height - 1 - y) + bottom_right = (self.art_width - 1 - x, self.art_height - 1 - y) + self.art.set_tile_at(0, layer, *top_right, + char, fg, bg, transform=UV_FLIPX) + self.art.set_tile_at(0, layer, *bottom_left, + char, fg, bg, transform=UV_FLIPY) + self.art.set_tile_at(0, layer, *bottom_right, + char, fg, bg, transform=UV_ROTATE180) + + def copy_new_frame(self): + # add new frame to art for export + # (art starts with 1 frame, only do this after first frame written) + # base exported frame delay on what you see in live app + delay = (1 / self.app.update_rate) * self.ticks_per_grow + if self.grows > 0: + self.exportable_art.add_frame_to_end(delay, log=False) + self.exportable_art.chars[-1] = self.art.chars[0].copy() + self.exportable_art.fg_colors[-1] = self.art.fg_colors[0].copy() + self.exportable_art.bg_colors[-1] = self.art.bg_colors[0].copy() + self.exportable_art.uv_mods[-1] = self.art.uv_mods[0].copy() + self.exportable_art.uv_maps[-1] = self.art.uv_maps[0].copy() diff --git a/games/wildflowers/scripts/frond.py b/games/wildflowers/scripts/frond.py new file mode 100644 index 0000000..29b2c1e --- /dev/null +++ b/games/wildflowers/scripts/frond.py @@ -0,0 +1,136 @@ + +import random + +from games.wildflowers.scripts.ramps import RampIterator + + +# growth direction consts +NONE = (0, 0) +LEFT = (-1, 0) +LEFT_UP = (-1, -1) +UP = (0, -1) +RIGHT_UP = (1, -1) +RIGHT = (1, 0) +RIGHT_DOWN = (1, 1) +DOWN = (0, 1) +LEFT_DOWN = (-1, 1) +DIRS = [LEFT, LEFT_UP, UP, RIGHT_UP, RIGHT, RIGHT_DOWN, DOWN, LEFT_DOWN] + +FROND_CHARS = [ + # thick and skinny \ + 151, 166, + # thick and skinny / + 150, 167, + # thick and skinny X + 183, 182, + # solid inward wedges, NW NE SE SW + 148, 149, 164, 165 +] + + +class Frond: + + min_life, max_life = 3, 16 + random_char_chance = 0.5 + mutate_char_chance = 0.2 + # layer all fronds should paint on + layer = 0 + debug = False + + def __init__(self, flower, index): + self.flower = flower + self.index = index + self.finished_growing = False + # choose growth function + self.growth_functions = [self.grow_straight_line, self.grow_curl, + self.grow_wander_outward] + self.get_grow_dir = random.choice(self.growth_functions) + #self.get_grow_dir = self.grow_curl # DEBUG + # for straight line growers, set a consistent direction + if self.get_grow_dir == self.grow_straight_line: + self.grow_line = random.choice(DIRS) + self.growth_history = [] + self.chaos = random.random() + self.life = random.randint(self.min_life, self.max_life) + # pick a starting point near center + w, h = self.flower.art_width, self.flower.art_height + self.x = random.randint(int(w / 4), int(w / 2) - 1) + self.y = random.randint(int(h / 4), int(h / 2) - 1) + # get a random color ramp from flower's palette + self.ramp = RampIterator(self.flower) + self.color = self.ramp.color + # chance to use a fully random (non-blank) character + if random.random() < self.chaos * self.random_char_chance: + self.char = random.choice(FROND_CHARS) + else: + self.char = random.randint(1, 255) + # first grow() will paint first character + + def grow(self): + """ + grows this frond by another tile + return True if we painted, so flower can skip frame wait + """ + painted = False + if self.life <= 0 or self.color == self.ramp.end: + self.finished_growing = True + if self.debug: + print(' frond %i finished.' % self.index) + return painted + if self.debug: + print(' frond %i at (%i, %i) using %s' % (self.index, self.x, self.y, self.get_grow_dir.__name__)) + # if we're out of bounds, simply don't paint; + # we might go back in bounds next grow + if 0 <= self.x < self.flower.art_width - 1 and \ + 0 <= self.y < self.flower.art_height - 1: + self.flower.paint_mirrored(self.layer, self.x, self.y, + self.char, self.color) + painted = True + self.growth_history.append((self.x, self.y)) + self.life -= 1 + self.color = self.ramp.go_to_next_color() + # roll against chaos to mutate character + if random.random() < self.chaos * self.mutate_char_chance: + self.char = random.choice(FROND_CHARS) + # TODO: roll against chaos to change grow function? + # determine last grow direction and base next grow on it + last_growth = self.growth_history[-1] + if len(self.growth_history) > 1: + penultimate_growth = self.growth_history[-2] + last_x = last_growth[0] - penultimate_growth[0] + last_y = last_growth[1] - penultimate_growth[1] + else: + last_x, last_y = 0, 0 + grow_x, grow_y = self.get_grow_dir((last_x, last_y)) + self.x, self.y = self.x + grow_x, self.y + grow_y + return painted + + # paint and growth functions work in top left quadrant, then mirrored + + def grow_straight_line(self, last_dir): + return self.grow_line + + def grow_wander_outward(self, last_dir): + # (original prototype growth algo) + return random.choice([LEFT_UP, LEFT, UP]) + + def grow_curl(self, last_dir): + if last_dir == NONE: + return random.choice([LEFT, LEFT_UP, UP]) + # 2:1 weighting for current dir + elif last_dir == LEFT: + return random.choice([LEFT, LEFT, LEFT_UP]) + elif last_dir == LEFT_UP: + return random.choice([LEFT_UP, LEFT_UP, UP]) + elif last_dir == UP: + return random.choice([UP, UP, RIGHT_UP]) + elif last_dir == RIGHT_UP: + return random.choice([RIGHT_UP, RIGHT_UP, RIGHT]) + elif last_dir == RIGHT: + return random.choice([RIGHT, RIGHT, RIGHT_DOWN]) + elif last_dir == RIGHT_DOWN: + return random.choice([RIGHT_DOWN, RIGHT_DOWN, DOWN]) + elif last_dir == DOWN: + return random.choice([DOWN, DOWN, LEFT_DOWN]) + elif last_dir == LEFT_DOWN: + return random.choice([LEFT_DOWN, LEFT_DOWN, LEFT]) diff --git a/games/wildflowers/scripts/petal.py b/games/wildflowers/scripts/petal.py new file mode 100644 index 0000000..7a86b9d --- /dev/null +++ b/games/wildflowers/scripts/petal.py @@ -0,0 +1,125 @@ + +import random, math + +from games.wildflowers.scripts.ramps import RampIterator + + +PETAL_CHARS = [ + # solid block + 255, + # shaded boxes + 254, 253, + # solid circle + 122, + # curved corner lines, NW NE SE SW + 105, 107, 139, 137, + # mostly-solid curved corners, NW NE SE SW + 144, 146, 178, 176, + # solid inward wedges, NW NE SE SW + 148, 149, 164, 165 +] + + +class Petal: + + min_radius = 3 + mutate_char_chance = 0.2 + # layer all petals should paint on + layer = 0 + debug = False + + def __init__(self, flower, index): + self.flower = flower + self.index = index + self.finished_growing = False + self.chaos = random.random() + max_radius = int(self.flower.art_width / 2) + self.goal_radius = random.randint(self.min_radius, max_radius) + self.radius = 0 + ring_styles = [self.get_ring_tiles_box, self.get_ring_tiles_wings, + self.get_ring_tiles_diamond, self.get_ring_tiles_circle] + self.get_ring_tiles = random.choice(ring_styles) + # pick a starting point near center + w, h = self.flower.art_width, self.flower.art_height + self.x = random.randint(int(w / 4), int(w / 2) - 1) + self.y = random.randint(int(h / 4), int(h / 2) - 1) + # get a random color ramp from flower's palette + self.ramp = RampIterator(self.flower) + self.color = self.ramp.color + # random char from predefined list + self.char = random.choice(PETAL_CHARS) + + def grow(self): + # grow outward (up and left) from center in "rings" + if self.radius >= self.goal_radius: + self.finished_growing = True + return + if self.debug: + print(' petal %i at (%i, %i) at radius %i using %s' % (self.index, self.x, self.y, self.radius, self.get_ring_tiles.__name__)) + self.paint_ring() + # grow and change + self.radius += 1 + self.color = self.ramp.go_to_next_color() + # roll against chaos to mutate character + if random.random() < self.chaos * self.mutate_char_chance: + self.char = random.choice(PETAL_CHARS) + + def paint_ring(self): + tiles = self.get_ring_tiles() + for t in tiles: + x = self.x - t[0] + y = self.y - t[1] + # don't paint out of bounds + if 0 <= x < self.flower.art_width - 1 and \ + 0 <= y < self.flower.art_height - 1: + self.flower.paint_mirrored(self.layer, x, y, + self.char, self.color) + #print('%s, %s' % (x, y)) + + def get_ring_tiles_box(self): + tiles = [] + for x in range(self.radius + 1): + tiles.append((x, self.radius)) + for y in range(self.radius + 1): + tiles.append((self.radius, y)) + return tiles + + def get_ring_tiles_dealieX(self): + # not sure what to call this but it's a nice shape + tiles = [] + for y in range(self.radius): + for x in range(self.radius): + tiles.append((x - self.radius, y - self.radius)) + return tiles + + def get_ring_tiles_wings(self): + # not sure what to call this but it's a nice shape + tiles = [] + cut_size = int(self.chaos * 4) + for y in range(self.radius - cut_size): + for x in range(self.radius - cut_size): + x = x - self.radius + y = y - self.radius + tiles.append((x, y)) + return tiles + + + def get_ring_tiles_diamond(self): + tiles = [] + for y in range(self.radius, -1, -1): + for x in range(0, self.radius + 1): + if x + y == self.radius: + tiles.append((x, y)) + return tiles + + def get_ring_tiles_circle(self): + tiles = [] + angle = 0 + resolution = 30 + for i in range(resolution): + angle += math.radians(90.0 / resolution) + x = round(math.cos(angle) * self.radius) + y = round(math.sin(angle) * self.radius) + if not (x, y) in tiles: + tiles.append((x, y)) + return tiles diff --git a/games/wildflowers/scripts/ramps.py b/games/wildflowers/scripts/ramps.py new file mode 100644 index 0000000..d225cc6 --- /dev/null +++ b/games/wildflowers/scripts/ramps.py @@ -0,0 +1,112 @@ + +import random + +# wildflowers palette ramp definitions + +PALETTE_RAMPS = { + # palette name : list of its ramps + 'dpaint': [ + # ramp tuple: (start index, length, stride) + # generally, lighter / more vivid to darker + (17, 16, 1), # white to black + (33, 16, 1), # red to black + (49, 8, 1), # white to red + (57, 8, 1), # light orange to dark orange + (65, 16, 1), # light yellow to ~black + (81, 8, 1), # light green to green + (89, 24, 1), # white to green to ~black + (113, 16, 1), # light cyan to ~black + (129, 8, 1), # light blue to blue + (137, 24, 1), # white to blue to ~black + (161, 16, 1), # light purple to ~black + (177, 16, 1), # light magenta to ~black + (193, 24, 1), # pale flesh to ~black + (225, 22, 1) # ROYGBV rainbow + ], + 'doom': [ + (17, 27, 1), # very light pink to dark red + (44, 20, 1), # pale flesh to brown + (69, 26, 1), # white to very dark grey + (95, 14, 1), # bright green to ~black + (109, 12, 1), # light tan to dark tan + (126, 4, 1), # olive drab + (130, 7, 1), # light gold to gold brown + (137, 18, 1), # white to dark red + (155, 14, 1), # white to dark blue + (169, 11, 1), # white to orange + (180, 7, 1), # white to yellow + (187, 4, 1), # orange to burnt orange + (193, 7, 1), # dark blue to black + (201, 5, 1) # light magenta to dark purple + ], + 'quake': [ + (16, 15, -1), # white to black + (32, 16, -1), # mustard to black + (48, 16, -1), # lavender to black + (63, 15, -1), # olive to black + (79, 16, -1), # red to black + (92, 13, -1), # orange to ~black + (108, 16, -1), # yellow to orange to ~black + (124, 16, -1), # pale flesh to ~black + (125, 16, 1), # light purple to ~black + (141, 13, 1), # purpleish pink to ~black + (154, 15, 1), # light tan to ~black + (169, 16, 1), # light olive to ~black + (185, 14, 1), # yellow to ~black + (199, 31, 1), # blue to black to light orange + (233, 4, -1), # yellow to brown + (236, 3, -1), # light blue to blue + (240, 4, -1), # red to dark red + (243, 3, -1) # white to yellow + ], + 'heretic': [ + (35, 35, -1), # white to black + (51, 16, -1), # light grey to dark grey + (65, 14, -1), # white to dark violent-grey + (94, 29, -1), # white to dark brown + (110, 16, -1), # light tan to brown + (136, 26, -1), # light yellow to dark golden brown + (144, 8, -1), # yellow to orange + (160, 16, -1), # red to dark red + (168, 8, -1), # white to pink + (176, 8, -1), # light magenta to dark magenta + (184, 8, -1), # white to purple + (208, 24, -1), # white to cyan to dark blue + (224, 16, -1), # light green to dark green + (240, 16, -1), # olive to dark olive + (247, 7, -1) # red to yellow + ], + 'atari': [ + (113, 8, -16), # white to black + (114, 8, -16), # yellow to muddy brown + (115, 8, -16), # dull gold to brown + (116, 8, -16), # peach to burnt orange + (117, 8, -16), # pink to red + (118, 8, -16), # magenta to dark magenta + (119, 8, -16), # purple to dark purple + (120, 8, -16), # violet to dark violet + (121, 8, -16), # light blue to dark blue + (122, 8, -16), # light cobalt to dark cobalt + (123, 8, -16), # light teal to dark teal + (124, 8, -16), # light sea green to dark sea green + (125, 8, -16), # light green to dark green + (126, 8, -16), # yellow green to dark yellow green + (127, 8, -16), # pale yellow to dark olive + (128, 8, -16) # gold to golden brown + ] +} + + +class RampIterator: + + def __init__(self, flower): + ramp_def = random.choice(PALETTE_RAMPS[flower.art.palette.name]) + self.start, self.length, self.stride = ramp_def + self.end = self.start + (self.length * self.stride) + # determine starting color, somewhere along ramp + self.start_step = random.randint(0, self.length - 1) + self.color = self.start + (self.start_step * self.stride) + + def go_to_next_color(self): + self.color += self.stride + return self.color diff --git a/games/wildflowers/scripts/wildflowers.py b/games/wildflowers/scripts/wildflowers.py new file mode 100644 index 0000000..5a302aa --- /dev/null +++ b/games/wildflowers/scripts/wildflowers.py @@ -0,0 +1,88 @@ + +from game_util_objects import WorldGlobalsObject, GameObject +from image_export import export_animation, export_still_image + +from games.wildflowers.scripts.flower import FlowerObject + +""" +overall approach: +grow multiple "petals" (shapes) and "fronds" (lines) from ~center of top left +quadrant, mirror these in the other three quadrants. + +last commit of first gen approach (before rewrite & petals): commit a476248 + +frond style ideas: +- frond draws each growth dir from a deck, reshuffling when empty to avoid repetition? +- frond weights growth dirs differently depending on its remaining life? + +maybe weight frond start locations in a radius, ie likely to start from center, but rarely can start further and further away. + +character ramps based on direction changes, visual density, something else? +""" + + +class FlowerGlobals(WorldGlobalsObject): + + # if True, generate a 4x4 grid instead of just one + test_gen = False + handle_key_events = True + + def __init__(self, world, obj_data=None): + WorldGlobalsObject.__init__(self, world, obj_data) + + def pre_first_update(self): + #self.app.can_edit = False + self.app.ui.set_game_edit_ui_visibility(False) + self.app.ui.message_line.post_line('') + if self.test_gen: + for x in range(4): + for y in range(4): + flower = self.world.spawn_object_of_class('FlowerObject') + flower.set_loc(x * flower.art.width, y * flower.art.height) + self.world.camera.set_loc(25, 25, 35) + else: + flower = self.world.spawn_object_of_class('FlowerObject') + self.world.camera.set_loc(0, 0, 10) + self.flower = flower + self.world.spawn_object_of_class('SeedDisplay') + + def handle_key_down(self, key, shift_pressed, alt_pressed, ctrl_pressed): + if key != 'e': + return + if not self.flower: + return + + # save to .psci + # hold on last frame + self.flower.exportable_art.frame_delays[-1] = 6.0 + self.flower.exportable_art.save_to_file() + # TODO: investigate why opening for edit puts art mode in a bad state + #self.app.load_art_for_edit(self.flower.exportable_art.filename) + + # save to .gif - TODO investigate problem with frame deltas not clearing + #export_animation(self.app, self.flower.exportable_art, + # self.flower.export_filename + '.gif', + # bg_color=self.world.bg_color, loop=False) + + # export to .png - works + export_still_image(self.app, self.flower.exportable_art, + self.flower.export_filename + '.png', + crt=self.app.fb.crt, scale=4, + bg_color=self.world.bg_color) + self.app.log('Exported %s.png' % self.flower.export_filename) + + +class SeedDisplay(GameObject): + + generate_art = True + art_width, art_height = 30, 1 + art_charset = 'ui' + art_palette = 'c64_original' + + def __init__(self, world, obj_data=None): + GameObject.__init__(self, world, obj_data) + self.art.clear_frame_layer(0, 0) + f = world.globals.flower + self.art.write_string(0, 0, 0, 0, str(f.seed), 12, 0) + self.set_scale(0.275, 0.275, 1) + self.set_loc(f.art_width, f.art_height / -2) diff --git a/games/wildflowers/start.gs b/games/wildflowers/start.gs new file mode 100644 index 0000000..e185d62 --- /dev/null +++ b/games/wildflowers/start.gs @@ -0,0 +1,30 @@ +{ + "objects": [ + { + "bg_color_a": 0.0, + "bg_color_b": 0.0, + "bg_color_g": 0.0, + "bg_color_r": 0.0, + "camera_x": 30, + "camera_y": 20, + "camera_z": 35, + "class_name": "WorldPropertiesObject", + "collision_enabled": true, + "draw_debug_objects": true, + "draw_hud": true, + "game_title": "wildflowers", + "globals_object_class_name": "FlowerGlobals", + "gravity_x": 0.0, + "gravity_y": 0.0, + "gravity_z": 0.0, + "hud_class_name": "GameHUD", + "object_grid_snap": true, + "player_camera_lock": true, + "room_camera_changes_enabled": true, + "show_all_rooms": false, + "show_bounds_all": false, + "show_collision_all": false, + "show_origin_all": false + } + ] +} diff --git a/grid.py b/grid.py new file mode 100644 index 0000000..0a0ea2e --- /dev/null +++ b/grid.py @@ -0,0 +1,108 @@ +import numpy as np + +from renderable_line import LineRenderable + +# grid that displays as guide for Cursor + +AXIS_COLOR = (0.8, 0.8, 0.8, 0.5) +BASE_COLOR = (0.5, 0.5, 0.5, 0.25) +EXTENTS_COLOR = (0, 0, 0, 1) + +class Grid(LineRenderable): + + visible = True + draw_axes = False + + def get_tile_size(self): + "Returns (width, height) grid size in tiles." + return 1, 1 + + def build_geo(self): + "build vert, element, and color arrays" + w, h = self.get_tile_size() + # frame + v = [(0, 0), (w, 0), (0, -h), (w, -h)] + e = [0, 1, 1, 3, 3, 2, 2, 0] + color = EXTENTS_COLOR + c = color * 4 + index = 4 + # axes - Y and X + if self.draw_axes: + v += [(w/2, -h), (w/2, 0), (0, -h/2), (w, -h/2)] + e += [4, 5, 6, 7] + color = AXIS_COLOR + c += color * 4 + index = 8 + # vertical lines + color = BASE_COLOR + for x in range(1, w): + # skip middle line + if not self.draw_axes or x != w/2: + v += [(x, -h), (x, 0)] + e += [index, index+1] + c += color * 2 + index += 2 + for y in range(1, h): + if not self.draw_axes or y != h/2: + v += [(0, -y), (w, -y)] + e += [index, index+1] + c += color * 2 + index += 2 + self.vert_array = np.array(v, dtype=np.float32) + self.elem_array = np.array(e, dtype=np.uint32) + self.color_array = np.array(c, dtype=np.float32) + + def reset_loc(self): + self.x = 0 + self.y = 0 + self.z = 0 + + def reset(self): + "macro for convenience - rescale, reposition, update renderable" + self.build_geo() + self.reset_loc() + self.rebind_buffers() + + def update(self): + pass + + def get_projection_matrix(self): + return self.app.camera.projection_matrix + + def get_view_matrix(self): + return self.app.camera.view_matrix + + +class ArtGrid(Grid): + + def reset_loc(self): + self.x, self.y = 0, 0 + self.z = self.app.ui.active_art.layers_z[self.app.ui.active_art.active_layer] + + def reset(self): + self.quad_size_ref = self.app.ui.active_art + Grid.reset(self) + + def get_tile_size(self): + return self.app.ui.active_art.width, self.app.ui.active_art.height + + +class GameGrid(Grid): + + draw_axes = True + base_size = 800 + + def get_tile_size(self): + # TODO: dynamically adjust bounds based on furthest away objects? + return self.base_size, self.base_size + + def set_base_size(self, new_size): + self.base_size = new_size + self.reset() + + def reset_loc(self): + # center of grid at world zero + qw, qh = self.get_quad_size() + self.x = qw * -(self.base_size / 2) + self.y = qh * (self.base_size / 2) + self.z = 0 diff --git a/image_convert.py b/image_convert.py new file mode 100644 index 0000000..1154bde --- /dev/null +++ b/image_convert.py @@ -0,0 +1,252 @@ + +import math, os.path, time +import numpy as np + +from PIL import Image, ImageChops, ImageStat + +from renderable_sprite import SpriteRenderable +from lab_color import rgb_to_lab, lab_color_diff + +""" +notes / future research + +- generate a table of image sum vectors for every char/fg/bg combination in the charset + palette +- find the closest vector from this table for each source block +-- if it's a table, how to index? + +- build dict of char index frequency, run each new source block comparison in order from most to least used (so far) characters. +-- takes same amount of time to try all characters, only helps if diffs use a "good-enough" threshold +-- threshold guesses: 0 = perfect, 600 = reasonable, 1000 = poor, 1500 crummy + +"8088 corruption explained" talk: +https://www.youtube.com/watch?v=L6CkYou6hYU +- downsample each block bilinearly, divide each into 4x4 cells, then compare them with similarly bilinearly-downsampled char blocks +""" + +class ImageConverter: + + tiles_per_tick = 1 + lab_color_comparison = True + # delay in seconds before beginning to convert tiles. + # lets eg UI catch up to BitmapImageImporter changes to Art. + start_delay = 1.0 + + def __init__(self, app, image_filename, art, bicubic_scale=False, sequence_converter=None): + self.init_success = False + image_filename = app.find_filename_path(image_filename) + if not image_filename or not os.path.exists(image_filename): + app.log("ImageConverter: Couldn't find image %s" % image_filename) + app.converter = None + return + self.app = app + self.start_time = time.time() + self.image_filename = image_filename + self.art = art + self.finished = False + # if an ImageSequenceConverter created us, keep a handle to it + self.sequence_converter = sequence_converter + try: + self.src_img = Image.open(self.image_filename).convert('RGB') + except: + return + # if we're part of a sequence, app doesn't need handle directly to us + if not self.sequence_converter: + self.app.converter = self + # preserve aspect + self.char_w, self.char_h = art.charset.char_width, art.charset.char_height + art_pixel_w, art_pixel_h = self.char_w * art.width, self.char_h * art.height + w, h = self.src_img.size + ratio = min(art_pixel_h / h, art_pixel_w / w) + w = math.floor((w * ratio) / self.char_w) * self.char_w + h = math.floor((h * ratio) / self.char_h) * self.char_h + scale_method = Image.BICUBIC if bicubic_scale else Image.NEAREST + self.src_img = self.src_img.resize((w, h), resample=scale_method) + # convert source image to art's palette + self.src_img = self.art.palette.get_palettized_image(self.src_img) + self.color_diffs = self.get_generated_color_diffs(self.art.palette.colors) + # convert palettized source image to an array for fast comparisons + self.src_array = np.fromstring(self.src_img.tobytes(), dtype=np.uint8) + src_w, src_h = self.src_img.size + self.src_array = np.reshape(self.src_array, (src_h, src_w)) + # convert charmap to 1-bit color for fast value swaps during + # block comparison + self.char_img = self.art.charset.image_data.copy().convert('RGB') + bw_pal_img = Image.new('P', (1, 1)) + bw_pal = [0, 0, 0, 255, 255, 255] + while len(bw_pal) < 256 * 3: + bw_pal.append(0) + bw_pal_img.putpalette(tuple(bw_pal)) + self.char_img = self.char_img.quantize(palette=bw_pal_img) + self.char_array = np.fromstring(self.char_img.tobytes(), dtype=np.uint8) + self.char_array = np.reshape(self.char_array, (self.art.charset.image_height, self.art.charset.image_width)) + # create, size and position image preview + preview_img = self.src_img.copy() + # remove transparency if source image is a GIF to avoid a PIL crash :[ + # TODO: https://github.com/python-pillow/Pillow/issues/1377 + if 'transparency' in preview_img.info: + preview_img.info.pop('transparency') + self.preview_sprite = SpriteRenderable(self.app, None, preview_img) + # preview image scale takes into account character aspect + self.preview_sprite.scale_x = w / (self.char_w / self.art.quad_width) + self.preview_sprite.scale_y = h / (self.char_h / self.art.quad_height) + # position in top left corner + self.preview_sprite.y = -self.preview_sprite.scale_y + self.preview_sprite.z = self.art.layers_z[self.art.active_layer] - 0.01 + # clear active layer so we can see preview + self.art.clear_frame_layer(self.art.active_frame, self.art.active_layer, 0) + # block indices + self.x, self.y = 0, 0 + # precompute block indices - lets us do a bit less + and * + self.char_blocks = [] + for char_y in range(self.art.charset.map_height): + for char_x in range(self.art.charset.map_width): + x0, y0 = char_x * self.char_w, char_y * self.char_h + x1, y1 = x0 + self.char_w, y0 + self.char_h + self.char_blocks.append((x0, y0, x1, y1)) + # characters might end mid-row, bail if so + if len(self.char_blocks) > self.art.charset.last_index: + break + self.init_success = True + + def get_generated_color_diffs(self, colors): + # build table of color diffs + unique_colors = len(colors) + color_diffs = np.zeros((unique_colors, unique_colors), dtype=np.float32) + # option: L*a*b color space conversion for greater accuracy + get_color_diff = self.get_lab_color_diff if self.lab_color_comparison else self.get_rgb_color_diff + #get_color_diff = self.get_nonlinear_rgb_color_diff + for i,color in enumerate(colors): + for j,other_color in enumerate(colors): + color_diffs[i][j] = get_color_diff(color, other_color) + return color_diffs + + def get_rgb_color_diff(self, color1, color2): + r = abs(color1[0] - color2[0]) + g = abs(color1[1] - color2[1]) + b = abs(color1[2] - color2[2]) + a = abs(color1[3] - color2[3]) + return abs(r + g + b + a) + + def get_lab_color_diff(self, color1, color2): + l1, a1, b1 = rgb_to_lab(*color1[:3]) + l2, a2, b2 = rgb_to_lab(*color2[:3]) + return lab_color_diff(l1, a1, b1, l2, a2, b2) + + def get_nonlinear_rgb_color_diff(self, color1, color2): + # from http://www.compuphase.com/cmetric.htm + rmean = int((color1[0] + color2[0]) / 2) + r = color1[0] - color2[0] + g = color1[1] - color2[1] + b = color1[2] - color2[2] + return math.sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8)) + + def update(self): + if time.time() < self.start_time + self.start_delay: + return + for i in range(self.tiles_per_tick): + x_start, y_start = self.x * self.char_w, self.y * self.char_h + x_end, y_end = x_start + self.char_w, y_start + self.char_h + block = self.src_array[y_start:y_end, x_start:x_end] + char, fg, bg = self.get_best_tile_for_block(block) + # get_best_etc sometimes returns 0 for darkest blocks, + # but transparency isn't properly supported yet + fg = self.art.palette.darkest_index if fg == 0 else fg + bg = self.art.palette.darkest_index if bg == 0 else bg + self.art.set_tile_at(self.art.active_frame, self.art.active_layer, + self.x, self.y, char, fg, bg) + #print('set block %s,%s to ch %s fg %s bg %s' % (self.x, self.y, char, fg, bg)) + self.x += 1 + if self.x >= self.art.width: + self.x = 0 + self.y += 1 + if self.y >= self.art.height: + self.finish() + break + + def get_color_combos_for_block(self, src_block): + """ + returns # of unique colors, AND + list of unique (fg, bg) color index tuples for given block + """ + # get unique colors in source block + colors, counts = np.unique(src_block, False, False, return_counts=True) + # early out for single-color blocks + if len(colors) == 1: + return colors, [] + # sort by most to least used colors + color_counts = [] + for i,color in enumerate(colors): + color_counts += [(color, counts[i])] + color_counts.sort(key=lambda item: item[1], reverse=True) + combos = [] + for color1,count1 in color_counts: + for color2,count2 in color_counts: + if color1 == color2: + continue + # fg/bg color swap SHOULD be allowed + if (color1, color2) in combos: + continue + combos.append((color1, color2)) + return colors, combos + + def get_best_tile_for_block(self, src_block): + "returns a (char, fg, bg) tuple for the best match of given block" + colors, combos = self.get_color_combos_for_block(src_block) + # single color block? + if len(combos) == 0: + # if a block is all transparent pixels or outside image bounds, + # no unique colors will be found + bg = 0 if len(colors) == 0 else colors[0] + return (0, 0, bg) + # compare all combos + chars w/ source block + best_char = 0 + best_diff = 9999999999999 + best_fg, best_bg = 0, 0 + for bg,fg in combos: + # reset char index before each run through charset + char_index = 0 + char_array = self.char_array.copy() + # replace 1-bit color of char image with fg and bg colors + char_array[char_array == 0] = bg + char_array[char_array == 1] = fg + for (x0, y0, x1, y1) in self.char_blocks: + char_block = char_array[y0:y1, x0:x1] + # using array of difference values w/ fancy numpy indexing, + # sum() it + # (used to be get_block_diff(block1, block2)) + diff = self.color_diffs[src_block, char_block].sum() + # no difference = return immediately + if diff == 0: + return (char_index, fg, bg) + if diff < best_diff: + best_diff = diff + best_char = char_index + best_fg, best_bg = fg, bg + #print('%s is new best char index, diff %s:' % (char_index, diff)) + char_index += 1 + # return best (least different to source block) char/fg/bg found + #print('%s is best char index, diff %s:' % (best_char, best_diff)) + return (best_char, best_fg, best_bg) + + def print_block(self, block, fg, bg): + "prints ASCII representation of a block with . and # as white and black" + w, h = block.shape + s = '' + for y in range(h): + for x in range(w): + if block[y][x] == fg: + s += '#' + else: + s += '.' + s += '\n' + print(s) + + def finish(self, cancelled=False): + self.finished = True + if not self.sequence_converter: + time_taken = time.time() - self.start_time + verb = 'cancelled' if cancelled else 'finished' + self.app.log('Conversion of image %s %s after %.3f seconds' % (self.image_filename, verb, time_taken)) + self.app.converter = None + self.preview_sprite = None + self.app.update_window_title() diff --git a/image_export.py b/image_export.py new file mode 100644 index 0000000..64d2d70 --- /dev/null +++ b/image_export.py @@ -0,0 +1,158 @@ +import os +from OpenGL import GL +from PIL import Image, ImageChops, GifImagePlugin + +from framebuffer import ExportFramebuffer, ExportFramebufferNoCRT + +def get_frame_image(app, art, frame, allow_crt=True, scale=1, bg_color=(0, 0, 0, 0)): + "returns a PIL image of given frame of given art, None on failure" + post_fb_class = ExportFramebuffer if allow_crt else ExportFramebufferNoCRT + # determine art's native size in pixels + w = art.charset.char_width * art.width + h = art.charset.char_height * art.height + w, h = int(w * scale), int(h * scale) + # error out if over max texture size + if w > app.max_texture_size or h > app.max_texture_size: + app.log("ERROR: Image output size (%s x %s) exceeds your hardware's max supported texture size (%s x %s)!" % (w, h, app.max_texture_size, app.max_texture_size), error=True) + app.log(' Please export at a smaller scale or chop up your artwork :[', error=True) + return None + # create CRT framebuffer + post_fb = post_fb_class(app, w, h) + # create render target and target framebuffer that will become image + export_fb = GL.glGenFramebuffers(1) + render_buffer = GL.glGenRenderbuffers(1) + GL.glBindRenderbuffer(GL.GL_RENDERBUFFER, render_buffer) + GL.glRenderbufferStorage(GL.GL_RENDERBUFFER, GL.GL_RGBA8, w, h) + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, export_fb) + GL.glFramebufferRenderbuffer(GL.GL_DRAW_FRAMEBUFFER, GL.GL_COLOR_ATTACHMENT0, + GL.GL_RENDERBUFFER, render_buffer) + GL.glViewport(0, 0, w, h) + # do render + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, post_fb.framebuffer) + # bg_color might be None + GL.glClearColor(*bg_color or (0, 0, 0, 0)) + GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + # render to it + art.renderables[0].render_frame_for_export(frame) + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, export_fb) + post_fb.render() + GL.glReadBuffer(GL.GL_COLOR_ATTACHMENT0) + # read pixels from it + pixels = GL.glReadPixels(0, 0, w, h, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, + outputType=None) + # cleanup / deinit of GL stuff + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0) + GL.glViewport(0, 0, app.window_width, app.window_height) + GL.glDeleteFramebuffers(1, [export_fb]) + GL.glDeleteRenderbuffers(1, [render_buffer]) + post_fb.destroy() + # GL pixel data as numpy array -> bytes for PIL image export + pixel_bytes = pixels.flatten().tobytes() + src_img = Image.frombytes(mode='RGBA', size=(w, h), data=pixel_bytes) + src_img = src_img.transpose(Image.FLIP_TOP_BOTTOM) + return src_img + +def export_animation(app, art, out_filename, bg_color=None, loop=True): + # get list of rendered frame images + frames = [] + # use arbitrary color for transparency + i_transp = art.palette.get_random_non_palette_color() + # if bg color is specified, this isn't art mode; play along + if bg_color is not None: + f_transp = bg_color + art.palette.colors[0] = (round(bg_color[0] * 255), + round(bg_color[1] * 255), + round(bg_color[2] * 255), + 255) + else: + # GL wants floats + f_transp = (i_transp[0]/255, i_transp[1]/255, i_transp[2]/255, 1.) + for frame in range(art.frames): + frame_img = get_frame_image(app, art, frame, allow_crt=False, + scale=1, bg_color=f_transp) + if bg_color is not None: + # if bg color is specified, assume no transparency + frame_img = art.palette.get_palettized_image(frame_img, force_no_transparency=True) + else: + frame_img = art.palette.get_palettized_image(frame_img, i_transp[:3]) + frames.append(frame_img) + # compile frames into animated GIF with proper frame delays + # technique thanks to: + # https://github.com/python-pillow/Pillow/blob/master/Scripts/gifmaker.py + output_img = open(out_filename, 'wb') + for i,img in enumerate(frames): + delay = art.frame_delays[i] * 1000 + if i == 0: + data = GifImagePlugin.getheader(img)[0] + # PIL only wants to write GIF87a for some reason... + # welcome to 1989 B] + data[0] = data[0].replace(b'7', b'9') + # TODO: loop doesn't work? + if bg_color is not None: + # if bg color is specified, assume no transparency + if loop: + data += GifImagePlugin.getdata(img, duration=delay, loop=0) + else: + data += GifImagePlugin.getdata(img, duration=delay) + else: + data += GifImagePlugin.getdata(img, duration=delay, + transparency=0, loop=0) + for b in data: + output_img.write(b) + continue + delta = ImageChops.subtract_modulo(img, frames[i-1]) + # Image.getbbox() rather unhelpfully returns None if no delta + dw, dh = delta.size + bbox = delta.getbbox() or (0, 0, dw, dh) + for b in GifImagePlugin.getdata(img.crop(bbox), offset=bbox[:2], + duration=delay, transparency=0, + loop=0): + output_img.write(b) + output_img.write(b';') + output_img.close() + output_format = 'Animated GIF' + #app.log('%s exported (%s)' % (out_filename, output_format)) + + +def export_still_image(app, art, out_filename, crt=True, scale=1, bg_color=None): + # respect "disable CRT entirely" setting for slow GPUs + crt = False if app.fb.disable_crt else crt + # just write RGBA if palette has more than one color with <1 alpha + # TODO: add PNG/PNGset export option for palettized; + # for now always export 32bit + if crt or not art.palette.all_colors_opaque() or bg_color or True: + src_img = get_frame_image(app, art, art.active_frame, crt, scale, bg_color) + if not src_img: + return False + src_img.save(out_filename, 'PNG') + output_format = '32-bit w/ alpha' + else: + # else convert to current palette. + # as with aniGIF export, use arbitrary color for transparency + i_transp = art.palette.get_random_non_palette_color() + f_transp = (i_transp[0]/255, i_transp[1]/255, i_transp[2]/255, 1.) + src_img = get_frame_image(app, art, art.active_frame, False, scale, f_transp) + if not src_img: + return False + output_img = art.palette.get_palettized_image(src_img, i_transp[:3]) + output_img.save(out_filename, 'PNG', transparency=0) + output_format = '8-bit palettized w/ transparency' + #app.log('%s exported (%s)' % (out_filename, output_format)) + return True + + +def write_thumbnail(app, art_filename, thumb_filename): + "write thumbnail. assume art is not loaded, tear down everything when done." + art = app.load_art(art_filename, False) + # don't bother if art is None, must be created at runtime eg via Game Mode + if not art: + return + renderable = None + if len(art.renderables) == 0: + renderable = app.thumbnail_renderable_class(app, art) + art.renderables.append(renderable) + img = get_frame_image(app, art, 0, allow_crt=False) + if img: + img.save(thumb_filename, 'PNG') + if renderable: + renderable.destroy() diff --git a/input_handler.py b/input_handler.py new file mode 100644 index 0000000..479935e --- /dev/null +++ b/input_handler.py @@ -0,0 +1,1212 @@ +import ctypes, os, platform +import sdl2 + +from sys import exit + +from ui import SCALE_INCREMENT, OIS_WIDTH, OIS_HEIGHT, OIS_FILL +from renderable import LAYER_VIS_FULL, LAYER_VIS_DIM, LAYER_VIS_NONE +from ui_art_dialog import NewArtDialog, SaveAsDialog, QuitUnsavedChangesDialog, CloseUnsavedChangesDialog, RevertChangesDialog, ResizeArtDialog, AddFrameDialog, DuplicateFrameDialog, FrameDelayDialog, FrameDelayAllDialog, FrameIndexDialog, AddLayerDialog, DuplicateLayerDialog, SetLayerNameDialog, SetLayerZDialog, PaletteFromFileDialog, ImportFileDialog, ExportFileDialog, SetCameraZoomDialog, ExportOptionsDialog, OverlayImageOpacityDialog +from ui_game_dialog import NewGameDirDialog, LoadGameStateDialog, SaveGameStateDialog, AddRoomDialog, SetRoomCamDialog, SetRoomEdgeWarpsDialog, SetRoomBoundsObjDialog, RenameRoomDialog +from ui_info_dialog import PagedInfoDialog +from ui_file_chooser_dialog import ArtChooserDialog, CharSetChooserDialog, PaletteChooserDialog, PaletteFromImageChooserDialog, RunArtScriptDialog, OverlayImageFileChooserDialog +from ui_list_operations import LO_NONE, LO_SELECT_OBJECTS, LO_SET_SPAWN_CLASS, LO_LOAD_STATE, LO_SET_ROOM, LO_SET_ROOM_OBJECTS, LO_SET_OBJECT_ROOMS, LO_OPEN_GAME_DIR, LO_SET_ROOM_EDGE_WARP, LO_SET_ROOM_EDGE_WARP, LO_SET_ROOM_EDGE_OBJ, LO_SET_ROOM_CAMERA +from collision import CT_NONE +from art import ART_DIR, ART_FILE_EXTENSION +from key_shifts import NUMLOCK_ON_MAP, NUMLOCK_OFF_MAP + +BINDS_FILENAME = 'binds.cfg' +BINDS_TEMPLATE_FILENAME = 'binds.cfg.default' + + +class InputLord: + + "sets up key binds and handles input" + wheel_zoom_amount = 3.0 + keyboard_zoom_amount = 1.0 + + def __init__(self, app): + self.app = app + self.ui = self.app.ui + # read from binds.cfg file or create it from template + # exec results in edit_binds, a dict whose keys are keys+mods + # and whose values are bound functions + self.edit_bind_src = None + # bad probs if a command isn't in binds.cfg, so just blow it away + # if the template is newer than it + # TODO: better solution is find any binds in template but not binds.cfg + # and add em + binds_filename = self.app.config_dir + BINDS_FILENAME + binds_outdated = not os.path.exists(binds_filename) or os.path.getmtime(binds_filename) < os.path.getmtime(BINDS_TEMPLATE_FILENAME) + if not binds_outdated and os.path.exists(binds_filename): + exec(open(binds_filename).read()) + self.app.log('Loaded key binds from %s' % binds_filename) + else: + default_data = open(BINDS_TEMPLATE_FILENAME).readlines()[1:] + new_binds = open(binds_filename, 'w') + new_binds.writelines(default_data) + new_binds.close() + self.app.log('Created new key binds file %s' % binds_filename) + exec(''.join(default_data)) + if not self.edit_bind_src: + self.app.log('No bind data found, Is binds.cfg.default present?') + exit() + # associate key + mod combos with methods + self.edit_binds = {} + for bind_string in self.edit_bind_src: + bind = self.parse_key_bind(bind_string) + if not bind: + continue + # bind data could be a single item (string) or a list/tuple + bind_data = self.edit_bind_src[bind_string] + if type(bind_data) is str: + bind_fnames = ['BIND_%s' % bind_data] + else: + bind_fnames = ['BIND_%s' % s for s in bind_data] + bind_functions = [] + for bind_fname in bind_fnames: + if not hasattr(self, bind_fname): + continue + bind_functions.append(getattr(self, bind_fname)) + self.edit_binds[bind] = bind_functions + # get controller(s) + # TODO: use kewl SDL2 gamepad system + js_init = sdl2.SDL_InitSubSystem(sdl2.SDL_INIT_JOYSTICK) + if js_init != 0: + self.app.log("SDL2: Couldn't initialize joystick subsystem, code %s" % js_init) + return + sticks = sdl2.SDL_NumJoysticks() + #self.app.log('%s gamepads found' % sticks) + self.gamepad = None + self.gamepad_left_x, self.gamepad_left_y = 0, 0 + # for now, just grab first pad + if sticks > 0: + pad = sdl2.SDL_JoystickOpen(0) + pad_name = sdl2.SDL_JoystickName(pad).decode('utf-8') + pad_axes = sdl2.SDL_JoystickNumAxes(pad) + pad_buttons = sdl2.SDL_JoystickNumButtons(pad) + self.app.log('Gamepad found: %s with %s axes, %s buttons' % (pad_name, pad_axes, pad_buttons)) + self.gamepad = pad + # before main loop begins, set initial mouse position - + # SDL_GetMouseState returns 0,0 if the mouse hasn't yet moved + # in the new window! + wx, wy = ctypes.c_int(0), ctypes.c_int(0) + sdl2.SDL_GetWindowPosition(self.app.window, wx, wy) + wx, wy = int(wx.value), int(wy.value) + mx, my = ctypes.c_int(0), ctypes.c_int(0) + sdl2.mouse.SDL_GetGlobalMouseState(mx, my) + mx, my = int(mx.value), int(my.value) + self.app.mouse_x, self.app.mouse_y = mx - wx, my - wy + # set flag so we know whether handle_input's SDL_GetMouseState result + # is accurate :/ + self.mouse_has_moved = False + + def parse_key_bind(self, in_string): + "returns a tuple of (key, mod1, mod2) key bind data from given string" + shift = False + alt = False + ctrl = False + key = None + for i in in_string.split(): + if i.lower() == 'shift': + shift = True + elif i.lower() == 'alt': + alt = True + elif i.lower() == 'ctrl': + ctrl = True + else: + key = i + return (key, shift, alt, ctrl) + + def get_bind_functions(self, keysym, shift, alt, ctrl): + "returns a list of methods for the given key + mods if one exists" + keystr = sdl2.SDL_GetKeyName(keysym).decode().lower() + key_data = (keystr, shift, alt, ctrl) + return self.edit_binds.get(key_data, []) + + def get_keysym(self, event): + "get SDL2 keysym from event; right now only used to check numlock variants" + numlock_on = bool(event.key.keysym.mod & sdl2.KMOD_NUM) + keysym = event.key.keysym.sym + # if numlock is on, treat numpad keys like numbers + if numlock_on and keysym in NUMLOCK_ON_MAP: + return NUMLOCK_ON_MAP[keysym] + elif not numlock_on and keysym in NUMLOCK_OFF_MAP: + return NUMLOCK_OFF_MAP[keysym] + return keysym + + def get_command_shortcut(self, command_function): + for bind in self.edit_bind_src: + if command_function == self.edit_bind_src[bind]: + return bind + return '' + + def get_menu_items_for_command_function(self, function): + # search both menus for items; command checks + buttons = self.ui.art_menu_bar.menu_buttons + self.ui.game_menu_bar.menu_buttons + items = [] + for button in buttons: + # skip eg playscii button + if not hasattr(button, 'menu_data'): + continue + for item in button.menu_data.items: + if function.__name__ == 'BIND_%s' % item.command: + items.append(item) + return items + + def is_command_function_allowed(self, function): + "returns True if given function's menu bar item is available" + items = self.get_menu_items_for_command_function(function) + if not items: + return True + # return True if ANY items are active + for item in items: + if not item.always_active and item.should_dim(self.app): + continue + if item.art_mode_allowed and not self.app.game_mode: + return True + if item.game_mode_allowed and self.app.game_mode: + return True + return False + + def handle_input(self): + app = self.app + # get and store mouse state + # (store everything in parent app object so stuff can access it easily) + mx, my = ctypes.c_int(0), ctypes.c_int(0) + mouse = sdl2.mouse.SDL_GetMouseState(mx, my) + app.left_mouse = bool(mouse & sdl2.SDL_BUTTON(sdl2.SDL_BUTTON_LEFT)) + app.middle_mouse = bool(mouse & sdl2.SDL_BUTTON(sdl2.SDL_BUTTON_MIDDLE)) + app.right_mouse = bool(mouse & sdl2.SDL_BUTTON(sdl2.SDL_BUTTON_RIGHT)) + mx, my = int(mx.value), int(my.value) + # if mouse hasn't moved since init, disregard SDL_GetMouseState + if self.mouse_has_moved: + app.mouse_x, app.mouse_y = mx, my + elif mx != 0 or my != 0: + self.mouse_has_moved = True + # relative mouse move state + mdx, mdy = ctypes.c_int(0), ctypes.c_int(0) + sdl2.mouse.SDL_GetRelativeMouseState(mdx, mdy) + if self.mouse_has_moved: + app.mouse_dx, app.mouse_dy = int(mdx.value), int(mdy.value) + if app.mouse_dx != 0 or app.mouse_dy != 0: + app.keyboard_editing = False + # dragging a dialog? + if app.left_mouse and self.ui.active_dialog in self.ui.hovered_elements: + self.ui.active_dialog.update_drag(app.mouse_dx, app.mouse_dy) + # get keyboard state so later we can directly query keys + ks = sdl2.SDL_GetKeyboardState(None) + # get modifier states + self.shift_pressed, self.alt_pressed, self.ctrl_pressed = False, False, False + if ks[sdl2.SDL_SCANCODE_LSHIFT] or ks[sdl2.SDL_SCANCODE_RSHIFT]: + self.shift_pressed = True + if ks[sdl2.SDL_SCANCODE_LALT] or ks[sdl2.SDL_SCANCODE_RALT]: + self.alt_pressed = True + if ks[sdl2.SDL_SCANCODE_LCTRL] or ks[sdl2.SDL_SCANCODE_RCTRL]: + self.ctrl_pressed = True + # check and remember capslock as a special mod state + # (currently only used for text tool entry) + ms = sdl2.SDL_GetModState() + self.capslock_on = bool(ms & sdl2.KMOD_CAPS) + # macOS: treat command as interchangeable with control, is this kosher? + if platform.system() == 'Darwin' and (ks[sdl2.SDL_SCANCODE_LGUI] or ks[sdl2.SDL_SCANCODE_RGUI]): + self.ctrl_pressed = True + if app.capslock_is_ctrl and ks[sdl2.SDL_SCANCODE_CAPSLOCK]: + self.ctrl_pressed = True + # pack mods into a tuple to save listing em all out repeatedly + mods = self.shift_pressed, self.alt_pressed, self.ctrl_pressed + # get controller state + if self.gamepad: + self.gamepad_left_x = sdl2.SDL_JoystickGetAxis(self.gamepad, sdl2.SDL_CONTROLLER_AXIS_LEFTX) / 32768 + self.gamepad_left_y = sdl2.SDL_JoystickGetAxis(self.gamepad, sdl2.SDL_CONTROLLER_AXIS_LEFTY) / -32768 + for event in sdl2.ext.get_events(): + if event.type == sdl2.SDL_QUIT: + app.should_quit = True + elif event.type == sdl2.SDL_WINDOWEVENT: + if event.window.event == sdl2.SDL_WINDOWEVENT_RESIZED: + # test window we create on init to detect resolution makes + # SDL think we've resized main app window on first tick! + if app.updates > 0: + app.resize_window(event.window.data1, event.window.data2) + elif event.type == sdl2.SDL_JOYBUTTONDOWN: + if not app.gw.paused and app.gw.player: + app.gw.player.button_pressed(event.jbutton.button) + elif event.type == sdl2.SDL_JOYBUTTONUP: + if not app.gw.paused and app.gw.player: + self.app.gw.player.button_unpressed(event.jbutton.button) + elif event.type == sdl2.SDL_KEYDOWN: + keysym = self.get_keysym(event) + # if console is up, pass input to it + if self.ui.console.visible: + self.ui.console.handle_input(keysym, *mods) + # same with dialog box + elif self.ui.active_dialog and self.ui.active_dialog is self.ui.keyboard_focus_element: + self.ui.active_dialog.handle_input(keysym, *mods) + # bail, process no further input + #sdl2.SDL_PumpEvents() + #return + # handle text input if text tool is active + elif self.ui.selected_tool is self.ui.text_tool and self.ui.text_tool.input_active: + self.ui.text_tool.handle_keyboard_input(keysym, *mods) + # see if there's a function for this bind and run it + else: + flist = self.get_bind_functions(keysym, *mods) + for f in flist: + # don't run any command whose menu bar item's dimmed / not allowed (ie wrong mode) + if self.is_command_function_allowed(f): + f() + # if game mode active, pass to world as well as any binds + if self.app.game_mode: + self.app.gw.handle_input(event, *mods) + # for key up events, use the same binds but handle them special case + # TODO: once there are enough key up events, figure out a more + # elegant way than this + elif event.type == sdl2.SDL_KEYUP: + keysym = self.get_keysym(event) + if self.app.game_mode: + self.app.gw.handle_input(event, *mods) + # dismiss selector popup + flist = self.get_bind_functions(keysym, *mods) + if not flist: + pass + elif self.ui.active_dialog: + # keyup shouldn't have any special meaning in a dialog + pass + elif self.BIND_game_grab in flist: + if self.app.game_mode and not self.ui.active_dialog and self.app.gw.player: + self.app.gw.player.button_unpressed(0) + return + elif self.BIND_toggle_picker in flist: + # ..but only for default hold-to-show setting + if self.ui.popup_hold_to_show: + self.ui.popup.hide() + elif self.BIND_select_or_paint in flist: + app.keyboard_editing = True + if not self.ui.selected_tool is self.ui.text_tool and not self.ui.text_tool.input_active: + self.app.cursor.finish_paint() + # + # mouse events aren't handled by bind table for now + # + elif event.type == sdl2.SDL_MOUSEWHEEL: + ui_wheeled = self.ui.wheel_moved(event.wheel.y) + if not ui_wheeled: + if self.app.can_edit: + if event.wheel.y > 0: + # only zoom in should track towards cursor + app.camera.zoom(-self.wheel_zoom_amount, + towards_cursor=True) + elif event.wheel.y < 0: + app.camera.zoom(self.wheel_zoom_amount) + else: + self.app.gw.mouse_wheeled(event.wheel.y) + elif event.type == sdl2.SDL_MOUSEBUTTONUP: + # "consume" input if UI handled it + ui_unclicked = self.ui.unclicked(event.button.button) + if ui_unclicked: + sdl2.SDL_PumpEvents() + return + if self.app.game_mode: + self.app.gw.unclicked(event.button.button) + # LMB up: finish paint for most tools, end select drag + if event.button.button == sdl2.SDL_BUTTON_LEFT: + if self.ui.selected_tool is self.ui.select_tool and self.ui.select_tool.selection_in_progress: + self.ui.select_tool.finish_select(self.shift_pressed, self.ctrl_pressed) + elif not self.ui.selected_tool is self.ui.text_tool and not self.ui.text_tool.input_active: + app.cursor.finish_paint() + elif event.type == sdl2.SDL_MOUSEBUTTONDOWN: + ui_clicked = self.ui.clicked(event.button.button) + # don't register edit commands if a menu is up + if ui_clicked or self.ui.menu_bar.active_menu_name or self.ui.active_dialog: + sdl2.SDL_PumpEvents() + if self.app.game_mode: + self.app.gw.last_click_on_ui = True + return + # pass clicks through to game world + if self.app.game_mode: + if not ui_clicked: + self.app.gw.clicked(event.button.button) + # LMB down: start text entry, start select drag, or paint + elif event.button.button == sdl2.SDL_BUTTON_LEFT: + if not self.ui.active_art: + return + elif self.ui.selected_tool is self.ui.text_tool: + # text tool: only start entry if click is outside popup + if not self.ui.text_tool.input_active and \ + not self.ui.popup in self.ui.hovered_elements: + self.ui.text_tool.start_entry() + elif self.ui.selected_tool is self.ui.select_tool: + # select tool: accept clicks if they're outside the popup + if not self.ui.select_tool.selection_in_progress and \ + (not self.ui.keyboard_focus_element or \ + (self.ui.keyboard_focus_element is self.ui.popup and \ + not self.ui.popup in self.ui.hovered_elements)): + self.ui.select_tool.start_select() + else: + app.cursor.start_paint() + elif event.button.button == sdl2.SDL_BUTTON_RIGHT: + if self.app.ui.active_art: + self.ui.quick_grab() + # none of the below applies to cases where a dialog is up + if self.ui.active_dialog: + sdl2.SDL_PumpEvents() + return + # directly query keys we don't want affected by OS key repeat delay + # TODO: these are hard-coded for the moment, think of a good way + # to expose this functionality to the key bind system + def pressing_up(ks): + return ks[sdl2.SDL_SCANCODE_W] or ks[sdl2.SDL_SCANCODE_UP] or ks[sdl2.SDL_SCANCODE_KP_8] + def pressing_down(ks): + return ks[sdl2.SDL_SCANCODE_S] or ks[sdl2.SDL_SCANCODE_DOWN] or ks[sdl2.SDL_SCANCODE_KP_2] + def pressing_left(ks): + return ks[sdl2.SDL_SCANCODE_A] or ks[sdl2.SDL_SCANCODE_LEFT] or ks[sdl2.SDL_SCANCODE_KP_4] + def pressing_right(ks): + return ks[sdl2.SDL_SCANCODE_D] or ks[sdl2.SDL_SCANCODE_RIGHT] or ks[sdl2.SDL_SCANCODE_KP_6] + # prevent camera move if: console is up, text input is active, editing + # is not allowed + if self.shift_pressed and not self.alt_pressed and not self.ctrl_pressed and not self.ui.console.visible and not self.ui.text_tool.input_active and self.app.can_edit and self.ui.keyboard_focus_element is None: + if pressing_up(ks): + app.camera.pan(0, 1, True) + if pressing_down(ks): + app.camera.pan(0, -1, True) + if pressing_left(ks): + app.camera.pan(-1, 0, True) + if pressing_right(ks): + app.camera.pan(1, 0, True) + if ks[sdl2.SDL_SCANCODE_X]: + app.camera.zoom(-self.keyboard_zoom_amount, keyboard=True, + towards_cursor=True) + if ks[sdl2.SDL_SCANCODE_Z]: + app.camera.zoom(self.keyboard_zoom_amount, keyboard=True) + if self.app.can_edit and app.middle_mouse and (app.mouse_dx != 0 or app.mouse_dy != 0): + app.camera.mouse_pan(app.mouse_dx, app.mouse_dy) + # game mode: arrow keys and left gamepad stick move player + if self.app.game_mode and not self.ui.console.visible and not self.ui.active_dialog and self.ui.keyboard_focus_element is None: + if pressing_up(ks): + # shift = move selected + if self.shift_pressed and self.app.can_edit: + app.gw.move_selected(0, 1, 0) + elif not self.ctrl_pressed and app.gw.player: + app.gw.player.move(0, 1) + if pressing_down(ks): + if self.shift_pressed and self.app.can_edit: + app.gw.move_selected(0, -1, 0) + elif not self.ctrl_pressed and app.gw.player: + app.gw.player.move(0, -1) + if pressing_left(ks): + if self.shift_pressed and self.app.can_edit: + app.gw.move_selected(-1, 0, 0) + elif not self.ctrl_pressed and app.gw.player: + app.gw.player.move(-1, 0) + if pressing_right(ks): + if self.shift_pressed and self.app.can_edit: + app.gw.move_selected(1, 0, 0) + elif not self.ctrl_pressed and app.gw.player: + app.gw.player.move(1, 0) + if abs(self.gamepad_left_x) > 0.15 and app.gw.player: + app.gw.player.move(self.gamepad_left_x, 0) + if abs(self.gamepad_left_y) > 0.15 and app.gw.player: + app.gw.player.move(0, self.gamepad_left_y) + sdl2.SDL_PumpEvents() + + def is_key_pressed(self, key): + "returns True if given key is pressed" + key = bytes(key, encoding='utf-8') + scancode = sdl2.keyboard.SDL_GetScancodeFromName(key) + return sdl2.SDL_GetKeyboardState(None)[scancode] + + # + # bind functions + # + # function names correspond with key values in binds.cfg + def BIND_quit(self): + for art in self.app.art_loaded_for_edit: + if art.unsaved_changes and self.app.can_edit: + if self.app.game_mode: + self.app.exit_game_mode() + self.ui.set_active_art(art) + self.ui.open_dialog(QuitUnsavedChangesDialog) + return + self.app.should_quit = True + + def BIND_toggle_console(self): + self.ui.console.toggle() + + def BIND_import_file(self): + self.ui.open_dialog(ImportFileDialog) + + def BIND_export_file(self): + self.ui.open_dialog(ExportFileDialog) + + def BIND_export_file_last(self): + # if user hasn't exported this session, pick an exporter + if self.ui.app.exporter: + # redo export with appropriate filename & last options if they have + out_filename = self.ui.active_art.filename + out_filename = os.path.basename(out_filename) + out_filename = os.path.splitext(out_filename)[0] + ExportOptionsDialog.do_export(self.ui.app, out_filename, + self.ui.app.last_export_options) + else: + self.ui.open_dialog(ExportFileDialog) + + def BIND_decrease_ui_scale(self): + if self.ui.scale > SCALE_INCREMENT * 2: + self.ui.set_scale(self.ui.scale - SCALE_INCREMENT) + + def BIND_increase_ui_scale(self): + # cap UI scale at 2 + if self.ui.scale + SCALE_INCREMENT < 2.0: + self.ui.set_scale(self.ui.scale + SCALE_INCREMENT) + + def BIND_toggle_fullscreen(self): + self.app.toggle_fullscreen() + + def BIND_decrease_brush_size(self): + self.ui.selected_tool.decrease_brush_size() + self.ui.menu_bar.refresh_active_menu() + + def BIND_increase_brush_size(self): + self.ui.selected_tool.increase_brush_size() + self.ui.menu_bar.refresh_active_menu() + + def BIND_cycle_char_forward(self): + self.ui.select_char(self.ui.selected_char+1) + + def BIND_cycle_char_backward(self): + self.ui.select_char(self.ui.selected_char-1) + + def BIND_cycle_fg_forward(self): + self.ui.select_fg(self.ui.selected_fg_color+1) + + def BIND_cycle_fg_backward(self): + self.ui.select_fg(self.ui.selected_fg_color-1) + + def BIND_cycle_bg_forward(self): + self.ui.select_bg(self.ui.selected_bg_color+1) + + def BIND_cycle_bg_backward(self): + self.ui.select_bg(self.ui.selected_bg_color-1) + + def BIND_cycle_xform_forward(self): + self.ui.cycle_selected_xform() + + def BIND_cycle_xform_backward(self): + self.ui.cycle_selected_xform(True) + + def BIND_toggle_affects_char(self): + self.ui.selected_tool.toggle_affects_char() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_affects_fg(self): + self.ui.selected_tool.toggle_affects_fg() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_affects_bg(self): + self.ui.selected_tool.toggle_affects_bg() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_affects_xform(self): + self.ui.selected_tool.toggle_affects_xform() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_crt(self): + self.app.fb.toggle_crt() + self.ui.menu_bar.refresh_active_menu() + + def BIND_select_pencil_tool(self): + self.ui.set_selected_tool(self.ui.pencil_tool) + + def BIND_select_erase_tool(self): + self.ui.set_selected_tool(self.ui.erase_tool) + + def BIND_select_rotate_tool(self): + self.ui.set_selected_tool(self.ui.rotate_tool) + + def BIND_select_grab_tool(self): + self.ui.set_selected_tool(self.ui.grab_tool) + + def BIND_select_text_tool(self): + self.ui.set_selected_tool(self.ui.text_tool) + + def BIND_select_select_tool(self): + self.ui.set_selected_tool(self.ui.select_tool) + + def BIND_select_fill_tool(self): + self.ui.set_selected_tool(self.ui.fill_tool) + + def BIND_cycle_fill_boundary_mode(self): + self.ui.cycle_fill_tool_mode() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_art_toolbar(self): + self.ui.art_toolbar.visible = not self.ui.art_toolbar.visible + self.ui.menu_bar.refresh_active_menu() + + def BIND_cut_selection(self): + self.ui.cut_selection() + # switch to PasteTool + self.ui.set_selected_tool(self.ui.paste_tool) + # clear selection + self.ui.select_none() + self.ui.tool_settings_changed = True + + def BIND_copy_selection(self): + self.ui.copy_selection() + # switch to PasteTool + self.ui.set_selected_tool(self.ui.paste_tool) + # clear selection + self.ui.select_none() + self.ui.tool_settings_changed = True + + def BIND_select_paste_tool(self): + self.ui.set_selected_tool(self.ui.paste_tool) + + def BIND_select_none(self): + if self.app.game_mode: + self.app.gw.deselect_all() + else: + self.ui.select_none() + + def BIND_cancel(self): + # context-dependent: + # game mode: deselect + # normal painting mode: cancel current selection + # menu bar active: bail out of current menu + # either way: bail on image conversion if it's happening + if self.app.converter: + self.app.converter.finish(True) + if self.ui.menu_bar.active_menu_name: + self.ui.menu_bar.close_active_menu() + elif self.app.game_mode: + # bail out of list if it's active + if self.ui.keyboard_focus_element is self.ui.edit_list_panel: + self.ui.edit_list_panel.cancel() + else: + self.app.gw.deselect_all() + else: + self.ui.select_none() + + def BIND_select_all(self): + self.ui.select_all() + + def BIND_select_invert(self): + self.ui.invert_selection() + + def BIND_edit_cfg(self): + self.ui.menu_bar.close_active_menu() + self.app.edit_cfg() + + def BIND_erase_selection_or_art(self): + # if in game mode, delete selected objects + if self.app.game_mode: + # operate on a copy of selected objects list, + # as obj.destroy() removes itself from original + for obj in self.app.gw.selected_objects[:]: + # some objects can't be deleted + if obj.deleteable: + obj.destroy() + else: + self.ui.erase_selection_or_art() + + def BIND_toggle_game_mode(self): + if not self.app.can_edit: + return + if not self.app.game_mode: + self.app.enter_game_mode() + else: + self.app.exit_game_mode() + self.app.update_window_title() + + def BIND_new_game_dir(self): + self.ui.open_dialog(NewGameDirDialog) + + def BIND_set_game_dir(self): + if self.app.can_edit: + # show available games in list panel + self.ui.edit_list_panel.set_list_operation(LO_OPEN_GAME_DIR) + + def BIND_load_game_state(self): + self.ui.edit_list_panel.set_list_operation(LO_LOAD_STATE) + + def BIND_save_game_state(self): + self.ui.open_dialog(SaveGameStateDialog) + + def BIND_reset_game(self): + if self.app.game_mode and self.app.gw.game_dir: + self.app.gw.reset_game() + + def BIND_toggle_picker(self): + if not self.ui.active_art: + return + if self.ui.popup_hold_to_show: + self.ui.popup.show() + else: + self.ui.popup.toggle() + + def BIND_toggle_picker_hold(self): + self.ui.popup_hold_to_show = not self.ui.popup_hold_to_show + self.ui.menu_bar.refresh_active_menu() + + def BIND_swap_fg_bg_colors(self): + if self.ui.active_art: + self.ui.swap_fg_bg_colors() + + def BIND_save_current(self): + # save current game state in game mode, else save current art + if self.app.game_mode and self.app.gw.game_dir: + # as with reset, save over last loaded state + self.app.gw.save_last_state() + elif self.ui.active_art: + # if new document, ask for a name + default_name = ART_DIR + 'new.' + ART_FILE_EXTENSION + if self.ui.active_art.filename == default_name: + self.ui.open_dialog(SaveAsDialog) + else: + self.ui.active_art.save_to_file() + + def BIND_toggle_ui_visibility(self): + self.ui.visible = not self.ui.visible + + def BIND_toggle_grid_visibility(self): + self.app.grid.visible = not self.app.grid.visible + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_bg_texture(self): + self.app.show_bg_texture = not self.app.show_bg_texture + self.ui.menu_bar.refresh_active_menu() + + def BIND_previous_frame(self): + self.ui.set_active_frame(self.ui.active_art.active_frame - 1) + + def BIND_next_frame(self): + self.ui.set_active_frame(self.ui.active_art.active_frame + 1) + + def BIND_toggle_anim_playback(self): + # if game mode, pause/unpause + if self.app.game_mode: + self.toggle_pause() + return + for r in self.ui.active_art.renderables: + if r.animating: + r.stop_animating() + else: + r.start_animating() + self.ui.menu_bar.refresh_active_menu() + + def toggle_pause(self): + self.app.gw.toggle_pause() + self.ui.menu_bar.refresh_active_menu() + + def BIND_previous_layer(self): + self.ui.set_active_layer(self.ui.active_art.active_layer - 1) + self.ui.menu_bar.refresh_active_menu() + + def BIND_next_layer(self): + self.ui.set_active_layer(self.ui.active_art.active_layer + 1) + self.ui.menu_bar.refresh_active_menu() + + def BIND_previous_art(self): + self.ui.previous_active_art() + self.ui.menu_bar.refresh_active_menu() + + def BIND_next_art(self): + if len(self.app.art_loaded_for_edit) == 0: + return + self.ui.next_active_art() + self.ui.menu_bar.refresh_active_menu() + + def BIND_undo(self): + self.ui.undo() + + def BIND_redo(self): + self.ui.redo() + + def BIND_quick_grab(self): + if not self.ui.active_art: + return + self.app.keyboard_editing = True + self.ui.quick_grab() + + def BIND_set_camera_zoom(self): + self.ui.open_dialog(SetCameraZoomDialog) + + def BIND_camera_zoom_in_proportional(self): + self.app.camera.zoom_proportional(1) + + def BIND_camera_zoom_out_proportional(self): + self.app.camera.zoom_proportional(-1) + + def BIND_toggle_zoom_extents(self): + self.app.camera.toggle_zoom_extents() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_camera_tilt(self): + if self.app.camera.y_tilt == 2: + self.app.camera.y_tilt = 0 + self.ui.message_line.post_line('Camera tilt disengaged.') + else: + self.app.camera.y_tilt = 2 + self.ui.message_line.post_line('Camera tilt engaged.') + self.ui.menu_bar.refresh_active_menu() + + def BIND_select_overlay_image(self): + self.ui.open_dialog(OverlayImageFileChooserDialog) + + def BIND_toggle_overlay_image(self): + self.app.draw_overlay = not self.app.draw_overlay + self.ui.menu_bar.refresh_active_menu() + + def BIND_set_overlay_image_opacity(self): + self.ui.open_dialog(OverlayImageOpacityDialog) + + def BIND_set_overlay_image_scaling(self): + if self.app.overlay_scale_type == OIS_WIDTH: + self.app.overlay_scale_type = OIS_HEIGHT + elif self.app.overlay_scale_type == OIS_HEIGHT: + self.app.overlay_scale_type = OIS_FILL + elif self.app.overlay_scale_type == OIS_FILL: + self.app.overlay_scale_type = OIS_WIDTH + self.ui.size_and_position_overlay_image() + self.ui.menu_bar.refresh_active_menu() + + def BIND_add_to_list_selection(self): + if not self.ui.edit_list_panel.is_visible(): + return + self.ui.edit_list_panel.keyboard_select_item() + + def BIND_remove_from_list_selection(self): + if not self.ui.edit_list_panel.is_visible(): + return + self.ui.edit_list_panel.keyboard_select_item() + + def BIND_select_or_paint(self): + if self.ui.keyboard_focus_element: + # save current focus element because kb_select_item might change it! + selected_element = self.ui.keyboard_focus_element + # get button pressed in case we need its item + button = self.ui.keyboard_focus_element.keyboard_select_item() + if selected_element is self.ui.pulldown: + # mirror behavior from MenuItemButton.click: close on select if needed + if button and button.item.close_on_select: + self.ui.menu_bar.close_active_menu() + return + if not self.ui.active_art: + return + elif self.ui.selected_tool is self.ui.text_tool and not self.ui.text_tool.input_active: + self.ui.text_tool.start_entry() + elif self.ui.selected_tool is self.ui.select_tool: + if self.ui.select_tool.selection_in_progress: + # pass in shift/alt for add/subtract + self.ui.select_tool.finish_select(self.shift_pressed, self.ctrl_pressed) + else: + self.ui.select_tool.start_select() + else: + self.app.cursor.start_paint() + + def BIND_screenshot(self): + self.app.screenshot() + + def BIND_run_test_mutate(self): + if self.ui.active_art.is_script_running('conway'): + self.ui.active_art.stop_script('conway') + else: + self.ui.active_art.run_script_every('conway', 0.05) + + def BIND_arrow_up(self): + if self.ui.keyboard_focus_element: + self.ui.keyboard_navigate(0, -1) + else: + self.app.cursor.keyboard_move(0, 1) + + def BIND_arrow_down(self): + if self.ui.keyboard_focus_element: + self.ui.keyboard_navigate(0, 1) + else: + self.app.cursor.keyboard_move(0, -1) + + def BIND_arrow_left(self): + # navigate popup, menu bar etc + if self.ui.keyboard_focus_element: + self.ui.keyboard_navigate(-1, 0) + else: + self.app.cursor.keyboard_move(-1, 0) + + def BIND_arrow_right(self): + if self.ui.keyboard_focus_element: + self.ui.keyboard_navigate(1, 0) + else: + self.app.cursor.keyboard_move(1, 0) + + def BIND_cycle_inactive_layer_visibility(self): + if not self.ui.active_art: + return + if self.ui.active_art.layers == 1: + return + message_text = 'Non-active layers: ' + if self.app.inactive_layer_visibility == LAYER_VIS_FULL: + self.app.inactive_layer_visibility = LAYER_VIS_DIM + message_text += 'dim' + elif self.app.inactive_layer_visibility == LAYER_VIS_DIM: + self.app.inactive_layer_visibility = LAYER_VIS_NONE + message_text += 'invisible' + else: + self.app.inactive_layer_visibility = LAYER_VIS_FULL + message_text += 'visible' + self.ui.message_line.post_line(message_text) + self.ui.menu_bar.refresh_active_menu() + + def BIND_open_file_menu(self): + self.ui.menu_bar.open_menu_by_name('file') + + def BIND_open_edit_menu(self): + self.ui.menu_bar.open_menu_by_name('edit') + + def BIND_open_tool_menu(self): + self.ui.menu_bar.open_menu_by_name('tool') + + def BIND_open_view_menu(self): + self.ui.menu_bar.open_menu_by_name('view') + + def BIND_open_art_menu(self): + self.ui.menu_bar.open_menu_by_name('art') + + def BIND_open_frame_menu(self): + if self.app.game_mode: + self.ui.menu_bar.open_menu_by_name('room') + else: + self.ui.menu_bar.open_menu_by_name('frame') + + def BIND_open_layer_menu(self): + self.ui.menu_bar.open_menu_by_name('layer') + + def BIND_open_char_color_menu(self): + self.ui.menu_bar.open_menu_by_name('char_color') + + def BIND_open_help_menu(self): + self.ui.menu_bar.open_menu_by_name('help') + + def BIND_open_game_menu(self): + self.ui.menu_bar.open_menu_by_name('game') + + def BIND_open_state_menu(self): + self.ui.menu_bar.open_menu_by_name('state') + + def BIND_open_world_menu(self): + self.ui.menu_bar.open_menu_by_name('world') + + def BIND_open_object_menu(self): + self.ui.menu_bar.open_menu_by_name('object') + + def BIND_new_art(self): + self.ui.open_dialog(NewArtDialog) + + def BIND_open_art(self): + self.ui.open_dialog(ArtChooserDialog) + + def BIND_save_art_as(self): + if self.app.game_mode: + self.ui.open_dialog(SaveGameStateDialog) + elif not self.ui.active_art: + return + else: + self.ui.open_dialog(SaveAsDialog) + + def BIND_revert_art(self): + if not self.ui.active_art: + return + if self.ui.active_art.unsaved_changes: + self.ui.open_dialog(RevertChangesDialog) + + def BIND_close_art(self): + if not self.ui.active_art: + return + if self.ui.active_art.unsaved_changes: + self.ui.open_dialog(CloseUnsavedChangesDialog) + return + self.app.close_art(self.ui.active_art) + # dismiss popup if no more arts are open + if self.ui.popup.visible and len(self.app.art_loaded_for_edit) == 0: + self.ui.popup.hide() + + def BIND_open_help_docs(self): + self.app.open_help_docs() + + def BIND_generate_docs(self): + self.app.generate_docs() + + def BIND_open_website(self): + self.app.open_website() + + def BIND_crop_to_selection(self): + self.ui.crop_to_selection(self.ui.active_art) + + def BIND_resize_art(self): + self.ui.open_dialog(ResizeArtDialog) + + def BIND_art_flip_horizontal(self): + self.ui.active_art.flip_horizontal(self.ui.active_art.active_frame, + self.ui.active_art.active_layer) + + def BIND_art_flip_vertical(self): + self.ui.active_art.flip_vertical(self.ui.active_art.active_frame, + self.ui.active_art.active_layer) + + def BIND_art_toggle_flip_affects_xforms(self): + self.ui.flip_affects_xforms = not self.ui.flip_affects_xforms + self.ui.menu_bar.refresh_active_menu() + + def BIND_run_art_script(self): + self.ui.open_dialog(RunArtScriptDialog) + + def BIND_run_art_script_last(self): + # if user hasn't run a script this session, pick one + if not self.ui.app.last_art_script: + self.BIND_run_art_script() + else: + self.ui.active_art.run_script(self.ui.app.last_art_script, log=False) + + def BIND_art_switch_to(self, art_filename): + self.ui.set_active_art_by_filename(art_filename) + self.ui.menu_bar.refresh_active_menu() + + def BIND_add_frame(self): + self.ui.open_dialog(AddFrameDialog) + + def BIND_duplicate_frame(self): + self.ui.open_dialog(DuplicateFrameDialog) + + def BIND_change_frame_delay(self): + self.ui.open_dialog(FrameDelayDialog) + + def BIND_change_frame_delay_all(self): + self.ui.open_dialog(FrameDelayAllDialog) + + def BIND_delete_frame(self): + self.ui.active_art.delete_frame_at(self.ui.active_art.active_frame) + # if we're now down to 1 frame, refresh to dim this item! + # FIXME: this doesn't dim it - why? - but it is unselectable + self.ui.menu_bar.refresh_active_menu() + + def BIND_change_frame_index(self): + self.ui.open_dialog(FrameIndexDialog) + + def BIND_add_layer(self): + self.ui.open_dialog(AddLayerDialog) + + def BIND_duplicate_layer(self): + self.ui.open_dialog(DuplicateLayerDialog) + + def BIND_layer_switch_to(self, layer_number): + self.ui.set_active_layer(layer_number) + self.ui.menu_bar.refresh_active_menu() + + def BIND_change_layer_name(self): + self.ui.open_dialog(SetLayerNameDialog) + + def BIND_change_layer_z(self): + self.ui.open_dialog(SetLayerZDialog) + + def BIND_toggle_layer_visibility(self): + art = self.ui.active_art + is_visible = art.layers_visibility[art.active_layer] + art.layers_visibility[art.active_layer] = not is_visible + art.set_unsaved_changes(True) + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_hidden_layers_visible(self): + self.app.show_hidden_layers = not self.app.show_hidden_layers + self.ui.menu_bar.refresh_active_menu() + + def BIND_delete_layer(self): + self.ui.active_art.delete_layer(self.ui.active_art.active_layer) + self.ui.menu_bar.refresh_active_menu() + + def BIND_choose_charset(self): + self.ui.open_dialog(CharSetChooserDialog) + + def BIND_choose_palette(self): + self.ui.open_dialog(PaletteChooserDialog) + + def BIND_palette_from_file(self): + self.ui.open_dialog(PaletteFromImageChooserDialog) + + def BIND_toggle_onion_visibility(self): + self.app.onion_frames_visible = not self.app.onion_frames_visible + if self.app.onion_frames_visible: + self.ui.reset_onion_frames() + self.ui.menu_bar.refresh_active_menu() + + def BIND_cycle_onion_frames(self): + self.app.onion_show_frames += 1 + self.app.onion_show_frames %= self.app.max_onion_frames + 1 + # start cycle at 1, not 0 + self.app.onion_show_frames = max(1, self.app.onion_show_frames) + self.ui.menu_bar.refresh_active_menu() + + def BIND_cycle_onion_ahead_behind(self): + # cycle between next, previous, next & previous + if self.app.onion_show_frames_behind and self.app.onion_show_frames_ahead: + self.app.onion_show_frames_behind = False + elif not self.app.onion_show_frames_behind and self.app.onion_show_frames_ahead: + self.app.onion_show_frames_behind = True + self.app.onion_show_frames_ahead = False + else: + self.app.onion_show_frames_ahead = True + self.app.onion_show_frames_ahead = True + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_debug_text(self): + self.ui.debug_text.visible = not self.ui.debug_text.visible + + def BIND_toggle_fps_counter(self): + self.ui.fps_counter.visible = not self.ui.fps_counter.visible + + def BIND_open_all_game_assets(self): + for game_obj in self.app.gw.objects.values(): + for art_filename in game_obj.get_all_art(): + self.app.load_art_for_edit(art_filename) + # open all hud assets too + for art in self.app.gw.hud.arts: + self.app.load_art_for_edit(art.filename) + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_all_collision_viz(self): + self.app.gw.toggle_all_collision_viz() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_all_bounds_viz(self): + self.app.gw.toggle_all_bounds_viz() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_all_origin_viz(self): + self.app.gw.toggle_all_origin_viz() + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_collision_on_selected(self): + for obj in self.app.gw.selected_objects: + if obj.orig_collision_type and obj.collision_type == CT_NONE: + obj.enable_collision() + self.ui.message_line.post_line('Collision enabled for %s' % obj.name) + elif obj.collision_type != CT_NONE: + obj.disable_collision() + self.ui.message_line.post_line('Collision disabled for %s' % obj.name) + + def BIND_toggle_game_edit_ui(self): + self.ui.toggle_game_edit_ui() + + # + # game mode binds + # + def accept_normal_game_input(self): + return self.app.game_mode and self.app.gw.player and not self.ui.active_dialog and not self.ui.pulldown.visible + + # TODO: generalize these two somehow + def BIND_game_frob(self): + if self.accept_normal_game_input(): + self.app.gw.player.button_pressed(1) + + def BIND_game_grab(self): + if self.accept_normal_game_input(): + self.app.gw.player.button_pressed(0) + + def BIND_center_cursor_in_art(self): + self.app.cursor.center_in_art() + + def BIND_choose_spawn_object_class(self): + if self.app.game_mode and self.app.gw.game_dir: + self.ui.edit_list_panel.set_list_operation(LO_SET_SPAWN_CLASS) + + def BIND_duplicate_selected_objects(self): + self.app.gw.duplicate_selected_objects() + + def BIND_select_objects(self): + if self.app.game_mode and self.app.gw.game_dir: + self.ui.edit_list_panel.set_list_operation(LO_SELECT_OBJECTS) + + def BIND_edit_art_for_selected_objects(self): + self.app.gw.edit_art_for_selected() + + def BIND_edit_world_properties(self): + self.app.gw.deselect_all() + self.app.gw.select_object(self.app.gw.properties, force=True) + + def BIND_change_current_room(self): + self.ui.edit_list_panel.set_list_operation(LO_SET_ROOM) + + def BIND_change_current_room_to(self, new_room_name): + self.app.gw.change_room(new_room_name) + self.ui.menu_bar.refresh_active_menu() + + def BIND_add_room(self): + self.ui.open_dialog(AddRoomDialog) + + def BIND_remove_current_room(self): + self.app.gw.remove_room(self.app.gw.current_room.name) + + def BIND_set_room_objects(self): + self.ui.edit_list_panel.set_list_operation(LO_SET_ROOM_OBJECTS) + + def BIND_set_object_rooms(self): + self.ui.edit_list_panel.set_list_operation(LO_SET_OBJECT_ROOMS) + + def BIND_toggle_all_rooms_visible(self): + self.app.gw.show_all_rooms = not self.app.gw.show_all_rooms + self.ui.menu_bar.refresh_active_menu() + + def BIND_toggle_room_camera_changes(self): + self.app.gw.properties.set_object_property('room_camera_changes_enabled', not self.app.gw.room_camera_changes_enabled) + self.ui.menu_bar.refresh_active_menu() + + def BIND_set_room_camera_marker(self): + self.ui.open_dialog(SetRoomCamDialog) + self.ui.edit_list_panel.set_list_operation(LO_SET_ROOM_CAMERA) + + def BIND_objects_to_camera(self): + cam = self.app.gw.camera + for obj in self.app.gw.selected_objects: + obj.set_loc(cam.x, cam.y, cam.z) + + def BIND_camera_to_objects(self): + if len(self.app.gw.selected_objects) == 0: + return + obj = self.app.gw.selected_objects[0] + self.app.gw.camera.set_loc_from_obj(obj) + + def BIND_add_selected_to_room(self): + if not self.app.gw.current_room: + return + for obj in self.app.gw.selected_objects: + self.app.gw.current_room.add_object(obj) + + def BIND_remove_selected_from_room(self): + if not self.app.gw.current_room: + return + for obj in self.app.gw.selected_objects: + self.app.gw.current_room.remove_object(obj) + + def BIND_switch_edit_panel_focus(self): + self.ui.switch_edit_panel_focus() + + def BIND_switch_edit_panel_focus_reverse(self): + self.ui.switch_edit_panel_focus(reverse=True) + + def BIND_set_room_edge_warps(self): + # bring up dialog before setting list so list knows about it + self.ui.open_dialog(SetRoomEdgeWarpsDialog) + self.ui.edit_list_panel.set_list_operation(LO_SET_ROOM_EDGE_WARP) + + def BIND_set_room_bounds_obj(self): + self.ui.open_dialog(SetRoomBoundsObjDialog) + self.ui.edit_list_panel.set_list_operation(LO_SET_ROOM_EDGE_OBJ) + + def BIND_toggle_list_only_room_objects(self): + self.app.gw.list_only_current_room_objects = not self.app.gw.list_only_current_room_objects + self.ui.menu_bar.refresh_active_menu() + + def BIND_rename_current_room(self): + self.ui.open_dialog(RenameRoomDialog) + + def BIND_toggle_debug_objects(self): + if not self.app.gw.properties: + return + self.app.gw.properties.set_object_property('draw_debug_objects', not self.app.gw.draw_debug_objects) + self.ui.menu_bar.refresh_active_menu() diff --git a/key_shifts.py b/key_shifts.py new file mode 100644 index 0000000..d5c6307 --- /dev/null +++ b/key_shifts.py @@ -0,0 +1,44 @@ +# dict for key shift-char mappings + +import sdl2 + +# MAYBE-TODO: find out if this breaks for non-US english KB layouts + +SHIFT_MAP = { + '1': '!', '2': '@', '3': '#', '4': '$', '5': '%', '6': '^', '7': '&', '8': '*', + '9': '(', '0': ')', '-': '_', '=': '+', '`': '~', '[': '{', ']': '}', '\\': '|', + ';': ':', "'": '"', ',': '<', '.': '>', '/': '?' +} + +NUMLOCK_ON_MAP = { + sdl2.SDLK_KP_0: sdl2.SDLK_0, + sdl2.SDLK_KP_1: sdl2.SDLK_1, + sdl2.SDLK_KP_2: sdl2.SDLK_2, + sdl2.SDLK_KP_3: sdl2.SDLK_3, + sdl2.SDLK_KP_4: sdl2.SDLK_4, + sdl2.SDLK_KP_5: sdl2.SDLK_5, + sdl2.SDLK_KP_6: sdl2.SDLK_6, + sdl2.SDLK_KP_7: sdl2.SDLK_7, + sdl2.SDLK_KP_8: sdl2.SDLK_8, + sdl2.SDLK_KP_9: sdl2.SDLK_9, + sdl2.SDLK_KP_DIVIDE: sdl2.SDLK_SLASH, + sdl2.SDLK_KP_MULTIPLY: sdl2.SDLK_ASTERISK, + sdl2.SDLK_KP_PLUS: sdl2.SDLK_PLUS, + sdl2.SDLK_KP_MINUS: sdl2.SDLK_MINUS, + sdl2.SDLK_KP_PERIOD: sdl2.SDLK_PERIOD, + sdl2.SDLK_KP_ENTER: sdl2.SDLK_RETURN +} + +NUMLOCK_OFF_MAP = { + sdl2.SDLK_KP_0: sdl2.SDLK_INSERT, + sdl2.SDLK_KP_1: sdl2.SDLK_END, + sdl2.SDLK_KP_2: sdl2.SDLK_DOWN, + sdl2.SDLK_KP_3: sdl2.SDLK_PAGEDOWN, + sdl2.SDLK_KP_4: sdl2.SDLK_LEFT, + sdl2.SDLK_KP_6: sdl2.SDLK_RIGHT, + sdl2.SDLK_KP_7: sdl2.SDLK_HOME, + sdl2.SDLK_KP_8: sdl2.SDLK_UP, + sdl2.SDLK_KP_9: sdl2.SDLK_PAGEUP, + sdl2.SDLK_KP_PERIOD: sdl2.SDLK_DELETE, + sdl2.SDLK_KP_ENTER: sdl2.SDLK_RETURN +} diff --git a/lab_color.py b/lab_color.py new file mode 100644 index 0000000..e84561b --- /dev/null +++ b/lab_color.py @@ -0,0 +1,62 @@ +# L*a*b color space conversion +# from EDSCII + +import math + +def rgb_to_xyz(r, g, b): + r /= 255.0 + g /= 255.0 + b /= 255.0 + if r > 0.04045: + r = ((r + 0.055) / 1.055)**2.4 + else: + r /= 12.92 + if g > 0.04045: + g = ((g + 0.055) / 1.055)**2.4 + else: + g /= 12.92 + if b > 0.04045: + b = ((b + 0.055) / 1.055)**2.4 + else: + b /= 12.92 + r *= 100 + g *= 100 + b *= 100 + # observer: 2deg, illuminant: D65 + x = r * 0.4124 + g * 0.3576 + b * 0.1805 + y = r * 0.2126 + g * 0.7152 + b * 0.0722 + z = r * 0.0193 + g * 0.1192 + b * 0.9505 + return x, y, z + +def xyz_to_lab(x, y, z): + # observer: 2deg, illuminant: D65 + x /= 95.047 + y /= 100.0 + z /= 108.883 + if x > 0.008856: + x = x**(1.0/3) + else: + x = (7.787 * x) + (16.0 / 116) + if y > 0.008856: + y = y**(1.0/3) + else: + y = (7.787 * y) + (16.0 / 116) + if z > 0.008856: + z = z**(1.0/3) + else: + z = (7.787 * z) + (16.0 / 116) + l = (116 * y) - 16 + a = 500 * (x - y) + b = 200 * (y - z) + return l, a, b + +def rgb_to_lab(r, g, b): + x, y, z = rgb_to_xyz(r, g, b) + return xyz_to_lab(x, y, z) + +def lab_color_diff(l1, a1, b1, l2, a2, b2): + "quick n' dirty CIE 1976 color delta" + dl = (l1 - l2)**2 + da = (a1 - a2)**2 + db = (b1 - b2)**2 + return math.sqrt(dl + da + db) diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..b8de7b9 --- /dev/null +++ b/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2022 JP LeBreton + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/palette.py b/palette.py new file mode 100644 index 0000000..31b1bca --- /dev/null +++ b/palette.py @@ -0,0 +1,280 @@ +import os.path, math, time +from random import randint +from PIL import Image + +from texture import Texture +from lab_color import rgb_to_lab, lab_color_diff + +PALETTE_DIR = 'palettes/' +PALETTE_EXTENSIONS = ['png', 'gif', 'bmp'] +MAX_COLORS = 1024 + +class PaletteLord: + + # time in ms between checks for hot reload + hot_reload_check_interval = 2 * 1000 + + def __init__(self, app): + self.app = app + self.last_check = 0 + + def check_hot_reload(self): + if self.app.get_elapsed_time() - self.last_check < self.hot_reload_check_interval: + return + self.last_check = self.app.get_elapsed_time() + changed = None + for palette in self.app.palettes: + if palette.has_updated(): + changed = palette.filename + try: + palette.load_image() + self.app.log('PaletteLord: success reloading %s' % palette.filename) + except: + self.app.log('PaletteLord: failed reloading %s' % palette.filename, True) + + +class Palette: + + def __init__(self, app, src_filename, log): + self.init_success = False + self.app = app + self.filename = self.app.find_filename_path(src_filename, PALETTE_DIR, + PALETTE_EXTENSIONS) + if self.filename is None: + self.app.log("Couldn't find palette image %s" % src_filename) + return + self.last_image_change = os.path.getmtime(self.filename) + self.name = os.path.basename(self.filename) + self.name = os.path.splitext(self.name)[0] + self.load_image() + self.base_filename = os.path.splitext(os.path.basename(self.filename))[0] + if log and not self.app.game_mode: + self.app.log("loaded palette '%s' from %s:" % (self.name, self.filename)) + self.app.log(' unique colors found: %s' % int(len(self.colors)-1)) + self.app.log(' darkest color index: %s' % self.darkest_index) + self.app.log(' lightest color index: %s' % self.lightest_index) + self.init_success = True + + def load_image(self): + "loads palette data from the given bitmap image" + src_img = Image.open(self.filename) + src_img = src_img.convert('RGBA') + width, height = src_img.size + # store texture for chooser preview etc + self.src_texture = Texture(src_img.tobytes(), width, height) + # scan image L->R T->B for unique colors, store em as tuples + # color 0 is always fully transparent + self.colors = [(0, 0, 0, 0)] + # determine lightest and darkest colors in palette for defaults + lightest = 0 + darkest = 255 * 3 + 1 + self.lightest_index, self.darkest_index = 0, 0 + for y in range(height): + for x in range(width): + # bail if we've now read max colors + if len(self.colors) >= MAX_COLORS: + break + color = src_img.getpixel((x, y)) + if not color in self.colors: + self.colors.append(color) + # is this lightest/darkest unique color so far? save index + luminosity = color[0]*0.21 + color[1]*0.72 + color[2]*0.07 + if luminosity < darkest: + darkest = luminosity + self.darkest_index = len(self.colors) - 1 + elif luminosity > lightest: + lightest = luminosity + self.lightest_index = len(self.colors) - 1 + # create new 1D image with unique colors + img = Image.new('RGBA', (MAX_COLORS, 1), (0, 0, 0, 0)) + x = 0 + for color in self.colors: + img.putpixel((x, 0), color) + x += 1 + # debug: save out generated palette texture + #img.save('palette.png') + self.texture = Texture(img.tobytes(), MAX_COLORS, 1) + + def has_updated(self): + "return True if source image file has changed since last check" + changed = os.path.getmtime(self.filename) > self.last_image_change + if changed: + self.last_image_change = time.time() + return changed + + def generate_image(self): + width = min(16, len(self.colors) - 1) + height = math.floor((len(self.colors) - 1) / width) + # new PIL image, blank (0 alpha) pixels + img = Image.new('RGBA', (width, height), (0, 0, 0, 0)) + # set each pixel from color list (minus first, transparent color) + color_index = 1 + for y in range(height): + for x in range(width): + if color_index > len(self.colors) - 1: + break + img.putpixel((x, y), self.colors[color_index]) + color_index += 1 + return img + + def export_as_image(self): + img = self.generate_image() + block_size = 8 + # scale up + width, height = img.size + img = img.resize((width * block_size, height * block_size), + resample=Image.NEAREST) + # write to file + img_filename = self.app.documents_dir + PALETTE_DIR + self.name + '.png' + img.save(img_filename) + + def all_colors_opaque(self): + "returns True if we have any non-opaque (<1 alpha) colors" + for color in self.colors[1:]: + if color[3] < 255: + return False + return True + + def get_random_non_palette_color(self): + "returns random color not in this palette, eg for 8-bit transparency" + def rand_byte(): + return randint(0, 255) + # assume full alpha + r, g, b, a = rand_byte(), rand_byte(), rand_byte(), 255 + while (r, g, b, a) in self.colors: + r, g, b = rand_byte(), rand_byte(), rand_byte() + return r, g, b, a + + def get_palettized_image(self, src_img, transparent_color=(0, 0, 0), + force_no_transparency=False): + "returns a copy of source image quantized to this palette" + pal_img = Image.new('P', (1, 1)) + # source must be in RGB (no alpha) format + out_img = src_img.convert('RGB') + # Image.putpalette needs a flat tuple :/ + colors = [] + for i,color in enumerate(self.colors): + # ignore alpha for palettized image output + for channel in color[:-1]: + colors.append(channel) + # user-defined color 0 in case we want to do 8-bit transparency + if not force_no_transparency: + colors[0:3] = transparent_color + # PIL will fill out <256 color palettes with bogus values :/ + while len(colors) < MAX_COLORS * 3: + for i in range(3): + colors.append(0) + # palette for PIL must be exactly 256 colors + colors = colors[:256*3] + pal_img.putpalette(tuple(colors)) + return out_img.quantize(palette=pal_img) + + def are_colors_similar(self, color_index_a, palette_b, color_index_b, + tolerance=50): + """ + returns True if color index A is similar to color index B from + another palette. + """ + color_a = self.colors[color_index_a] + color_b = palette_b.colors[color_index_b % len(palette_b.colors)] + r_diff = abs(color_a[0] - color_b[0]) + g_diff = abs(color_a[1] - color_b[1]) + b_diff = abs(color_a[2] - color_b[2]) + return (r_diff + g_diff + b_diff) <= tolerance + + def get_closest_color_index(self, r, g, b): + "returns index of closest color in this palette to given color (kinda slow?)" + closest_diff = 99999999999 + closest_diff_index = -1 + for i,color in enumerate(self.colors): + l1, a1, b1 = rgb_to_lab(r, g, b) + l2, a2, b2 = rgb_to_lab(*color[:3]) + diff = lab_color_diff(l1, a1, b1, l2, a2, b2) + if diff < closest_diff: + closest_diff = diff + closest_diff_index = i + #print('%s is closest to input color %s' % (self.colors[closest_diff_index], (r, g, b))) + return closest_diff_index + + def get_random_color_index(self): + # exclude transparent first index + return randint(1, len(self.colors)) + + +class PaletteFromList(Palette): + + "palette created from list of 3/4-tuple base-255 colors instead of image" + + def __init__(self, app, src_color_list, log): + self.init_success = False + self.app = app + # generate a unique non-user-facing palette name + name = 'PaletteFromList_%s' % time.time() + self.filename = self.name = self.base_filename = name + colors = [] + for color in src_color_list: + # assume 1 alpha if not given + if len(color) == 3: + colors.append((color[0], color[1], color[2], 255)) + else: + colors.append(color) + self.colors = [(0, 0, 0, 0)] + colors + lightest = 0 + darkest = 255 * 3 + 1 + for color in self.colors: + luminosity = color[0]*0.21 + color[1]*0.72 + color[2]*0.07 + if luminosity < darkest: + darkest = luminosity + self.darkest_index = len(self.colors) - 1 + elif luminosity > lightest: + lightest = luminosity + self.lightest_index = len(self.colors) - 1 + # create texture + img = Image.new('RGBA', (MAX_COLORS, 1), (0, 0, 0, 0)) + x = 0 + for color in self.colors: + img.putpixel((x, 0), color) + x += 1 + self.texture = Texture(img.tobytes(), MAX_COLORS, 1) + if log and not self.app.game_mode: + self.app.log("generated new palette '%s'" % (self.name)) + self.app.log(' unique colors: %s' % int(len(self.colors)-1)) + self.app.log(' darkest color index: %s' % self.darkest_index) + self.app.log(' lightest color index: %s' % self.lightest_index) + + def has_updated(self): + "No bitmap source for this type of palette, so no hot-reload" + return False + + +class PaletteFromFile(Palette): + + def __init__(self, app, src_filename, palette_filename, colors=MAX_COLORS): + self.init_success = False + src_filename = app.find_filename_path(src_filename) + if not src_filename: + app.log("Couldn't find palette source image %s" % src_filename) + return + # dither source image, re-save it, use that as the source for a palette + src_img = Image.open(src_filename) + # method: + src_img = src_img.convert('P', None, Image.FLOYDSTEINBERG, Image.ADAPTIVE, colors) + src_img = src_img.convert('RGBA') + # write converted source image with new filename + # snip path & extension if it has em + palette_filename = os.path.basename(palette_filename) + palette_filename = os.path.splitext(palette_filename)[0] + # get most appropriate path for palette image + palette_path = app.get_dirnames(PALETTE_DIR, False)[0] + # if new filename exists, add a number to avoid overwriting + if os.path.exists(palette_path + palette_filename + '.png'): + i = 0 + while os.path.exists('%s%s%s.png' % (palette_path, palette_filename, str(i))): + i += 1 + palette_filename += str(i) + # (re-)add path and PNG extension + palette_filename = palette_path + palette_filename + '.png' + src_img.save(palette_filename) + # create the actual palette and export it as an image + Palette.__init__(self, app, palette_filename, True) + self.export_as_image() diff --git a/palettes/ansi-240.png b/palettes/ansi-240.png new file mode 100644 index 0000000000000000000000000000000000000000..e4db7432044b0833733427570646dc47b06a5d34 GIT binary patch literal 4493 zcmeH~c~DbX7Kf9tML>vXi%Zi)a0w_$42~=Ui7W!5ZHjgjOW9f?(gHz}7z(0~9cHvk(cc~|fwr%U1L+NW2 z&&;U5Cnr}hULI&)t2Lx|ox7HS&R$tnoVsa|cim_fQMmS--7FImXN&L4%fidbtl|a< zkGxyWf);Vctf^aTZ=NAE`4Qs|&muaIQopq;>S!WunrZjcIxdXxh!jfs z$vm&zCU&d%Ve8yOE}Wk%TIhN6<>Ic!pxck-;oZl?^`Yk1z0NXMaZcSmUSdDbI@N-r zV2YS^Od7MueGW5%^^E0t;>@N3@htB_`;D`C=i&=!o}_@4f4uF*u9g0{@LEXlZFk0& z4Z*it4^qNP?#Zk7+nO9~a>*`g^D#Hi z+-07VG-zpe*iK~=Z@A~57hSd^(KJ@;xtv+utH-dKc_t?Mh2}Z3nHYvOJi{>A;jA%} z{#P6u!a`v}-;rH*wr~#R2^%8>5$o4^Z|5h`W8?T=^XQ_a6gVdW!AIl`W)e>jOBE$0 zCZ~Cee4XC)@CF-iW;jvbbrJ0Hb&6Qer3Ua*dDK79SJ0VGewI`!)h9J>hj)13nh(R_ zpRdzSfgr`3!4L|CbfG()pBm3t?&amhV6qr2mK*eNOG{4{#ERUK)12Q2`B$7kUfTB5 zgcLynKbeZhjs2RxN8sz^girMG^M0K?QNnLCC8vGZ7Hp7#dl<{HB-P7IYUH^ac{5In!Be#4qlF9sZW0hgbp z591?xKg*mN)>j0AjdN(=>Ww1e(BH2dE#Lf^Ss!NGee%i@J2&6(C(E;it5rWgdmb7P z6m*=m$ZTiS;_DA>=;z)>o;XoEX76&f@}aO?JLIky_c_`>IgIt7`l0CLQoZM%@qvD2 zvR;c0C8ar54r3#4__fCL@yeb7l)Wc&-x_VV^ILWR20#9o^C;%3VIO^cTKDow4|b{f zDl&mqH7b#dj=q_Vreq5B!3-|yAiMzPc}p7RDoY`mk_Dy(NOPnskz{(2)Fx|Vlo5y| z2clZJyKt?Tkabb4snS?2;fOiG9G&p-Svx96>MAu{GTfOqWx{1C)XKq**6#kXN8_iu zOOGQCiJiIK>@RM$qC-aYt4XZvuA?kl%Z|@z9=BCl?Ik;oC{obNK8Qpu*-(tEEH5`U z3MMkyjngXf$;keS#CNQ@c3gCk=nAmj39QfEN(9ygzN1f%PJyI{JWp z7_dGk*6?2_76a>0j;^rpF3#FTYABt&3aqC{xGaSP3HhO_b>!Ik;Gd(LMs%KA`}Ste zIO5^>#Nc8acArnp+^-t#kZ%7*7u4FvB>y+NWw9CQWKMJW+usE}V^9`t_+3POk2e zMe*~Ibp5m3R(q8pQi$%wvop(>`%K`s3frBdRf+cMwX)|+&S)2K(tR3?x}r?~xl#k# z)uSJfSeC#Qmve|}c1pt0b%1XpM^|}Z08lZx9G&g966cvz4)rrGdO?~F=&fgQQIo=f z762GxR)DzfJPGVg%nC61SuYkGNH|eFRYTT&&R%RpY;I}>SEXj?Jq{W5`?8mio4275fI$RQ|3R;!*Xt{18)HwR66kqp8XUqI(<(up8ZxdOhamd)kqge z4f9{HaG{yaMb&0`xa9x;7Fc)FsQR_V=)~&rU_16Kp;f8cHQO7Iv&#K$L6}Yer@aB5fp%!30e@g1oR zQT-BG49+&?d{7#>KT$19d43s$ov402okHcroDyrI>jazO`6$+mn?q?>4LZ-*c4H}A zA&zdJ35Y`kJTC3&|M&}Ng4ECe;mOND_N@ws+rY_1d+}AwhNtm&VL~1_X$b#+wVV{) z@auy!?%$3_khje*N306+CBvBGbBlu4Y+rP_Vfay0bctgWM%H#sJn!t(!3L_sIl8KC z^A0ZBJ5X;vBmDC~nda?Xlu#9GPY$9nX&}_R_zk*2W0c*^@4>cwK6}G*! zd-xYqa-uyK?THraAJ{Q4IMx&|8MrYsbWz{0VEwxfm#ZCD%PF@q%rk)ZpwlHA7-1)x_`z UzjEnS_}hDE(3gRi{bLUN6V!M&5C8xG literal 0 HcmV?d00001 diff --git a/palettes/ansi.png b/palettes/ansi.png new file mode 100644 index 0000000000000000000000000000000000000000..24a9ac860d4d77e55e3971366daeb957e75074c5 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^4M42M!VDz;h4yg+DT4r?5LY10z_1Dk8CIX2#bh{$qXh|E|DLcR%U8?Y|H(?D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD+3&M3in1sMWE9!~g+6$?IEGZ*dV6;xZ<7NzxmZY@AjWE z-c|o9|KeZGn*X2QP2BrGQTlGY`G?~y4Gazp3Jd}a91JWBObm>~a;I%sd0nXXfJx1w z-|uUC-<2nS`x86=uKjfHZ+~*X{W1Mh&z#Rt!_-Kg;bNbdUG({w-b6}W1Nxo8)78&q Iol`;+0Dm=RQvd(} literal 0 HcmV?d00001 diff --git a/palettes/arne16.png b/palettes/arne16.png new file mode 100644 index 0000000000000000000000000000000000000000..caa77a52c6be3cf960a58877433d1b095c9db677 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^4M1$b!VDy}Z{_!bH~~H(u0VS3+`0e%|KF!({2;&E z(?)wqiqh*&!|#u>^*#JtI;9q$Q`sfeKvkE0}<5~cOC$R+B{txLp+WrConKMDg-bwB`Xv#HU%hnFgFz` zykKaW>9B!|qm22Wq{0qvmiG-0>;(*ZqzrO+Bv=&b#;`Rwi=j2q;cbSCo`XZu0w%VQ3qVaqJPe^CCq&tOYOXX)OlMeekRfUE)eH&K c1Ph?kyw_>5#W=Ek1iFa9)78&qol`;+0RQ1t#sB~S literal 0 HcmV?d00001 diff --git a/palettes/atari.png b/palettes/atari.png new file mode 100644 index 0000000000000000000000000000000000000000..5641af2653cf68dfc8b4c7ffa0fc38124f8ac62b GIT binary patch literal 2122 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 bClAUCzq69g&~R7_G?u~B)z4*}Q$iB}!LLs2 literal 0 HcmV?d00001 diff --git a/palettes/c64_pepto.png b/palettes/c64_pepto.png new file mode 100644 index 0000000000000000000000000000000000000000..708313532776be8976e7844729d01f7df7d59fc8 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0y~yU^D=-g*n)Or1+M=`#_2<$=lrpNCUx7=iT){inG8Y zvY3H^TNs2H8D`Cq01C2~c>21s-{%lwG-1>*uDl5p+V1J%7*cWT?G@cFCq@Rhi_1?Y z2@+n z#A=<>5vz@}jz%p{HNTcse>Z7u7UPG7JUj*l49v_11_ur>@bG{M>;gZwo44PRe6l_2 RbOO)|44$rjF6*2UngBpTXb=DZ literal 0 HcmV?d00001 diff --git a/palettes/cpc.png b/palettes/cpc.png new file mode 100644 index 0000000000000000000000000000000000000000..f74196fcc4810994468e1a510e32d3dce0157594 GIT binary patch literal 1676 zcmeAS@N?(olHy`uVBq!ia0y~yU{nCIvpJZ7O;6G3ikne97@YEK;c8igjcOKJb zL4n6A3``w?Sq^i}e=q`_pJqr(YV4TUD9F{qc1yEan1MxrTV1Dt?Urh@2s}{O7+Mzc UYp|s`N`vySr>mdKI;Vst0KA3mt^fc4 literal 0 HcmV?d00001 diff --git a/palettes/dawnbringer16.png b/palettes/dawnbringer16.png new file mode 100644 index 0000000000000000000000000000000000000000..019e8a56209b578de09cdf8522c496a7e117ed2d GIT binary patch literal 922 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!3-qVNAu2QU|?nl@Ck7h;gNAsF)=X7_4D#; z^)WC>Rk`5iQCgT7S$pnMtxoIIg}JMAF0GoGd+5}yD{=SUT?48gMWZ1wY(n5w*e#977~7?>)7Vu|a`{ zVS|#Eg2w;)>~$H>Tmmds%!#>UqNG^D#y|P!>EmjOe-5d!H_q4-RtD6_;OXk;vd$@? F2>@O}cBTLT literal 0 HcmV?d00001 diff --git a/palettes/doom.png b/palettes/doom.png new file mode 100644 index 0000000000000000000000000000000000000000..772f1d4bdc683f993fecbb10f7d0d3e075a12504 GIT binary patch literal 774 zcmV+h1Nr=kP)00006VoOIv00000 z00E9fi|GIW010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v$sAE(3YQ^ug%-So6|8mXcAj8|z2i=Vz-;w2H@kZS@6FEKs-IYnj{jK`i^MKy4@^NM_oPWIeFAqk-FIiS=fQ+rgc z%yI6YfQrxW$b7m%`1&j1j|7Km2>32)Ke`kONdS$Fzi5-uCQs<2lmGw#07*qoM6N<$ Eg7I2aasU7T literal 0 HcmV?d00001 diff --git a/palettes/dpaint.png b/palettes/dpaint.png new file mode 100644 index 0000000000000000000000000000000000000000..597397c0288ee339f36ad9041dd1b58613af06f9 GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51SA=YQ-1*|wj^(N7a$E3=yU0Q38Xm-JR*x3 z7`TN&n2}-D90{Nxdx@v7EBk#m0TDyF>ocYUg_ue`T^vIyZoQr5n04DhqE+4Xbk439 zyg>yETlK12>dYMb(bVHvWj`QCF^uJ+Jp3JvbhmsFl-Ynj*`s%CvuchDjah%Wb+`w`^XYQ5KT6uHd zV)31WILcPJ7Tf`Xhm~qEc)dzXfa(S5$3)I)%PCR*9M95!uLdB|vBbP7O@Z`Ky6}@?W zx<`ey*{PqVT$?2Kw`rbx6S&hYs!6rNZCR?^);7cbsFN)6Tfx={o3AaAkO*c{_EWfR zd_*O$Fro0ny9%~jzZXXDxox{ALRt5qkWJy`sJO#hxSmbwS$|_^ulttvTQTC>{R)3Q z73wuJ@s5gdvp-|JeTMr?d2X1Q0`soVmxFQ4S~FeSW}N7_Jn^kWQq*>fXU7%`?D0Be zrm!?L`kyp*H^-{Ch4dQfOI_=-c_DM`iYdgddAD5WE@u}*P zd(*Gn)n6m<+Sl-X^Tx6pHy*M#^cj5H8(wogdx>g9Q+i6&_4#&HbqPER_BZo>omW}1 z_qoa1=sP=(B}-qF>3_E3MkZ9*|J5JQCNch*WpeVvvF6tg4$6bWG;-#(N6&2SE1w_Q z?l60L!}c|Q`KGLqzpJ)q)B7-+TV`y3HpGGLdA_-h(fw56!V7E>5ug<7>FVdQ&MBb@ E08q$DkN^Mx literal 0 HcmV?d00001 diff --git a/palettes/ega.png b/palettes/ega.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2b1d28a36a512d848211c48d2433b6236f3183 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4M42M!VDz;h4yg+DaPU;cPEB*=VV?2IR*hfA+A80 zfngO8GOSt!B7jsVh#3k3|A8>{|9=nxrhv>-dSBK9bucD*ySp%Su*!M>Ih+L^k;M!Q z+`=Ht$S`Y;1W=H@#M9T6{SJ$)pn`@opHwDL$ivgcF~sBe+cO6l7!(9t4~BXuwu%Iy z5W8$TZ2vGy7_+#jq=2Aav> M>FVdQ&MBb@06)n~7XSbN literal 0 HcmV?d00001 diff --git a/palettes/gameboy.png b/palettes/gameboy.png new file mode 100644 index 0000000000000000000000000000000000000000..430578095b46cbf8b5b0c9c290863cfa44a97d42 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQv3lvA+9Xk;*K7+;XYoar9qP? zr<7Xv90p2p7I;J!Gca%qgD@k*tT_@uLG}_)Usv`!tkS}AiU~8MHvxs*JzX3_EKVmU zFfhA03Is4QrY0K{G%~TpaQS$ID0uj?9*dCmT*9<4ko5(Z&jvShM^>-q=thN75e~tn k4wWA?3KXAkKN4kNU<#h7ueFw?7HA}cr>mdKI;Vst05%gZY5)KL literal 0 HcmV?d00001 diff --git a/palettes/hercules.png b/palettes/hercules.png new file mode 100644 index 0000000000000000000000000000000000000000..38c1dff26ae04b405b22039fc636df7b8b54d0a2 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!2~3KB)#GTQi`4~jv*GOlT#D~|IGKERi(xz o)f~v}rYo^E;Yw2=_X~c__1ys!7>FVdQ&MBb@0E+V$;{X5v literal 0 HcmV?d00001 diff --git a/palettes/heretic.png b/palettes/heretic.png new file mode 100644 index 0000000000000000000000000000000000000000..959393a8cbe89b98029936b7ce2bd9e5cfba9b9a GIT binary patch literal 1914 zcmeAS@N?(olHy`uVBq!ia0y~yV2lOgI1Vk9Nd^XXM^6{WkcwMx?{4gh31v9; z(b~Ga?A+X)*4CYq@0#XqEYm!~(HXkIsA(!={J~>ZQy26m=tkV++Sk;pk&)_^thhvI zY6F+%v>k_B)Fi#*AJi~U|5L~Rq0plE`~K~_7w_G>H`kb<`>4{UXs^yUe#~Ud=`PYMC^2=BxEWjpRWJNL-HwS8A!z?#`dAmE;WPEDpZh5`y z#Je1`?l<>#6e<_UzfVyDCK&4jXm9@k_gWBJY0cx!cpv{6DEzvj6cV z_p;kY<@c6l9=mK;!vFb#Ezj#c@Av%PW**z1C=7~rSn2?$0o)vLtOJP^EC0SaK7Tb| zS?sgdyFO34sk_vrZ28jeH*#NQe%AYS=C9ltey81c7tCv4Cw;B5ecSDK>1F>bz8smY zcVI#%G>X7635zcr9B{Y;i7O_%>MrGF^PRipbNu<_^oe(k?xmI8UOw?|bLO);eP846 z*6+V5?>=28b2E0yKEAu#XWlhB`6qAlnfGDO#1}qaD0^ld(4(?K-?_7%owk;DE#nuPxn5U3?&Kcxx${!x+8>7- z$KQXqzD@4_>g#)6GV#nLFD1R*w(?iyx!a4+IQ~Ai?(ToxyUlkS-&I{^y`e~6HoU#; z-Svjqv(1gwZLLndiQ75prmgMSH}mGEmiha&eci1qHu0u;+<%KryKk*AvX2(N6|3+3 z{H)FX^t0JB?}oqnFI!Ev)wk~3S**AEac%j0SH7x0m!6(@ck%wryN}hGZ|~)}`~KG_ zU|NyCW}o`+lAG#hcAIl=^3-PDU3RkO=+B$mPRo3E{7XspnDy;%?$xe-z1F^6J!`hT z4NNJo|CN+dUOH)K`{b)yTYeWkE3~-VRyI5F?Yz{q>*_P_PO7Y#ZMLQQHZZ+zATPcC zDk~2Bx_MQ3T$N(cg-hEf-YuJXQ}?vcE!kU@?WO#=ulCe_+^zb)++p{<62>wQP!SEx zRp87A%VIb1a?cz)E(z}`O{C$4UV$<(ukAa!7`@+|C&byzl{46KuR%Sl??1HlE+40P55+)?4 e)p^YS8Ec|Dv?8YLJq4^&89ZJ6T-G@yGywpO_dVeN literal 0 HcmV?d00001 diff --git a/palettes/intellivision.png b/palettes/intellivision.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ea5cad3b0fd6b59513aa25b5ea0dc05d85f4aa GIT binary patch literal 475 zcmeAS@N?(olHy`uVBq!ia0y~yU;;838CaNsl=;5PAwbF?z$e6&LH9qyas?g+R)z}x zsMG&#A{cVc8tk3=fBA|PC$FTOkgEOlO8vhb!+)c)|H~Nu|M}1LgwYLXP@1QUV@SoV zw-*kI9Cl!EI2gLZNpz7wt44?-S73*e$SQ$Wt&oMSKepEza~RLN*zxW~Pa6Xx6AOoc zf>QtB?Sw~Se87TH$0hO1EKM`#fF2z+2) Y`lP++_zVX-U~DmXy85}Sb4q9e09D*)O8@`> literal 0 HcmV?d00001 diff --git a/palettes/macintosh2.png b/palettes/macintosh2.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e0de7523ceacb6c511f054b9937839415b4f1b GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^4M5Dn!VDx2e}3f)qznRlLR|lY0K@-OhC2)l{~4y6 zF-&J*IK?piKf?+JhE#@BAV1Y?=gysNZEdcuu0TzzzKI(EDb50q$YKTtz9S&aI8~cZ z8YpPt>EaloF)=xTfyq%JfQcztp@6X|K*58#sYu}kL(@!$4O|>$%m*bEc5t)2Z+KuY gV9+CFAj8AJaH#P=qmmz=I?xOTPgg&ebxsLQ0MDm3+yDRo literal 0 HcmV?d00001 diff --git a/palettes/mspaint.png b/palettes/mspaint.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5b8afd0ba1d110c144396b371d31f0e970eb81 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^D}Y#ngAGXLHEufyq~>|LIEG~0dwXjm?_mQTS4XXG z*V&QtbiSpWValviJiz!aOKMRA`|<*}&{EcGQK2`PAO5-a@h$t2-)pj;S6uy*^7*>t zyW*DLJsE#OKO``@E>H+y;bLNKR02vS{NAqFfbf(&^R)M zp=S+)#u@>J9tnm30|tf)28Ijzv5&fU)`QG($BJ6D&J$Px{w4GLPSBBB$D z{%3ETdDT1O|LlA}gGjeVCGnV`MQ22>hwOMbO>3+1CJq+`rjyL&cY>E6WcH2P^76w8 z;n;aEFP`soU{RW2XYimk{9Z-+33g?>pO0o63NJfTq$JSDv4sCj;AjaE%*1`{CU=R_kXM2i~lz5U-WmY{G!_1 zY46|OyIJi$|L_0BHJkpge8A7-7rjz(q)pQN9Yr6qLLW;@T&X}YNB@-LO;ph8pM$CWncndHmwoW2^=`o-<@ ziM+q3=9F*W<67o_)^<~MO_|c})nCmvSxbIb-n};DKtqEg5Hm6|GqHg%3lE0`2n!g1 zutI{v0T2c$XvU^UApup<;d;&YS<@oz<{0n3?D%Yv{M{4pHtcjMd;QvO({9bTXLd)W z{ByE5_+xpy$ QAW)9M)78&qol`;+01Cl(y#N3J literal 0 HcmV?d00001 diff --git a/palettes/quake.png b/palettes/quake.png new file mode 100644 index 0000000000000000000000000000000000000000..c8973ee9ae02d545521982eb6e82849efa579cbb GIT binary patch literal 1666 zcmZuwe{2(V6n|ZR+_u|x-EMfxZu6KY7P*)ktMLdWUQ36!c|aF#rh{T`qdn!oaB`PF=?^s8u%w1ueqnOh%k$Q%vBGCABC~z$WjT_ww?6 zpZ9s6@B1FETPx(}mgWLLer-+lIsjcd)IqjB?UdsU^=XGZSG#5v@_i1mpqyzj-G4Ei z%4w-t9{@m$ZXMk>Kkl7RCk;Nw8VA6s4s^cB2#|HTZgu^tKGinZ&7B+Nrl;J&;Z$ro zbupFl0cZdN0BNjL+OBt{Zk$V{Qav7t0k8px2*?QdF$fY!7llME=%5uF70EF#lMLFX zBChF}JUiTa<9r$>g`%@Kew8H0XnL4o`dPMzWjk0l$g+Nxl^MoG(>zJCI8LD`mby;P zUL}$VJTZt3^Qnu4z~@$Em)9+LT)ZT3 zBF{QG#>UcC3&l_bO<*LB;wXY5$#K#_6QQwqCLS# zS0JqU)S$=TDtQ&rE%TzAbBZkIw6GjSGXzQEz|a`S;DVKuINHlIe!&`)cuf|%6{$~^ z2gAx}mwG;`O$|h79AOF6Mqwh2yBWgEQUQ(*+L#WfwZ~=c_p-yS>{thLHD;MjP&f`G z2{a8X0~`xZ4n!N`b|SKXC?eV_VIeoJdGLr#M!i(Ok46A600MvlumG?C8~_g>0Js3$ z05X6dpcNpP-l6oiA%LR5FbK;c9Eb2cA_#~mqLPGqJgC=;Dhh_3G1 zw;=dju7JlA^m;W#i39>sRqYRjhBPffU?@eP77}A=oMQ-{B}9&tY^29Yc|}T*sDPVN zWjf@eJNz_;VH8ENXu)U zwWEIb55HX=eWyWJZ2bD>C-3h_-eJ>7)oksOspJg4XZJ4`3Z5^yGNRrDY7&3xAUn6< zxrB~vf zdoQQ!79P?)8#kWLj!aZ-+#hSnKQWqrI%ja=vCI31TCls2|7nuF2_CO0+aEn?c;igf zGSj(9!<%hVOX*kf^~;dykqmqmnl5E|n#k?p@{{-rBRenY)h6oKuz49EljeU}|2Kg7 zETq(lh61K>(eVS{o-}=TW_bffHqzSuZMH%3YR#x9LsvDx3oT7 znpv8b#!BMngDX0TKOB1(gR$3KeDHy~;+Gw}CK}uB-kRIwJB!vio~hAqt0;dvoYz@c z<=FaZ*7^!^bGR&XgR^Z7X7VTd#zV;O6}ku8syjY-QH|2-;`-wUEUmV+!2~1|vfXz8Db50q$YKTtZeb8+WSBKa0w~B{ z;_2(kexHel#Zr2X6AK4W=%uHNV@SoVw>K7Y9ZHaByQt}%HDkj9j%2Zo9Nba8NgKF! zGc2xPy|t(+@uUecEcTqkZSL_$LqFX8qvIzdyUUqS{9G(Cs{> zhz$t`n^?WUB=lwcMm~>cfv~S3JHQDS9s~RqWn1u&HocA$CVJ dv96xGPx`Cy#OHour-7bk@O1TaS?83{1OS06f>{6n literal 0 HcmV?d00001 diff --git a/palettes/speccy.png b/palettes/speccy.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee287c3443acf320ce45852f29985490b48a9cb GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^|AE+^g&9cRJ;&?|q!^2X+?^QKos)S9O>_%)r1c48n{Iv*t(u1=&kH zeO=k_u*flT2wgjq_#P;f;_2cT5^?zLIY&{401?&$;f}1LApuZAyIM4)ppV5U;{WUe zNoof}TJ?Amxx6C|i=Dd`$b<^^bAL(XDZX)7^xcPTa*QaTk-xoe-J=;R7B2?c$KdJe K=d#Wzp$Py}#!hem literal 0 HcmV?d00001 diff --git a/palettes/teletext.png b/palettes/teletext.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6d5e5e320946f167157b2cbaddf2a984bfecd6 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^dx4mTgAGWUJMMV^q+~NgB1)X|b8}PkN`PDj2Ir#G z#FEq$h4Rdj3n*)=f)C7|JNNdaFEzQfK`Z^eU)DX_U9wL$`c!ZD-T$}as(%+;JI7w<_N7D4g?|zI k#pV}|UlghYY&+yu?eXpA5V@_iAsFNUPgg&ebxsLQ07CRd*8l(j literal 0 HcmV?d00001 diff --git a/playscii.cfg.default b/playscii.cfg.default new file mode 100644 index 0000000..56f678f --- /dev/null +++ b/playscii.cfg.default @@ -0,0 +1,46 @@ +# DEFAULT CONFIG FILE TEMPLATE, DO NOT MODIFY +# playscii local config file + +# override class defaults here. +# everything in this file must be a valid Python expression. +# many lines are here for reference but commented out, uncomment to activate. + +# most of these settings require restarting Playscii to take effect. + +Application.fullscreen = False +Application.window_width, Application.window_height = 1280, 720 + +# try it, you'll like it :] +Application.capslock_is_ctrl = True + +Art.DEFAULT_CHARSET = 'c64_petscii' +Art.DEFAULT_PALETTE = 'c64_original' +#Art.DEFAULT_WIDTH, Art.DEFAULT_HEIGHT = 40, 25 + +Camera.start_x, Camera.start_y = 20, -12 +Camera.start_zoom = 15 + +# amount of camera zoom each mouse wheel event produces +#InputLord.wheel_zoom_amount = 3.0 +# same but for keyboard zooming (shift-X/Z) +#InputLord.keyboard_zoom_amount = 1.0 + +#CharacterSetSwatch.char_scale = 3 + +#UIRenderable.grain_strength = 0 + +# CRT shader starts on +#Framebuffer.start_crt_enabled = True + +# disable CRT shader entirely +# use this if playscii starts up really slowly on your video card +#Framebuffer.disable_crt = True + +# hold space to show/hide main popup rather than pressing space +#UI.popup_hold_to_show = True + +#Application.show_dev_log = True + +# log shader compilation progress to console - enable if something is +# failing or going slow +#Shader.log_compile = True diff --git a/playscii.py b/playscii.py new file mode 100755 index 0000000..b7b7c37 --- /dev/null +++ b/playscii.py @@ -0,0 +1,1228 @@ +#!/usr/bin/env python3 +# coding=utf-8 + +from __future__ import print_function +import sys, os.path + +if sys.version_info.major < 3: + print('Python 3 is required to run Playscii.', file=sys.stderr) + sys.exit(1) + +import platform +if platform.system() == 'Windows' or platform.system() == 'Darwin': + import os + # set env variable so pysdl2 can find sdl2.dll + os.environ['PYSDL2_DLL_PATH'] = '.' + sys.path += ['.'] + +# fix the working directory when running in a mac app +if platform.system() == 'Darwin' and hasattr(sys, 'frozen'): + os.chdir(os.path.abspath(os.path.dirname(sys.executable))) + +# app imports +import ctypes, time, hashlib, importlib, traceback +import webbrowser +import sdl2 +import sdl2.ext +import appdirs +import PIL, OpenGL, numpy # just for version checks +# DEBUG: GL context checking, must be set before other imports and calls +#OpenGL.CONTEXT_CHECKING = True +from sdl2 import video, sdlmixer +from OpenGL import GL +from PIL import Image +from packaging import version +# work around a name being deprecated in different versions of PIL +if version.parse(Image.__version__) > version.parse('10.0.0'): + Image.ANTIALIAS = Image.LANCZOS +# cache whether pdoc is available for help menu item +pdoc_available = False +try: + import pdoc + pdoc_available = True +except: pass + +# submodules - set here so cfg file can modify them all easily +from audio import AudioLord +from shader import ShaderLord +from camera import Camera +from charset import CharacterSet, CharacterSetLord, CHARSET_DIR +from palette import Palette, PaletteLord, PALETTE_DIR +from art import Art, ArtFromDisk, DEFAULT_CHARSET, DEFAULT_PALETTE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_ART_FILENAME +from art_import import ArtImporter +from art_export import ArtExporter +from renderable import TileRenderable, OnionTileRenderable +from renderable_line import DebugLineRenderable +from renderable_sprite import UIBGTextureRenderable, SpriteRenderable +from framebuffer import Framebuffer +from art import ART_DIR, ART_FILE_EXTENSION, ART_SCRIPT_DIR +from ui import UI, OIS_WIDTH +from cursor import Cursor +from grid import ArtGrid +from input_handler import InputLord +from ui_file_chooser_dialog import THUMBNAIL_CACHE_DIR +# some classes are imported only so the cfg file can modify their defaults +from renderable_line import LineRenderable +from ui_swatch import CharacterSetSwatch +from ui_element import UIRenderable, FPSCounterUI, DebugTextUI +from ui_menu_pulldown import PulldownMenu +from ui_dialog import UIDialog +from ui_chooser_dialog import ScrollArrowButton, ChooserDialog +from image_convert import ImageConverter +from game_world import GameWorld, TOP_GAME_DIR +from game_object import GameObject +from shader import Shader + +APP_NAME = 'Playscii' +VERSION_FILENAME = 'version' + +CONFIG_FILENAME = 'playscii.cfg' +CONFIG_TEMPLATE_FILENAME = CONFIG_FILENAME + '.default' +LOG_FILENAME = 'console.log' +SESSION_FILENAME = 'playscii.session' +LOGO_FILENAME = 'ui/logo.png' +SCREENSHOT_DIR = 'screenshots/' +FORMATS_DIR = 'formats/' +AUTOPLAY_GAME_FILENAME = 'autoplay_this_game' + +WEBSITE_URL = 'https://jplebreton.com/playscii' +WEBSITE_HELP_URL = 'docs/html/howto_main.html' +AUTOGEN_DOCS_PATH = 'docs/html/generated/' +AUTOGEN_DOC_MODULES = ['game_object', 'game_world', 'game_room', 'collision', + 'game_util_objects', 'art', 'renderable', 'vector', + 'art_import', 'art_export'] +AUTOGEN_DOC_TOC_PAGE = 'pdoc_toc.html' + +MAX_ONION_FRAMES = 3 + +class Application: + # default window dimensions, may be updated during screen res detection + window_width, window_height = 1280, 720 + # if window gets extremely small it causes problems, enforce a minumum size + # (UI becomes hard to use below 640 x 480, but allow it in case user is + # doing something weird or reshuffling their desktop) + min_window_width, min_window_height = 320, 240 + # if True, use the older method of creating a test window to determine + # desktop resolution - used to be needed on Linux, but maybe no longer. + create_test_window = False + fullscreen = False + # framerate: uncapped if -1 + framerate = 30 + # fixed timestep for game physics + update_rate = 30 + # force to run even if we can't get an OpenGL 2.1 context + run_if_opengl_incompatible = False + # arbitrary size cap, but something bigger = probably a bad idea + max_art_width, max_art_height = 9999, 9999 + # use capslock as another ctrl key - SDL2 doesn't seem to respect OS setting + capslock_is_ctrl = False + bg_color = [0.2, 0.2, 0.2, 2] + default_overlay_image_opacity = 0.25 + show_bg_texture = True + # if True, ignore camera loc saved in .psci files + override_saved_camera = False + # launch into art mode even if a game dir is specified via CLI + always_launch_art_mode = False + # show dev-only log messages + show_dev_log = False + # in art mode, show layers marked invisible to game mode + show_hidden_layers = False + welcome_message = 'Welcome to Playscii! Press SPACE to select characters and colors to paint.' + compat_fail_message = "your hardware doesn't appear to meet Playscii's requirements! Sorry ;________;" + game_mode_message = 'Game Mode active, press %s to return to Art Mode.' + img_convert_message = 'converting bitmap image: %s' + # can_edit: if False, user can't use art or edit functionality + can_edit = True + # these values should be written to cfg files on exit + # key = module path, value = [member object (blank if self), var name] + persistent_setting_names = { + 'UI.popup_hold_to_show': ['ui', 'popup_hold_to_show'], + 'Framebuffer.start_crt_enabled': ['fb', 'crt'], + 'Application.show_bg_texture': ['', 'show_bg_texture'], + 'ArtGrid.visible': ['art_grid', 'visible'] + } + # characters that can't appear in filenames (any OS; Windows is least permissive) + forbidden_filename_chars = ['/', '\\', '*', ':'] + + def __init__(self, config_dir, documents_dir, cache_dir, logger, + art_filename, game_dir_to_load, state_to_load, autoplay_game): + self.init_success = False + self.config_dir = config_dir + # keep playscii.cfg lines in case we want to add some + self.config_lines = open(self.config_dir + CONFIG_FILENAME).readlines() + self.documents_dir = documents_dir + self.cache_dir = cache_dir + # last dir art was opened from + self.last_art_dir = None + # last dir file was imported from + self.last_import_dir = None + # class to use for temp thumbnail renderable + self.thumbnail_renderable_class = TileRenderable + # logger fed in from __main__ + self.logger = logger + self.last_time = 0 + self.this_frame_start, self.last_frame_end = 0, 0 + # number of updates (world, etc) and rendered frames this session + self.updates, self.frames = 0, 0 + self.timestep = (1 / self.update_rate) * 1000 + # for FPS counter + self.frame_time, self.fps = 0, 0 + self.should_quit = False + self.mouse_x, self.mouse_y = 0, 0 + self.mouse_dx, self.mouse_dy = 0, 0 + self.has_input_focus = self.has_mouse_focus = False + self.inactive_layer_visibility = 1 + self.version = get_version() + # last edit came from keyboard or mouse, used by cursor control logic + self.keyboard_editing = False + # set ui None so other objects can check it None, eg load_art check + # for its active art on later runs (audiolord too) + self.ui, self.al = None, None + # on linux, prefer wayland, via SDL 2.0.22's SDL_HINT_VIDEODRIVER + # http://wiki.libsdl.org/SDL_SetHint + if platform.system() == 'Linux': + # but if we're running x11, wayland won't be available + # and we'll get an SDLError - so handle the exception. + # seems like we should be able to ask for, eg + # sdl2.SDL_SetHint(sdl2.SDL_HINT_VIDEODRIVER, b'wayland, x11'), + # though. TODO research this further, see how other progs do it. + try: + sdl2.SDL_SetHint(sdl2.SDL_HINT_VIDEODRIVER, b'wayland') + sdl2.ext.init() + except: + try: + sdl2.SDL_SetHint(sdl2.SDL_HINT_VIDEODRIVER, b'x11') + sdl2.ext.init() + except: + sdl2.ext.init() + winpos = sdl2.SDL_WINDOWPOS_UNDEFINED + screen_width, screen_height = self.get_desktop_resolution() + # make sure main window won't be too big for screen + max_width = int(screen_width * 0.8) + max_height = int(screen_height * 0.8) + self.window_width = min(self.window_width, max_width) + self.window_height = min(self.window_height, max_height) + # TODO: SDL_WINDOW_ALLOW_HIGHDPI doesn't seem to work right, + # determine whether we're using it wrong or it's broken + flags = sdl2.SDL_WINDOW_OPENGL | sdl2.SDL_WINDOW_RESIZABLE# | sdl2.SDL_WINDOW_ALLOW_HIGHDPI + if self.fullscreen: + flags = flags | sdl2.SDL_WINDOW_FULLSCREEN_DESKTOP + self.window = sdl2.SDL_CreateWindow(bytes(APP_NAME, 'utf-8'), + winpos, winpos, + self.window_width, self.window_height, + flags) + sdl2.SDL_SetWindowMinimumSize(self.window, self.min_window_width, + self.min_window_height) + # force GL2.1 'core' before creating context + video.SDL_GL_SetAttribute(video.SDL_GL_CONTEXT_MAJOR_VERSION, 2) + video.SDL_GL_SetAttribute(video.SDL_GL_CONTEXT_MINOR_VERSION, 1) + video.SDL_GL_SetAttribute(video.SDL_GL_CONTEXT_PROFILE_MASK, + video.SDL_GL_CONTEXT_PROFILE_CORE) + self.context = sdl2.SDL_GL_CreateContext(self.window) + # if creating a core profile context fails, try GL ES 2.0 + if not self.context: + video.SDL_GL_SetAttribute(video.SDL_GL_CONTEXT_MAJOR_VERSION, 2) + video.SDL_GL_SetAttribute(video.SDL_GL_CONTEXT_MINOR_VERSION, 0) + video.SDL_GL_SetAttribute(video.SDL_GL_CONTEXT_PROFILE_MASK, + video.SDL_GL_CONTEXT_PROFILE_ES) + self.context = sdl2.SDL_GL_CreateContext(self.window) + # save ES status for later use by eg Shaders + self.context_es = True + else: + self.context_es = False + self.log('Detecting hardware...') + cpu = platform.processor() or platform.machine() + self.log(' CPU: %s' % (cpu if cpu != '' else "[couldn't detect CPU]")) + # report GL vendor, version, GLSL version etc + try: gpu_vendor = GL.glGetString(GL.GL_VENDOR).decode('utf-8') + except: gpu_vendor = "[couldn't detect vendor]" + try: gpu_renderer = GL.glGetString(GL.GL_RENDERER).decode('utf-8') + except: gpu_renderer = "[couldn't detect renderer]" + self.log(' GPU: %s - %s' % (gpu_vendor, gpu_renderer)) + try: + # try single-argument GL2.0 version first + gl_ver = GL.glGetString(GL.GL_VERSION) + if not gl_ver: + gl_ver = GL.glGetString(GL.GL_VERSION, ctypes.c_int(0)) + gl_ver = gl_ver.decode('utf-8') + except: + gl_ver = "[couldn't detect GL version]" + self.log(' OpenGL detected: %s' % gl_ver) + # GL 1.1 doesn't even habla shaders, quit if we fail GLSL version check + try: + glsl_ver = GL.glGetString(GL.GL_SHADING_LANGUAGE_VERSION) + if not glsl_ver: + glsl_ver = GL.glGetString(GL.GL_SHADING_LANGUAGE_VERSION, ctypes.c_int(0)) + except: + self.log('GLSL support not detected, ' + self.compat_fail_message) + self.should_quit = True + return + glsl_ver = glsl_ver.decode('utf-8') if glsl_ver != None else None + self.log(' GLSL detected: %s' % glsl_ver or '[unknown]') + # verify that we got at least a 2.1 context + majorv, minorv = ctypes.c_int(0), ctypes.c_int(0) + video.SDL_GL_GetAttribute(video.SDL_GL_CONTEXT_MAJOR_VERSION, majorv) + video.SDL_GL_GetAttribute(video.SDL_GL_CONTEXT_MINOR_VERSION, minorv) + context_version = majorv.value + (minorv.value * 0.1) + self.use_vao = bool(GL.glGenVertexArrays) + self.log(' Vertex Array Object support %sfound.' % ['NOT ', ''][self.use_vao]) + if not self.context: + self.log("No OpenGL context found!") + # enforce GL version requirement + if not self.context or context_version < 2.1 or gl_ver.startswith('2.0'): + self.log("Couldn't create a compatible OpenGL context, " + self.compat_fail_message) + if not self.run_if_opengl_incompatible: + self.should_quit = True + return + # enforce GLSL version requirement + try: + gv = float(glsl_ver.split()[0]) + if bool(glsl_ver) and gv <= 1.2: + self.log("GLSL 1.30 or higher is required, " + self.compat_fail_message) + if not self.run_if_opengl_incompatible: + self.should_quit = True + return + except: + # can't get a firm number out of reported GLSL version string :/ + pass + # detect max texture size + mts = ctypes.c_int(0) + GL.glGetIntegerv(GL.GL_MAX_TEXTURE_SIZE, mts) + self.max_texture_size = mts.value + self.log(' Maximum supported texture size: %s x %s' % (self.max_texture_size, self.max_texture_size)) + self.log(' Detected screen resolution: %.0f x %.0f, window: %s x %s' % (screen_width, screen_height, self.window_width, self.window_height)) + self.log('Detecting software environment...') + self.log(' OS: %s' % platform.platform()) + py_version = ' '.join(sys.version.split('\n')) + # report 32 vs 64 bit as it's not clear from sys.version or OS + bitness = platform.architecture()[0] + # on linux, report whether we're running x11 or wayland + if platform.system() == 'Linux': + driver = sdl2.SDL_GetCurrentVideoDriver().decode('utf-8') + self.log(' Linux SDL2 "video driver": %s' % driver) + self.log(' Python: %s (%s)' % (py_version, bitness)) + module_versions = 'PySDL2 %s, ' % sdl2.__version__ + module_versions += 'numpy %s, ' % numpy.__version__ + module_versions += 'PyOpenGL %s, ' % OpenGL.__version__ + module_versions += 'appdirs %s, ' % appdirs.__version__ + module_versions += 'PIL %s' % PIL.__version__ + self.log(' Modules: %s' % module_versions) + sdl_version = '%s.%s.%s ' % (sdl2.version.SDL_MAJOR_VERSION, + sdl2.version.SDL_MINOR_VERSION, + sdl2.version.SDL_PATCHLEVEL) + sdl_version += sdl2.version.SDL_GetRevision().decode('utf-8') + sdl_version += ', SDLmixer: %s.%s.%s' % (sdlmixer.SDL_MIXER_MAJOR_VERSION, + sdlmixer.SDL_MIXER_MINOR_VERSION, + sdlmixer.SDL_MIXER_PATCHLEVEL) + self.log(' SDL: %s' % sdl_version) + # draw black screen while doing other init + GL.glClearColor(0.0, 0.0, 0.0, 1.0) + GL.glClear(GL.GL_COLOR_BUFFER_BIT) + # initialize audio + self.al = AudioLord(self) + self.set_icon() + # SHADERLORD rules shader init/destroy, hot reload + self.sl = ShaderLord(self) + # separate cameras for edit vs game mode + self.art_camera = Camera(self) + self.camera = self.art_camera + self.art_loaded_for_edit, self.edit_renderables = [], [] + # raster image overlay + self.overlay_renderable = None + self.draw_overlay = False + self.overlay_scale_type = OIS_WIDTH + self.converter = None + # set when an import is in progress + self.importer = None + # set when an exporter is chosen, remains so last_export can run + self.exporter = None + self.last_export_options = {} + # dict of available importer/exporter modules + self.converter_modules = {} + # last art script run (remember for "run last") + self.last_art_script = None + self.game_mode = False + self.gw = GameWorld(self) + # if game dir specified, set it before we try to load any art + if game_dir_to_load or autoplay_game: + self.gw.set_game_dir(game_dir_to_load or autoplay_game, False) + # autoplay = distribution mode, no editing + if autoplay_game and not game_dir_to_load and self.gw.game_dir: + self.can_edit = False + # debug line renderable + self.debug_line_renderable = DebugLineRenderable(self, None) + # onion skin renderables + self.onion_frames_visible = False + self.onion_show_frames = MAX_ONION_FRAMES + # store constant so input_handler etc can read it + self.max_onion_frames = MAX_ONION_FRAMES + self.onion_show_frames_behind = self.onion_show_frames_ahead = True + self.onion_renderables_prev, self.onion_renderables_next = [], [] + # lists of currently loaded character sets and palettes + self.charsets, self.palettes = [], [] + self.csl = CharacterSetLord(self) + self.pl = PaletteLord(self) + # set/create an active art + self.load_art_for_edit(art_filename) + self.fb = Framebuffer(self) + # setting cursor None now makes for easier check in status bar drawing + self.cursor, self.grid = None, None + # separate grids for art vs game mode + self.art_grid = None + # forward-declare inputlord in case UI looks for it + self.il = None + # initialize UI with first art loaded active + self.ui = UI(self, self.art_loaded_for_edit[0]) + # textured background renderable + self.bg_texture = UIBGTextureRenderable(self) + # init onion skin + for i in range(self.onion_show_frames): + renderable = OnionTileRenderable(self, self.ui.active_art) + self.onion_renderables_prev.append(renderable) + for i in range(self.onion_show_frames): + renderable = OnionTileRenderable(self, self.ui.active_art) + self.onion_renderables_next.append(renderable) + # set camera bounds based on art size + self.camera.set_for_art(self.ui.active_art) + self.update_window_title() + self.cursor = Cursor(self) + self.art_grid = ArtGrid(self, self.ui.active_art) + self.grid = self.art_grid + self.ui.set_active_layer(self.ui.active_art.active_layer) + # INPUTLORD rules input handling and keybinds + self.il = InputLord(self) + # update UI (hovered elements) and cursor now that we have input + self.ui.update() + self.cursor.pre_first_update() + self.pdoc_available = pdoc_available + self.init_success = True + self.log('Init done.') + if self.can_edit: + self.restore_session() + # if art file was given in arguments, set it active + if art_filename: + self.ui.set_active_art_by_filename(art_filename) + if (game_dir_to_load or autoplay_game) and self.gw.game_dir: + # set initial game state + if state_to_load: + self.gw.load_game_state(state_to_load) + else: + self.gw.load_game_state() + else: + #self.ui.message_line.post_line(self.welcome_message, 10) + pass + # if "autoplay_this_game" used and game is valid, lock out edit mode + if not self.can_edit: + self.enter_game_mode() + self.ui.set_game_edit_ui_visibility(False, False) + self.gw.draw_debug_objects = False + elif self.gw.game_dir and self.always_launch_art_mode: + self.exit_game_mode() + + def get_desktop_resolution(self): + winpos = sdl2.SDL_WINDOWPOS_UNDEFINED + # use the more direct way of getting desktop resolution + if not self.create_test_window: + desktop = sdl2.video.SDL_DisplayMode() + sdl2.SDL_GetDesktopDisplayMode(0, desktop) + return desktop.w, desktop.h + # this method seems to have broken recently (2022-06) on our Linux + + # Nvidia + X11 + SDL2.20 setup; default it off but keep it around... + test_window = sdl2.SDL_CreateWindow(bytes(APP_NAME, 'utf-8'), + winpos, winpos, + 128, 128, + sdl2.SDL_WINDOW_FULLSCREEN_DESKTOP) + sdl2.SDL_HideWindow(test_window) + screen_width, screen_height = ctypes.c_int(0), ctypes.c_int(0) + sdl2.SDL_GetWindowSize(test_window, ctypes.pointer(screen_width), + ctypes.pointer(screen_height)) + screen_width = screen_width.value + screen_height = screen_height.value + sdl2.SDL_DestroyWindow(test_window) + return screen_width, screen_height + + def is_mouse_inside_window(self): + "returns True if mouse is inside application window" + wx, wy = ctypes.c_int(0), ctypes.c_int(0) + sdl2.SDL_GetWindowPosition(self.window, wx, wy) + wx, wy = int(wx.value), int(wy.value) + mx, my = ctypes.c_int(0), ctypes.c_int(0) + # "global" mouse state = whole-desktop mouse coordinates + sdl2.mouse.SDL_GetGlobalMouseState(mx, my) + mx, my = int(mx.value), int(my.value) + return wx <= mx <= wx + self.window_width and \ + wy <= my <= wy + self.window_height + + def set_icon(self): + # TODO: this doesn't seem to work in Ubuntu, what am i missing? + img = Image.open(LOGO_FILENAME).convert('RGBA') + # does icon need to be a specific size? + img = img.resize((32, 32), Image.Resampling.LANCZOS) + w, h = img.size + depth, pitch = 32, w * 4 + #SDL_CreateRGBSurfaceFrom((pixels, width, height, depth, pitch, Rmask, Gmask, Bmask, Amask) + #mask = (0x0f00, 0x00f0, 0x000f, 0xf000) + mask = (0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000) + icon_surf = sdl2.SDL_CreateRGBSurfaceFrom(img.tobytes(), w, h, depth, pitch, *mask) + # SDL_SetWindowIcon(self.window, SDL_Surface* icon) + sdl2.SDL_SetWindowIcon(self.window, icon_surf) + sdl2.SDL_FreeSurface(icon_surf) + + def log(self, new_line, error=False): + "write to log file, stdout, and in-app console log" + self.logger.log(new_line) + if self.ui and self.can_edit: + self.ui.message_line.post_line(new_line, hold_time=None, error=error) + + def dev_log(self, new_line): + if self.show_dev_log: + self.log(new_line) + + def log_import_exception(self, e, module_name): + """ + Logs a readable version of stack trace of given exception encountered + importing given module name. + """ + for line in traceback.format_exc().split('\n'): + # ignore the importlib parts of the call stack, + # not useful and always the same + if line and not 'importlib' in line and \ + not 'in _import_all' in line and \ + not '_bootstrap._gcd_import' in line: + self.log(line.rstrip()) + s = 'Error importing module %s! See console.' % module_name + if self.ui: + self.ui.message_line.post_line(s, 10, True) + + def new_art(self, filename, width=None, height=None, + charset=None, palette=None): + width, height = width or DEFAULT_WIDTH, height or DEFAULT_HEIGHT + filename = filename if filename and filename != '' else DEFAULT_ART_FILENAME + charset = self.load_charset(charset or DEFAULT_CHARSET) + palette = self.load_palette(palette or DEFAULT_PALETTE) + art = Art(filename, self, charset, palette, width, height) + art.set_filename(filename) + art.time_loaded = time.time() + return art + + def load_art(self, filename, autocreate=True): + """ + load given file from disk; by default autocreate new file if it + couldn't be found + """ + valid_filename = self.find_filename_path(filename, ART_DIR, + ART_FILE_EXTENSION) + art = None + if not valid_filename: + if autocreate: + self.log('Creating new art %s' % filename) + return self.new_art(filename) + else: + #self.log("Couldn't find art %s" % filename) + return None + # if already loaded, return that + for a in self.art_loaded_for_edit + self.gw.art_loaded: + if a.filename == valid_filename: + return a + art = ArtFromDisk(valid_filename, self) + # if loading failed, create new file + if not art or not art.valid: + return self.new_art(valid_filename) + # remember time loaded for UI list sorting + art.time_loaded = time.time() + return art + + def new_art_for_edit(self, filename, width=None, height=None): + "Create a new Art and set it editable in Art Mode." + art = self.new_art(filename, width, height) + self.set_new_art_for_edit(art) + + def set_new_art_for_edit(self, art): + "Makes given Art editable in Art Mode UI." + self.art_loaded_for_edit.insert(0, art) + renderable = TileRenderable(self, art) + self.edit_renderables.insert(0, renderable) + self.ui.set_active_art(art) + self.camera.toggle_zoom_extents() + art.set_unsaved_changes(True) + + def load_art_for_edit(self, filename): + art = self.load_art(filename) + if art in self.art_loaded_for_edit: + self.ui.set_active_art(art) + #self.ui.message_line.post_line('Art file %s already loaded' % filename) + return + self.art_loaded_for_edit.insert(0, art) + renderable = TileRenderable(self, art) + self.edit_renderables.insert(0, renderable) + if self.ui: + self.ui.set_active_art(art) + + def close_art(self, art): + if not art in self.art_loaded_for_edit: + return + self.art_loaded_for_edit.remove(art) + for r in art.renderables: + if r in self.edit_renderables: + self.edit_renderables.remove(r) + if art is self.ui.active_art: + self.ui.active_art = None + self.log('Unloaded %s' % art.filename) + if len(self.art_loaded_for_edit) > 0: + self.ui.set_active_art(self.art_loaded_for_edit[0]) + self.update_window_title() + + def revert_active_art(self): + filename = self.ui.active_art.filename + self.close_art(self.ui.active_art) + self.load_art_for_edit(filename) + + def get_file_hash(self, filename): + f_data = open(filename, 'rb').read() + return hashlib.md5(f_data).hexdigest() + + def get_dirnames(self, subdir=None, include_base=True): + "returns list of suitable directory names across app and user dirs" + dirnames = [] + # build list of dirs to check, by priority: + # gamedir/subdir if it exists, then ./subdir, then ./ + if self.gw.game_dir is not None: + game_dir = self.gw.game_dir + if subdir: + game_dir += subdir + if os.path.exists(game_dir): + dirnames.append(game_dir) + if subdir is not None: + dirnames.append(subdir) + if include_base: + dirnames.append('') + # add duplicate set of dirs in user documents path + doc_dirs = [] + for dirname in dirnames: + # dir might already have documents path in it, add as-is if so + if dirname.startswith(self.documents_dir) and os.path.exists(dirname): + doc_dirs.append(dirname) + continue + doc_dir = self.documents_dir + dirname + if os.path.exists(doc_dir): + doc_dirs.append(doc_dir) + # check in user document dirs first + return doc_dirs + dirnames + + def find_filename_path(self, filename, subdir=None, extensions=None): + "returns a valid path for given file, extension, subdir (art/ etc)" + if not filename or filename == '': + return None + dirnames = self.get_dirnames(subdir) + # build list of filenames from each dir, first w/ extension then w/o + filenames = [] + # extensions: accept list or single item, + # list with one empty string if None passed + if extensions is None or len(extensions) == 0: + extensions = [''] + elif not type(extensions) is list: + extensions = [extensions] + for dirname in dirnames: + for ext in extensions: + f = '%s%s' % (dirname, filename) + # filename passed in might already have intended extension, + # eg from a directory listing + if ext and ext != '' and not filename.endswith(ext): + f += '.' + ext + filenames.append(f) + # return first one we find + for f in filenames: + if f is not None and os.path.exists(f) and os.path.isfile(f): + return f + return None + + def get_converter_classes(self, base_class): + "return a list of converter classes for importer/exporter selection" + classes = [] + # on first load, documents dir may not be in import path + if not self.documents_dir in sys.path: + sys.path += [self.documents_dir] + # read from application (builtins) and user documents dirs + files = os.listdir(FORMATS_DIR) + files += os.listdir(self.documents_dir + FORMATS_DIR) + for filename in files: + basename, ext = os.path.splitext(filename) + if not ext.lower() == '.py': + continue + try: + if basename in self.converter_modules: + m = importlib.reload(self.converter_modules[basename]) + else: + m = importlib.import_module('formats.%s' % basename) + self.converter_modules[basename] = m + except Exception as e: + self.log_import_exception(e, basename) + for k,v in m.__dict__.items(): + if not type(v) is type: + continue + # don't add duplicates + # (can happen if eg one importer extends another) + if v in classes: + continue + if issubclass(v, base_class) and v is not base_class: + classes.append(v) + return classes + + def get_importers(self): + "Returns list of all ArtImporter subclasses found in formats/ dir." + return self.get_converter_classes(ArtImporter) + + def get_exporters(self): + "Returns list of all ArtExporter subclasses found in formats/ dir." + return self.get_converter_classes(ArtExporter) + + def load_charset(self, charset_to_load, log=False): + "creates and returns a character set with the given name" + # already loaded? + base_charset_to_load = os.path.basename(charset_to_load) + base_charset_to_load = os.path.splitext(base_charset_to_load)[0] + for charset in self.charsets: + if charset.base_filename == base_charset_to_load: + return charset + new_charset = CharacterSet(self, charset_to_load, log) + if new_charset.init_success: + self.charsets.append(new_charset) + return new_charset + elif self.ui and self.ui.active_art: + # if init failed (eg bad filename) return something safe + return self.ui.active_art.charset + + def load_palette(self, palette_to_load, log=False): + base_palette_to_load = os.path.basename(palette_to_load) + base_palette_to_load = os.path.splitext(base_palette_to_load)[0] + for palette in self.palettes: + if palette.base_filename == base_palette_to_load: + return palette + new_palette = Palette(self, palette_to_load, log) + if new_palette.init_success: + self.palettes.append(new_palette) + return new_palette + elif self.ui and self.ui.active_art: + # if init failed (eg bad filename) return something safe + return self.ui.active_art.palette + + def set_window_title(self, text=None): + # if editing is locked, don't even show Playscii name + new_title = '%s - %s' % (APP_NAME, text) if self.can_edit else str(text) + new_title = bytes(new_title, 'utf-8') + sdl2.SDL_SetWindowTitle(self.window, new_title) + + def update_window_title(self): + if self.game_mode: + if self.gw and self.gw.game_dir: + # if edit UI is up, show last loaded state + if self.ui.game_menu_bar.visible: + title = self.gw.last_state_loaded + # if not, show user-friendly game name + else: + title = self.gw.game_title + else: + title = 'Game Mode' + self.set_window_title(title) + return + if not self.ui or not self.ui.active_art: + self.set_window_title() + return + # show message if converting + if self.converter: + title = self.img_convert_message % self.converter.image_filename + self.set_window_title(title) + return + # display current active document's name and info + filename = self.ui.active_art.filename + if filename and os.path.exists(filename): + full_filename = os.path.abspath(filename) + else: + full_filename = filename + if self.ui.active_art.unsaved_changes: + full_filename += '*' + self.set_window_title(full_filename) + + def resize_window(self, new_width, new_height): + GL.glViewport(0, 0, new_width, new_height) + self.window_width, self.window_height = new_width, new_height + # tell FB, camera, and UI that view aspect has changed + self.fb.resize(new_width, new_height) + self.camera.window_resized() + self.ui.window_resized() + + def toggle_fullscreen(self): + self.fullscreen = not self.fullscreen + flags = 0 + if self.fullscreen: + flags = sdl2.SDL_WINDOW_FULLSCREEN_DESKTOP + sdl2.SDL_SetWindowFullscreen(self.window, flags) + # for all intents and purposes, this is like resizing the window + self.resize_window(self.window_width, self.window_height) + + def screenshot(self): + "saves a date + time-stamped screenshot" + timestamp = time.strftime('%Y-%m-%d_%H-%M-%S') + output_filename = 'playscii_%s.png' % timestamp + w, h = self.window_width, self.window_height + pixels = GL.glReadPixels(0, 0, w, h, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, + outputType=None) + pixel_bytes = pixels.flatten().tobytes() + img = Image.frombytes(mode='RGBA', size=(w, h), data=pixel_bytes) + img = img.transpose(Image.FLIP_TOP_BOTTOM) + img.save('%s%s' % (self.documents_dir + SCREENSHOT_DIR, output_filename)) + self.log('Saved screenshot %s' % output_filename) + + def enter_game_mode(self): + self.game_mode = True + self.camera = self.gw.camera + self.grid = self.gw.grid + # cursor might be hovering an object's art, undo preview viz + self.cursor.undo_preview_edits() + # display message on how to toggle game mode + mode_bind = self.il.get_command_shortcut('toggle_game_mode') + mode_bind = mode_bind.title() + if self.can_edit: + self.ui.message_line.post_line(self.game_mode_message % mode_bind, 10) + self.al.resume_music() + self.ui.menu_bar.close_active_menu() + self.ui.menu_bar = self.ui.game_menu_bar + + def exit_game_mode(self): + self.game_mode = False + self.camera = self.art_camera + self.grid = self.art_grid + if self.ui.active_art: + self.camera.set_for_art(self.ui.active_art) + self.ui.message_line.post_line('', 1) + self.update_window_title() + self.al.pause_music() + self.ui.menu_bar.close_active_menu() + self.ui.menu_bar = self.ui.art_menu_bar + + def get_elapsed_time(self): + return sdl2.timer.SDL_GetTicks() + + def main_loop(self): + self.last_time = self.get_elapsed_time() + while not self.should_quit: + self.this_frame_start = self.get_elapsed_time() + self.update() + self.render() + self.last_frame_end = self.get_elapsed_time() + self.frames += 1 + self.sl.check_hot_reload() + self.csl.check_hot_reload() + self.pl.check_hot_reload() + # determine FPS + # alpha: lower = smoother + alpha = 0.05 + dt = self.get_elapsed_time() - self.this_frame_start + self.frame_time = alpha * dt + (1 - alpha) * self.frame_time + self.fps = 1000 / self.frame_time + # delay to maintain framerate, if uncapped + if self.framerate != -1: + delay = 1000 / self.framerate + # subtract work time from delay to maintain framerate + delay -= min(delay, dt) + #print('frame time %s, delaying %sms to hit %s' % (self.frame_time, delay, self.framerate)) + sdl2.timer.SDL_Delay(int(delay)) + return 1 + + def update(self): + # update whether app has mouse + input (keybaord) focus + flags = ctypes.c_uint(0) + flags = sdl2.SDL_GetWindowFlags(self.window) + self.has_input_focus = flags & sdl2.SDL_WINDOW_INPUT_FOCUS + self.has_mouse_focus = flags & sdl2.SDL_WINDOW_MOUSE_FOCUS + # start-of-frame stuff + if self.game_mode: + self.gw.frame_begin() + else: + # set all arts to "not updated" + for art in self.art_loaded_for_edit: + art.updated_this_tick = False + # handle input - once per frame + self.il.handle_input() + # update game world & anything else that should happen on fixed timestep + # avoid too many updates if eg machine straight up hangs + if self.get_elapsed_time() - self.last_time > 1000: + self.last_time = self.get_elapsed_time() + updates = (self.get_elapsed_time() - self.last_time) / self.timestep + for i in range(int(updates)): + if self.game_mode: + self.gw.pre_update() + self.gw.update() + self.gw.post_update() + self.last_time += self.timestep + self.updates += 1 + self.frame_update() + + def frame_update(self): + "updates that should happen once per frame" + if self.converter: + self.converter.update() + # game world has its own once-a-frame updates, eg art/renderables + if self.game_mode: + self.gw.frame_update() + else: + for art in self.art_loaded_for_edit: + art.update() + if self.ui.active_art and \ + not self.ui.console.visible and not self.game_mode and \ + not self.ui.menu_bar in self.ui.hovered_elements and \ + not self.ui.status_bar in self.ui.hovered_elements and \ + not self.ui.menu_bar.active_menu_name and not self.ui.active_dialog: + self.cursor.update() + self.camera.update() + if not self.game_mode: + self.grid.update() + self.cursor.end_update() + if self.ui.visible: + self.ui.update() + self.al.update() + + def debug_onion_frames(self): + "debug function to log onion renderable state" + # TODO: remove this once it's served its purpose + debug = ['current frame: %s' % self.ui.active_art.active_frame, ''] + debug.append('onion_renderables_prev:') + def get_onion_info(i, r): + visible = 'VISIBLE' if r.visible else '' + return '%s: %s frame %s %s' % (i, r.art.filename.ljust(20), r.frame, visible) + for i,r in enumerate(self.onion_renderables_prev): + debug.append(get_onion_info(i, r)) + debug.append('') + debug.append('onion_renderables_next:') + for i,r in enumerate(self.onion_renderables_next): + debug.append(get_onion_info(i, r)) + self.ui.debug_text.post_lines(debug) + + def set_overlay_image(self, image_filename): + "sets given image to draw over the active art" + try: + img = Image.open(image_filename).convert('RGBA') + r = SpriteRenderable(self, image_filename, img) + r.alpha = self.default_overlay_image_opacity + except Exception as e: + for line in traceback.format_exc().split('\n')[3:]: + if line.strip(): + self.log(line.rstrip()) + return + self.log('Using %s as overlay image.' % image_filename) + self.overlay_renderable = r + self.ui.size_and_position_overlay_image() + self.draw_overlay = True + + def render(self): + # draw main scene to framebuffer + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, self.fb.framebuffer) + bg_color = self.gw.bg_color if self.game_mode else self.bg_color + GL.glClearColor(*bg_color) + GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + if self.game_mode: + self.gw.render() + else: + for renderable in self.edit_renderables: + renderable.update() + if self.show_bg_texture: + self.bg_texture.render() + if self.converter: + self.converter.preview_sprite.render() + for r in self.edit_renderables: + r.render() + #self.debug_onion_frames() + if self.onion_frames_visible: + # draw "nearest" frames first + i = 0 + while i < self.onion_show_frames: + if self.onion_show_frames_behind: + self.onion_renderables_prev[i].render() + if self.onion_show_frames_ahead: + self.onion_renderables_next[i].render() + i += 1 + # draw selection grid, then selection, then cursor + if self.ui.active_art: + self.grid.render() + self.ui.select_tool.render_selections() + if self.ui.active_art and not self.ui.console.visible and \ + not self.ui.menu_bar in self.ui.hovered_elements and \ + not self.ui.status_bar in self.ui.hovered_elements and \ + not self.ui.popup in self.ui.hovered_elements and \ + not self.ui.menu_bar.active_menu_name and \ + not self.ui.active_dialog: + self.cursor.render() + self.debug_line_renderable.render() + if self.draw_overlay and not self.game_mode: + self.overlay_renderable.render() + # draw framebuffer to screen + GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0) + self.fb.render() + if self.ui.visible: + self.ui.render() + GL.glUseProgram(0) + sdl2.SDL_GL_SwapWindow(self.window) + + def save_persistent_setting(self, setting_name, setting_value): + # iterate over list backwards so we may safely remove from it + for line in reversed(self.config_lines): + if line.strip().startswith(setting_name): + # ignore lines that contain setting name but don't set it + if line.find('=') == -1: + continue + # setting already found, remove this redundant line + self.config_lines.remove(line) + # get current value from top-level scope and write it to end of cfg + self.config_lines += '%s = %s\n' % (setting_name, setting_value) + + def save_persistent_config(self): + "write options we want to persist across sessions to config file" + for name in self.persistent_setting_names: + # get current setting value from top-level scope + obj, member = self.persistent_setting_names[name] + obj = self if obj == '' else getattr(self, obj) + value = getattr(obj, member) + self.save_persistent_setting(name, value) + + def restore_session(self): + session_filename = self.config_dir + SESSION_FILENAME + if not os.path.exists(session_filename): + return + # more recent arts should open later + filenames = open(session_filename).readlines() + filenames.reverse() + for filename in filenames: + self.load_art_for_edit(filename.strip()) + + def save_session(self): + if not self.can_edit: + return + # write all currently open art to a file + session_file = open(self.config_dir + SESSION_FILENAME, 'w') + for art in self.art_loaded_for_edit: + # if an art has never been saved, don't bother storing it + if not os.path.exists(art.filename): + continue + session_file.write(art.filename + '\n') + session_file.close() + + def quit(self): + if self.init_success: + self.save_persistent_config() + self.save_session() + for r in self.edit_renderables: + r.destroy() + self.gw.destroy() + self.fb.destroy() + self.ui.destroy() + for charset in self.charsets: + charset.texture.destroy() + for palette in self.palettes: + palette.texture.destroy() + self.sl.destroy() + if self.al: + self.al.destroy() + sdl2.SDL_GL_DeleteContext(self.context) + sdl2.SDL_DestroyWindow(self.window) + sdl2.SDL_Quit() + # write to config file + cfg_file = open(self.config_dir + CONFIG_FILENAME, 'w') + cfg_file.writelines(self.config_lines) + cfg_file.close() + self.log('Thank you for using Playscii! <3') + + def edit_cfg(self): + cfg_path = self.config_dir + CONFIG_FILENAME + if platform.system() == 'Windows': + editor_bin = 'notepad' + elif platform.system() == 'Darwin': + editor_bin = 'open -a TextEdit' + else: + editor_bin = os.environ.get('EDITOR', None) + if not editor_bin: + return + cmd = '%s "%s"' % (editor_bin, cfg_path) + os.system(cmd) + # update resident cfg file lines, which will be saved out on exit + self.config_lines = open(cfg_path).readlines() + # execute newly edited cfg! (but only if changes were made?) + for line in self.config_lines: + exec(line) + + def open_local_url(self, url): + "opens given local (this file system) URL in a cross-platform way" + webbrowser.open('file://%s/%s' % (os.getcwd(), url)) + + def open_help_docs(self): + self.open_local_url(WEBSITE_HELP_URL) + + def open_website(self): + webbrowser.open(WEBSITE_URL) + + def generate_docs(self): + # fail gracefully if pdoc not found + try: + import pdoc + except: + self.log("pdoc module needed for documentation generation not found.") + return + for module_name in AUTOGEN_DOC_MODULES: + # pdoc.pdoc takes module name as string, returns HTML doc string + html = pdoc.pdoc(module_name) + docfile = open(AUTOGEN_DOCS_PATH + module_name + '.html', 'w') + docfile.write(html) + docfile.close() + self.log('Documentation generated successfully.') + # open ToC page + self.open_local_url(AUTOGEN_DOCS_PATH + AUTOGEN_DOC_TOC_PAGE) + + +def get_win_documents_path(): + # from http://stackoverflow.com/a/30924555/1191587 + # (winshell module too much of a pain to get working with py2exe) + import ctypes.wintypes + CSIDL_PERSONAL = 5 # My Documents + SHGFP_TYPE_CURRENT = 1 # Get current, not default value + buf = ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) + ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, SHGFP_TYPE_CURRENT, buf) + return buf.value + +def get_paths(): + # pass False as second arg to disable "app author" windows dir convention + config_dir = appdirs.user_config_dir(APP_NAME, False) + '/' + cache_dir = appdirs.user_cache_dir(APP_NAME, False) + '/' + if not os.path.exists(config_dir): + os.mkdir(config_dir) + if not os.path.exists(cache_dir): + os.mkdir(cache_dir) + if not os.path.exists(cache_dir + THUMBNAIL_CACHE_DIR): + os.mkdir(cache_dir + THUMBNAIL_CACHE_DIR) + DOCUMENTS_SUBDIR = '/Documents' + if platform.system() == 'Windows': + documents_dir = get_win_documents_path() + # issue #18: win documents path may not exist?! + if not os.path.exists(documents_dir): + os.mkdir(documents_dir) + elif platform.system() == 'Darwin': + documents_dir = os.path.expanduser('~') + DOCUMENTS_SUBDIR + # assume anything that isn't Win/Mac is a UNIX + else: + # XDG spec doesn't cover any concept of a documents folder :[ + # if ~/Documents exists use that, else just use ~/Playscii + documents_dir = os.path.expanduser('~') + if os.path.exists(documents_dir + DOCUMENTS_SUBDIR): + documents_dir += DOCUMENTS_SUBDIR + # add Playscii/ to documents path + documents_dir += '/%s/' % APP_NAME + # create Playscii dir AND subdirs for user art, charsets etc if not present + for subdir in ['', ART_DIR, CHARSET_DIR, PALETTE_DIR, FORMATS_DIR, + ART_SCRIPT_DIR, SCREENSHOT_DIR, TOP_GAME_DIR]: + new_dir = os.path.abspath(documents_dir + subdir) + # os.path.exists can fail in Windows b/c case insensitivity, + # so just try and fail :[ + try: os.mkdir(new_dir) + except: pass + return config_dir, documents_dir, cache_dir + +def get_version(): + return open(VERSION_FILENAME).readlines()[0].strip() + + +class Logger: + """ + Minimal object for logging, starts very early so we can write to it even + before Application has initialized. + """ + def __init__(self, config_dir): + self.lines = [] + config_dir, docs_dir, cache_dir = get_paths() + # use line buffering (last lines should appear even in case of crash) + bufsize = 1 + self.log_file = open(config_dir + LOG_FILENAME, 'w', bufsize) + + def log(self, new_line): + self.log_file.write('%s\n' % new_line) + self.lines.append(str(new_line)) + print(new_line) + + def close(self): + self.log_file.close() + + +def get_app(): + "creates and returns the Application instance" + # get paths for config file, later to be passed into Application + config_dir, documents_dir, cache_dir = get_paths() + # start logger even before Application has initialized so we can write to it + # startup message: application and version # + logger = Logger(config_dir) + logger.log('%s v%s' % (APP_NAME, get_version())) + # see if "autoplay this game" file exists and has anything in it + autoplay_game = None + if os.path.exists(AUTOPLAY_GAME_FILENAME): + ap = open(AUTOPLAY_GAME_FILENAME).readlines() + if len(ap) > 0: + autoplay_game = ap[0].strip() + # load in config - may change above values and submodule class defaults + cfg_filename = config_dir + CONFIG_FILENAME + if os.path.exists(cfg_filename): + logger.log('Loading config from %s...' % cfg_filename) + # execute cfg line by line so we can continue past lines with errors. + # this does mean that commenting out blocks with triple-quotes fails, + # but that's not a good practice anyway. + cfg_lines = open(cfg_filename).readlines() + # compile a new cfg with any error lines stripped out + new_cfg_lines = [] + for i,cfg_line in enumerate(cfg_lines): + cfg_line = cfg_line.strip() + try: + exec(cfg_line) + new_cfg_lines.append(cfg_line + '\n') + except: + # find line with "Error", ie the exception name, log that + error_lines = traceback.format_exc().split('\n') + error = '[an unknown error]' + for el in error_lines: + if 'Error' in el: + error = el + break + logger.log(' Removing line %s with %s' % (i, error)) + new_cfg = open(cfg_filename, 'w') + new_cfg.writelines(new_cfg_lines) + new_cfg.close() + logger.log('Config loaded.') + # if cfg file doesn't exist, copy a new one from playscii.cfg.default + else: + # snip first "this is a template" line + default_data = open(CONFIG_TEMPLATE_FILENAME).readlines()[1:] + new_cfg = open(cfg_filename, 'w') + new_cfg.writelines(default_data) + new_cfg.close() + exec(''.join(default_data)) + logger.log('Created new config file %s' % cfg_filename) + art_to_load, game_dir_to_load, state_to_load = None, None, None + # usage: + # playscii.py [artfile] | [-game gamedir [-state statefile | artfile]] + if len(sys.argv) > 1: + # "-game test1" args will set test1/ as game dir + if len(sys.argv) > 2 and sys.argv[1] == '-game': + game_dir_to_load = sys.argv[2] + # "-state testX" args will load testX game state from given game dir + if len(sys.argv) > 4 and sys.argv[3] == '-state': + state_to_load = sys.argv[4] + elif len(sys.argv) > 3: + art_to_load = sys.argv[3] + else: + # else assume first arg is an art file to load in art mode + art_to_load = sys.argv[1] + app = Application(config_dir, documents_dir, cache_dir, logger, + art_to_load or DEFAULT_ART_FILENAME, game_dir_to_load, + state_to_load, autoplay_game) + return app + +if __name__ == "__main__": + app = get_app() + error = app.main_loop() + app.quit() + app.logger.close() + sys.exit(error) diff --git a/playscii_linux.sh b/playscii_linux.sh new file mode 100755 index 0000000..8f01b68 --- /dev/null +++ b/playscii_linux.sh @@ -0,0 +1,2 @@ +python3 playscii.py "$1" "$2" "$3" "$4" + diff --git a/playscii_linux.spec b/playscii_linux.spec new file mode 100644 index 0000000..e81ab3d --- /dev/null +++ b/playscii_linux.spec @@ -0,0 +1,48 @@ +# -*- mode: python -*- + +block_cipher = None + +include_files = [ + ('./README.md', '.'), + ('license.txt', '.'), + ('*.cfg.default', '.'), + ('version', '.'), + ('art', 'art'), + ('charsets', 'charsets'), + ('palettes', 'palettes'), + ('artscripts', 'artscripts'), + ('shaders', 'shaders'), + ('games', 'games'), + ('ui/*.png', 'ui'), + ('docs/html/*.*', 'docs/html'), + ('docs/html/generated/pdoc_toc.html', 'docs/html/generated'), +] + +a = Analysis(['playscii.py'], + pathex=['./'], + binaries=None, + datas=include_files, + hiddenimports=[], + hookspath=None, + runtime_hooks=None, + excludes=None, + win_no_prefer_redirects=None, + win_private_assemblies=None, + cipher=block_cipher) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + exclude_binaries=True, + name='playscii', + debug=False, + strip=None, + upx=True, + console=True ) +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=None, + upx=True, + name='playscii') diff --git a/playscii_mac.spec b/playscii_mac.spec new file mode 100644 index 0000000..409fa9a --- /dev/null +++ b/playscii_mac.spec @@ -0,0 +1,67 @@ +# -*- mode: python -*- + +block_cipher = None + +from site import getsitepackages + +include_files = [ + ('./README.md', '.'), + ('license.txt', '.'), + ('*.cfg.default', '.'), + ('version', '.'), + ('art', 'art'), + ('charsets', 'charsets'), + ('palettes', 'palettes'), + ('artscripts', 'artscripts'), + ('formats', 'formats'), + ('shaders', 'shaders'), + ('games', 'games'), + ('ui/*.png', 'ui'), + ('docs/html/*.*', 'docs/html'), + ('docs/html/generated/*.*', 'docs/html/generated') +] + +include_bins = [ + ('/usr/local/Cellar/sdl2/2.0.16/lib/libSDL2-2.0.0.dylib', '.'), + ('/usr/local/Cellar/sdl2_mixer/2.0.4_2/lib/libSDL2_mixer-2.0.0.dylib', '.'), + ('/usr/local/Cellar/flac/1.3.3/lib/libFLAC.8.dylib', '.'), + ('/usr/local/Cellar/libmikmod/3.3.11.1/lib/libmikmod.3.dylib', '.'), + ('/usr/local/Cellar/libmodplug/0.8.9.0/lib/libmodplug.1.dylib', '.'), + ('/usr/local/Cellar/libogg/1.3.5/lib/libogg.0.dylib', '.'), + ('/usr/local/Cellar/libvorbis/1.3.7/lib/libvorbis.0.dylib', '.'), + ('/usr/local/Cellar/libvorbis/1.3.7/lib/libvorbisfile.3.dylib', '.'), + ('/usr/local/Cellar/smpeg2/2.0.0/lib/libsmpeg2-2.0.0.dylib', '.') +] + +a = Analysis(['playscii.py'], + pathex=['./'], + binaries=include_bins, + datas=include_files, + hiddenimports=[], + hookspath=None, + runtime_hooks=None, + excludes=['pdoc'], + win_no_prefer_redirects=None, + win_private_assemblies=None, + cipher=block_cipher) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + exclude_binaries=True, + name='playscii', + debug=False, + strip=None, + upx=True, + console=False ) +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=None, + upx=True, + name='playscii') +app = BUNDLE(coll, + name='Playscii.app', + icon='ui/playscii.icns', + bundle_identifier='net.jplebreton.playscii') diff --git a/profile b/profile new file mode 100755 index 0000000..f4b0394 --- /dev/null +++ b/profile @@ -0,0 +1,2 @@ +python3 -m cProfile -o playscii.profile playscii.py "$1" "$2" "$3" +gprof2dot -f pstats playscii.profile | dot -Tpng -o profile.png diff --git a/renderable.py b/renderable.py new file mode 100644 index 0000000..8727efa --- /dev/null +++ b/renderable.py @@ -0,0 +1,483 @@ +import os, math, ctypes +import numpy as np +from OpenGL import GL +from art import VERT_LENGTH +from palette import MAX_COLORS + +# inactive layer alphas +LAYER_VIS_FULL = 1 +LAYER_VIS_DIM = 0.25 +LAYER_VIS_NONE = 0 + + +class TileRenderable: + """ + 3D visual representation of an Art. Each layer is rendered as grids of + rectangular OpenGL triangle-pairs. Animation frames are uploaded into our + buffers from source Art's numpy arrays. + """ + vert_shader_source = 'renderable_v.glsl' + "vertex shader: includes view projection matrix, XYZ camera uniforms." + frag_shader_source = 'renderable_f.glsl' + "Pixel shader: handles FG/BG colors." + log_create_destroy = False + log_animation = False + log_buffer_updates = False + grain_strength = 0. + alpha = 1. + "Alpha (0 to 1) for entire Renderable." + bg_alpha = 1. + "Alpha (0 to 1) *only* for tile background colors." + default_move_rate = 1 + use_art_offset = True + "Use game object's art_off_pct values." + + def __init__(self, app, art, game_object=None): + "Create Renderable with given Art, optionally bound to given GameObject" + self.app = app + "Application that renders us." + self.art = art + "Art we get data from." + self.art.renderables.append(self) + self.go = game_object + "GameObject we're attached to." + self.exporting = False + "Set True momentarily by image export process; users shouldn't touch." + self.visible = True + "Boolean for easy render / don't-render functionality." + self.frame = self.art.active_frame or 0 + "Frame of our art's animation we're currently on" + self.animating = False + self.anim_timer, self.last_frame_time = 0, 0 + # world space position and scale + self.x, self.y, self.z = 0, 0, 0 + self.scale_x, self.scale_y, self.scale_z = 1, 1, 1 + if self.go: + self.scale_x = self.go.scale_x + self.scale_y = self.go.scale_y + self.scale_z = self.go.scale_z + # width and height in XY render space + self.width, self.height = 1, 1 + self.reset_size() + # TODO: object rotation matrix, if needed + self.goal_x, self.goal_y, self.goal_z = 0, 0, 0 + self.move_rate = self.default_move_rate + # marked True when UI is interpolating it + self.ui_moving = False + self.camera = self.app.camera + # bind VAO etc before doing shaders etc + if self.app.use_vao: + self.vao = GL.glGenVertexArrays(1) + GL.glBindVertexArray(self.vao) + self.shader = self.app.sl.new_shader(self.vert_shader_source, self.frag_shader_source) + self.proj_matrix_uniform = self.shader.get_uniform_location('projection') + self.view_matrix_uniform = self.shader.get_uniform_location('view') + self.position_uniform = self.shader.get_uniform_location('objectPosition') + self.scale_uniform = self.shader.get_uniform_location('objectScale') + self.charset_width_uniform = self.shader.get_uniform_location('charMapWidth') + self.charset_height_uniform = self.shader.get_uniform_location('charMapHeight') + self.char_uv_width_uniform = self.shader.get_uniform_location('charUVWidth') + self.char_uv_height_uniform = self.shader.get_uniform_location('charUVHeight') + self.charset_tex_uniform = self.shader.get_uniform_location('charset') + self.palette_tex_uniform = self.shader.get_uniform_location('palette') + self.grain_tex_uniform = self.shader.get_uniform_location('grain') + self.palette_width_uniform = self.shader.get_uniform_location('palTextureWidth') + self.grain_strength_uniform = self.shader.get_uniform_location('grainStrength') + self.alpha_uniform = self.shader.get_uniform_location('alpha') + self.brightness_uniform = self.shader.get_uniform_location('brightness') + self.bg_alpha_uniform = self.shader.get_uniform_location('bgColorAlpha') + self.create_buffers() + # finish + if self.app.use_vao: + GL.glBindVertexArray(0) + if self.log_create_destroy: + self.app.log('created: %s' % self) + + def __str__(self): + "for debug purposes, return a concise unique name" + for i,r in enumerate(self.art.renderables): + if r is self: + break + return '%s %s %s' % (self.art.get_simple_name(), self.__class__.__name__, i) + + def create_buffers(self): + # vertex positions and elements + # determine vertex count needed for render + self.vert_count = int(len(self.art.elem_array)) + self.vert_buffer, self.elem_buffer = GL.glGenBuffers(2) + self.update_buffer(self.vert_buffer, self.art.vert_array, + GL.GL_ARRAY_BUFFER, GL.GL_STATIC_DRAW, GL.GL_FLOAT, 'vertPosition', VERT_LENGTH) + self.update_buffer(self.elem_buffer, self.art.elem_array, + GL.GL_ELEMENT_ARRAY_BUFFER, GL.GL_STATIC_DRAW, GL.GL_UNSIGNED_INT, None, None) + # tile data buffers + # use GL_DYNAMIC_DRAW given they change every time a char/color changes + self.char_buffer, self.uv_buffer = GL.glGenBuffers(2) + # character indices (which become vertex UVs) + self.update_buffer(self.char_buffer, self.art.chars[self.frame], + GL.GL_ARRAY_BUFFER, GL.GL_DYNAMIC_DRAW, GL.GL_FLOAT, 'charIndex', 1) + # UV "mods" - modify UV derived from character index + self.update_buffer(self.uv_buffer, self.art.uv_mods[self.frame], + GL.GL_ARRAY_BUFFER, GL.GL_DYNAMIC_DRAW, GL.GL_FLOAT, 'uvMod', 2) + self.fg_buffer, self.bg_buffer = GL.glGenBuffers(2) + # foreground/background color indices (which become rgba colors) + self.update_buffer(self.fg_buffer, self.art.fg_colors[self.frame], + GL.GL_ARRAY_BUFFER, GL.GL_DYNAMIC_DRAW, GL.GL_FLOAT, 'fgColorIndex', 1) + self.update_buffer(self.bg_buffer, self.art.bg_colors[self.frame], + GL.GL_ARRAY_BUFFER, GL.GL_DYNAMIC_DRAW, GL.GL_FLOAT, 'bgColorIndex', 1) + + def update_geo_buffers(self): + self.update_buffer(self.vert_buffer, self.art.vert_array, GL.GL_ARRAY_BUFFER, GL.GL_STATIC_DRAW, GL.GL_FLOAT, None, None) + self.update_buffer(self.elem_buffer, self.art.elem_array, GL.GL_ELEMENT_ARRAY_BUFFER, GL.GL_STATIC_DRAW, GL.GL_UNSIGNED_INT, None, None) + # total vertex count probably changed + self.vert_count = int(len(self.art.elem_array)) + + def update_tile_buffers(self, update_chars, update_uvs, update_fg, update_bg): + "Update GL data arrays for tile characters, fg/bg colors, transforms." + updates = {} + if update_chars: + updates[self.char_buffer] = self.art.chars + if update_uvs: + updates[self.uv_buffer] = self.art.uv_mods + if update_fg: + updates[self.fg_buffer] = self.art.fg_colors + if update_bg: + updates[self.bg_buffer] = self.art.bg_colors + for update in updates: + self.update_buffer(update, updates[update][self.frame], + GL.GL_ARRAY_BUFFER, GL.GL_DYNAMIC_DRAW, + GL.GL_FLOAT, None, None) + + def update_buffer(self, buffer_index, array, target, buffer_type, data_type, + attrib_name, attrib_size): + if self.log_buffer_updates: + self.app.log('update_buffer: %s, %s, %s, %s, %s, %s, %s' % (buffer_index, array, target, buffer_type, data_type, attrib_name, attrib_size)) + GL.glBindBuffer(target, buffer_index) + GL.glBufferData(target, array.nbytes, array, buffer_type) + if attrib_name: + attrib = self.shader.get_attrib_location(attrib_name) + GL.glEnableVertexAttribArray(attrib) + GL.glVertexAttribPointer(attrib, attrib_size, data_type, + GL.GL_FALSE, 0, ctypes.c_void_p(0)) + # unbind each buffer before binding next + GL.glBindBuffer(target, 0) + + def advance_frame(self): + "Advance to our Art's next animation frame." + self.set_frame(self.frame + 1) + + def rewind_frame(self): + "Rewind to our Art's previous animation frame." + self.set_frame(self.frame - 1) + + def set_frame(self, new_frame_index): + "Set us to display our Art's given animation frame." + if new_frame_index == self.frame: + return + old_frame = self.frame + self.frame = new_frame_index % self.art.frames + self.update_tile_buffers(True, True, True, True) + if self.log_animation: + self.app.log('%s animating from frames %s to %s' % (self, old_frame, self.frame)) + + def start_animating(self): + "Start animation playback." + self.animating = True + self.anim_timer = 0 + + def stop_animating(self): + "Pause animation playback on current frame (in game mode)." + self.animating = False + # restore to active frame if stopping + if not self.app.game_mode: + self.set_frame(self.art.active_frame) + + def set_art(self, new_art): + "Display and bind to given Art." + if self.art: + self.art.renderables.remove(self) + self.art = new_art + self.reset_size() + self.art.renderables.append(self) + # make sure frame is valid + self.frame %= self.art.frames + self.update_geo_buffers() + self.update_tile_buffers(True, True, True, True) + #print('%s now uses Art %s' % (self, self.art.filename)) + + def reset_size(self): + self.width = self.art.width * self.art.quad_width * abs(self.scale_x) + self.height = self.art.height * self.art.quad_height * self.scale_y + + def move_to(self, x, y, z, travel_time=None): + """ + Start simple linear interpolation to given destination over given time. + Not very useful in Game Mode, mainly used for document switch UI effect + in Art Mode. + """ + # for fixed travel time, set move rate accordingly + if travel_time: + frames = (travel_time * 1000) / max(self.app.framerate, 30) + dx = x - self.x + dy = y - self.y + dz = z - self.z + dist = math.sqrt(dx ** 2 + dy ** 2 + dz ** 2) + self.move_rate = dist / frames + else: + self.move_rate = self.default_move_rate + self.ui_moving = True + self.goal_x, self.goal_y, self.goal_z = x, y, z + if self.log_animation: + self.app.log('%s will move to %s,%s' % (self.art.filename, self.goal_x, self.goal_y)) + + def snap_to(self, x, y, z): + self.x, self.y, self.z = x, y, z + self.goal_x, self.goal_y, self.goal_z = x, y, z + self.ui_moving = False + + def update_transform_from_object(self, obj): + "Update our position & scale based on that of given game object." + self.z = obj.z + if self.scale_x != obj.scale_x or self.scale_y != obj.scale_y: + self.reset_size() + self.x, self.y = obj.x, obj.y + if self.use_art_offset: + if obj.flip_x: + self.x += self.width * obj.art_off_pct_x + else: + self.x -= self.width * obj.art_off_pct_x + self.y += self.height * obj.art_off_pct_y + self.scale_x, self.scale_y = obj.scale_x, obj.scale_y + if obj.flip_x: + self.scale_x *= -1 + self.scale_z = obj.scale_z + + def update_loc(self): + # TODO: probably time to bust out the ol' vector module for this stuff + # get delta + dx = self.goal_x - self.x + dy = self.goal_y - self.y + dz = self.goal_z - self.z + dist = math.sqrt(dx ** 2 + dy ** 2 + dz ** 2) + # close enough? + if dist <= self.move_rate: + self.x = self.goal_x + self.y = self.goal_y + self.z = self.goal_z + self.ui_moving = False + return + # normalize + inv_dist = 1 / dist + dir_x = dx * inv_dist + dir_y = dy * inv_dist + dir_z = dz * inv_dist + self.x += self.move_rate * dir_x + self.y += self.move_rate * dir_y + self.z += self.move_rate * dir_z + #self.app.log('%s moved to %s,%s' % (self, self.x, self.y)) + + def update(self): + if self.go: + self.update_transform_from_object(self.go) + if self.ui_moving: + self.update_loc() + if not self.animating: + return + if self.app.game_mode and self.app.gw.paused: + return + elapsed = self.app.get_elapsed_time() - self.last_frame_time + self.anim_timer += elapsed + new_frame = self.frame + this_frame_delay = self.art.frame_delays[new_frame] * 1000 + while self.anim_timer >= this_frame_delay: + self.anim_timer -= this_frame_delay + # iterate through frames, but don't call set_frame until we're done + new_frame += 1 + new_frame %= self.art.frames + this_frame_delay = self.art.frame_delays[new_frame] * 1000 + # TODO: if new_frame < self.frame, count anim loop? + self.set_frame(new_frame) + self.last_frame_time = self.app.get_elapsed_time() + + def destroy(self): + if self.app.use_vao: + GL.glDeleteVertexArrays(1, [self.vao]) + GL.glDeleteBuffers(6, [self.vert_buffer, self.elem_buffer, self.char_buffer, self.uv_buffer, self.fg_buffer, self.bg_buffer]) + if self.art and self in self.art.renderables: + self.art.renderables.remove(self) + if self.log_create_destroy: + self.app.log('destroyed: %s' % self) + + def get_projection_matrix(self): + """ + UIRenderable overrides this so it doesn't have to override + Renderable.render and duplicate lots of code. + """ + return np.eye(4, 4) if self.exporting else self.camera.projection_matrix + + def get_view_matrix(self): + return np.eye(4, 4) if self.exporting else self.camera.view_matrix + + def get_loc(self): + "Returns world space location as (x, y, z) tuple." + export_loc = (-1, 1, 0) + return export_loc if self.exporting else (self.x, self.y, self.z) + + def get_scale(self): + "Returns world space scale as (x, y, z) tuple." + if not self.exporting: + return (self.scale_x, self.scale_y, self.scale_z) + x = 2 / (self.art.width * self.art.quad_width) + y = 2 / (self.art.height * self.art.quad_height) + return (x, y, 1) + + def render_frame_for_export(self, frame): + self.exporting = True + self.set_frame(frame) + # cache "inactive layer visibility", restore after render + ilv = self.art.app.inactive_layer_visibility + self.art.app.inactive_layer_visibility = LAYER_VIS_FULL + # cursor might be hovering, undo any preview changes + for edit in self.art.app.cursor.preview_edits: + edit.undo() + # update art to commit changes to the renderable + self.art.update() + self.render() + self.art.app.inactive_layer_visibility = ilv + self.exporting = False + + def render(self, layers=None, z_override=None, brightness=1.0): + """ + Render given list of layers at given Z depth. + If layers is None, render all layers. + If layers is an int, just render that layer. + If z_override is None, render each layer at Z defined in our Art. + """ + if not self.visible: + return + GL.glUseProgram(self.shader.program) + # bind textures - character set, palette, UI grain + GL.glActiveTexture(GL.GL_TEXTURE0) + GL.glUniform1i(self.charset_tex_uniform, 0) + GL.glBindTexture(GL.GL_TEXTURE_2D, self.art.charset.texture.gltex) + GL.glActiveTexture(GL.GL_TEXTURE1) + GL.glUniform1i(self.palette_tex_uniform, 1) + GL.glBindTexture(GL.GL_TEXTURE_2D, self.art.palette.texture.gltex) + GL.glActiveTexture(GL.GL_TEXTURE2) + GL.glUniform1i(self.grain_tex_uniform, 2) + GL.glBindTexture(GL.GL_TEXTURE_2D, self.app.ui.grain_texture.gltex) + # set active texture unit back after binding 2nd-Nth textures + GL.glActiveTexture(GL.GL_TEXTURE0) + GL.glUniform1i(self.charset_width_uniform, self.art.charset.map_width) + GL.glUniform1i(self.charset_height_uniform, self.art.charset.map_height) + GL.glUniform1f(self.char_uv_width_uniform, self.art.charset.u_width) + GL.glUniform1f(self.char_uv_height_uniform, self.art.charset.v_height) + GL.glUniform1f(self.palette_width_uniform, MAX_COLORS) + GL.glUniform1f(self.grain_strength_uniform, self.grain_strength) + # camera uniforms + GL.glUniformMatrix4fv(self.proj_matrix_uniform, 1, GL.GL_FALSE, + self.get_projection_matrix()) + GL.glUniformMatrix4fv(self.view_matrix_uniform, 1, GL.GL_FALSE, + self.get_view_matrix()) + # TODO: determine if cost of setting all above uniforms for each + # Renderable is significant enough to warrant opti where they're set once + GL.glUniform1f(self.bg_alpha_uniform, self.bg_alpha) + GL.glUniform1f(self.brightness_uniform, brightness) + GL.glUniform3f(self.scale_uniform, *self.get_scale()) + # VAO vs non-VAO paths + if self.app.use_vao: + GL.glBindVertexArray(self.vao) + else: + attrib = self.shader.get_attrib_location # for brevity + vp = ctypes.c_void_p(0) + # bind each buffer and set its attrib: + # verts + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glVertexAttribPointer(attrib('vertPosition'), VERT_LENGTH, GL.GL_FLOAT, GL.GL_FALSE, 0, vp) + GL.glEnableVertexAttribArray(attrib('vertPosition')) + # chars + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.char_buffer) + GL.glVertexAttribPointer(attrib('charIndex'), 1, GL.GL_FLOAT, GL.GL_FALSE, 0, vp) + GL.glEnableVertexAttribArray(attrib('charIndex')) + # uvs + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.uv_buffer) + GL.glVertexAttribPointer(attrib('uvMod'), 2, GL.GL_FLOAT, GL.GL_FALSE, 0, vp) + GL.glEnableVertexAttribArray(attrib('uvMod')) + # fg colors + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.fg_buffer) + GL.glVertexAttribPointer(attrib('fgColorIndex'), 1, GL.GL_FLOAT, GL.GL_FALSE, 0, vp) + GL.glEnableVertexAttribArray(attrib('fgColorIndex')) + # bg colors + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.bg_buffer) + GL.glVertexAttribPointer(attrib('bgColorIndex'), 1, GL.GL_FLOAT, GL.GL_FALSE, 0, vp) + GL.glEnableVertexAttribArray(attrib('bgColorIndex')) + # finally, bind element buffer + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_buffer) + GL.glEnable(GL.GL_BLEND) + GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA) + # draw all specified layers if no list given + if layers is None: + # sort layers in Z depth + layers = list(range(self.art.layers)) + layers.sort(key=lambda i: self.art.layers_z[i], reverse=False) + # handle a single int param + elif type(layers) is int: + layers = [layers] + layer_size = int(len(self.art.elem_array) / self.art.layers) + for i in layers: + # skip game mode-hidden layers + if not self.app.show_hidden_layers and not self.art.layers_visibility[i]: + continue + layer_start = i * layer_size + layer_end = layer_start + layer_size + # for active art, dim all but active layer based on UI setting + if not self.app.game_mode and self.art is self.app.ui.active_art and i != self.art.active_layer: + GL.glUniform1f(self.alpha_uniform, self.alpha * self.app.inactive_layer_visibility) + else: + GL.glUniform1f(self.alpha_uniform, self.alpha) + # use position offset instead of baked-in Z for layers - this + # way a layer's Z can change w/o rebuilding its vert array + x, y, z = self.get_loc() + # for export, render all layers at same Z + if not self.exporting: + z += self.art.layers_z[i] + z = z_override if z_override else z + GL.glUniform3f(self.position_uniform, x, y, z) + GL.glDrawElements(GL.GL_TRIANGLES, layer_size, GL.GL_UNSIGNED_INT, + ctypes.c_void_p(layer_start * ctypes.sizeof(ctypes.c_uint))) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0) + GL.glDisable(GL.GL_BLEND) + if self.app.use_vao: + GL.glBindVertexArray(0) + GL.glUseProgram(0) + + +class OnionTileRenderable(TileRenderable): + + "TileRenderable subclass used for onion skin display in Art Mode animation." + + # never animate + def start_animating(self): + pass + + def stop_animating(self): + pass + + +class GameObjectRenderable(TileRenderable): + + """ + TileRenderable subclass used by GameObjects. Almost no custom logic for now. + """ + + def get_loc(self): + """ + Returns world space location as (x, y, z) tuple, offset by our + GameObject's location. + """ + x, y, z = self.x, self.y, self.z + if self.go: + off_x, off_y, off_z = self.go.get_render_offset() + x += off_x + y += off_y + z += off_z + return x, y, z diff --git a/renderable_line.py b/renderable_line.py new file mode 100644 index 0000000..799fff0 --- /dev/null +++ b/renderable_line.py @@ -0,0 +1,494 @@ +import math, time, ctypes, platform +import numpy as np +from OpenGL import GL +from renderable import TileRenderable + +class LineRenderable(): + + "Renderable comprised of GL_LINES" + + vert_shader_source = 'lines_v.glsl' + vert_shader_source_3d = 'lines_3d_v.glsl' + frag_shader_source = 'lines_f.glsl' + log_create_destroy = False + line_width = 1 + # items in vert array: 2 for XY-only renderables, 3 for ones that include Z + vert_items = 2 + # use game object's art_off_pct values + use_art_offset = True + visible = True + + def __init__(self, app, quad_size_ref=None, game_object=None): + self.app = app + # we may be attached to a game object + self.go = game_object + self.unique_name = '%s_%s' % (int(time.time()), self.__class__.__name__) + self.quad_size_ref = quad_size_ref + self.x, self.y, self.z = 0, 0, 0 + self.scale_x, self.scale_y = 1, 1 + # handle Z differently if verts are 2D vs 3D + self.scale_z = 0 if self.vert_items == 2 else 1 + self.build_geo() + self.width, self.height = self.get_size() + self.reset_loc() + if self.app.use_vao: + self.vao = GL.glGenVertexArrays(1) + GL.glBindVertexArray(self.vao) + if self.vert_items == 3: + self.vert_shader_source = self.vert_shader_source_3d + self.shader = self.app.sl.new_shader(self.vert_shader_source, self.frag_shader_source) + # uniforms + self.proj_matrix_uniform = self.shader.get_uniform_location('projection') + self.view_matrix_uniform = self.shader.get_uniform_location('view') + self.position_uniform = self.shader.get_uniform_location('objectPosition') + self.scale_uniform = self.shader.get_uniform_location('objectScale') + self.quad_size_uniform = self.shader.get_uniform_location('quadSize') + self.color_uniform = self.shader.get_uniform_location('objectColor') + # vert buffers + self.vert_buffer, self.elem_buffer = GL.glGenBuffers(2) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glBufferData(GL.GL_ARRAY_BUFFER, self.vert_array.nbytes, + self.vert_array, GL.GL_STATIC_DRAW) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_buffer) + GL.glBufferData(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_array.nbytes, + self.elem_array, GL.GL_STATIC_DRAW) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0) + self.vert_count = int(len(self.elem_array)) + self.pos_attrib = self.shader.get_attrib_location('vertPosition') + GL.glEnableVertexAttribArray(self.pos_attrib) + offset = ctypes.c_void_p(0) + GL.glVertexAttribPointer(self.pos_attrib, self.vert_items, + GL.GL_FLOAT, GL.GL_FALSE, 0, offset) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + # vert colors + self.color_buffer = GL.glGenBuffers(1) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.color_buffer) + GL.glBufferData(GL.GL_ARRAY_BUFFER, self.color_array.nbytes, + self.color_array, GL.GL_STATIC_DRAW) + self.color_attrib = self.shader.get_attrib_location('vertColor') + GL.glEnableVertexAttribArray(self.color_attrib) + GL.glVertexAttribPointer(self.color_attrib, 4, + GL.GL_FLOAT, GL.GL_FALSE, 0, offset) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + if self.app.use_vao: + GL.glBindVertexArray(0) + if self.log_create_destroy: + self.app.log('created: %s' % self) + + def __str__(self): + "for debug purposes, return a unique name" + return self.unique_name + + def build_geo(self): + """ + create self.vert_array, self.elem_array, self.color_array + """ + pass + + def reset_loc(self): + pass + + def update(self): + if self.go: + self.update_transform_from_object(self.go) + + def reset_size(self): + self.width, self.height = self.get_size() + + def update_transform_from_object(self, obj): + TileRenderable.update_transform_from_object(self, obj) + + def rebind_buffers(self): + # resend verts + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glBufferData(GL.GL_ARRAY_BUFFER, self.vert_array.nbytes, + self.vert_array, GL.GL_STATIC_DRAW) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_buffer) + GL.glBufferData(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_array.nbytes, + self.elem_array, GL.GL_STATIC_DRAW) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + self.vert_count = int(len(self.elem_array)) + # resend color + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.color_buffer) + GL.glBufferData(GL.GL_ARRAY_BUFFER, self.color_array.nbytes, + self.color_array, GL.GL_STATIC_DRAW) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + + def get_projection_matrix(self): + return np.eye(4, 4) + + def get_view_matrix(self): + return np.eye(4, 4) + + def get_loc(self): + return self.x, self.y, self.z + + def get_size(self): + # overriden in subclasses that need specific width/height data + return 1, 1 + + def get_quad_size(self): + if self.quad_size_ref: + return self.quad_size_ref.quad_width, self.quad_size_ref.quad_height + else: + return 1, 1 + + def get_color(self): + return (1, 1, 1, 1) + + def get_line_width(self): + return self.line_width + + def destroy(self): + if self.app.use_vao: + GL.glDeleteVertexArrays(1, [self.vao]) + GL.glDeleteBuffers(3, [self.vert_buffer, self.elem_buffer, self.color_buffer]) + if self.log_create_destroy: + self.app.log('destroyed: %s' % self) + + def render(self): + if not self.visible: + return + GL.glUseProgram(self.shader.program) + GL.glUniformMatrix4fv(self.proj_matrix_uniform, 1, GL.GL_FALSE, self.get_projection_matrix()) + GL.glUniformMatrix4fv(self.view_matrix_uniform, 1, GL.GL_FALSE, self.get_view_matrix()) + GL.glUniform3f(self.position_uniform, *self.get_loc()) + GL.glUniform3f(self.scale_uniform, self.scale_x, self.scale_y, self.scale_z) + GL.glUniform2f(self.quad_size_uniform, *self.get_quad_size()) + GL.glUniform4f(self.color_uniform, *self.get_color()) + # VAO vs non-VAO paths + if self.app.use_vao: + GL.glBindVertexArray(self.vao) + else: + offset = ctypes.c_void_p(0) + # attribs: + # pos + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glVertexAttribPointer(self.pos_attrib, self.vert_items, + GL.GL_FLOAT, GL.GL_FALSE, 0, ctypes.c_void_p(0)) + GL.glEnableVertexAttribArray(self.pos_attrib) + # color + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.color_buffer) + GL.glVertexAttribPointer(self.color_attrib, 4, + GL.GL_FLOAT, GL.GL_FALSE, 0, offset) + GL.glEnableVertexAttribArray(self.color_attrib) + # bind elem array - see similar behavior in Cursor.render + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, self.elem_buffer) + GL.glEnable(GL.GL_BLEND) + GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA) + if platform.system() != 'Darwin': + GL.glLineWidth(self.get_line_width()) + GL.glDrawElements(GL.GL_LINES, self.vert_count, + GL.GL_UNSIGNED_INT, None) + GL.glBindBuffer(GL.GL_ELEMENT_ARRAY_BUFFER, 0) + GL.glDisable(GL.GL_BLEND) + if self.app.use_vao: + GL.glBindVertexArray(0) + GL.glUseProgram(0) + + +# common data/code used by various boxes +BOX_VERTS = [(0, 0), (1, 0), (1, -1), (0, -1)] + +def get_box_arrays(vert_list=None, color=(1, 1, 1, 1)): + verts = np.array(vert_list or BOX_VERTS, dtype=np.float32) + elems = np.array([0, 1, 1, 2, 2, 3, 3, 0], dtype=np.uint32) + colors = np.array([color * 4], dtype=np.float32) + return verts, elems, colors + + +class UIRenderableX(LineRenderable): + + "Red X used to denote transparent color in various places" + color = (1, 0, 0, 1) + line_width = 2 + + def build_geo(self): + self.vert_array = np.array([(0, 0), (1, 1), (1, 0), (0, 1)], dtype=np.float32) + self.elem_array = np.array([0, 1, 2, 3], dtype=np.uint32) + self.color_array = np.array([self.color * 4], dtype=np.float32) + + +class SwatchSelectionBoxRenderable(LineRenderable): + + "used for UI selection boxes etc" + + color = (0.5, 0.5, 0.5, 1) + line_width = 2 + + def __init__(self, app, quad_size_ref): + LineRenderable.__init__(self, app, quad_size_ref) + # track tile X and Y for cursor movement + self.tile_x, self.tile_y = 0,0 + + def get_color(self): + return self.color + + def build_geo(self): + self.vert_array, self.elem_array, self.color_array = get_box_arrays(None, self.color) + + +class ToolSelectionBoxRenderable(LineRenderable): + line_width = 2 + + def get_color(self): + return (1.0, 1.0, 1.0, 1.0) + + def build_geo(self): + self.vert_array, self.elem_array, self.color_array = get_box_arrays(None) + + +class WorldLineRenderable(LineRenderable): + "any LineRenderable that draws in world, ie in 3D perspective" + def get_projection_matrix(self): + return self.app.camera.projection_matrix + + def get_view_matrix(self): + return self.app.camera.view_matrix + + +class DebugLineRenderable(WorldLineRenderable): + + """ + renderable for drawing debug lines in the world. + use set_lines and add_lines to replace and add to, respectively, the list + of 3D vertex locations (and, optionally, colors). + """ + + color = (0.5, 0, 0, 1) + vert_items = 3 + line_width = 3 + + def set_lines(self, new_verts, new_colors=None): + "replace current debug lines with new given lines" + self.vert_array = np.array(new_verts, dtype=np.float32) + elements = [] + # TODO: possible OB1 bug here, sometimes draws line to object origin(?) + for i in range(1, len(new_verts)): + elements += [i - 1, i] + self.elem_array = np.array(elements, dtype=np.uint32) + self.color_array = np.array(new_colors or self.color * len(new_verts), + dtype=np.float32) + self.rebind_buffers() + + def set_color(self, new_color): + "changes all debug lines to given color" + self.color = new_color + lines = int(len(self.vert_array) / self.vert_items) + self.color_array = np.array(self.color * lines, dtype=np.float32) + self.rebind_buffers() + + def get_quad_size(self): + return 1, 1 + + def add_lines(self, new_verts, new_colors=None): + "add lines to the current ones" + line_items = len(self.vert_array) + lines = int(line_items / self.vert_items) + # if new_verts is a list of tuples, unpack into flat list + if type(new_verts[0]) is tuple: + new_verts_unpacked = [] + for (x, y, z) in new_verts: + new_verts_unpacked += [x, y, z] + new_verts = new_verts_unpacked + new_size = int(line_items + len(new_verts)) + self.vert_array.resize(new_size) + self.vert_array[line_items:new_size] = new_verts + # grow elem buffer + old_elem_size = len(self.elem_array) + new_elem_size = int(old_elem_size + len(new_verts) / self.vert_items) + # TODO: "contiguous" parameter that joins new lines with previous + self.elem_array.resize(new_elem_size) + self.elem_array[old_elem_size:new_elem_size] = range(old_elem_size, + new_elem_size) + # grow color buffer + old_color_size = len(self.color_array) + new_color_size = int(old_color_size + len(new_verts) / self.vert_items * 4) + self.color_array.resize(new_color_size) + self.color_array[old_color_size:new_color_size] = new_colors or self.color * int(len(new_verts) / self.vert_items) + self.rebind_buffers() + + def reset_lines(self): + self.build_geo() + + def build_geo(self): + # start empty + self.vert_array = np.array([], dtype=np.float32) + self.elem_array = np.array([], dtype=np.uint32) + self.color_array = np.array([], dtype=np.float32) + + def render(self): + # only render if we have any data + if len(self.vert_array) == 0: + return + WorldLineRenderable.render(self) + + +class OriginIndicatorRenderable(WorldLineRenderable): + + "classic 3-axis thingy showing location/rotation/scale" + + red = (1.0, 0.1, 0.1, 1.0) + green = (0.1, 1.0, 0.1, 1.0) + blue = (0.1, 0.1, 1.0, 1.0) + origin = (0, 0, 0) + x_axis = (1, 0, 0) + y_axis = (0, 1, 0) + z_axis = (0, 0, 1) + vert_items = 3 + line_width = 3 + use_art_offset = False + + def __init__(self, app, game_object): + LineRenderable.__init__(self, app, None, game_object) + + def get_quad_size(self): + return 1, 1 + + def get_size(self): + return self.go.scale_x, self.go.scale_y + + def update_transform_from_object(self, obj): + self.x, self.y, self.z = obj.x, obj.y, obj.z + self.scale_x, self.scale_y = obj.scale_x, obj.scale_y + if obj.flip_x: + self.scale_x *= -1 + self.scale_z = obj.scale_z + + def build_geo(self): + self.vert_array = np.array([self.origin, self.x_axis, + self.origin, self.y_axis, + self.origin, self.z_axis], + dtype=np.float32) + self.elem_array = np.array([0, 1, 2, 3, 4, 5], dtype=np.uint32) + self.color_array = np.array([self.red, self.red, self.green, self.green, + self.blue, self.blue], dtype=np.float32) + +class BoundsIndicatorRenderable(WorldLineRenderable): + color = (1, 1, 1, 0.5) + line_width_active = 2 + line_width_inactive = 1 + + def __init__(self, app, game_object): + self.art = game_object.renderable.art + LineRenderable.__init__(self, app, None, game_object) + + def set_art(self, new_art): + self.art = new_art + self.reset_size() + + def get_size(self): + art = self.go.art + w = (art.width * art.quad_width) * self.go.scale_x + h = (art.height * art.quad_height) * self.go.scale_y + return w, h + + def get_color(self): + # pulse if selected + if self.go in self.app.gw.selected_objects: + color = 0.75 + (math.sin(self.app.get_elapsed_time() / 100) / 2) + return (color, color, color, 1) + else: + return (1, 1, 1, 1) + + def get_line_width(self): + return self.line_width_active if self.go in self.app.gw.selected_objects else self.line_width_inactive + + def get_quad_size(self): + if not self.go: + return 1, 1 + return self.art.width * self.art.quad_width, self.art.height * self.art.quad_height + + def build_geo(self): + self.vert_array, self.elem_array, self.color_array = get_box_arrays(None, self.color) + + +class CollisionRenderable(WorldLineRenderable): + + # green = dynamic, blue = static + dynamic_color = (0, 1, 0, 1) + static_color = (0, 0, 1, 1) + + def __init__(self, shape): + self.color = self.dynamic_color if shape.go.is_dynamic() else self.static_color + self.shape = shape + WorldLineRenderable.__init__(self, shape.go.app, None, shape.go) + + def update(self): + self.update_transform_from_object(self.shape) + + def update_transform_from_object(self, obj): + self.x = obj.x + self.y = obj.y + + +def get_circle_points(radius, steps=24): + angle = 0 + points = [(radius, 0)] + for i in range(steps): + angle += math.radians(360 / steps) + x = math.cos(angle) * radius + y = math.sin(angle) * radius + points.append((x, y)) + return points + + +class CircleCollisionRenderable(CollisionRenderable): + + line_width = 2 + segments = 24 + + def get_quad_size(self): + return self.shape.radius, self.shape.radius + + def get_size(self): + w = h = self.shape.radius * 2 + w *= self.go.scale_x + h *= self.go.scale_y + return w, h + + def build_geo(self): + verts, elements, colors = [], [], [] + angle = 0 + last_x, last_y = 1, 0 + i = 0 + while i < self.segments * 4: + angle += math.radians(360 / self.segments) + verts.append((last_x, last_y)) + x = math.cos(angle) + y = math.sin(angle) + verts.append((x, y)) + last_x, last_y = x, y + elements.append((i, i+1)) + i += 2 + colors.append([self.color * 2]) + self.vert_array = np.array(verts, dtype=np.float32) + self.elem_array = np.array(elements, dtype=np.uint32) + self.color_array = np.array(colors, dtype=np.float32) + + +class BoxCollisionRenderable(CollisionRenderable): + + line_width = 2 + + def get_quad_size(self): + return self.shape.halfwidth * 2, self.shape.halfheight * 2 + + def get_size(self): + w, h = self.shape.halfwidth * 2, self.shape.halfheight * 2 + w *= self.go.scale_x + h *= self.go.scale_y + return w, h + + def build_geo(self): + verts = [(-0.5, 0.5), (0.5, 0.5), (0.5, -0.5), (-0.5, -0.5)] + self.vert_array, self.elem_array, self.color_array = get_box_arrays(verts, self.color) + + +class TileBoxCollisionRenderable(BoxCollisionRenderable): + "box for each tile in a CST_TILE object" + line_width = 1 + def get_loc(self): + # draw at Z level of collision layer + return self.x, self.y, self.go.get_layer_z(self.go.col_layer_name) diff --git a/renderable_sprite.py b/renderable_sprite.py new file mode 100644 index 0000000..67e70d7 --- /dev/null +++ b/renderable_sprite.py @@ -0,0 +1,132 @@ +import ctypes, time +import numpy as np + +from OpenGL import GL +from PIL import Image +from texture import Texture + +class SpriteRenderable: + + "basic renderable object using an image for a texture" + + vert_array = np.array([[0, 0], [1, 0], [0, 1], [1, 1]], dtype=np.float32) + vert_shader_source = 'sprite_v.glsl' + frag_shader_source = 'sprite_f.glsl' + texture_filename = 'ui/icon.png' + alpha = 1 + tex_scale_x, tex_scale_y = 1, 1 + blend = True + flip_y = True + tex_wrap = False + + def __init__(self, app, texture_filename=None, image_data=None): + self.app = app + self.unique_name = '%s_%s' % (int(time.time()), self.__class__.__name__) + self.x, self.y, self.z = self.get_initial_position() + self.scale_x, self.scale_y, self.scale_z = self.get_initial_scale() + if self.app.use_vao: + self.vao = GL.glGenVertexArrays(1) + GL.glBindVertexArray(self.vao) + # support loading texture from file or from provided data + # (remember the filename for later use) + if texture_filename: + self.texture_filename = texture_filename + if not image_data: + image_data = Image.open(self.texture_filename) + image_data = image_data.convert('RGBA') + if self.flip_y: + image_data = image_data.transpose(Image.FLIP_TOP_BOTTOM) + w, h = image_data.size + self.texture = Texture(image_data.tobytes(), w, h) + self.shader = self.app.sl.new_shader(self.vert_shader_source, self.frag_shader_source) + self.proj_matrix_uniform = self.shader.get_uniform_location('projection') + self.view_matrix_uniform = self.shader.get_uniform_location('view') + self.position_uniform = self.shader.get_uniform_location('objectPosition') + self.scale_uniform = self.shader.get_uniform_location('objectScale') + self.tex_uniform = self.shader.get_uniform_location('texture0') + self.tex_scale_uniform = self.shader.get_uniform_location('texScale') + self.alpha_uniform = self.shader.get_uniform_location('alpha') + self.vert_buffer = GL.glGenBuffers(1) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glBufferData(GL.GL_ARRAY_BUFFER, self.vert_array.nbytes, + self.vert_array, GL.GL_STATIC_DRAW) + self.vert_count = 4 + self.pos_attrib = self.shader.get_attrib_location('vertPosition') + GL.glEnableVertexAttribArray(self.pos_attrib) + offset = ctypes.c_void_p(0) + GL.glVertexAttribPointer(self.pos_attrib, 2, + GL.GL_FLOAT, GL.GL_FALSE, 0, offset) + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, 0) + if self.app.use_vao: + GL.glBindVertexArray(0) + self.texture.set_wrap(self.tex_wrap) + + def get_initial_position(self): + return 0, 0, 0 + + def get_initial_scale(self): + return 1, 1, 1 + + def get_projection_matrix(self): + return self.app.camera.projection_matrix + + def get_view_matrix(self): + return self.app.camera.view_matrix + + def get_texture_scale(self): + return self.tex_scale_x, self.tex_scale_y + + def destroy(self): + if self.app.use_vao: + GL.glDeleteVertexArrays(1, [self.vao]) + GL.glDeleteBuffers(1, [self.vert_buffer]) + + def render(self): + GL.glUseProgram(self.shader.program) + GL.glActiveTexture(GL.GL_TEXTURE0) + GL.glUniform1i(self.tex_uniform, 0) + GL.glUniform2f(self.tex_scale_uniform, *self.get_texture_scale()) + GL.glBindTexture(GL.GL_TEXTURE_2D, self.texture.gltex) + GL.glUniformMatrix4fv(self.proj_matrix_uniform, 1, GL.GL_FALSE, self.get_projection_matrix()) + GL.glUniformMatrix4fv(self.view_matrix_uniform, 1, GL.GL_FALSE, self.get_view_matrix()) + GL.glUniform3f(self.position_uniform, self.x, self.y, self.z) + GL.glUniform3f(self.scale_uniform, self.scale_x, self.scale_y, self.scale_z) + GL.glUniform1f(self.alpha_uniform, self.alpha) + if self.app.use_vao: + GL.glBindVertexArray(self.vao) + else: + GL.glBindBuffer(GL.GL_ARRAY_BUFFER, self.vert_buffer) + GL.glVertexAttribPointer(self.pos_attrib, 2, + GL.GL_FLOAT, GL.GL_FALSE, 0, ctypes.c_void_p(0)) + GL.glEnableVertexAttribArray(self.pos_attrib) + if self.blend: + GL.glEnable(GL.GL_BLEND) + GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA) + GL.glDrawArrays(GL.GL_TRIANGLE_STRIP, 0, self.vert_count) + if self.blend: + GL.glDisable(GL.GL_BLEND) + if self.app.use_vao: + GL.glBindVertexArray(0) + GL.glUseProgram(0) + + +class UISpriteRenderable(SpriteRenderable): + + def get_projection_matrix(self): + return self.app.ui.view_matrix + + def get_view_matrix(self): + return self.app.ui.view_matrix + + +class UIBGTextureRenderable(UISpriteRenderable): + alpha = 0.8 + tex_wrap = True + texture_filename = 'ui/bgnoise_alpha.png' + tex_scale_x, tex_scale_y = 8, 8 + + def get_initial_position(self): + return -1, -1, 0 + + def get_initial_scale(self): + return 2, 2, 1 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c9d5ef5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +appdirs==1.4.0 +numpy==1.20.1 +Pillow==8.1.2 +PyOpenGL==3.1.5 +PySDL2==0.9.7 diff --git a/selection.py b/selection.py new file mode 100644 index 0000000..e2add0e --- /dev/null +++ b/selection.py @@ -0,0 +1,76 @@ +import math +import numpy as np + +from renderable_line import LineRenderable + +class SelectionRenderable(LineRenderable): + + color = (0.8, 0.8, 0.8, 1) + line_width = 2 + x, y, z = 0, 0, 0 + + def build_geo(self): + # init empty arrays; geo is rebuilt every time selection changes + self.vert_array = np.array([], dtype=np.float32) + self.elem_array = np.array([], dtype=np.uint32) + self.color_array = np.array([], dtype=np.float32) + + def get_adjacent_tile(self, tiles, x, y, dir_x, dir_y): + "returns True or False based on tile dict lookup relative to given tile" + return tiles.get((x + dir_x, y + dir_y), False) + + def rebuild_geo(self, tiles): + # array source lists of verts, elements, colors + v, e, c = [], [], [] + index = 0 + for tile in tiles: + x, y = tile[0], tile[1] + # use rules to detect if a tile is above, below, + # to left or right of this one, draw lines accordingly + above = self.get_adjacent_tile(tiles, x, y, 0, -1) + below = self.get_adjacent_tile(tiles, x, y, 0, 1) + left = self.get_adjacent_tile(tiles, x, y, -1, 0) + right = self.get_adjacent_tile(tiles, x, y, 1, 0) + top_left = ( x, -y) + top_right = (x+1, -y) + bottom_right = (x+1, -y-1) + bottom_left = ( x, -y-1) + def add_line(vert_a, vert_b, verts, elems, colors, element_index): + verts += [vert_a, vert_b] + elems += [element_index, element_index+1] + colors += self.color * 2 + # verts = corners + if not above: + # top edge + add_line(top_left, top_right, v, e, c, index) + index += 2 + if not below: + # bottom edge + add_line(bottom_left, bottom_right, v, e, c, index) + index += 2 + if not left: + # left edge + add_line(top_left, bottom_left, v, e, c, index) + index += 2 + if not right: + # right edge + add_line(top_right, bottom_right, v, e, c, index) + index += 2 + self.z = self.app.ui.active_art.layers_z[self.app.ui.active_art.active_layer] + self.vert_array = np.array(v, dtype=np.float32) + self.elem_array = np.array(e, dtype=np.uint32) + self.color_array = np.array(c, dtype=np.float32) + + def reset_loc(self): + pass + + def get_projection_matrix(self): + return self.app.camera.projection_matrix + + def get_view_matrix(self): + return self.app.camera.view_matrix + + def get_color(self): + # pulse for visibility + a = 0.75 + (math.sin(self.app.get_elapsed_time() / 100) / 2) + return (a, a, a, 1) diff --git a/shader.py b/shader.py new file mode 100644 index 0000000..436c632 --- /dev/null +++ b/shader.py @@ -0,0 +1,154 @@ +import os.path, time, platform +from OpenGL import GL +from OpenGL.GL import shaders + +SHADER_PATH = 'shaders/' + +class ShaderLord: + + # time in ms between checks for hot reload + hot_reload_check_interval = 2 * 1000 + + def __init__(self, app): + "AWAKENS THE SHADERLORD" + self.app = app + self.shaders = [] + + def new_shader(self, vert_source_file, frag_source_file): + self.last_check = 0 + for shader in self.shaders: + if shader.vert_source_file == vert_source_file and shader.frag_source_file == frag_source_file: + #self.app.log('%s already uses same source' % shader) + return shader + s = Shader(self, vert_source_file, frag_source_file) + self.shaders.append(s) + return s + + def check_hot_reload(self): + if self.app.get_elapsed_time() - self.last_check < self.hot_reload_check_interval: + return + self.last_check = self.app.get_elapsed_time() + for shader in self.shaders: + vert_shader_updated, frag_shader_updated = shader.has_updated() + if vert_shader_updated: + shader.recompile(GL.GL_VERTEX_SHADER) + if frag_shader_updated: + shader.recompile(GL.GL_FRAGMENT_SHADER) + + def destroy(self): + for shader in self.shaders: + shader.destroy() + + +class Shader: + + log_compile = False + "If True, log shader compilation" + # per-platform shader versions, declared here for easier CFG fiddling + glsl_version_windows = 130 + glsl_version_unix = 130 + glsl_version_macos = 150 + glsl_version_es = 100 + + def __init__(self, shader_lord, vert_source_file, frag_source_file): + self.sl = shader_lord + # vertex shader + self.vert_source_file = vert_source_file + self.last_vert_change = time.time() + vert_source = self.get_shader_source(self.vert_source_file) + if self.log_compile: + self.sl.app.log('Compiling vertex shader %s...' % self.vert_source_file) + self.vert_shader = self.try_compile_shader(vert_source, GL.GL_VERTEX_SHADER, self.vert_source_file) + if self.log_compile and self.vert_shader: + self.sl.app.log('Compiled vertex shader %s in %.6f seconds' % (self.vert_source_file, time.time() - self.last_vert_change)) + # fragment shader + self.frag_source_file = frag_source_file + self.last_frag_change = time.time() + frag_source = self.get_shader_source(self.frag_source_file) + if self.log_compile: + self.sl.app.log('Compiling fragment shader %s...' % self.frag_source_file) + self.frag_shader = self.try_compile_shader(frag_source, GL.GL_FRAGMENT_SHADER, self.frag_source_file) + if self.log_compile and self.frag_shader: + self.sl.app.log('Compiled fragment shader %s in %.6f seconds' % (self.frag_source_file, time.time() - self.last_frag_change)) + # shader program + if self.vert_shader and self.frag_shader: + self.program = shaders.compileProgram(self.vert_shader, self.frag_shader) + + def get_shader_source(self, source_file): + src = open(SHADER_PATH + source_file, 'rb').read() + # prepend shader version for different platforms + if self.sl.app.context_es: + shader_version = self.glsl_version_es + elif platform.system() == 'Windows': + shader_version = self.glsl_version_windows + elif platform.system() == 'Darwin': + shader_version = self.glsl_version_macos + else: + shader_version = self.glsl_version_unix + version_string = '#version %s\n' % shader_version + src = bytes(version_string, 'utf-8') + src + return src + + def try_compile_shader(self, source, shader_type, source_filename): + "Catch and print shader compilation exceptions" + try: + shader = shaders.compileShader(source, shader_type) + except Exception as e: + self.sl.app.log('%s: ' % source_filename) + lines = e.args[0].split('\\n') + # salvage block after "shader compile failure" enclosed in b"" + pre = lines.pop(0).split('b"') + for line in pre + lines[:-1]: + self.sl.app.log(' ' + line) + return + return shader + + def has_updated(self): + vert_mod_time = os.path.getmtime(SHADER_PATH + self.vert_source_file) + frag_mod_time = os.path.getmtime(SHADER_PATH + self.frag_source_file) + # return two values: vert shader changed, frag shader changed + vert_changed = vert_mod_time > self.last_vert_change + frag_changed = frag_mod_time > self.last_frag_change + # store new last modified time if changed + if vert_changed: + self.last_vert_change = time.time() + if frag_changed: + self.last_frag_change = time.time() + return vert_changed, frag_changed + + def recompile(self, shader_type): + file_to_reload = self.vert_source_file + if shader_type == GL.GL_FRAGMENT_SHADER: + file_to_reload = self.frag_source_file + new_shader_source = self.get_shader_source(file_to_reload) + try: + new_shader = shaders.compileShader(new_shader_source, shader_type) + # TODO: use try_compile_shader instead here, make sure exception passes thru ok + self.sl.app.log('ShaderLord: success reloading %s' % file_to_reload) + except: + self.sl.app.log('ShaderLord: failed reloading %s' % file_to_reload) + return + # recompile program with new shader + if shader_type == GL.GL_VERTEX_SHADER: + self.vert_shader = new_shader + else: + self.frag_shader = new_shader + self.program = shaders.compileProgram(self.vert_shader, self.frag_shader) + + def get_uniform_location(self, uniform_name): + return GL.glGetUniformLocation(self.program, uniform_name) + + def get_attrib_location(self, attrib_name): + return GL.glGetAttribLocation(self.program, attrib_name) + + def destroy(self): + GL.glDeleteProgram(self.program) + + +class ShaderUniform: + # MAYBE-TODO: class for remembering uniform name, type, index. + # a Shader keeps a list of these, Renderables tell their Shader to set + # them. set methods use correct type and "try" to avoid crashes on + # hot-reload when a uniform is commented out of live GLSL. + # (try same for attributes? more data) + pass diff --git a/shaders/cursor_f.glsl b/shaders/cursor_f.glsl new file mode 100644 index 0000000..9c56fea --- /dev/null +++ b/shaders/cursor_f.glsl @@ -0,0 +1,12 @@ +precision mediump float; + +uniform vec4 baseColor; +uniform float baseAlpha; + +out vec4 outColor; + +void main() +{ + outColor = baseColor; + outColor.a *= baseAlpha; +} diff --git a/shaders/cursor_v.glsl b/shaders/cursor_v.glsl new file mode 100644 index 0000000..64dfde8 --- /dev/null +++ b/shaders/cursor_v.glsl @@ -0,0 +1,35 @@ +uniform mat4 projection; +uniform mat4 view; +uniform vec3 objectPosition; +uniform vec3 objectScale; +uniform vec2 quadSize; +uniform vec2 vertTransform; +uniform vec2 vertOffset; + +in vec3 vertPosition; + +mat4 scale(float x, float y, float z) +{ + return mat4( + vec4(x, 0.0, 0.0, 0.0), + vec4(0.0, y, 0.0, 0.0), + vec4(0.0, 0.0, z, 0.0), + vec4(0.0, 0.0, 0.0, 1.0) + ); +} + +void main() +{ + float z = vertPosition.z; + vec4 xform = vec4(vertTransform, 1, 1); + vec4 offset = vec4(vertOffset, 0, 0); + // apply scale to offsets rather than to model; more space between brackets + offset *= scale(objectScale.x, objectScale.y, objectScale.z); + // model = all 4 corners in the right place + vec4 model = vec4(vertPosition, 1) * xform + offset; + model += vec4(objectPosition, 0); + // this stretches the cursor according to charset aspect, but fixes Y weirdness + model *= vec4(quadSize, 1, 1); + // apply camera + gl_Position = projection * view * model; +} diff --git a/shaders/framebuffer_f.glsl b/shaders/framebuffer_f.glsl new file mode 100644 index 0000000..4a69482 --- /dev/null +++ b/shaders/framebuffer_f.glsl @@ -0,0 +1,13 @@ +// plain vanilla (non CRT) screen shader + +precision mediump float; + +uniform sampler2D fbo_texture; +uniform float elapsed_time; +in vec2 f_texcoord; +out vec4 f_outPixel; + +void main(void) { + vec2 texcoord = f_texcoord; + f_outPixel = texture(fbo_texture, texcoord); +} diff --git a/shaders/framebuffer_f_crt.glsl b/shaders/framebuffer_f_crt.glsl new file mode 100644 index 0000000..fa68120 --- /dev/null +++ b/shaders/framebuffer_f_crt.glsl @@ -0,0 +1,101 @@ +// CRT shader via Mattias Gustavsson - https://www.shadertoy.com/view/lsB3DV +// (screen warp, scanlines, and vignetting removed) + +precision mediump float; + +uniform sampler2D fbo_texture; +uniform float elapsed_time; +uniform vec2 resolution; +out vec4 f_outPixel; + +vec3 sample( sampler2D tex, vec2 tc ) +{ + // FIXME: apparently tons of these "dependent texture reads" are what + // kills linux intel GPU perf + vec3 s = pow(texture(tex,tc).rgb, vec3(2.2)); + return s; +} + +vec3 blur(sampler2D tex, vec2 tc, float offs) +{ + vec4 xoffs = offs * vec4(-2.0, -1.0, 1.0, 2.0) / resolution.x; + vec4 yoffs = offs * vec4(-2.0, -1.0, 1.0, 2.0) / resolution.y; + + // remember: GLSL is picky about casts, every # literal should be a float! + vec3 color = vec3(0.0, 0.0, 0.0); + + color += sample(tex,tc + vec2(xoffs.x, yoffs.x)) * 0.00366; + color += sample(tex,tc + vec2(xoffs.y, yoffs.x)) * 0.01465; + color += sample(tex,tc + vec2( 0.0, yoffs.x)) * 0.02564; + color += sample(tex,tc + vec2(xoffs.z, yoffs.x)) * 0.01465; + color += sample(tex,tc + vec2(xoffs.w, yoffs.x)) * 0.00366; + + color += sample(tex,tc + vec2(xoffs.x, yoffs.y)) * 0.01465; + color += sample(tex,tc + vec2(xoffs.y, yoffs.y)) * 0.05861; + color += sample(tex,tc + vec2( 0.0, yoffs.y)) * 0.09524; + color += sample(tex,tc + vec2(xoffs.z, yoffs.y)) * 0.05861; + color += sample(tex,tc + vec2(xoffs.w, yoffs.y)) * 0.01465; + + color += sample(tex,tc + vec2(xoffs.x, 0.0)) * 0.02564; + color += sample(tex,tc + vec2(xoffs.y, 0.0)) * 0.09524; + color += sample(tex,tc + vec2( 0.0, 0.0)) * 0.15018; + color += sample(tex,tc + vec2(xoffs.z, 0.0)) * 0.09524; + color += sample(tex,tc + vec2(xoffs.w, 0.0)) * 0.02564; + + color += sample(tex,tc + vec2(xoffs.x, yoffs.z)) * 0.01465; + color += sample(tex,tc + vec2(xoffs.y, yoffs.z)) * 0.05861; + color += sample(tex,tc + vec2( 0.0, yoffs.z)) * 0.09524; + color += sample(tex,tc + vec2(xoffs.z, yoffs.z)) * 0.05861; + color += sample(tex,tc + vec2(xoffs.w, yoffs.z)) * 0.01465; + + color += sample(tex,tc + vec2(xoffs.x, yoffs.w)) * 0.00366; + color += sample(tex,tc + vec2(xoffs.y, yoffs.w)) * 0.01465; + color += sample(tex,tc + vec2( 0.0, yoffs.w)) * 0.02564; + color += sample(tex,tc + vec2(xoffs.z, yoffs.w)) * 0.01465; + color += sample(tex,tc + vec2(xoffs.w, yoffs.w)) * 0.00366; + + return color; +} + +// http://stackoverflow.com/questions/4200224/random-noise-functions-for-glsl +float rand(vec2 co){ + return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); +} + +void main(void) { + vec2 q = gl_FragCoord.xy / resolution.xy; + vec2 uv = q; + vec3 oricol = texture( fbo_texture, vec2(q.x,q.y) ).xyz; + float orialpha = texture( fbo_texture, vec2(q.x,q.y) ).a; + vec3 col; + // warbley in X + float x = sin(0.1*elapsed_time+uv.y*21.0)*sin(0.23*elapsed_time+uv.y*29.0)*sin(0.3+0.11*elapsed_time+uv.y*31.0)*0.0017; + // tone it waay down + x *= 0.05; + float o = 2.0*mod(gl_FragCoord.y,1.0)/resolution.x; + x += o; + col.r = 1.0*blur(fbo_texture,vec2(x+uv.x+0.0009,uv.y+0.0009),1.2).x+0.005; + col.g = 1.0*blur(fbo_texture,vec2(x+uv.x+0.000,uv.y-0.0015),1.2).y+0.005; + col.b = 1.0*blur(fbo_texture,vec2(x+uv.x-0.0015,uv.y+0.000),1.2).z+0.005; + col.r += 0.2*blur(fbo_texture,vec2(x+uv.x+0.0009,uv.y+0.0009),2.25).x-0.005; + col.g += 0.2*blur(fbo_texture,vec2(x+uv.x+0.000,uv.y-0.0015),1.75).y-0.005; + col.b += 0.2*blur(fbo_texture,vec2(x+uv.x-0.0015,uv.y+0.000),1.25).z-0.005; + float ghs = 0.05; + col.r += ghs*(1.0-0.299)*blur(fbo_texture,0.75*vec2(x-0.01, -0.027)+vec2(uv.x+0.001,uv.y+0.001),7.0).x; + col.g += ghs*(1.0-0.587)*blur(fbo_texture,0.75*vec2(x+-0.022, -0.02)+vec2(uv.x+0.000,uv.y-0.002),5.0).y; + col.b += ghs*(1.0-0.114)*blur(fbo_texture,0.75*vec2(x+-0.02, -0.0)+vec2(uv.x-0.002,uv.y+0.000),3.0).z; + col = clamp(col*0.4+0.6*col*col*1.0,0.0,1.0); + col *= vec3(0.95,1.05,0.95); + col = mix( col, col * col, 0.3) * 3.8; + col *= 1.0+0.0015*sin(300.0*elapsed_time); + col*=1.0-0.15*vec3(clamp((mod(gl_FragCoord.x+o, 2.0)-1.0)*2.0,0.0,1.0)); + col *= vec3( 1.0 ) - 0.25*vec3( rand( uv+0.0001*elapsed_time), rand( uv+0.0001*elapsed_time + 0.3 ), rand( uv+0.0001*elapsed_time+ 0.5 ) ); + col = pow(col, vec3(0.45)); + if (uv.x < 0.0 || uv.x > 1.0) + col *= 0.0; + if (uv.y < 0.0 || uv.y > 1.0) + col *= 0.0; + // improvise alpha based on source + intensity + orialpha += (col.r + col.g + col.b) / 3.0; + f_outPixel = vec4(col,orialpha); +} diff --git a/shaders/framebuffer_v.glsl b/shaders/framebuffer_v.glsl new file mode 100644 index 0000000..37dad0a --- /dev/null +++ b/shaders/framebuffer_v.glsl @@ -0,0 +1,8 @@ +in vec2 v_coord; +uniform sampler2D fbo_texture; +out vec2 f_texcoord; + +void main(void) { + gl_Position = vec4(v_coord, 0.0, 1.0); + f_texcoord = (v_coord + 1.0) / 2.0; +} diff --git a/shaders/lines_3d_v.glsl b/shaders/lines_3d_v.glsl new file mode 100644 index 0000000..6953027 --- /dev/null +++ b/shaders/lines_3d_v.glsl @@ -0,0 +1,31 @@ +uniform mat4 projection; +uniform mat4 view; +uniform vec3 objectPosition; +uniform vec3 objectScale; +uniform vec2 quadSize; + +in vec3 vertPosition; +in vec4 vertColor; + +out vec4 theColor; + +mat4 scale(float x, float y, float z) +{ + return mat4( + vec4(x, 0.0, 0.0, 0.0), + vec4(0.0, y, 0.0, 0.0), + vec4(0.0, 0.0, z, 0.0), + vec4(0.0, 0.0, 0.0, 1.0) + ); +} + +void main() +{ + vec4 model = vec4(vertPosition * vec3(quadSize, 1), 1); + // scale and transform model + model *= scale(objectScale.x, objectScale.y, objectScale.z); + model += vec4(objectPosition, 0); + // apply camera + gl_Position = projection * view * model; + theColor = vertColor; +} diff --git a/shaders/lines_f.glsl b/shaders/lines_f.glsl new file mode 100644 index 0000000..1b240e3 --- /dev/null +++ b/shaders/lines_f.glsl @@ -0,0 +1,11 @@ +precision mediump float; + +uniform vec4 objectColor; + +in vec4 theColor; +out vec4 outColor; + +void main() +{ + outColor = theColor * objectColor; +} diff --git a/shaders/lines_v.glsl b/shaders/lines_v.glsl new file mode 100644 index 0000000..98a800a --- /dev/null +++ b/shaders/lines_v.glsl @@ -0,0 +1,31 @@ +uniform mat4 projection; +uniform mat4 view; +uniform vec3 objectPosition; +uniform vec3 objectScale; +uniform vec2 quadSize; + +in vec2 vertPosition; +in vec4 vertColor; + +out vec4 theColor; + +mat4 scale(float x, float y, float z) +{ + return mat4( + vec4(x, 0.0, 0.0, 0.0), + vec4(0.0, y, 0.0, 0.0), + vec4(0.0, 0.0, z, 0.0), + vec4(0.0, 0.0, 0.0, 1.0) + ); +} + +void main() +{ + vec4 model = vec4(vertPosition * quadSize, objectPosition.z, 1); + // scale and transform model + model *= scale(objectScale.x, objectScale.y, objectScale.z); + model += vec4(objectPosition, 0); + // apply camera + gl_Position = projection * view * model; + theColor = vertColor; +} diff --git a/shaders/renderable_f.glsl b/shaders/renderable_f.glsl new file mode 100644 index 0000000..6a5d7d1 --- /dev/null +++ b/shaders/renderable_f.glsl @@ -0,0 +1,52 @@ +precision mediump float; + +uniform sampler2D charset; +uniform sampler2D palette; +uniform sampler2D grain; +// width of the generated palette texture, ie palette.MAX_COLORS +uniform float palTextureWidth; +uniform float grainStrength; +uniform float bgColorAlpha; +uniform float alpha; +uniform float brightness; + +in vec2 texCoords; +in float theFgColorIndex; +in float theBgColorIndex; + +const float grainSize = 0.0075; + +out vec4 outColor; + +void main() +{ + // add tiny offsets to UVs to account for sampling imprecision + vec2 nudge = vec2(0.000001, 0.000001); + outColor = texture(charset, texCoords + nudge); + // look up fg/bg colors from palette texture + vec2 colorUV = vec2(0.0, 0.0); + // offset U coord slightly so we're not sampling from pixel boundary + colorUV.x = (theFgColorIndex + 0.01) / palTextureWidth; + vec4 fgColor = texture(palette, colorUV); + colorUV.x = (theBgColorIndex + 0.01) / palTextureWidth; + vec4 bgColor = texture(palette, colorUV); + // separate paths for full vs FG vs BG transparency + if ( theFgColorIndex < 0.99 && theBgColorIndex < 0.99 ) { + outColor.rgba = vec4(0.0, 0.0, 0.0, 0.0); + } else if ( theFgColorIndex < 0.99 ) { + // this produces a cut-out effect + outColor.a = (1.0 - outColor.a) * bgColorAlpha; + outColor.rgb = bgColor.rgb; + } else { + outColor.rgb *= fgColor.rgb; + bgColor.a *= bgColorAlpha; + // any totally transparent pixels in source get the BG color + outColor = mix(bgColor, outColor, outColor.a); + } + outColor.rgb *= brightness; + // apply "grain" for eg UI elements + vec4 grainColor = texture(grain, gl_FragCoord.xy * grainSize); + outColor.rgb += (0.5 - grainColor.rgb) * grainStrength; + // overall alpha + outColor.a *= alpha; +} diff --git a/shaders/renderable_v.glsl b/shaders/renderable_v.glsl new file mode 100644 index 0000000..36a9138 --- /dev/null +++ b/shaders/renderable_v.glsl @@ -0,0 +1,46 @@ +uniform mat4 projection; +uniform mat4 view; +uniform vec3 objectPosition; +uniform vec3 objectScale; +uniform int charMapWidth; +uniform int charMapHeight; + +uniform float charUVWidth; +uniform float charUVHeight; + +in vec3 vertPosition; +in float charIndex; +in vec2 uvMod; +in float fgColorIndex; +in float bgColorIndex; + +out vec2 texCoords; +out float theFgColorIndex; +out float theBgColorIndex; + +mat4 scale(float x, float y, float z) +{ + return mat4( + vec4(x, 0.0, 0.0, 0.0), + vec4(0.0, y, 0.0, 0.0), + vec4(0.0, 0.0, z, 0.0), + vec4(0.0, 0.0, 0.0, 1.0) + ); +} + +void main() +{ + vec4 model = vec4(vertPosition, 1); + model *= scale(objectScale.x, objectScale.y, objectScale.z); + model += vec4(objectPosition, 0); + gl_Position = projection * view * model; + // translate 1D character index into tile UV coordinates + // thanks Ian MacLarty, Sean Barrett and goldbuick for help with this! + float tileX = mod(charIndex, charMapWidth); + float tileY = charMapHeight - floor(charIndex / charMapWidth); + vec2 uv0 = vec2(tileX * charUVWidth, tileY * charUVHeight); + vec2 uv1 = vec2(uvMod.x * charUVWidth, uvMod.y * -charUVHeight); + texCoords = uv0 + uv1; + theFgColorIndex = fgColorIndex; + theBgColorIndex = bgColorIndex; +} diff --git a/shaders/sprite_f.glsl b/shaders/sprite_f.glsl new file mode 100644 index 0000000..96aa178 --- /dev/null +++ b/shaders/sprite_f.glsl @@ -0,0 +1,15 @@ +precision mediump float; + +uniform sampler2D texture0; +uniform float alpha; +uniform vec2 texScale; + +in vec2 theCoords; + +out vec4 outColor; + +void main() +{ + outColor = texture(texture0, theCoords.xy * texScale); + outColor.a *= alpha; +} diff --git a/shaders/sprite_v.glsl b/shaders/sprite_v.glsl new file mode 100644 index 0000000..e584f5b --- /dev/null +++ b/shaders/sprite_v.glsl @@ -0,0 +1,30 @@ +uniform mat4 projection; +uniform mat4 view; +uniform vec3 objectPosition; +uniform vec3 objectScale; + +in vec2 vertPosition; +//in vec2 vertCoords; + +out vec2 theCoords; + +mat4 scale(float x, float y, float z) +{ + return mat4( + vec4(x, 0.0, 0.0, 0.0), + vec4(0.0, y, 0.0, 0.0), + vec4(0.0, 0.0, z, 0.0), + vec4(0.0, 0.0, 0.0, 1.0) + ); +} + +void main() +{ + vec4 model = vec4(vertPosition, objectPosition.z, 1); + // scale and transform model + model *= scale(objectScale.x, objectScale.y, objectScale.z); + model += vec4(objectPosition, 0); + // apply camera + gl_Position = projection * view * model; + theCoords = vertPosition; +} diff --git a/texture.py b/texture.py new file mode 100644 index 0000000..24b5f34 --- /dev/null +++ b/texture.py @@ -0,0 +1,40 @@ +import numpy as np +from OpenGL import GL + +class Texture: + + # TODO: move texture data init to a set method to make hot reload trivial(?) + + mag_filter = GL.GL_NEAREST + min_filter = GL.GL_NEAREST + #min_filter = GL.GL_NEAREST_MIPMAP_NEAREST + packing = GL.GL_UNPACK_ALIGNMENT + + def __init__(self, data, width, height): + self.width, self.height = width, height + img_data = np.frombuffer(data, dtype=np.uint8) + self.gltex = GL.glGenTextures(1) + GL.glPixelStorei(self.packing, 1) + GL.glBindTexture(GL.GL_TEXTURE_2D, self.gltex) + self.set_filter(self.mag_filter, self.min_filter, False) + self.set_wrap(False, False) + GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, width, height, 0, + GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, img_data) + if bool(GL.glGenerateMipmap): + GL.glGenerateMipmap(GL.GL_TEXTURE_2D) + + def set_filter(self, new_mag_filter, new_min_filter, bind_first=True): + if bind_first: + GL.glBindTexture(GL.GL_TEXTURE_2D, self.gltex) + GL.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, new_mag_filter) + GL.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, new_min_filter) + + def set_wrap(self, new_wrap, bind_first=True): + if bind_first: + GL.glBindTexture(GL.GL_TEXTURE_2D, self.gltex) + wrap = GL.GL_REPEAT if new_wrap else GL.GL_CLAMP_TO_EDGE + GL.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, wrap) + GL.glTexParameterf(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, wrap) + + def destroy(self): + GL.glDeleteTextures([self.gltex]) diff --git a/ui.py b/ui.py new file mode 100644 index 0000000..9e14538 --- /dev/null +++ b/ui.py @@ -0,0 +1,791 @@ +import sdl2 +import numpy as np +from PIL import Image +from OpenGL import GL + +from texture import Texture +from ui_element import UIArt, FPSCounterUI, MessageLineUI, DebugTextUI, GameSelectionLabel, GameHoverLabel, ToolTip +from ui_console import ConsoleUI +from ui_status_bar import StatusBarUI +from ui_popup import ToolPopup +from ui_menu_bar import ArtMenuBar, GameMenuBar +from ui_menu_pulldown import PulldownMenu +from ui_edit_panel import EditListPanel +from ui_object_panel import EditObjectPanel +from ui_colors import UIColors +from ui_tool import PencilTool, EraseTool, GrabTool, RotateTool, TextTool, SelectTool, PasteTool, FillTool +from ui_toolbar import ArtToolBar +from art import UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270, UV_FLIPX, UV_FLIPY, UV_FLIP90, UV_FLIP270, uv_names +from edit_command import EditCommand, EditCommandTile, EntireArtCommand + +UI_ASSET_DIR = 'ui/' +SCALE_INCREMENT = 0.25 +# spacing factor of each non-active document's scale from active document +MDI_MARGIN = 1.1 + +# overlay image scale types +OIS_WIDTH = 0 +OIS_HEIGHT = 1 +OIS_FILL = 2 + + +class UI: + + # user-configured UI scale factor + scale = 1.0 + max_onion_alpha = 0.5 + charset_name = 'ui' + palette_name = 'c64_original' + # red color for warnings + error_color_index = UIColors.brightred + # low-contrast background texture that distinguishes UI from flat color + grain_texture_path = UI_ASSET_DIR + 'bgnoise_alpha.png' + # expose to classes that don't want to import this module + asset_dir = UI_ASSET_DIR + visible = True + logg = False + popup_hold_to_show = False + flip_affects_xforms = True + tool_classes = [ PencilTool, EraseTool, GrabTool, RotateTool, TextTool, + SelectTool, PasteTool, FillTool ] + tool_selected_log = 'tool selected' + art_selected_log = 'Now editing' + frame_selected_log = 'Now editing frame %s (hold time %ss)' + layer_selected_log = 'Now editing layer: %s' + swap_color_log = 'Swapped FG/BG colors' + affects_char_on_log = 'will affect characters' + affects_char_off_log = 'will not affect characters' + affects_fg_on_log = 'will affect foreground colors' + affects_fg_off_log = 'will not affect foreground colors' + affects_bg_on_log = 'will affect background colors' + affects_bg_off_log = 'will not affect background colors' + affects_xform_on_log = 'will affect character rotation/flip' + affects_xform_off_log = 'will not affect character rotation/flip' + xform_selected_log = 'Selected character transform:' + show_edit_ui_log = 'Edit UI hidden, press %s to unhide.' + + def __init__(self, app, active_art): + self.app = app + # the current art being edited + self.active_art = active_art + # dialog box set here + self.active_dialog = None + # keyboard-navigabnle element with current focus + self.keyboard_focus_element = None + # easy color index lookups + self.colors = UIColors() + # for UI, view /and/ projection matrix are identity + # (aspect correction is done in set_scale) + self.view_matrix = np.eye(4, 4, dtype=np.float32) + self.charset = self.app.load_charset(self.charset_name, False) + self.palette = self.app.load_palette(self.palette_name, False) + # currently selected char, fg color, bg color, xform - from art + self.selected_char = self.active_art.selected_char + self.selected_fg_color = self.active_art.selected_fg_color + self.selected_bg_color = self.active_art.selected_bg_color + self.selected_xform = self.active_art.selected_xform + self.selected_tool, self.previous_tool = None, None + # set True when tool settings change, cleared after update, used by + # cursor to determine if cursor update needed + self.tool_settings_changed = False + self.tools = [] + # create tools + for t in self.tool_classes: + new_tool = t(self) + tool_name = '%s_tool' % new_tool.name + setattr(self, tool_name, new_tool) + # stick in a list for popup tool tab + self.tools.append(new_tool) + self.selected_tool = self.pencil_tool + # clipboard: list of EditCommandTiles, set by cut/copy, used by paste + self.clipboard = [] + # track clipboard contents' size so we don't have to recompute it every + # cursor preview update + self.clipboard_width = 0 + self.clipboard_height = 0 + # create elements + self.elements = [] + self.hovered_elements = [] + # set geo sizes, force scale update + self.set_scale(self.scale) + self.fps_counter = FPSCounterUI(self) + self.console = ConsoleUI(self) + self.status_bar = StatusBarUI(self) + self.popup = ToolPopup(self) + self.message_line = MessageLineUI(self) + self.debug_text = DebugTextUI(self) + self.pulldown = PulldownMenu(self) + self.tooltip = ToolTip(self) + self.menu_bar = None + self.art_menu_bar = ArtMenuBar(self) + self.game_menu_bar = GameMenuBar(self) + self.menu_bar = self.art_menu_bar + self.art_toolbar = ArtToolBar(self) + self.edit_list_panel = EditListPanel(self) + self.edit_object_panel = EditObjectPanel(self) + self.game_selection_label = GameSelectionLabel(self) + self.game_hover_label = GameHoverLabel(self) + self.elements += [self.fps_counter, self.status_bar, self.popup, + self.message_line, self.debug_text, self.pulldown, + self.art_menu_bar, self.game_menu_bar, self.tooltip, + self.art_toolbar, + self.edit_list_panel, self.edit_object_panel, + self.game_hover_label, self.game_selection_label] + # add console last so it draws last + self.elements.append(self.console) + # grain texture + img = Image.open(self.grain_texture_path) + img = img.convert('RGBA') + width, height = img.size + self.grain_texture = Texture(img.tobytes(), width, height) + self.grain_texture.set_wrap(True) + self.grain_texture.set_filter(GL.GL_LINEAR, GL.GL_LINEAR_MIPMAP_LINEAR) + # update elements that weren't created when UI scale was determined + self.set_elements_scale() + # if editing is disallowed, hide game mode UI + if not self.app.can_edit: + self.set_game_edit_ui_visibility(False) + + def set_scale(self, new_scale): + old_scale = self.scale + self.scale = new_scale + # update UI renderable geo sizes for new scale + # determine width and height of current window in chars + # use floats, window might be a fractional # of chars wide/tall + aspect = float(self.app.window_width) / self.app.window_height + inv_aspect = float(self.app.window_height) / self.app.window_width + # MAYBE-TODO: this math is correct but hard to follow, rewrite for clarity + width = self.app.window_width / (self.charset.char_width * self.scale * inv_aspect) + height = self.app.window_height / (self.charset.char_height * self.scale * inv_aspect) + # any new UI elements created should use new scale + UIArt.quad_width = 2 / width * aspect + UIArt.quad_height = 2 / height * aspect + self.width_tiles = width * (inv_aspect / self.scale) + self.height_tiles = height / self.scale + # tell elements to refresh + self.set_elements_scale() + if self.scale != old_scale: + self.message_line.post_line('UI scale is now %s (%.3f x %.3f)' % (self.scale, self.width_tiles, self.height_tiles)) + + def set_elements_scale(self): + for e in self.elements: + e.art.quad_width, e.art.quad_height = UIArt.quad_width, UIArt.quad_height + # Art dimensions may well need to change + e.reset_art() + e.reset_loc() + e.art.geo_changed = True + + def window_resized(self): + # recalc renderables' quad size (same scale, different aspect) + self.set_scale(self.scale) + + def size_and_position_overlay_image(self): + # called any time active art changes, or active art changes size + r = self.app.overlay_renderable + if not r: + return + # scale aspect based on user setting + aspect = float(r.texture.width) / r.texture.height + if self.app.overlay_scale_type == OIS_WIDTH: + r.scale_x = self.active_art.width * self.active_art.quad_width + r.scale_y = r.scale_x / aspect + elif self.app.overlay_scale_type == OIS_HEIGHT: + r.scale_y = self.active_art.height * self.active_art.quad_height + r.scale_x = r.scale_y * aspect + elif self.app.overlay_scale_type == OIS_FILL: + r.scale_x = self.active_art.width * self.active_art.quad_width + r.scale_y = self.active_art.height * self.active_art.quad_height + r.y = -r.scale_y + r.z = self.active_art.layers_z[self.active_art.active_layer] + + def set_active_art(self, new_art): + self.active_art = new_art + new_charset = self.active_art.charset + new_palette = self.active_art.palette + # make sure selection isn't out of bounds in new art + old_selection = self.select_tool.selected_tiles.copy() + for tile in old_selection: + x, y = tile[0], tile[1] + if x >= new_art.width or y >= new_art.height: + self.select_tool.selected_tiles.pop(tile, None) + # keep cursor in bounds + self.app.cursor.clamp_to_active_art() + # set camera bounds based on art size + self.app.camera.set_for_art(new_art) + # set for popup + self.popup.set_active_charset(new_charset) + self.popup.set_active_palette(new_palette) + # if popup up eg toggled, redraw it completely + if self.popup.visible: + self.popup.reset_art() + self.popup.reset_loc() + # set to art's selected tile attributes + self.selected_char = self.active_art.selected_char + self.selected_fg_color = self.active_art.selected_fg_color + self.selected_bg_color = self.active_art.selected_bg_color + self.selected_xform = self.active_art.selected_xform + self.reset_onion_frames() + self.reset_edit_renderables() + # now that renderables are moved, rescale/reposition grid + self.app.grid.reset() + # rescale/reposition overlay image + self.size_and_position_overlay_image() + # tell select tool renderables + for r in [self.select_tool.select_renderable, + self.select_tool.drag_renderable]: + r.quad_size_ref = new_art + r.rebuild_geo(self.select_tool.selected_tiles) + self.app.update_window_title() + if self.app.can_edit: + self.message_line.post_line('%s %s' % (self.art_selected_log, self.active_art.filename)) + + def set_active_art_by_filename(self, art_filename): + for i,art in enumerate(self.app.art_loaded_for_edit): + if art_filename == art.filename: + break + new_active_art = self.app.art_loaded_for_edit.pop(i) + self.app.art_loaded_for_edit.insert(0, new_active_art) + new_active_renderable = self.app.edit_renderables.pop(i) + self.app.edit_renderables.insert(0, new_active_renderable) + self.set_active_art(new_active_art) + + def previous_active_art(self): + "cycles to next art in app.art_loaded_for_edit" + if len(self.app.art_loaded_for_edit) == 1: + return + next_active_art = self.app.art_loaded_for_edit.pop(-1) + self.app.art_loaded_for_edit.insert(0, next_active_art) + next_active_renderable = self.app.edit_renderables.pop(-1) + self.app.edit_renderables.insert(0, next_active_renderable) + self.set_active_art(self.app.art_loaded_for_edit[0]) + + def next_active_art(self): + if len(self.app.art_loaded_for_edit) == 1: + return + last_active_art = self.app.art_loaded_for_edit.pop(0) + self.app.art_loaded_for_edit.append(last_active_art) + last_active_renderable = self.app.edit_renderables.pop(0) + self.app.edit_renderables.append(last_active_renderable) + self.set_active_art(self.app.art_loaded_for_edit[0]) + + def set_selected_tool(self, new_tool): + if self.app.game_mode: + return + # don't re-select same tool, except to cycle fill tool (see below) + if new_tool == self.selected_tool and not type(new_tool) is FillTool: + return + # bail out of text entry if active + if self.selected_tool is self.text_tool: + self.text_tool.finish_entry() + self.previous_tool = self.selected_tool + self.selected_tool = new_tool + self.popup.reset_art() + self.tool_settings_changed = True + # special case: + # if we're selecting the fill tool and it's already selected, + # cycle through its 3 modes (char/fg/bg boundary) + cycled_fill = False + if type(self.selected_tool) is FillTool and \ + type(self.previous_tool) is FillTool: + self.selected_tool.boundary_mode = self.selected_tool.next_boundary_modes[self.selected_tool.boundary_mode] + # TODO: do we need a message line message for this? + #self.app.log(self.selected_tool.boundary_mode) + cycled_fill = True + # close menu if we selected tool from it + if self.menu_bar.active_menu_name and not cycled_fill: + self.menu_bar.close_active_menu() + self.message_line.post_line('%s %s' % (self.selected_tool.get_button_caption(), self.tool_selected_log)) + + def cycle_fill_tool_mode(self): + self.set_selected_tool(self.fill_tool) + + def get_longest_tool_name_length(self): + "VERY specific function to help status bar draw its buttons" + longest = 0 + for tool in self.tools: + if len(tool.button_caption) > longest: + longest = len(tool.button_caption) + return longest + + def cycle_selected_tool(self, back=False): + if not self.active_art: + return + tool_index = self.tools.index(self.selected_tool) + if back: + tool_index -= 1 + else: + tool_index += 1 + tool_index %= len(self.tools) + self.set_selected_tool(self.tools[tool_index]) + + def set_selected_xform(self, new_xform): + self.selected_xform = new_xform + self.popup.set_xform(new_xform) + self.tool_settings_changed = True + line = '%s %s' % (self.xform_selected_log, uv_names[self.selected_xform]) + self.message_line.post_line(line) + + def cycle_selected_xform(self, back=False): + if self.app.game_mode: return + xform = self.selected_xform + if back: + xform -= 1 + else: + xform += 1 + xform %= UV_FLIP270 + 1 + self.set_selected_xform(xform) + + def reset_onion_frames(self, new_art=None): + "set correct visibility, frame, and alpha for all onion renderables" + new_art = new_art or self.active_art + alpha = self.max_onion_alpha + total_onion_frames = 0 + def set_onion(r, new_frame, alpha): + # scale back if fewer than MAX_ONION_FRAMES in either direction + if total_onion_frames >= new_art.frames: + r.visible = False + return + r.visible = True + if not new_art is r.art: + r.set_art(new_art) + r.set_frame(new_frame) + r.alpha = alpha + # make BG dimmer so it's easier to see + r.bg_alpha = alpha / 2 + # populate "next" frames first + for i,r in enumerate(self.app.onion_renderables_next): + total_onion_frames += 1 + new_frame = new_art.active_frame + i + 1 + set_onion(r, new_frame, alpha) + alpha /= 2 + #print('next onion %s set to frame %s alpha %s' % (i, new_frame, alpha)) + alpha = self.max_onion_alpha + for i,r in enumerate(self.app.onion_renderables_prev): + total_onion_frames += 1 + new_frame = new_art.active_frame - (i + 1) + set_onion(r, new_frame, alpha) + # each successive onion layer is dimmer + alpha /= 2 + #print('previous onion %s set to frame %s alpha %s' % (i, new_frame, alpha)) + + def set_active_frame(self, new_frame): + if not self.active_art.set_active_frame(new_frame): + return + self.reset_onion_frames() + self.tool_settings_changed = True + frame = self.active_art.active_frame + delay = self.active_art.frame_delays[frame] + if self.app.can_edit: + self.message_line.post_line(self.frame_selected_log % (frame + 1, delay)) + + def set_active_layer(self, new_layer): + self.active_art.set_active_layer(new_layer) + z = self.active_art.layers_z[self.active_art.active_layer] + self.app.grid.z = z + self.select_tool.select_renderable.z = z + self.select_tool.drag_renderable.z = z + self.app.cursor.z = z + self.app.update_window_title() + self.tool_settings_changed = True + layer_name = self.active_art.layer_names[self.active_art.active_layer] + if self.app.can_edit: + self.message_line.post_line(self.layer_selected_log % layer_name) + self.size_and_position_overlay_image() + + def select_char(self, new_char_index): + if not self.active_art: + return + # wrap at last valid index + self.selected_char = new_char_index % self.active_art.charset.last_index + # only update char tooltip if it was already up; avoid stomping others + char_cycle_button = self.status_bar.button_map['char_cycle'] + char_toggle_button = self.status_bar.button_map['char_toggle'] + if char_cycle_button in self.status_bar.hovered_buttons or \ + char_toggle_button in self.status_bar.hovered_buttons: + char_toggle_button.update_tooltip() + self.tool_settings_changed = True + + def select_color(self, new_color_index, fg): + "common code for select_fg/bg" + if not self.active_art: + return + new_color_index %= len(self.active_art.palette.colors) + if fg: + self.selected_fg_color = new_color_index + else: + self.selected_bg_color = new_color_index + # same don't-stomp-another-tooltip check as above + toggle_button = self.status_bar.button_map['fg_toggle'] if fg else self.status_bar.button_map['bg_toggle'] + cycle_button = self.status_bar.button_map['fg_cycle'] if fg else self.status_bar.button_map['bg_cycle'] + if toggle_button in self.status_bar.hovered_buttons or \ + cycle_button in self.status_bar.hovered_buttons: + toggle_button.update_tooltip() + self.tool_settings_changed = True + + def select_fg(self, new_fg_index): + self.select_color(new_fg_index, True) + + def select_bg(self, new_bg_index): + self.select_color(new_bg_index, False) + + def swap_fg_bg_colors(self): + if self.app.game_mode: + return + fg, bg = self.selected_fg_color, self.selected_bg_color + self.selected_fg_color, self.selected_bg_color = bg, fg + self.tool_settings_changed = True + self.message_line.post_line(self.swap_color_log) + + def cut_selection(self): + self.copy_selection() + self.erase_tiles_in_selection() + + def erase_selection_or_art(self): + if len(self.select_tool.selected_tiles) > 0: + self.erase_tiles_in_selection() + return + self.select_all() + self.erase_tiles_in_selection() + self.select_none() + + def erase_tiles_in_selection(self): + # create and commit command group to clear all tiles in selection + frame, layer = self.active_art.active_frame, self.active_art.active_layer + new_command = EditCommand(self.active_art) + for tile in self.select_tool.selected_tiles: + new_tile_command = EditCommandTile(self.active_art) + new_tile_command.set_tile(frame, layer, *tile) + b_char, b_fg, b_bg, b_xform = self.active_art.get_tile_at(frame, layer, *tile) + new_tile_command.set_before(b_char, b_fg, b_bg, b_xform) + a_char = a_fg = 0 + a_xform = UV_NORMAL + # clear to current BG + a_bg = self.selected_bg_color + new_tile_command.set_after(a_char, a_fg, a_bg, a_xform) + new_command.add_command_tiles([new_tile_command]) + new_command.apply() + self.active_art.command_stack.commit_commands([new_command]) + self.active_art.set_unsaved_changes(True) + + def copy_selection(self): + # convert current selection tiles (active frame+layer) into + # EditCommandTiles for Cursor.preview_edits + # (via PasteTool get_paint_commands) + self.clipboard = [] + frame, layer = self.active_art.active_frame, self.active_art.active_layer + min_x, min_y = 9999, 9999 + max_x, max_y = -1, -1 + for tile in self.select_tool.selected_tiles: + x, y = tile[0], tile[1] + if x < min_x: + min_x = x + elif x > max_x: + max_x = x + if y < min_y: + min_y = y + elif y > max_y: + max_y = y + art = self.active_art + new_tile_command = EditCommandTile(art) + new_tile_command.set_tile(frame, layer, x, y) + a_char, a_fg, a_bg, a_xform = art.get_tile_at(frame, layer, x, y) + # set data as "after" state, before will be set by cursor hover + new_tile_command.set_after(a_char, a_fg, a_bg, a_xform) + self.clipboard.append(new_tile_command) + # rebase tiles at top left corner of clipboard tiles + for tile_command in self.clipboard: + x = tile_command.x - min_x + y = tile_command.y - min_y + tile_command.set_tile(frame, layer, x, y) + self.clipboard_width = max_x - min_x + self.clipboard_height = max_y - min_y + + def crop_to_selection(self, art): + # ignore non-rectangular selection features, use top left and bottom + # right corners + if len(self.select_tool.selected_tiles) == 0: + return + min_x, max_x = 99999, -1 + min_y, max_y = 99999, -1 + for tile in self.select_tool.selected_tiles: + x, y = tile[0], tile[1] + if x < min_x: + min_x = x + elif x > max_x: + max_x = x + if y < min_y: + min_y = y + elif y > max_y: + max_y = y + w = max_x - min_x + 1 + h = max_y - min_y + 1 + # create command for undo/redo + command = EntireArtCommand(art, min_x, min_y) + command.save_tiles(before=True) + art.resize(w, h, min_x, min_y) + self.app.log('Resized %s to %s x %s' % (art.filename, w, h)) + art.set_unsaved_changes(True) + # clear selection to avoid having tiles we know are OoB selected + self.select_tool.selected_tiles = {} + self.adjust_for_art_resize(art) + # commit command + command.save_tiles(before=False) + art.command_stack.commit_commands([command]) + + def reset_edit_renderables(self): + # reposition all art renderables and change their opacity + x, y = 0, 0 + for i,r in enumerate(self.app.edit_renderables): + # always put active art at 0,0 + if r in self.active_art.renderables: + r.alpha = 1 + # if game mode, don't lerp + if self.app.game_mode: + r.snap_to(0, 0, 0) + else: + r.move_to(0, 0, 0, 0.2) + else: + r.alpha = 0.5 + if self.app.game_mode: + # shift arts progressively further back + r.snap_to(x, y, -i) + else: + r.move_to(x * MDI_MARGIN, 0, -i, 0.2) + x += r.art.width * r.art.quad_width + y -= r.art.height * r.art.quad_height + + def adjust_for_art_resize(self, art): + if art is not self.active_art: + return + # update grid, camera, cursor, overlay + self.app.camera.set_for_art(art) + self.app.camera.toggle_zoom_extents(override=True) + self.size_and_position_overlay_image() + self.reset_edit_renderables() + self.app.grid.reset() + if self.app.cursor.x > art.width: + self.app.cursor.x = art.width + if self.app.cursor.y > art.height: + self.app.cursor.y = art.height + self.app.cursor.moved = True + + def resize_art(self, art, new_width, new_height, origin_x, origin_y, bg_fill): + # create command for undo/redo + command = EntireArtCommand(art, origin_x, origin_y) + command.save_tiles(before=True) + # resize + art.resize(new_width, new_height, origin_x, origin_y, bg_fill) + self.adjust_for_art_resize(art) + # commit command + command.save_tiles(before=False) + art.command_stack.commit_commands([command]) + art.set_unsaved_changes(True) + + def select_none(self): + self.select_tool.selected_tiles = {} + + def select_all(self): + self.select_tool.selected_tiles = {} + for y in range(self.active_art.height): + for x in range(self.active_art.width): + self.select_tool.selected_tiles[(x, y)] = True + + def invert_selection(self): + old_selection = self.select_tool.selected_tiles.copy() + self.select_tool.selected_tiles = {} + for y in range(self.active_art.height): + for x in range(self.active_art.width): + if not old_selection.get((x, y), False): + self.select_tool.selected_tiles[(x, y)] = True + + def get_screen_coords(self, window_x, window_y): + x = (2 * window_x) / self.app.window_width - 1 + y = (-2 * window_y) / self.app.window_height + 1 + return x, y + + def update(self): + self.select_tool.update() + # window coordinates -> OpenGL coordinates + mx, my = self.get_screen_coords(self.app.mouse_x, self.app.mouse_y) + # test elements for hover + was_hovering = self.hovered_elements[:] + self.hovered_elements = [] + for e in self.elements: + # don't hover anything while console is up + if self.console.visible: + continue + # only check visible elements + if self.app.has_mouse_focus and e.is_visible() and e.can_hover and e.is_inside(mx, my): + self.hovered_elements.append(e) + # only hover if we weren't last update + if not e in was_hovering: + e.hovered() + for e in was_hovering: + # unhover if app window loses mouse focus + if not self.app.has_mouse_focus or not e in self.hovered_elements: + e.unhovered() + # update all elements, regardless of whether they're being hovered etc + for e in self.elements: + # don't update invisible items + if e.is_visible() or e.update_when_invisible: + e.update() + # art update: tell renderables to refresh buffers + e.art.update() + self.tool_settings_changed = False + + def clicked(self, mouse_button): + handled = False + # return True if any button handled the input + for e in self.hovered_elements: + if not e.is_visible(): + continue + if e.clicked(mouse_button): + handled = True + # close pulldown if clicking outside it / the menu bar + if self.pulldown.visible and not self.pulldown in self.hovered_elements and not self.menu_bar in self.hovered_elements: + self.menu_bar.close_active_menu() + return handled + + def unclicked(self, mouse_button): + handled = False + for e in self.hovered_elements: + if e.unclicked(mouse_button): + handled = True + return handled + + def wheel_moved(self, wheel_y): + handled = False + # use wheel to scroll chooser dialogs + # TODO: look up "up arrow" bind instead? how to get + # an SDL keycode from that? + if self.active_dialog: + keycode = sdl2.SDLK_UP if wheel_y > 0 else sdl2.SDLK_DOWN + self.active_dialog.handle_input(keycode, + self.app.il.shift_pressed, + self.app.il.alt_pressed, + self.app.il.ctrl_pressed) + handled = True + elif len(self.hovered_elements) > 0: + for e in self.hovered_elements: + if e.wheel_moved(wheel_y): + handled = True + return handled + + def quick_grab(self): + if self.app.game_mode: + return + if self.console.visible or self.popup in self.hovered_elements: + return + self.grab_tool.grab() + self.tool_settings_changed = True + + def undo(self): + # if still painting, finish + if self.app.cursor.current_command: + self.app.cursor.finish_paint() + self.active_art.command_stack.undo() + self.active_art.set_unsaved_changes(True) + + def redo(self): + self.active_art.command_stack.redo() + + def open_dialog(self, dialog_class, options={}): + if self.app.game_mode and not dialog_class.game_mode_visible: + return + dialog = dialog_class(self, options) + self.active_dialog = dialog + self.keyboard_focus_element = self.active_dialog + # insert dialog at index 0 so it draws first instead of last + #self.elements.insert(0, dialog) + self.elements.remove(self.console) + self.elements.append(dialog) + self.elements.append(self.console) + + def is_game_edit_ui_visible(self): + return self.game_menu_bar.visible + + def set_game_edit_ui_visibility(self, visible, show_message=True): + self.game_menu_bar.visible = visible + self.edit_list_panel.visible = visible + self.edit_object_panel.visible = visible + if not visible: + # relinquish keyboard focus in play mode + self.keyboard_focus_element = None + if show_message and self.app.il: + bind = self.app.il.get_command_shortcut('toggle_game_edit_ui') + bind = bind.title() + self.message_line.post_line(self.show_edit_ui_log % bind, 10) + else: + self.message_line.post_line('') + self.app.update_window_title() + + def object_selection_changed(self): + if len(self.app.gw.selected_objects) == 0: + self.keyboard_focus_element = None + self.refocus_keyboard() + + def switch_edit_panel_focus(self, reverse=False): + # only allow tabbing away if list panel is in allowed mode + lp = self.edit_list_panel + if self.keyboard_focus_element is lp and \ + lp.list_operation in lp.list_operations_allow_kb_focus and \ + self.active_dialog: + self.keyboard_focus_element = self.active_dialog + # prevent any other tabbing away from active dialog + if self.active_dialog: + return + # cycle keyboard focus between possible panels + focus_elements = [None] + if self.edit_list_panel.is_visible(): + focus_elements.append(self.edit_list_panel) + if self.edit_object_panel.is_visible(): + focus_elements.append(self.edit_object_panel) + if len(focus_elements) == 1: + return + focus_elements.append(None) + # handle shift-tab + if reverse: + focus_elements.reverse() + for i,element in enumerate(focus_elements[:-1]): + if self.keyboard_focus_element is element: + self.keyboard_focus_element = focus_elements[i+1] + break + # update keyboard hover for both + self.edit_object_panel.update_keyboard_hover() + self.edit_list_panel.update_keyboard_hover() + + def refocus_keyboard(self): + "called when an element closes, sets new keyboard_focus_element" + if self.active_dialog: + self.keyboard_focus_element = self.active_dialog + if self.keyboard_focus_element: + return + if self.popup.visible: + self.keyboard_focus_element = self.popup + elif self.pulldown.visible: + self.keyboard_focus_element = self.pulldown + elif self.edit_list_panel.is_visible() and not self.edit_object_panel.is_visible(): + self.keyboard_focus_element = self.edit_list_panel + elif self.edit_object_panel.is_visible() and not self.edit_list_panel.is_visible(): + self.keyboard_focus_element = self.edit_object_panel + + def keyboard_navigate(self, move_x, move_y): + self.keyboard_focus_element.keyboard_navigate(move_x, move_y) + + def toggle_game_edit_ui(self): + # if editing is disallowed, only run this once to disable UI + if not self.app.can_edit: + return + elif not self.app.game_mode: + return + self.set_game_edit_ui_visibility(not self.game_menu_bar.visible) + + def destroy(self): + for e in self.elements: + e.destroy() + self.grain_texture.destroy() + + def render(self): + for e in self.elements: + if e.is_visible(): + e.render() diff --git a/ui/bgnoise.xcf b/ui/bgnoise.xcf new file mode 100644 index 0000000000000000000000000000000000000000..50625397e4cbc2706de0efa7fef6337a0b5533dc GIT binary patch literal 132719 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 JR^ms<{{X5oB;5c2 literal 0 HcmV?d00001 diff --git a/ui/playscii.icns b/ui/playscii.icns new file mode 100644 index 0000000000000000000000000000000000000000..05c94b80f503155a40ae459c907648d109f6a59f GIT binary patch literal 118364 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 P7`6$0=*sAN2KWEj?G~>G literal 0 HcmV?d00001 diff --git a/ui/playscii.ico b/ui/playscii.ico new file mode 100644 index 0000000000000000000000000000000000000000..948d3aa538a718f0a3187b7985bbe9fd3d1bf833 GIT binary patch literal 67646 zcmaH!2Vj@gx&H$hY>*&YTNM-;ne35G60#Erfe^At!rpr)KpPXs$KZ}KhHVu`Tc&e-oN_#zQ6Z9`}?f(oadYb1$E=!`uZULKQw4m z&u&4t1O)|+;^LLQH1GBCi~hNJVBesd!}|se8rUyrus(AQGVl6*?zvykAky7TI&+2d zn`e{OE5rZZrL$%E%J%B<*JTYg|)ZJxoV98KfO>)J*;2Aa=)xA(wjTjpTRZ^o!^&|t6MwoXl}b=mr~JYQS9 zI_d%Iw0#>XrFrogeHO}_Tq_jc_3X#&gDGJS3I#@xQMZO~_n zg*R3=x&F~!t=Ah1^Q`rn{@DIonsH<1uV3r)U5YuEj-%FN#@v)?(<{c7rfiw+yKS?6 z<2~vBy$|+VU|(H(+<2I>$nWc)_RX~4Yln`9!O*MQtLO7L=y==y^f7$oz6a96|AnD% z99%n0eOj;AZ*7C`vhN1bPT#nbUY|`lCXYV5ysmHdogE|1>-t4M1M--0G_>UJzvT(~ zrF}H@YJ0qP_}b-9uWhyU1f&b-lWnK>P2X!?D)Zrl^X~1n>4O` z(;u%cTc2&aktM!1Xg_Ux98DU&Htlk4vH48-URv8;f7{G&@;I4b#@dwOjh7jF#aDmp znA!1j<>-4Kjktbl+JI-sw|&`W>H`yJ^3EC;cFAoK0W*L+7?FKG{PWGY+O4TfZH1Fmn9jwbzZ8 zrB~%Y+ir)E8GkKL)6)k3*x7bln)1Gz@zVEtS$eSexqf-==bM%@XdrDj*w}jQGj-6$ zE@SLVWBDqawm7UT&1qR49^CCW{q3IhyKTRb878eC5A)5mS=(pJad$_D{(QE7W_-MH zw_~K`@y*wEO=s({-~YYMUB<}OZ*b8z1m^WWyD@V8zB$}tsx)BR7{G^SjLGZKt{VfV zBeV{KtFJCQj&?k>4c@r9ax@*!I{vOtt_)X>w$HZF<<;M$*E}Yld)B&bdA2OCKIKDA zZ`x$X%+iDADah3`R(JAz`A&E`|EF$=JA!mvy^V7D)(9xd5z_!EI z=f=t0y*|6~bmL`tP5bKFXK{1obS>A7iIsB(U(9Q2zh&)!{M zZTH>~|ygcxP$SrZx3y+qM1xnlZn1yh!iUftpUs^xiuxZ}#-K%VXML(s^?v zt&_YyxvOLDjiGI~orn0_V#m{__r}YVVcTQUft7zez4mLnT-)@!_Q|VTpSA6JxAb7k z^7Td2dg-|y znAb-4P18FXRyr`_u4$-4)0lDB`h0!lowm!+q<@SIPRduBPrsXb`0ZpU9Mi!X6m)~ zfHJj@-ev0!7-!N4%HE)$?%fPu(T1R);BF?p_6@9pf9v-JQN?B)_x1f$9t1UX;hy{Yw6XdF?{Z& zapn2OTgy~h*F2^^Ez6c?$Iw1I+Hm<@TGw_>tKa;;y>i_0Mv+uHSf1 zo19ECWorApZLhLgLFZ}t0N^n)$m_E$0V;b`yF1Ec62fdTV^wZYw#@mfa;JBJ^ zrY9GL>cn+U0Q7Jf>{(ojhIA*)r5l)btL2dk^l`ty@U< z;BKM8Awi)bVckMQ_3F``t6NA&Xt$8yV6N`nx_1xihAil2X~)u!wp+)^UgkNV?XDlT zjsCQ*Z+_bFWP(?g(y-El;ZM)DQQxsC$MsXkz|>{?X6Qi2(^o&=H4nc{`?PHRZt`h+ z?Ks*p9e>#Ow!IcFQ=TiwDoXZgT1!J8z)zm%1oEuwWACE-GjRa1%-wN1@-6=6cpC8dr+_5 zJ%f7n>K)vpN1twCVLiG9hlF(R4h@j5o5~3%BhVk(4lUmsbNlRXuj!*{tJhwW-rs)L zW}8lNa^C{!!T(;dQyrw^VxD!Z%w_8|JWT&>Ki%Dy<;KI{AHesnZXGwLmo&eXN7^2( z!`iAQFMaU!mv8Drvvd_O&YFiZv`$AqraXM+;m*d^??$fK@@?O>JXen1-EZ3t^IO|y z%I2Nkbv*Pk?R0rudi&e-i?n{+Ri}q2KL_^=?%88lzguqQWB*(F-u9I*_ZvDis9V@g zcl2aLy7%bWr+d#Hy+{*=Ea;Am=+-Ut-{gR)n|_(T8d~uBK%Hj%^qt~j`lD^tcH8kW zW90od`rVD4=@Zy_cbm@Axg8_he;osz?>QQ`SlGHuJzkxTFJ0Z1R>*7edu{RBq~DBe zH*{jh*w$(LqtBMF?6~W1$IC9Aw%g$3m7!zf>A#JdHqWN80ytZpOu72;XX}aK! z?FSDBhr-i$_r3Ynpzc8f289nCygM>k&cs#9<$@cgVol1D+hv`2cOwIs)m{@vX%q5Hm-Qw4XLwEWP&YZ|$Gym+PM!Cx00}{CpVb z{Lz*5`Fu9N(KUuPY&n)+wO*}H^SUv#`TagM%g2FZ-KEW5y_#PyCui)ul(N80)0^_m zvtphr>&{Q2KzyuESIZ%(fJ?%Ho3{b<>CJRLSx=lRFgeYZ5K zX>A@eezeuK(bT27%q!20uf{I~)~)I6`1(2nV| ze)rnsVQ$;0b-8?B@a*!E#-;ON4>m#YeUIQ?J%;rkjK1$S;HEF#eoI5dcxjJGkdDYS zIUYY>PN&z(#nfGLIcO8L|3fr7~3{Gy{hdum+8NbC3$p=xU?+u+Z!WOHtC$)uw~eEmPWwJ zq}6uu-pl9bA?h;adSgpjZv2#9T)C!BM>mvV`(o?yr}6skwbRt6eK7enk9)Rt+BH}$ zL+iA8EsZL_d%pv|85;Cx$2{w}Xg;r8Yg1@heFEgZVy||7NN89{pT1un@RctuA39bV zM@*3B$SF4tM@*8o(J9hCagkh|woNXj)ye%STjgxR_8T4JmdX5k(v3ZEQ%Jx514H^? z5A?Dr~wn#ayBEe__lj!C7g;U0xjyE7LB6msbyUI2tr{Xg)(H+9n%IWNFc> z$F)h@r+Q!WyShw&ZJ%s?7IV#S`s$5`YpWeE`^`^xw%`77`kcLI=Jz2XJwp2RyK~^} zx2=Qk_l%k-%@LDt+#5L&**{TQBjTk)@sC?5=N0?3dU<%-R-Sju)zt0Cfh{)uBaa@GKJ>fxox2%- zhdaNW{I|4VzZ;tH^4Ry9*BckF95cQ=2Y$Eh;GMzO)~D^Yd2N1+t!-PNO&chCojftL ztZmkQg0Zjt9^Qd6$fY%N7ybUZ_WIgJd1eerW9UNr;L@AB8-qaHJs+LZ_x<4e;Lrj0 z4F1Y3b)zQ9{>V5v605jRmXncFq&;Ga9EweqdnYfH3mNrtF0(-{O|6&fDLdsFzb~cK z$=T#>vUU7iLEGPoS1=rVU{HT62YRXx0Xbmo0re%C`60HZj-%3m<#9W{KCHCAv|sz_ zS4WL(9_dCcni@(>ZzxeD;@bb(7KaF0CoU!#uD)uT3_umP;D#tLl5N9kve5YwI;> zyl21MN9KEc-zTgu^ZVOxTQhXD?7+@%i<)@jc*`QmH*GWdJsR}oCtbj^kM6V{UwW<6%V+9W z`V92zS-v;(`;cCCejnVUe^B_XgBnIomg8XFs=6Mz-yA(rT4JWiVQhdVwE<#M8mWd9?te0!4yXAb^9y!Ci?c++MPjK%q1%>o7_P|ZpgxCW;doj1L z{(%5{K>44x8acq-(5o9i&DbSUUuxQ-sD-!_h`qY zarOD?a^<)>ym2L+pP&5mJs;L)>;vb9R)-ln^l)}qIePN7Tl;75we54?t^Bv+;Km}5 z|4sXq_O)%~x3q2BYx^01zxwBmogW(78-0KGz%PGk#gNfbKVp*Xi=K3&6WrS(CxiJU z>EwP4yZxYrm0)UK*!1}U)O27$b941gYWy@tXtmt-8Sfs!Sxa7dF1@z zD8(5&5B-0HdnY!)34{A2If`632>+jqUkZ=o|3Us=Pu~O9d*uu?a4oe#u4e3&>&S%* z=z?q08sy^Cjk0xIxv&~^Yf#U=;kWn1`ZfN6UcGvC*LgumSN{P1V&!XX@8|ny@K79d z{0!zges&C^F<6_pIe<8@+N3hKi-B!JIZw|YN{NKUxG(?w=#-xH>HL?#4v#I*#`4m$STMJj`!z{0;V9{3wd2mqzP!m*U|o(_g3WyGiH0 zcV&C&eV9|OoyU6ZGT+s2$9q@4-k}vsTedt?he>1enY0FP|936J(WRpo(+}$O@x9_7 z5*EzbeOS-ne*K5vbjNKg@#pUwIZj$fCERF3t{;t=jDIH%K97@w;NBV;57u$g3Fhtm zKE&@f8!vrt##Hh5aQxi( z8Eo~Nd9Qc!cxfyawjP6}FR#PH)@9OrIJx$@yq0#f3|qhZt@Rl@FF?)&=CRLOzSU(; z7HK{!AN+lCwxP@K$6e>x%KJS+5chosM%^{E|1AT)a`!z$zOoCOet%-TG-jnseQugG zW@pL%>@?Yvmo9tr)8s(jG-=@5?wm|%&Yvdxa?_yaw&B+YXWQKdg5w1o3>gmC9gsbtdr9ztFQxBV;`)RlZi`Z>zG39!5)Ky z!pyv2-~jwXeS>@TLJlx52oBLWBAT*1U#>C{yv^S<|}s39Z*X`{>ExNnVGkuPt6#26KZiZRny0{CQknr_X)uR-9cq zzVlbv3`VdXs-ni(q_J_;jPwYl_@W;Fg3hLQ2r2ox>Zl69rHeq9tRF-AP!Gz=+ z+m}q2>gE!uY%P;Hhf1a7K!p@{R!YgCxl-IZSIQ6bet)SHlcs!Mxy)%Tm5P0(vVKv4 z98AiRBja=A(1d(BHX%V0g%myXDiav|w=Y#>~-! zqYpdAPKIbcCl~Cqm9JgL-A^~(d&A3Ge;_6{zplSqJOb!KX{k#+{%^kez4rQbj`A?+ zj4b2sD?{7s+U(j%-QaHN@pF7192P=oPS4PRw+tRSeZuI;+h1t>Jyq{Ub`)bL2a*^aJO*~p5OY3rE ze|$RpT`3n6R?F#0a}Cyq!2MqAhYoy4N3a_@W4U6cN#~?eIX`)=oW=e-7@fiT!F;)r zTq`Hzb|D9J-O%$Bh74fcu$Ngcu=YUL^#bj`o5#AbFn3R88~!xBW5>tH`+zaC<7&sz zH~yqIyhRy?kCnH)@|+y7v}190^}4$Bo6+Ok-8Xml$#lc7-ghT&yt~q!)oXqnP1_v) zwBN}C^WK!@mo@s$$osB*9~#`dFZzDy&;hsIHsr45)25_72$qjmNX~sFvS4p6_`#=R zvGcfZuFaR~({p6j1LczSSheIoIZv{mtAXdCiD#gNXBJ2nyq~V`kOd2O7D`h>hTJ=) z27SLtPNCB~#}-M)=rn6Ds-HM25gI@TjGHC*Ca#e4tP7k?EQSBG$X99Bi!QNlcy-za zsn_^{prFA78x0)N>y|+_en9O38%Jd41p#qH9v$d7I~)}&|D0K6E;PV9=kK*?l`izX z#X|F1+3m;9mgo4)(TdGy=)m!#hpDDFvdH_bc7kb(p$Em*w#DiOEl0n*Ht@}t-t~pM zem8yd>LrcMXWMJ$dG4LVU-w^hXN(v`_`XNjO@nX#a^d(faogrd`nfWh_H5;6nNKW` zyoV}eaeblenVewe^~Xjt=g&@*LkluxeM_+vK2s@K&sIy`lQok0%zWseTBbdPOn40a z03GB!QZ5U2*eIcQglKhzN17r5i=ECKc6+h4RS8AmO0@D zxiFo3Uk;%&cb=ZUWjaff9nYiUf>x5-eJ>2*Sd->N5)lV222LAuYyucezGgcmE zI-ZKLj&VE8=I5PdQ3RzT_D|?fe*Tu%;)1N2@N8{_C5-;@|v!(Q6sT5u- zk%E`N8e1R-yCCaP=-_2!!lTf|{qtnOKJ32uR5_VYCYO?y;RoDGJRtEv35%o!+y3yl zLODKqj+~mZST3Y*exA4ysORdE`NJ$eob%ln6_#fb9r?dob5ZC-rA0qmi_H=c4HU( zS-Dp`KXl;W!9!+D8k4XMeSc=2OnYM9XPGZ5FJr?g|6Wc#@2kjwr>Z3L3Fv2cf$YWpJ3KyJj!n#y z3kgf{^=^@~!~$JR+$g6LHp?Zhvnku;^3*yx6}LbRPtK9Uqtmemup1KQ$$csNko`NL zgL*lWQO7g)K{|{-b?G}Ge1^-d7|&Qlzu#()ZY$IOK-}nE}eaL7}|QhZ=^A6gaP&X%ho#lJa5{k zzp3}%^u5RTgCg!4+UwS@+&O%0W?bq66_Wl!rDVS}U$P#lk=(B#*B@UX`43jfqV3bA zX$n|_d+X>pX=0tXJqG{IXzYQ6c-gigN2;!t$jnFQ$@J&o|3{#K7vcTqkpmBxlD|N9 zC6IqirW_wLOU}hDm$TErkTv1^Gj`$!+>IX)Ul2aQtE>Z^N?0tXm?s>G&5{;q;3EE` z)2YaR^$kG-4`pb&T9fZe+Gg2c?17M5ftnzc2I}qdpEyVJD>S|_|1cFFPJbUu5Om3p2W_7rslJ}N3q|q*|MI1 z2C(b1nZsow)93GG{+*uyu%NOUbswr$oa(O*n(x! z!F=EdcEkBp^00QOYsL5Te1ZHA;7h(vS;teh-8ejYu~d2Xz`y`G@c;7@8X8bu(y=!7 zv&Bg5LZg%2y1W@r-S6+wiqefqZ_j#iJZx}KnlSi!SQs4LJIZ&Md$QZ|tgY8R+q4!_ zi=#QG#lzI+SMq4n(k^xBcWswX#(bfj9}?WVf1iOdL+|Q8;?AKX=O;}{yQH@JBIa&Y zlKUd~e{F$e!1vaUpD+37@Fjbg|HsD@%RLEuZL+c1JMjOi|6kX9)aTolm?X7pb7kQf z*^Pf-RY!@;!tT$-KTv=Txn|D_Ihlb^7ukIk z8}1s{S?sw-rtLTDLf5hBuR{yE?sE}5Pfl&XJ|yi_Vuq78n00|G=!-M({5ACc)r{?O zVOlNNlMepBguJ-QyyD)3+8fQ|m&p9P?0Uh#kO2cUo>2XSUFAU6_yIH4hIj0^`_{?~ z9v)8_EZui^SG+Cm7E?{@rRVOK_YNbK`(ApVTyS)tW!Z8K{b+j(mZT4;+sGgfbBDds zjPZG!vK{Vf-+O+&?!7`o`u6WTC}!y0{qDYf$jB9mlT)r&;*m=26p!;9L zUV9qZ{k3_L{&=NiKE?bG3>WRllSAnFHe~)WjqAbw?_h05*Zo?-zZw2N#ijOP>y$*< zyeV5MPgh9MeHD_6EwFm`5;>B!1|7aqu1sA6&dmM5@uFf0uDS+v37vjHV*^+xygz*n zapD`X`Idw28faw$c0aZsa^Wnt!e!zHt`JM8a^M1MN!QRBSBWFJgnqb>v~{}AsC)3O znEz&ff%*yk>xLo70i73^u`za`e?iTjK8}umb^&@`{kIE^&7SqlV#&t_%zi=Vffcd<{oOt#L0aK+ zv!??cpt0S}to_rzX#2UVz^K+u$;I>m2ZbO!yzW z;W9el5;EeUOl${!Kg#!u$@}DJ67d70S4!1AW?s;9fbkRRe#4%~0R|*szoC?R05OPBfTz;QvwGe*nze!2U3F&_=A+LDqf`DSe1odmeiaol~wC=aF3;Q0*p|9!}gOT>_!PjBQIT2S8-vgEwZCGazD z9$O+kgTuZQ)MG&S&|WtWV$Dd`3v{2+=k^!)?E%N<28TdAeSBwSw4n>$IoV-oz~JNY zYXIJcXFXY=I@+b}svmf7=)}^M%j5J#U|MaPqm!=q>pU0Trr3Ay84}d3caPBU!8hNY zHDz?%w%L+)jQRanYd+JpnY`!m(?5=X7X6(4^kT_j?w-TDtj88h-cw5@llfcL^9v>G zA?&wZ1=0YX?J>!$>nrXF*n(h>E@&a%^JsJuF+h`<8zgd9Isogjak7`S;g)jN402MX zX`G!i?jy~~(bMGkgaSE|unZZnlXy^KgEO|6ePTz)=i?jBkOQP^W$(bjs1*D}Rm2Sw zI|%MqQ;8KK&(%!kkJt)VksX(nHkcn?VSacY&pJoEsBxu9TW_?ELk1c2-MaM-?H)F;ckkOGzZ^2K-z|49&6qg#dX-FnW4jc- z*(Swrx66#T_saB_wn^UOOYqms1MdYg{Xc4@@SXiq#P^c7nq>OdH%LBn!6lt*W&g4j z(m1c2HJ}`DWvxFiQ}*R#$)0?!>~uMpo59-uG}*(|n4KxRrnBZZXPz9WS}M&2C9L75 z$o`}>*-hF8Vg%|br@f?7+U9PSd*|+wV?`UJwUG1$S<;-HK{*++FN1r*Oli$rYGTIE z;4iwAybfKlguSF|m@BT8bE()9JfBWk2_3DIQ~bWd{ruDwCf49&(juuFKZEsxzJtR; z!oqLw6;Av>PmLe&_7@l*q2EvFizD*Z=M*DzS=&vqb9g)5VK6aR`gz~tsPthkgFQOl z$PFJ2+24*XG>@SThqW)SM{7!NN*lcQW3PTKPv86azF*JazIP7lH#B+Zo!H&u8x~6D zO|Kjl3(hfB%zg`q!^y;jgYq!SgF5>jiB6=hw;H_bGe+U84HN3~RR zE|Ai;wX)**3$pW_@5tVxEz&w|n$#}JlbQpiQrc23Wt36YzECRL7D+`*ja1%SE#*h& zOX>b9DL+;}b5BqZ6mgiE-J|Nt{4CaRVoaDL9JU zI6gMV#0{L`cPB9gNA;R8Q`#rYyU{jo3HCs?t{e64uX4aQF9_AOV_!UB7e67G8ccjL zTWP?~_Z+@XPAevXYe!CZ+jP*7hrQ)r4`+j?mE~5>SQ%mJbTYuuf=zGfBoKSU_pIH6 zKbPhE@ZP<@6!GPt(7uEEO`3Vvh|;Yxv2le=du6SZeRNIM$DQuXPxl=qtKeW^(rkrkWQ=SemG zff*0amAn@!kUa}!`YTnE&z*TFwn!!O4*W;DmW+Lp@hm=xhZe}X#^rK6W3k*DUm^Fh zUZ6hV*4PBr2C+TRHEqNUbf`U|ai|)Li0(MS)xuiE;V9M}rrPso*Ym6lK#YU znf~n!GV3?3vP@n9W06LAUpC8cWy!D4$@G_3N#X0;WY+K6rCPot+n|qHzHhzpJ6Zhc zGgA4-CYk@qtI)xF(namop+MZ8ghdhPt!TVhNM@x3k zmV;B7HxNg9E^&?AJ7G51rJ}NU`+90{Ftdg>ST;cmK z!11rhf%jzHpB|Tjuh&WS-=E^0(#>DZeYgBtcFIqni66)&UZy_ z%*C>3SCKR&CCCBd2aZlolwBKhWZo&_2h_*#%tCAo<|As8f_KIfRg(AO5=noG-@2Z} z`tsskh0;7_siyv^QT$nshI!9wa#u6(+42j00YRu^oVib>He`;K+?nCJ0emHWf z9FLoap9sGpYfhJ@ZY7SWM0y4Fxiz$B_wYM<-eTg2IDdeB$9A8Q#t-=Y16}tUT3!s) z#}-Sc2YfyQmG>T&K0DBp0hT^2&W0{bI<`}}@A_NuH}CCpSAB2rN9HTv_rjmww?}ZF zJHq=7PaHBdb%orWw^4@A+4I?ml3g;Y`iSH{`?#$7+xMmBx0htb*H%j|I(_D!TV(N# zH^Av5@cIY%{aBX$?uyKKb-hgg)+Q($ZKD)_&?$@m^$kN8_0T{A<*xg~BQoQKB~rus|A7SN46(?7@%W8$6J=lZ zG+BA5ND5hJ$VCq1uvU=6+F^#yLs&b^egytUHss$|DJvUi$gZSh){ck;K<}T1pD!e> zB6e^V{wVNgKH9`uL+*iqP(kj#gIGsd^V$#8J>J_^kec+ zmXQ^jhwpyuzd+yjK;PdM@#Wwi==-?zJMWrVE2Bzx$UUVy<(}f*61nhz0iOWAId)YSk`>}x|DqXkj(hzR>^&Rom78#N!H5ivh@9P zQt&!<;9p*Z$NvWYe?mU|fcGaQ@7pW!^WrmjeWO%-d>;GqXMFz~boGg>{@@WQdTfy_ z1i$^sQ%(F(Cp!Dk81@O_57@FHUlw}tgt@F0WZ`$r#uu4|{?C4%_ygu1*{mNe*p(0e z<9}eiv2FBJIYE5b#i`3!N30}1qyQbCf!t>eN@W07EAvx5e?axXp=kUK_>)fKE4a*h z(Zl$dF6&;D6y0w)N4f{~W}i_n_8sf_1AR4qz{ml!Zs=PtfZqb_0fVJ44kQ3ygR_Tq zAnrUHdG2BDXhku1XGQ8eD_h8~`wR^Bfwtb~?R=;2Zynfw*wnj*;8Poxzg0$*Hhwm; zbe9Z+21b_ckx@$z$n-bgGPpIsmm6=qD+~V{Jl|XjcAI3@AKGOJHri%nz%IUT`NxlC z$!%z3Z%012f?3MCJ}QvrUd z{O8pVsq2uG$68|M1M_6j-aKiDL$2d@R-3P5Oqz)qJ~FvV&Lyms(-X>x6T}9<_B+D9 zBi(nR`x82`2Rqn*aAwK^c)uS10KQ{<2M^;*(EZ0}6Y6fXk6Vr$FzW@qb-$st2W%XX zTRS%U&I95H{CZijcbApZhJSr@U@^5m9L3e9H8?BYpPLg{IbqB3^Ss8hJAIG5H~PL; zXm|L&&zB;<64blbpqobL-g#G%^8H2`QMpHkSJunOk_H*U6}hlg^1uDKtj4ZaeZB|V zfAwF#EhYciDuu7r%k*!omGbv5z|TK~2HuBv{~>EWcv&j(6BObv$iz34{mNo^bE8!M z>t$@dk7UJrZ%XlhAC=-Cw8*Tt+NAV5Z8H12M`iZ+TV>`iPROEvevi67kkx;DP-Z-} zOcpd0fj{ya{MuAUvyO0>dovid$0y6SbvaVQyr2lIbBP(q)HuSI;D2Jt3Z5&K1v_WR z!Fcju^B)3J#kMtis@xlgJ;0jcrAcMTmg&q3GE5xtF_ru9zV1hC$A5Ty$`aO#x105b z>&d(26zd2N>3RXa#OtYBWEb=k64dKfPAN6#4`@80J%{9r_Z=&KijTwE`RJSt=%)$i zE3o|Uc--;1(*-6yv|;GV-2Z=kkG}8L2Yr8gc%R{MLxv=-lDnsGlTnrRpN&A?4=>#V z_Pb=noJO8^$cP2IWy-}`nf~Ke`0_=gzw40AYOl@z#T6-dVJY%{hs^q8JKw*J3=nkp zU%>AtGXM8yk^9TR1Uu}djYj_KykR%rYd`w{AHna@9e+Sae1u&2t8D%IAEBX-spC`V z=#R4IlgFj-#l^C;c80VPKYkFo-vR#~#1E`T@_*^-z@!@eRuWxIL*~ANFYvW3lJ|`*Qu@z}$oF3ue0O3mtpAAb-#y5Delu%>+okGnPeV8V zVqW+suAf6AACmS4H1juTMvx8v!}V+M|A^oJD=XfAOlCf}M3(J_f3g2s#xN%z&Hhl< ziJHOi80$xE&_mN0;tGf-+_oD3(An8CiFIW2=ec*mPL)ZvTusYf5lYuB!Vya zgKsDHz;Wz>lgY#k#h1(BG1IXL(u@vh#Wp-bT&d0*PqW^n=Z{^%H+&ubKM((3QU5Wq zBxf^-EtP7nt|~D+hf04FlE<1MC5{`F%E?k^PPalrHRLWxc24 z!CL9V(u1W5efHyS_b?fsu367fJ0E|(vGcz)u-~vLcMie+9X4aD^7>~Z%Af)KJfr5; zOGI%U^S-^v{yO-7FLbaI{8vflqe~_CTU({*zdK~HyeeD4OKr5RH{O#azqyPrc!d;x zd#B9&DR#X4hrzH8UfzViaOv;P$&8n`NYy7VlJ8?#|Bu(C^0%F`RNkfxl@}@#K9p5A z-jee7j>|&c?^OB!!9!And|6UEQx3wvtz)^+(P{%8L53fL1~i_a9b2s#+0dGoh`)H6 zENhxAa~>fE=}~+HPnXI3-G%Hw(S0JEFQU9n-s9ML=A03JA199dF!5rir*O_>+y*%_ zfw*GIZ9x{CP+EwqAzsYxFW2>^>zqSyku|3)#2K6i`}D{?FkZ@<0AWJ+U0j(_Yy@ ze9s0c|NBL7{co`Q6S(~oIq^sz1FdorR-9o}{4eQZw&>fsl$T_9HeMX!=z-B|;cdYv)RX(eK z!124vaLe0PCTQFc-&8k%uRWg&yvr(Ix^MdbhlQ|!?$U^4xThZgo|L~9$ey3LE{q0rs zyZU$jihN)mfZVS|*YB0jj0{kp@>b;j9^UWay_x^9wyr0dd`T_ zMCVxci;XY9FHlL0@ftaYpYU*Wx*X>G$xF!mYv}sxse9!Y~vwQWvE$S=XdNRL{&c1WlZ0307jWS{`c$cE* zD{Ara;^#x=kDQC`R|@{^f+=GSV83E3zmf4t21w`JLCO z@30wu#`E`}jo&~=-{blfY2K9O?>;Yc-##R(nion_>Qr=p0=^maJ@bHeusalijE0ZZ zCTu5$;0Un;oxIoB(u2(R>o(^~&B;PpyD38&@f)gdSL2S=$A5t54scgrkDfDioJ(U6 zI+z!np2S`P{NE?=`<)`*_zZD`7l;wmm@_?t=rUMeO>M*uAl3*yp!?DvBnHj+2%!g! zDR=;TpcXySEhzMsZawk= z-s`jdZDK-<4WM&9y*L>$NaMC{8#rLpw7c$1Sb;x(Jv_bbhQYm@`8{}#P}#41J{NsI zPxU_bUomsR3j9CFfrzC?@aMgPoW23isy_djEcxA4neis`_II{R>4)v;>sP? z`#-Vo50b8P%oI70ks^(iQ)PF4vhf>qqVv`EH}iV(wy|eSV^G!Sa|rtB#3pQ}+(Y;Y zJ10+**!Tx}hKKg;t82%-IP+5VfQhf;tOSF*x9;Pg1A;YjKKJ+8@wwW2ZVkY_ z*Sj~@2Yd93;@|JiK?5geMh=_3#mwtQg7e5C^#1G}*!>L>F`Kzx@pkM#Z2jVG*aTod z8y~l?7y)8-448! z7yJclf82|ZA+vvYFY8QiBOCr#8c5fYnJuj;sd6A|8f*NS(m)(Qb24%sS*~%Ux)->8 zO0w+Z{od)se`HRT11X8bjqoisMfPS)m3@WNq$xLB>I;}J=4BCQz_|nY*|L|j2Aa%y z1F4)rz+QFY3l2`7E_(~-OUs2BCT}k|wS6j#6IxdqB z9*}W$wKBS{USf9E%7mt45_k2i#9ursQ_r82DJ@MByR%+K*Y1+o##Sl$`RmB`Pmv)X zgXiyM!$02T`F);s{qTKc%KL^sHnR4&^PeB`?nC7NpU^2EV;B5c8s0b|oip-e>%t7xcAoifOgcyW*CQhKZwMZ)H;6RxMSB7R#pP#l)`` z5GRm_uYj`!Cghq}#FG=Um1aynQle<5@|pKP?kCHA}>j{Sr~VLn6x1EAw_s#EL`s zfS$z1^BZ);``C4A@7p!L27HB${8oE!C;DR-J_B86(DlE1e(&VI7h2f&#sz7~&ymd= zbEQ(({jTBHXMgCzT{ESw0A9y7Y-4}vrd4@Tak@yRvu8YyJp>E(7D;W%G+DK8mgH+5 z;*@fptdN2SD`eK?IZ|?cmJ~lYTZ$enVV_Zz6g@ac=3L|aiLaIsTfmycv&1y=epy|a z97>+a95Yu=5esx2U*XYM^%HPbiS9eaZ+K)h{zGhq<74x%Q`qkYEp)K=_z>ru%^y0_ z;6JE`o;%UIPw&v)#0OCWoQBgUYWz-CGdL}X;sa7JAHp}RQo!|})pyy(Vd5lTfD$(qzi;3TA z=prg{n?z05`9K|Z!XAlWzA$_)^FnL`T_1?5*(aG7UY2D)`EMzC=oy)?-~ee4fIqsU z3|gt#Epg{|OCfOsHS#hv@EN?W`2P!R6=#dL;@`-(o#s-S(CY?i-<5{%T#@G70_OKA zQeT}d8&4GC>#dR*7v@PhaX#ze`^L#S|Bsj5RqQA1m@YG~v-jje4ZL0^g=dIa#TStC zIPn6HRLK1HnX+eDitMUD56n-KbuF`?fq62oqfmCPN|)6K`TaOCO~kb4KeIrV?OZ|p z2zw0SjjQm<8TjOS+#2M;9J9Z;b3Arp!gjfuxJ9lcaXt}y4o)X*kn>ZBTVq|Z>dxT? z|C>4UbRgot7xRD~-NP*Y?4vilt-SBE`@vKBTz@N%V*?nu&_zCY@AR9=8_542{@weA zh4#K<;Gp3tcaNH~ULuHr8Z`@E&aVUO9pH>CNZcw>@PBk1R{}DhzQw9s;EGP(EK$gZ zh%EBp9~e~uo?t(!tl9Vq#$X#JH9R8u-+fco{{1IX_14Rh*?3GQt~@RgC5>hdIjXu* zCUmTqX^#>&@WFZPgWn$~uopt}u%x^0PJ_GxIAPa6lA0NrSA6=Hl z3fAyb(~!fQAFy_YEVwXRW;{gf2YV2z8VY4^5%GSBsrZQ!Wy`h#nSbvbnelWf`-iF} zml*YI_7%^3xLD?%FP2qXGC7X``*9p=ev{**b`$3j9Gxz!x3Eu%c}DHpEGfG%S7tp_ z2E8nn4GmyD9UBiH;A!H=AH^4>vBMYe7abXsO^kUp>xtNb=+JY?%my7;v)~k1Dm^qKMi~VP?4Zz&dg5s~2<9pt_I5Dd${Bi-lNB;-#fA@ai z|K*#)M|g`2Rdjpe6RjR<`no3HvaMvsq9=N ztCnOV>+#uVC(9oAd|l@(Foj32)X1EDWwK&vwzS11OJ`PsG%iY$)y>cV=ZqA*$UYTf z1Qr}BmR$=|Wq+Ps3p%KK4VX(dXA^&1o+>Rl_=LwXf8h6ls&v`dI#Xs}tC2O$8{|~J z#(!}BoUZ$1ZDY>}vEx(9Su5sTqPQjI?~^>h+~5+vL8XyvjPt3uGPAC@^j#_ydcX7goam z%ok(V9+mip`-$6oQ&zE7H~WRBW#XzslJoVaW%b{FAoG6us-*3?B$Jl4OAP*`i7gx9 z|An0KLmcTdoY(%5`Uii@eBpgV2M54g<^2w5U@v^Ha$o5~pZCH4>pp%|3ZEqoWbbU| za@g%@Y0|-dvW*+?_n*h#k3P?StPC5kNa|-~V)wIG7(d{SO*v9=sziz}U=v;~lGW@h zYDIqN8j!B-bg&+%`%R7$SJcUxLTfCs=Ib|E`jXUrkRGcc4bzA1k(QNjgrL7@O zoO8(7WBkyxjdCTv3cn%iL+nSmH+iKzki14trL1QU0&&Lao8)RjjhsUMFB)Rye>i{J zM&*C+5b$^MpFLK}+iu=x?(n-=6V$aGXYYCQeV5MizNZ^J+3|1ukNv0ef8dCWVUd&9 zNlX&Fow(iT_?WEi*aLMEF#~ykd{@06qxt|Eh(UHm$72s*BSy22G9q_7egSj{5gysZ57yHfex*CqYry)tRn5s9j5kg+>jCGNsy;yPcGmEZe?ls)pOOkCb1yMB<-kN@0rB_mUYNx>B1KX_9MJT$*z@rCnq}B!*aICoQ>CFYRq7Wq&#Ouz z<~)TxpGk*3-$+?H|m}Q^#L5l=dW`~^(`HN4i0A}NpqFfgWQ<{pHI%@41yVQ zB55J~&VEDqTjNPu*<*fsd$eSNLW{mTX7hknF-?*n7+>s(+jGC+A>?f?DQh;`V18{fNMDzL+fG{%#CX4Or_ zQa2+*+R`}_EG|j5ZO@X0r#VaJ@wt-oKn-%Dh`D>F9Kv64Xe@Lv4*$+Xa88*jjhsEG zdkmVG=Qk&%5(}bh2f8N-J&**}`RQ_~03Sh4y6jI)Mjx$OYDe z&Y>%>#Is(^9uxILH?dZv``J2KFFF~=c{8j9=-(|nOuj0Izp?)<{+9olt2_UXhqKcK zjwXCQ0H*_#7LWyIoxr0DCo{eX|IpsZ|9j%@8W{(s33`Eb;#z}m47?qk1-42D1&rA^Rr({lp_bnCxRa_9}^R0=Q7S8&xvoKE%PSmvp&a6Q{=)R>RtOuNmuQq>=;6g$b{^n%f5mykQF~sN-;ss7k z8G7 z8N<1GkvYhQWyI#Z@jABJ|H#7czakUYfH%J4h%#)6x%iLE4#;qw_pzohys}Xu(ET&s zc^lq-k9C}fCI5wGoa+VObFN$FYs6*}yPN$4aT?!PBc&f)rre(ze~`w8s$ZZE{@=x= zvBHPGd9Sq2$dNkY{c5h1u`igs#P?RKJ)pk6RN}PJ*PAwC4_sir$5|wK>>Vy|m@WH? zko~FHc9W*c_U-vH;{oD=H8%L68dqT{5`58`u9juws5XU1?!3U9@O8AJ#mz{f)>^fj<9ZU9$Wit0`o%X zX0e_Bg$?SV_#6HY(Eq{R4VH$#t*sX*1N7O>|Lh#V|J*g6-1>e4@mK$k%KtkD4!kGv zuE@z7k?m`+_rR06eU#4mnWsi4Y?4UMRM2@rWC3{QTYzG^aktF_#fLMiBBS?NY@LGPnjndkejDiPi|w4YN==c-5jR) zhr$0ndIacy>_64%mZ$yCio3N3oDaaQ2PnOmXQMNeF04(^mH*ZM(>E-v?~w5DyR+|( zn6irbpYl64AalCd1ZW_hc^)(ni?3od_I_jzI2L0U6fz%3A+62B$z!oK^fS;s9Pekl6| z-5*YTF8hUZlonoQ{Q#LT?PbpVdwwNx1=sKs{sRT{r{QFhOrB`wp^ zq&YD~wrn8$Y~7G83ohapyo#UTa)~V4$R0)PNR0<; z1%F*HYKi1LsVVaf|LZwJZR4;9$IN8jFoT!@&YF##!QU#w{)4B^U>_WZHWm&Uq4PiN zzkdC1viuMJJv{%P^1sF3$#vD|=GpMR#n=A!>jM34^}gx~wE;gb|CRsyhlOJQg%3-< zYZUrFdWy<+Wc(CtJLBU~TMynh7vHe|qOb?l-XAp`Ie^}eVL$z-+}+ssO_Kk8mH+R_ z{O`Uj6IUNJbHRxD?UHlpSy}z_UrEV*PsxOZx`tdYQH$GU`VZCb{|8z9?vuojE|E;) z@v_wi_XNH*=7Jf_3H7X?yr;1Vo?j}3-`zs|=V4iZJ+Kox(|KS6bHr7@d{X8eS%^NL zE-jN;%fm*~`T6Q5{D6-j?=Q07ueBUGz}yfy(1AVBP(2lU0eb+OaZ!DaG$wGSKwgsU zE1fF4<|Ru*X%goQBuf)>zeDKgeZ&nM&Q6rQHA(DKWxWWyznOgoy65~jdfog@I_RLC zGi8tA@3}-g;8kSfX|7AyNmuZfTsP0P>@ndCvXo8i8!0m}r1S4I`1er%pW@%UtNu6q zuUP7w-^zQ%Gms{D_UwMe*~$Tx7dE|-9R`10{|WH_c=A7d#I(Cdq5l=@NNl@U^t+h{ z;`>pXFk0Lci zT$ZA5z9y?b`86>>FG@!9B}v?IQIeb3y92$f`N#KV{vS`v%vV<6PY3HKITwJ~%)DpW zqxIxs_UkO9T-6Kweg%E-^;I(OgR3S^U@NkJ2l%i2^JDnrm&u~0S+Wg3Ujuf1CqDnW zE%{Q)+`i~3^!@#%QnMd>U`CcSB!ew@Z(pA!)u(35QqG?<=Zqs8j*dfzPr#DME`c!Bpleq%1V=d5u&JUZ$q!1^zfb%6;=f~f3mHi;s z@CDw--hflY2VLhpqASFRoY8a0CSe~kuUug954*XC@<0ARUH=XC{J+@$20t^;_hh;6 z+0XmR@8(k3@1qlI8@O-(?*CE$AN)T&byx)c{V43cSgt5^eoQ>}eLT7#4!a;;?E?J0 zoU5X9zbJHDq^=F-vQ9Wd<3X4kRPK_|b*urNJtc)Ny(z2z_XFAZ{_kbohkumnZ@eyP z*RM;_YhRb;|NFjd_!IHGzx<bH<)`QD9 zH;8>ZFY=yP@yr*ON#1wYO3@z<$l}jzy!i4zUzbAk!;G_w%-Y=ArR)d7p5LFP{(IyA zaXxtu&zFL0tn0Lt$p-BBy_47{fFEyHb(*Z-RLD8v#j=uhz-HwA5#+eWejeiQOsKEt z1axp1`%dTn8XM4zKcI7LvTU4}CuO@!W#v-VbS5yjQ~Qtk-MtzQ#5&qV;(@PnZp3+T zzmU1b#DC~n0_TVYe1yMGd7Am3?kV)_f7bu{8UEMxza9bj>)&~Ce684;^EwUA?(e@@ z>}{O5qX}yt1kz4d{cqR*LRJ3{nLKn<9C{uU0;4^y6h<;MxcN>JpRB9*!>kJX34Vc+0rnb^9GnR>@P^;3;}!u{H=lg ztRe2wu^A z3~Al-1r0pQ`tH?vGK=#CDu@G^dysitZINtef50Z}#&Y5VW*@}HYp#^CPRpwOrlRd@U z$L7k}@%$}iP`vyQjsqcWyuhOf7rmVzO4VF|9$vd|BvG5=WXy-zYchYYfKP# zgRjzr!CZg4ckXV#{X75b{15-{uoV1%>%m^b~76zG8SZem#LkHpT42J;wf zmssY9(Mh`Y14ap?W33~W^OmiSAWs4IfW{BbXO95BpU5KSi`b5_>2(qXjYQ4CS3D12 z&|G|i^I0#hBA!s=0jf2|kTszS<_P83iJGPq-(flPM%EQH=FF@s6H{;x?<4pgxu8L& z9Akgb>+Ba}KT#HYeRYp#2Kpr95!UrMUnuJ__Iz??aK`h{0Oy72yfW(rV*l9#mho5# z_~prgbk+?w;NQ7gDnCZl0&#eRN>x!RY`?D<(ZO@o)I+`XBpxZ@!!LU;Oz|U_V;z ze{hb4=OeRO+ndRlv$i<`IUkjS{f}OVLQbd;aJ2dh`8|3vw4t#f&_XmaV-)j(5#TO57jMBJ5V#!99fjd5&;3dk;I?oz4(Hx`};3t*}E5w-I)8_V)hI&_xmd64q;Q~ zeyv(EUeohp!HqNL^VkEP{StHlO&C8;1N%SXlSI!MZJfutA?F9oe46xNpM&1Xc?q1K z=FCbk&v{;>IF&`#XZ#%k;ejYGn(*v#I9!=4{m z_mb=WqGQI!nB@3BGT5z_YmeCb| zJO2;C{u_7?_)o&lLr)p~kNs!nd^yN>@Es#4(w#1whpM?#X{TlNI&L7Hn0sLQJ?~m>U2SYtSG6!Ftng7Knn!gXRpLxU9HG1y2 zuJ3bJz_XRCOJRq8jk)QIdS*3c=pFfy4PE6BV=%vg^9$o_%y9?%PaBw9G!^Evubdc! z%fttr{cq*B z!(4gY$$GQrTd{Za;9+iLf~PkWd$k$6>VND%_&=o2(D0jwC)_n0{XZI=AF1{pay?T0 zf1G)0@Iuc=6Z03H26m*;xDUG)%v>NDUl4RMa(XRsBj7g^%yaM+5%(OOvyNx{1@Ql< zB6zkCUd{t&{0A|)$OG(#C}IaxKG>Ksc)Aq%um0jv=9sz$or})UxFfYc)dxviA~il0 z`9GY!D3L2Vq~N>X#*c6VzYzNd|M_3C;D7FCpTSCe!1xcqNY8-KyQC7Hy9<>431=64ozlT7vy zn={Q+{_o3|dgg$7Ze9C?WZB8zBbwX7T;tMQ;#{japLRO?i&-B4|AVYG==!1Ief&!8 z$p1y2|7RfaAN>{oupZ3+y!hW>yZ-0)fGKaAcrTsXgSGJmsXd@NKq+ z|1JI|{%1tyuu+qk<0Yt#ud;ldi~(cy{YJA^9Su)MslA8pH~yh`@WVEUQl9{6qrgaI zxBB@@V9e@6zq9z=%gngV~WP}7rB$JGhWCb!dV9(fPCb(v{%orPNJO&IH1jE>~JN9_i zTbpWXY>mC^Fgq|Vug5shy8HS5&N=VBZnIUpf9xMyyIpnrzH`I5=bT>-=bQugZjSC> z2K<=U`v~^_liMx`NmIG3yOKO}^ht;LFSKeCZC%8QX+RSO-oFeS!UlhzmT3 zPvK$Z7i}GiZa;-?2!3eYp^eX87VXDQI5{>%oOo??O1Z<#M?JA=ovmMY68&J`;vUg| zx*?U#6%xdM5-FGeQ78Q`5i@b&L?@qhXG zyNDANr8|mOP+vFvUNXCLkMuiu_9oG^bPRa9d`{qpbOGrE^LOzqJVbs*<)Ip$V1M?J zdr-uWCf%gOnw-7s!M`!`kgoy$-~DEEC%$0KHPig^`^X8s^V~l~2YyP<(OWk%#}~K( zKdnJGEWPk+R{%d`IQ(EExNr^noBa5i|EYN%kK^Nclste($sagzCF>1;VjJ^Jkp)`I z_7&+9)W=!^T7Q1z*?rNK9|eDa|A!B3jxHyEcpLV`@QbW}dxkZN(Kkl_gthS=xr|(5 ze>{Ob@!;-g&%^9(hHrY!l}io&`Aj;OO(oOG6mvl0b@j1&;LrARj-EyL9_FHR@%b{G zMf1AnuSpiDY_foBcCQ-#A^%VQpBarU=PjSpy^NS1{vOd=4|<*P+o9Wt;X$+Laf;m( zH;&OJX&8Sn@xkux&@t--bi>FQdPGl(~Gs|Fq(~ zz+UlS&HYsV&jU+YZUqKe1Y|=@h@zU{`dy|DeQ+~a*M7zMjY^x!RQX+M_Zl; zNAO{8MD}dp-tenDk1jd%BG-{0>z@NB$U)GWR71~Ump*%Gbm7e_1^-+=na*aD4*tvn z1pdf>;9utLM)MAyZl3@T^T7LoyWxQFK)9mkJq`$mD)cY-%m0J?&yfE+Z_V7Ui;?Ba zl>-EANsq_>*NeRG!Ee=rZ%4GbU?;JB>48J=Z|Jd)=SreUV%go$W6wI?ArDrtE1JLP zW^@W@m>lsw;lL1nBc0iQr5AgnSH5KF8u*bG>^vD2SzD$TTq=P#edv4AK}(V^1IQix zQa$9>_M)RIMlHRwmmHg3!aK*@-aRM9%#L{N3{+)<&TjUbo#2b(Gl{*$9R7oynmzQ z{~3JJUm|{l{qW$r4@4gV4-|JCBByXj>so*d8)PfIBK;Fx@eHvI^vNO0L-3yAmysXD z5ih!9h2Wnp3+bsm$T%4QFg#?_%n99)_o`v|0}XSZm)O&c7LyM0C@I5 z>w4bNwP1y8ki7uE?gv+tFQ|C2zN0)7@d)8t_bB%-CZZ+we5fTR1<#{Yi{F1Vb*6Xb{7^50*N_I>yFqAlOLhxNzc z|M&-N?KgZy8=i4-+!Ofk(AYH3-QCx?8GNP&MEn%@@Z?`vC%)<6YY40c?skU?_(d6U7y<-?ZVHn zPdw$R(P-uM7draSrSsV=@Xw~wtR5SWC4fJSK>WKB^K)=@{vZc)<$MJmA9#hsnQ&cv z;{E9#_&2v;|8?W@RbHpj7Ji_9U}UlYU9X=#(R$W{3&7pxe~y6*=mbS*xd(mB!JBvS z9~ke@S@bV{GH?s9Mvuo{?3b-5Jx+S%3TPKxD=D6Uzd&mWbZ^EM0M0H4MKrFMB)%nd zh#ujQ>6_eN4((H)@T+el^G{!Y3*BGvR({}n9OJ-Wc|sBKW#ProIe#}g^u0fgHlDeG z{4?lJ`Tp!lFpMwf>Jyuz;{%#Ah+jszpNjW@3m?N*^Ks>D5u;U{?|}`(6yO85G9O?& zzGTUg5%R~c!oGWWCAkHg;S=N%YQDgx=i&46AHef3e{xrJFL8#4m~(tTamUllIXrRo zAP2uMTOM7pu3PZWGy?yIOgfv+q|%9aouhx?Uzyik&Ci1z5I+!{-C=qF^lo{8qI;u# z$1~oK{$>BS%wIQG{@)U?EaLC$fnJO7@De&)53n;iEPww-WH|J%^&sZspOGym9&NCI zR{Mchk(>dO*&arsbIlttT9!Vz%*k+rEi$HWC3%O~jomwt{adL^d>^^cOa77gkL9Ei zn-*UZzBqm(yFz*j`p4+0X#1OQVE?^qI^YR#K=Vd4M@Vx7lq;m)r?3kS|Kc0bo^PWM zynZ+9iGc%OM;~Aw&$a9~_!#!v{m{K)II_=WpFOF$!_dFh572rdvJXGabN8|@*%g0; ze*oQH`x_iMiu_+n-Z1jx3HZcacdTb#@t$bgS9eFF&#}MhM>a*LSAky(@%>#0E|GKi z1aYQE$UA(Db*m4~Gy6Z)Qb-pXa;a=8m(C;t{Tu)Hu$GQ*vb{prf!-bcSK$P3m%bSI zhMxOf_?!OM)Oh~-^SjaiyXD7c{!ix?`1}}ici{Vd#HottXnojey~F4L_+7f>d)t8? zhuu~Z4T{czzxai02cy+NbU^gTlFGU#{=XcW7Y~5HE2l)cWzy%nH^Nu&`xQ5Xf5JC# z!u$)oC;aJKCb)BeQ{p$WIZaQIjJIBTUo3rVBV+#65|7VBnxb2lJ{onI<@qwVF9!yat53XcRWPAU-G&a)Oi}Cb%nC(CLGk zJD~jGljs9Cz5^f78pGdUeL3cEUGt!u2l@nS#ytkyp8z)U(L4^^AM6HJoE6)VPWVaA zPoNik;-Z1*zS}oNm;e4)bmUg@fR^Ih0iI8SADV0Y#Ik|tF4i5p{K>KCX7(?8V43&` zzCYd-KlweLk&f|r>4IqgY@`3AgMTv1PNV5$J^bI>e_;6*Nq?OEFBIT6aFr{p(s5L-Jl2kqO=MBA->=){CS;Yl!-fN z-l^izeZahg|F?ToJ^}cH=wG&=?9UbF=njRsWO>%%T@0P^B6?5D|Tu1W`cetFegN|WjzYB5pj!2~O|H1$36#vuwp9+i}KbKx79PoG$_`KwUU3Wa+ z<_75+IOF(#b^dR#|Iq*Dtt9^sI2f%0L($$^>?>rye7o||_Y84;7`R;mY}Rod*>3p& z&|(j=L%uxGzwCC&{62VeQM%m#&r6>}=kJ4`n@o_6i7Z#Hk>QWxLgWz?@gXR`yoc{9 z54m?4-(87J_<+6-%!x7C+|vQRH7Gq5zOtKrB$!Vm|DWLMc>XVq<|XsPTtV^vqu|4F zlM}x(9Z_?M?|JXPL^u8W&qjM6yPCXy<_A5vpV&TU;{V!zV8?@3M!O!mihGxnE3CYM z%c7khBe&pDmmjd}DCL`2$70o?Xw7ogGQ5~P_KTU%bP;RfUrheW(wn18$gNX(Xy8b+ zb{T73Vr#8mMqcaEBhl~$*G5Ygtd{;?n@eUg8T`NTxY$4Izj*(z#dd(T^W_Mh6Y(MN zemjRakmnQSdBT(({fGJg@Rpivye{2Z$jt2Rn7?>W)X6@Wr4_f0_sGX9Sjq-OR+o_P z{aouI7p&LIVWWNdXOt5n8vs2{^F;No9n$lpugg!Pc)?0^Kk%d%`Yp-6M+TJO4e}ZE zl3&=5J!dgw=@94=lJoL2%9iMr+z<|l-w+E}C|wdCQE}klcyT@PoTop*TrsUN^Aq^M zd*_`0?>FFp)BS}54*-AJhT;KEPtg3KUxF`hv;NqN(e}6S4-psCo;4#c;jeoM|ILec z<3E0s+=7$QHuf>l{wBl9MP*;B_43_){R-x|UJbi|nVC&y2MbwcCXL(0ehEdDQAH(u`jdV+P( z1q>fNyzM#D0Ug~NkMKI-ME(!_Yjf=5(wNS*FPIw3PH8Hfx3sMbK5a6aG4GfDMXrb7 zBl}D9Lj^m@Z}D*PVVeUA4==4a%5To(3-!ykmk$|RuxBMXMc{_Xdhv**ykk5Z{8)+n zmajoRWZ43uYx$GFg(CjGK72~bHxz%-y%M^B?7?p2M&HUCqw^Q-65S-HZW>&+VBgrb zEocAysXL)*H#bQ7faHAO3z|2qxufz6{K|NR)+IlU960#%XQQpJ-VkkklQj&AdK%eWC^Ce=3$yT5)|em%Q*Zg@aB`1q@?IUHe6NiPEw^R3{>Wcr8y*JkTubvgVD@S9vmV|H41`@AK4i2;9* zKHNTD8emQk`0RW)iv5Tmc({Wn$`2I%_6z5Q*P?gqgkIvcCFTtGAsaMDP&$C}gX9yk zI+*|7vzqZB-eA7`0qOPdc;Ma#9+Wgr;6x9!t~?{zm}V=A{`r1s;HL3T(M{KY;9pbA z9@FXb=XWjr?A^Cq{oY>?3;ZYK!T34Rx|=U5o50N*lP;+B4jPA8guy7#E9~K^{ zEStcsF>@d52p#^#GtpM&A8y2-x8V))&6Vpz9`eZFuwTjdk4D@6;dHe92Oo;YzQdYk z(Ed7LKP2C-@bwUHA7K+==&c-|Rqe zK)Ry)EgQhr{3ZSa9@M1ZF-i1{EVgDIe{(ifpPkl}pMAm9c^B-7y3q%S?~M!I;>(s3 z0w2~o5aP`yzk#3D2C>{>;(p!4<+T<-m;5>S6H3H{ir_#=>jcS;Qyf7#0Nc2RJ}G)% z$XH4KoBzP@3%nDLM^0FbNb(>K9+;`AC4B2*Vqrgk}lLo zew=*V7DG|29KI*KE-h30chUZ3QAhi!rbvonuRq!?VmvO`S2wdFQ;e&_2)&XPvN8oQbkmh?CzFkPvCR;N3_O5Bz zhK+@JOQv*-zLDdmzvG8fJkIfI-_G)KRLI5TQq&%g`RGv zHpEkH*?QVrn`z6|W~O9oGSl*jj`OC@*tvGF`>Gw=hkx?L&xjA)gPeE%K&KCA51F7B zi2e`#<8#s0ze4|em3arR64zr*;SDbUUv#~ZFM$hx!J4I-m-aH(n5Vko%fx-3CBDm? zlo93=ue$%1Xwf?Iq~({=Iyr;DTRhVEJv?%N@xw#=OO9e_b};-VjeVqVDBW zwTXPPwmzGvsb@V-=s#8`xJW-2jOzUUP!-=#pzCm+%LCvJ9R8Z!_XWX7K4P=m4npF zx0H)eT6%DN!G*h=ylkHtOQf4~iBw~zo;?cc60Mn}P>kDBgm=2&dwhR8xLZ7)obOIz2J#zq;TsNX#&%g=5HTa=b+Oiq)|TwPlz1;|hAr4k zo+mt^n>BGP-<(*Voq@e%j>((ltV7r#!J|VtUJGv`HJg^C9Y)uxP?RLD;f{! zNx}o!%2qxS&FvB08{eY+9mspNADT~!?%})A_v(PX4%7MMo2khCAj`|Tp2>Ev^Ld!oz2Rhhm{deJ&Uk}pwfMkHl0r&tsK)fK1Y=RFIW-gjG_riVX0|&9o zZX1_fSVXR|$vZL+JxB9FSu3;)zp!$AMEeWS0XoUy)S7U%Uj#Y5mfOFN=d`vca-ee; zen$MuUCQr8zmSYHzkp;X<5*gC!+0lq=*;R`9<{g6h{aRT4f_++CkxO`19a1ntf|k@ z&cpOVPD1}T zzVoGM+nJlm5yiGwUO2kl#y4+fJ@Qw9yVD^x&-~_Je3`tl1K`Ki>|sw15I%zSFYJ#7 zPu>(Qz699^?Mr6$l1tTRI`a+VU7l~Xcfhw&;#&>0pZzm|e@!As`=Pmdc)r%(7wtQ~ zulzj6_mS;_zxHSr49))Y^4|D-S@t{FJ9_uHp?Az51W(|%a6#~|@BrBZCTGAma)K(l z0Js?VKr^MK@kv7ChZcUgmT# ze(0}tnfh1)JV-VqV`*eTwmDOin^uUo&uX7Fwr+6V2X}4X^urgQy2EV$_e}nuh9?NF zhgm;nl)M1tY78qc_yzVTW>1PMe*H3XLhF}D=#f7rpYS>MvOE;6M-Lo+?fPgPdlwIV z;p%AB$pg`%VZ})$1Etf-KDrfsh4yz==_@Ah)qdzcuJ#-4GuE=hq>l?0c7`|C);OOn z`XBk5rvI^qd!TdY=dHli=vy+u;Ox$3`+K}GT#@f6-~iVv`haZ0pbrKGi`;3fXfH>yAr(uA542}v4e)`+)|S+axt+_O|Hxg}z5R;igyH)=r#O+~05|>Y z^T72mG9BIjHE8-7_yFryUk=YuTuE!sDQYVVkVzM}SvZyDYD_NP7FYrIAGg1d)U}tv=0vH zn&Sz=3*B?~D|`U{6Z`@-#s?e@)ZrU2eITFKdhyv=3p?g6+8q^_-UzPWIj-D4@w{$g zMV;Hp|0Pebi+KPg=7%c=pnHl9mB=5G4bZt8*)T?#=QXE9`G!UL0`cc}ErD+E>jilk zH$5MD9~a#tGt2T)V<(+ebmQ%q7;Tme!;WR29ryt9KsrILJr`@}DA4)Vz9DL(-V%$Px#+nAP@X{_yjrv z{-L4Qp#QHOj8@%y1ODG5=r8E`7rOR$bj-pzg}hH!%X|1%opfxq-M7Ci?xhi-44 zGM^Xi+u>lP-v&E_yRNz1e#4V+jdOsl$^9}e1ekMHOu*}dRv&tT$pC}DmqRwb!UM@y z;{*5ynzQ*1`~!)W#>DheYq#t(#rfn1SOY)Uz#I+D@g&!`_yOs_^53H;C|(Pn=)q1b zGXK4YwPs7i5nWsunJN38JypECjAshSdtwu1`#8|ObS2ryer@D3-$Y^(3IKlve?7za zmh}PS1K0%}`9%Bd_L*CUR?WR?-`M8wf92D6Mn8PZwd%Ac2-70x6S`IwF3_obpbUyF<4cEhYGW|PR_i&~@vl)2T>3@!w zIG!TjQF+es9O0kvP;y9gCAlOT6Anlg1U`U&AlKg5FsC$i-l9vR`Pc@XOD`vWxIgML zJK-|Ud(jj2a_x$!(|%tTbzZcegKNx>@48s;aByut&vh-?Pv>oW%-LKqpyu{UA&37CQSlgUVVDR@iV0J+sKG23f zfL#!aka&lHBeVwCf`wzeOE78S*<5m#weym}1y>FY&)ap$>M6^*dRi|!zq4WKd7Vv*=XJKMTF^6Rbj@J*wL7-;9U0wG zIyAa%&ZWy&w_h~3r{$u#U9HQ`>uSDWZfDDqSqn0AXU>jIX>OtY@oWQry?g=K=hL+* z+4xyx7V_Tc{&)D6>G^_>llKlbf}O$4pGBtzN6x_yEEtFVoE;C~8PU6kw|n2ycU65A zm{0nKy$3Fs90=nndXin>h5_A6Y%0&(@{!>7^QtW(50*bfd8oT?g2!jXIn!L%8kAx~BOp zfe-Lb-~-qV@B(mP3U&edKr=Ylns2LZZJUyq+18er*3cU7XlqT(=$I03Z*8rc-Y}(Z zYSYx(_Lix2?fH)6^p>fqnN!Y|I1uOnp9= zsY}80fqzXRgD=JC9-0>~_3bx4>)Ib=x@>$$&z@gf*}*XE^X1@5p4TM04>+Q_3y zhvdBQhTj%9V4UoG)$fPjI`gc<#cF-Px7qlB`apl`i5n6-mJMEuZdg~JPokr_1K&(t zTt_4J8VB~6{59^-HGTsJd&ZuXUaWW7XFTp~W9(z|i2t2Wm4-8Q4>&)fUd6<1x-H-%%K<`tu~F*AMy zZQ~oWez~!5eJG8O?fb{suG91uzm8Ok=7w240pA=x z7{1td9bE=4|Dl+ zkd+4apu?M<@9h!80Y@`xn{pkj?;1PbZjDI=ZzuDC1hRlbasc^)P7;r0^C^RW9=HpB zS#TlWL>z%~9vsLwXJUEb2e_egfqQz^4(>B!GnV1KjGfUnX@3$wew;(FuLth(={vqP zLEbyMtI)IK%dRisxAXTpx>Vl`mL3Nj-3xXV*a!JhmI0!3qjd-4vX98F^B(AJ-=GfT z6Ud9oH=QhS<5{)~=mW41N8kg&4<}r(L$oG3_B2<%Ho2_lm4_rho_I>e;g;23Mfc@c znDdDl+&ENs znQ+a)zdRoPp2op=zl~7^r!-b#Vd6CvTypoVZjD_PehC)>ewD{lu&~&)cp81Pm=$y- z8Liv}(U_e>`TfpS&)53rtsc<}&%6CkUH$ew;7+@Y?&(`)9Ms-GA0BtrW_woj9}dY| z;Q@!`SMW{6TSccjSaJcng?3qYk@S1cT;q2d91)*L`$PA1-3~p^Ivu2I`hz-YyAI`X z`1M=dSXIk=*XA-UR<&PaEm*d}+bZz!u=4mGcz0zC9IjNuE#Qml(pZS+hq|472{3ox zbI(-$R+~H?ROEohQv6qVYzN~Byvm0k-!RVq%V*W0cYR&Lt@1aVes6I1xEyGvya!6T zj~Z7$wpGOmFP&35z&W)+Wpt17J^ilYcV-KTk4U%Bd%oS_Y<&pr z4{P^1yft{LT{;+Fqbr?loOK4~rmq7BqfgGd@2^?E{rg6j;XTo;#~XvUl~up1+rC%6 zCK&reW992}@K@X1HOW@tNq9HlfXZ$>)kon2^lyC*@YDH!_o#-y>a%*Se)ZpA@5f2- zHQDCv8rScN9-#JxG0?fvUbl{#`d(?Da7*|Ae9dQ|Z|gVqu9XGjw7;h7;m~#UQRiy> z*Y7Ycj_;VxMq5K4tiANb!4EymkGG>WwOz1r_!0DjP!4_5Is7)b2@f5}2P zzUS-aIrqN9f$%$=10IAibmQxu4c994q!_iv)A9)XSZa<*na=oab58tu@^zIbKkxQC z3*WHun9w)R$GrS1k01SWI*%U*dq?Bw+OGNnorU(PKkj#`svSvwhqBsMUDow*PuC~6 zJ?_WD!Cv1CvPpPQt>1_1YJ-!pYPVpc_VQbB@@;p#qS7z*^M7U|g!dhOP?sMEjiZeZ z=ioOA-?L{8hbnN^x2-OVh_l!GN+Nu5qSyOJ0`W6mfkG<#HX*|dO z)^}~3)CPN2cwPBcpcRc@7|-gu!uzhD?!D0G3QwJQ-M%Bh#YBdUO4A&$#jB`+6qy+kUI9p}heH>bstG;~M&GW5P9e*0ZY1 z(TIKr{0XqMdesjOtIPW2zo$0ndih*=#=ckeZQEyBWqUugOYeu@de_zG@POa;{-m>g zOV`}>@^^IIKkxeNo^fOE?p69se?xz$$NFgX={JYJ=jw4|-y%C%&-i;zhYs($F?KlQ z$AGqk@d|A$f3y5;*XK~L8;goQHW7FEw()L_p?6_Na(0@NZp$|4Df#>_a8V=ig zzHgylv@6^T{j@T5hB30Xs&Beh9w*(`7>C2R(SJ|Rxv}y0%VqQ$>IpI^JQwN--*jbH zhijMnw&9Z6ptgjup>5UUSZ=S{?AvGcS{u}Ef1Ntq+Bohz<|9#E>VxXnyY@^d>pl0Z z?yG-BJK-7H6UHaVpTNUZSE$eNURRI%mipt%`mTQawwC*=?{dw)@6Y;O#;@{yeW$7} zzUyc}@2fw)jxsK}ez@<1_Pc(U+f04tQwnXe?}m0d8RFXI>I!|a{_0(856=r;s>9k) z^=ueFUvG$G+xKleppVdYjd8iY%6NovEYpjB#%RID-i?XVsr~QpjP*-(sczp!|Bk*@ z#)a_Rs`ffO)mZrc*!!x-w>i|Q>w4e!-?huP-|)tLw_?Y5znuCXzFV#-TF?+YFf3Cgm{WkgjsJo0G;XCENxW22cp`Oa~ew^O7ed??4ug>LX)c=Y73GgY8 zqrC@C**Lj+3@*ag$?Y;6c4O*fSg7BBL*MfFQl=BD!?%rZSiiy;hPLUtA2WSZ@7fsX zz7A`Pu7&UL+rH!Kb#=P7I6mi|t@JUx8~W$V_8lh+^nKM6c!9&qP`^8Cj7$!MF{WMN zy$XJ*jg{{Nyr_(OXq(QJ!+p=UE8vCB)-K=g;Fr+#D!R1zlCR5PXZO_~*KWx%8zbv) z^*6&azP)~&!+2U#&$!>d4r^PbzJP=7eg8ad39y|QN7Hr5rmFW1)=meg#-C7M zxj!B+9Buoy>pKP)cXs`)z@mDr%Xk#t@#Ev#;@&Cq7wbRQY-|D?^bP+#zDb(W|BZit z_m!g)n*FII6U)b9vnSl2R6d7!R(*eR`B#{C)%Ph+7^$BTCOlg8z*+8Bmyc22Uv*#Q zhDw>w#bWJ~%2f^0=c*fE<*Ejp)%~glSh?flb06@Z!wQ~Mu5slnef2S4o)gM$1l|ip zKLS-{13|fZKLWrq{MiVc4JC$HA3QUuyt=A3#U;Xt`Jx;{IKsy=V!s?Qk?OeoXi zv(@#{fMb)&XC{>=+@}K*?t?QE%G5WxJmLNK`QHD(AFKTRzcxO{C*oi2r2bdRDI22{ z_s_Urlge|fJg5A=FN2?F?andxzl^_?^55zX?os;>Q~rtj<^Dr2ztk`PdGS=EzfgwY z$B%J;4u}5lhhC4_FIPTFd5(U%KVzw9?e{VLr@8)v@k-hFN5fg&H-2FRoV2pBbR+oL t_S9^>Zy(%WDO&@N>VMr)yFZ8iMdz+8mwyn8wM5aivDjR@{eSk~{{SKcE>!>k literal 0 HcmV?d00001 diff --git a/ui/tool_erase.png b/ui/tool_erase.png new file mode 100644 index 0000000000000000000000000000000000000000..bc63d899ca07ba460f837acdc246ce74a659ff38 GIT binary patch literal 1006 zcmV zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=HGj_fE5hTpx4SpvQQW;uk5barr-KR@Y8(w91; z=}t-WGN3fbWsLbhgPO+gUz7eqV>cs<*;7d=pjojZ6%!9v8;`MsFxTAh@x#Wa7t@Cy zjv1prvkOMWsBgw|KV5hkY&1QPUj_Uh*rS1ONh&h8UursZwb z67)%rLmfxiXK>sgjPA=4dd3$q&wDTE9%^XB7J6u5LvLJISi@xF&Xp&ReQey2qREhq zQKX6PHrFggng(SxQd8q8S&Mdc6>Tz9VU;r%-uEs0c8whycZR1hf-zR?osP-f{xr~> zZArv9{h<}|5?L5{si^BOya0sfQAcqX_~@S-z#@pjYsu_5U=7<_h%NF}TS_}gLgt zXLm1NsYp@W)mT!=#Y-u*V$+Jq6|1XP7&h5-vn_6E%bRays}1GTti_gEZr)0()TL{; z9((G!doR5X9w?<@BaSrk@KHvcD7C56W}Io}>9fpwQroH02WDT%{WCRwPy;a9nHii8 zYB1+~gy8j@#KjE6#2Cc$B7lOH#Vk0R$s$LKStx>A5d~Ss1*h{O27)$N;^dRvMeYkX z!oB|~H+fHv7P?oEqlNAXxv$)wQ0wb`Z|fcgJZ$S4E>VNx`oUp%6^Dm>Z=~-o_;aAS zeLD#pvhMSM^M|)7-t33%r=yO(!qPsk-(KC$W6ZK=N-vNH>f}L>`Ea=>6x|c(5{mj6 z_nuHMt)o0%AQW9Cbx$a|O6s0abd}USq39~9dqUBtyZ2+E=sasbcQ_UM*E&@`DqBaM z_foo^k(((|eNjq;7%?5d>iBU^1f5=z6MYDKLnhMZFS-Bpf|vIHK>uZ+iGNfI{S7iQ zeX%Gow3z?^02y>eSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{0044HL_t(I z%k9vy34kyVh2a-mASqIZ)LG&N6FhJdC%I9Q5mKd%wWz0%PW;;kAKU?>^_xVbzXEd3 zeH2-KWDGHP2oZ4z;c|>If|-p50KiH_^An;0@ZL*Gi8N%=fY#bpN`Z5ZthJ}T)~cRx c_zAw-4*aR=yHerMGXMYp07*qoM6N<$g86aPjQ{`u literal 0 HcmV?d00001 diff --git a/ui/tool_fill_bg.png b/ui/tool_fill_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6e545dd7cddc9ab23bc6fa7a78f845cf0d16624f GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5YR{r;B5V#p$_|9fev9I9S+Ew;w!RRw?t!xN9VaJ{HEcNNyT_IPwbJET;&9D@jZ32 z6zr%?mS@-%6))%+efRz!WnBv+hs2VbpZ>MVH!?<-eR`I70OSQvS3j3^P6S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5YSCr;B5V#p$_|1BH$#a5y_JXK$YTwrEp<@wd~G*@3se z`X8Up;*zk@L+#`d`_=66-602jp2Tpje0A;T3ckC4nI_k$Em(E)fM^KUmxN~biD&jq zRY_iJoh~>rm!FG6si|Yf-eZgmf*S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5YRb%yxbtjW6{3j z_fwB4=Xb64aoO_Lk*V(T8NKZn84jGe7uveMD)ZVq6Rq?zopr06Jw~SO5S3 literal 0 HcmV?d00001 diff --git a/ui/tool_grab.png b/ui/tool_grab.png new file mode 100644 index 0000000000000000000000000000000000000000..df86da8f4d3fd7ebc5247922e296e91a26933fbd GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5=)5S5w;`G`{-h2#-9L~}D?+QNcN)$@^W8{3u?NWNT z)1(g@SM4!MVsa3f{KWJ?tb)TEu?cMj8~U|5)V*!nrW~Ak)Yfa&-56_jZS_~Csf-)m zxn7oEx69&NV9VXJcU&uu_LtxKr*o>XMe@Q2cT@F+7L~!gvloF}@hK BNz(uT literal 0 HcmV?d00001 diff --git a/ui/tool_paint.png b/ui/tool_paint.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef7d2e095d97ecc8df69ad63fbd9e5b0f6c2c72 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5`)5S5w;`G}I-h2%TJgn@G5AKkx@Y!*uc%g*Jf|_mT zmU&+GvoBC^xE5u2AY`*8>(UzG)2GAEHa#-&e0B4H{j5$yGjAcjf=MDy0dm#y)suTT u^gR967OZ_@p6v6hJzdDW_>}(72@G#i@7JBuS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5apQ)5S5w;`G*_+q?}194wa)-a5%MdFt6O?wmnU7hLxJ zdhpJI;lX)}brDY&?7I@By7T)#kDRq9XU;5CxbVQ|j>^%xh*araLeqgJ3GS`i(Gq>Z zg|TXhV&miL3hmQ^npY$9y;2gF&Dpkrshvge#?}L89_rQ1b6UluROOnmJ=y<}%TtzB WHYO34omGt>S9-eoxvXS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5apZ)5S5w;`H30gMtkP9NAY6-s#yjbN0jI?n_x#-1)eW zbIHyHKbNNTw%q&ms<~9Jz2f!iAmA>?dw-XK6+ZWhJCt^jS`Dz R>JyOrJYD@<);T3K0RZ-gRNepp literal 0 HcmV?d00001 diff --git a/ui/tool_select.png b/ui/tool_select.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c22f06de5cd5951f7bf3edcb13cce7e02b6047 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5b!s)5S5w;&gJt0=6IgtVcFYWaRESc;dv32A|~Q|NsB* zXPmD5sS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5-)5S5w;`H0e2e}v&IGjy?z5nyMRC7W=(5D-_Eo@Gx zd4({F1+IM=ZLs-8Rwl!vnG%kh5BCc6R(+Ea{iqz`(h;-BbjAI3=PyZ}`*-GY!(JDL cN0wgJGhO4e4xgFz@ejymPgg&ebxsLQ0Eg;A1ONa4 literal 0 HcmV?d00001 diff --git a/ui/tool_select_sub.png b/ui/tool_select_sub.png new file mode 100644 index 0000000000000000000000000000000000000000..87980672da0ce1e610cb1e735434b6e569506a0a GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vY8S|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5W5p)5S5w;&gJt0=6IgtVcFYWaRESc;dv32A|~Q|NsB* zXPmD5sS|xv6<2KrRD=b5Uwy zNotBhd1gt5g1e`0K#E=}J5apT)5S5w;`GrVN4^6J9FtqyKW_eLQr{+?>TzL$?o1Uq zuAr=?Q!X=#b#!Df9=LYoZg@}N=L2mmvC95jZpCXuIXg5KKba|}`C+G@!PA1Lj%I32 zFF04mOH5{L=#~0+wE6XGrMc=3`ST)E`OZ9EJ9GAq-;oc$Uu0O+7nt{;KJEm_WuC5n JF6*2UngA%mPoDq) literal 0 HcmV?d00001 diff --git a/ui_art_dialog.py b/ui_art_dialog.py new file mode 100644 index 0000000..7e34f0a --- /dev/null +++ b/ui_art_dialog.py @@ -0,0 +1,770 @@ +import os.path + +from ui_dialog import UIDialog, Field +from ui_chooser_dialog import ChooserDialog, ChooserItemButton, ChooserItem + +from ui_console import OpenCommand, SaveCommand +from art import ART_DIR, ART_FILE_EXTENSION, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_FRAME_DELAY, DEFAULT_LAYER_Z_OFFSET +from palette import PaletteFromFile + + +class BaseFileDialog(UIDialog): + + invalid_filename_error = 'Filename is not valid.' + filename_exists_error = 'File by that name already exists.' + + def get_file_extension(self): + return '' + + def get_dir(self): + return '' + + def get_full_filename(self, filename, dir=None): + for forbidden_char in self.ui.app.forbidden_filename_chars: + if forbidden_char in filename: + return + full_filename = self.get_dir() + '/' + filename + full_filename += '.' + self.get_file_extension() + return full_filename + + def is_filename_valid(self, field_number): + filename = self.field_texts[field_number].strip() + # filename can't be only whitespace + if not filename: + return False, self.invalid_filename_error + full_filename = self.get_full_filename(filename) + if not full_filename: + return False, self.invalid_filename_error + # if file exists, allow saving but show the warning + if os.path.exists(full_filename): + return True, self.filename_exists_error + return True, None + +class NewArtDialog(BaseFileDialog): + + title = 'New art' + field0_label = 'Filename of new art:' + field2_label = 'Width:' + field4_label = 'Height:' + field6_label = 'Save folder:' + field7_label = ' %s' + tile_width = 60 + field0_width = 56 + y_spacing = 0 + field1_width = field2_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=str, width=field0_width, oneline=False), + Field(label='', type=None, width=0, oneline=True), + Field(label=field2_label, type=int, width=field1_width, oneline=True), + Field(label='', type=None, width=0, oneline=True), + Field(label=field4_label, type=int, width=field2_width, oneline=True), + Field(label='', type=None, width=0, oneline=True), + Field(label=field6_label, type=None, width=0, oneline=True), + Field(label=field7_label, type=None, width=0, oneline=True), + Field(label='', type=None, width=0, oneline=True) + ] + confirm_caption = 'Create' + invalid_width_error = 'Invalid width.' + invalid_height_error = 'Invalid height.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return 'new%s' % len(self.ui.app.art_loaded_for_edit) + elif field_number == 2: + return str(DEFAULT_WIDTH) + elif field_number == 4: + return str(DEFAULT_HEIGHT) + return '' + + def get_field_label(self, field_index): + label = self.fields[field_index].label + # show dir art will be saved into + if field_index == 7: + label %= self.get_dir() + return label + + def get_file_extension(self): + return ART_FILE_EXTENSION + + def get_dir(self): + return self.ui.app.documents_dir + ART_DIR + + def is_input_valid(self): + "warn if file already exists, dimensions must be >0 and <= max" + if not self.is_valid_dimension(self.field_texts[2], self.ui.app.max_art_width): + return False, self.invalid_width_error + if not self.is_valid_dimension(self.field_texts[4], self.ui.app.max_art_height): + return False, self.invalid_height_error + return self.is_filename_valid(0) + + def is_valid_dimension(self, dimension, max_dimension): + try: dimension = int(dimension) + except: return False + return 0 < dimension <= max_dimension + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + name = self.field_texts[0] + w, h = int(self.field_texts[2]), int(self.field_texts[4]) + self.ui.app.new_art_for_edit(name, w, h) + self.ui.app.log('Created %s.psci with size %s x %s' % (name, w, h)) + self.dismiss() + + +class SaveAsDialog(BaseFileDialog): + + title = 'Save art' + field0_label = 'New filename for art:' + field2_label = 'Save folder:' + field3_label = ' %s' + tile_width = 60 + field0_width = 56 + y_spacing = 0 + fields = [ + Field(label=field0_label, type=str, width=field0_width, oneline=False), + Field(label='', type=None, width=0, oneline=True), + Field(label=field2_label, type=None, width=0, oneline=True), + Field(label=field3_label, type=None, width=0, oneline=True), + Field(label='', type=None, width=0, oneline=True) + ] + confirm_caption = 'Save' + always_redraw_labels = True + + def get_initial_field_text(self, field_number): + if field_number == 0: + # special case: if opening playscii/art/new, change + # it to documents dir to avoid writing to application dir + # (still possible if you open other files) + if os.path.dirname(self.ui.active_art.filename) == ART_DIR[:-1]: + self.ui.active_art.filename = self.ui.app.documents_dir + self.ui.active_art.filename + # TODO: handle other files from app dir as well? not as important + filename = os.path.basename(self.ui.active_art.filename) + filename = os.path.splitext(filename)[0] + return filename + return '' + + def get_file_extension(self): + """ + Return file extension this dialog saves as; other dialogs + are based on this class so we don't want to hardcore .psci + """ + return ART_FILE_EXTENSION + + def get_dir(self): + return os.path.dirname(self.ui.active_art.filename) + + def get_field_label(self, field_index): + label = self.fields[field_index].label + # show dir art will be saved into + if field_index == 3: + label %= self.get_dir() + return label + + def is_input_valid(self): + return self.is_filename_valid(0) + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + SaveCommand.execute(self.ui.console, [self.field_texts[0]]) + self.dismiss() + +class ConvertItemButton(ChooserItemButton): + width = 15 + big_width = 20 + +class ConvertChooserItem(ChooserItem): + + def picked(self, element): + + # TODO: following is c+p'd from BaseFileChooserItem.picked, + # move this functionality into ChooserItem and override in BFCI? + + # if this is different from the last clicked item, pick it + if element.selected_item_index != self.index: + ChooserItem.picked(self, element) + element.first_selection_made = True + return + # if we haven't yet clicked something in this view, require another + # click before opening it (consistent double click behavior for + # initial selections) + if not element.first_selection_made: + element.first_selection_made = True + return + element.confirm_pressed() + element.first_selection_made = False + + def get_description_lines(self): + return self.description.split('\n') + +class ConvertFileDialog(ChooserDialog): + "Common functionality for importer and exporter selection dialogs" + tile_width, big_width = 85, 90 + tile_height, big_height = 15, 25 + confirm_caption = 'Choose' + show_preview_image = False + item_button_class = ConvertItemButton + chooser_item_class = ConvertChooserItem + + def get_converters(self): + return [] + + def get_items(self): + items = [] + converters = self.get_converters() + # sort alphabetically + converters.sort(key=lambda item: item.format_name.lower()) + i = 0 + for converter in converters: + item = self.chooser_item_class(i, converter.__name__) + item.converter_class = converter + item.label = converter.format_name + item.description = converter.format_description + items.append(item) + i += 1 + return items + + +class ImportFileDialog(ConvertFileDialog): + title = 'Choose an importer' + + def get_converters(self): + return self.ui.app.get_importers() + + def confirm_pressed(self): + # open file select dialog so user can choose what to import + item = self.get_selected_item() + self.ui.app.importer = item.converter_class + if not self.ui.app.importer: + return + self.dismiss() + self.ui.open_dialog(self.ui.app.importer.file_chooser_dialog_class) + +class ImportOptionsDialog(UIDialog): + "Generic base class for importer options" + confirm_caption = 'Import' + def do_import(app, filename, options): + "Common 'run importer' code for end of import options dialog" + # if importer needs no options, run it + importer = app.importer(app, filename, options) + if importer.success: + if app.importer.completes_instantly: + app.log('Imported %s successfully.' % filename) + app.importer = None + +class ExportOptionsDialog(UIDialog): + "Generic base class for exporter options" + confirm_caption = 'Export' + def do_export(app, filename, options): + "Common 'run exporter' code for end of import options dialog" + # if importer needs no options, run it + exporter = app.exporter(app, filename, options) + if exporter.success: + app.log('Exported %s successfully.' % exporter.out_filename) + +class ExportFileDialog(ConvertFileDialog): + title = 'Choose an exporter' + + def get_converters(self): + return self.ui.app.get_exporters() + + def confirm_pressed(self): + # open file select dialog so user can choose what to import + item = self.get_selected_item() + self.ui.app.exporter = item.converter_class + if not self.ui.app.exporter: + return + self.dismiss() + self.ui.open_dialog(ExportFilenameInputDialog) + + +class ExportFilenameInputDialog(SaveAsDialog): + title = 'Export art' + field0_label = 'New filename for exported art:' + confirm_caption = 'Export' + + def get_initial_field_text(self, field_number): + # base output filename on art filename + if field_number == 0: + out_filename = self.ui.active_art.filename + out_filename = os.path.basename(out_filename) + out_filename = os.path.splitext(out_filename)[0] + return out_filename + + def get_file_extension(self): + return self.ui.app.exporter.file_extension + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + filename = self.field_texts[0] + self.dismiss() + # invoke options dialog if exporter has one, else invoke exporter + if self.ui.app.exporter.options_dialog_class: + # pass filename into new dialog + options = {'filename': filename} + self.ui.open_dialog(self.ui.app.exporter.options_dialog_class, + options) + else: + ExportOptionsDialog.do_export(self.ui.app, filename, {}) + + +class QuitUnsavedChangesDialog(UIDialog): + + title = 'Unsaved changes' + message = 'Save changes to %s?' + confirm_caption = 'Save' + other_button_visible = True + other_caption = "Don't Save" + + def confirm_pressed(self): + SaveCommand.execute(self.ui.console, []) + self.dismiss() + # try again, see if another art has unsaved changes + self.ui.app.il.BIND_quit() + + def other_pressed(self): + # kind of a hack: make the check BIND_quit does come up false + # for this art. externalities fairly minor. + self.ui.active_art.unsaved_changes = False + self.dismiss() + self.ui.app.il.BIND_quit() + + def get_message(self): + # get base name (ie no dirs) + filename = os.path.basename(self.ui.active_art.filename) + return [self.message % filename] + + +class CloseUnsavedChangesDialog(QuitUnsavedChangesDialog): + + def confirm_pressed(self): + SaveCommand.execute(self.ui.console, []) + self.dismiss() + self.ui.app.il.BIND_close_art() + + def other_pressed(self): + self.ui.active_art.unsaved_changes = False + self.dismiss() + self.ui.app.il.BIND_close_art() + + +class RevertChangesDialog(UIDialog): + + title = 'Revert changes' + message = 'Revert changes to %s?' + confirm_caption = 'Revert' + + def confirm_pressed(self): + self.ui.app.revert_active_art() + self.dismiss() + + def get_message(self): + filename = os.path.basename(self.ui.active_art.filename) + return [self.message % filename] + + +class ResizeArtDialog(UIDialog): + + title = 'Resize art' + field_width = UIDialog.default_short_field_width + field0_label = 'New Width:' + field1_label = 'New Height:' + field2_label = 'Crop Start X:' + field3_label = 'Crop Start Y:' + field4_label = 'Fill new tiles with BG color' + fields = [ + Field(label=field0_label, type=int, width=field_width, oneline=True), + Field(label=field1_label, type=int, width=field_width, oneline=True), + Field(label=field2_label, type=int, width=field_width, oneline=True), + Field(label=field3_label, type=int, width=field_width, oneline=True), + Field(label=field4_label, type=bool, width=0, oneline=True) + ] + confirm_caption = 'Resize' + invalid_width_error = 'Invalid width.' + invalid_height_error = 'Invalid height.' + invalid_start_error = 'Invalid crop origin.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return str(self.ui.active_art.width) + elif field_number == 1: + return str(self.ui.active_art.height) + elif field_number == 4: + return UIDialog.true_field_text + else: + return '0' + + def is_input_valid(self): + "file can't already exist, dimensions must be >0 and <= max" + if not self.is_valid_dimension(self.field_texts[0], self.ui.app.max_art_width): + return False, self.invalid_width_error + if not self.is_valid_dimension(self.field_texts[1], self.ui.app.max_art_height): + return False, self.invalid_height_error + try: int(self.field_texts[2]) + except: return False, self.invalid_start_error + if not 0 <= int(self.field_texts[2]) < self.ui.active_art.width: + return False, self.invalid_start_error + try: int(self.field_texts[3]) + except: return False, self.invalid_start_error + if not 0 <= int(self.field_texts[3]) < self.ui.active_art.height: + return False, self.invalid_start_error + return True, None + + def is_valid_dimension(self, dimension, max_dimension): + try: dimension = int(dimension) + except: return False + return 0 < dimension <= max_dimension + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + w, h = int(self.field_texts[0]), int(self.field_texts[1]) + start_x, start_y = int(self.field_texts[2]), int(self.field_texts[3]) + bg_fill = bool(self.field_texts[4].strip()) + self.ui.resize_art(self.ui.active_art, w, h, start_x, start_y, bg_fill) + self.dismiss() + + +# +# layer menu dialogs +# + +class AddFrameDialog(UIDialog): + + title = 'Add new frame' + field0_label = 'Index to add frame before:' + field1_label = 'Hold time (in seconds) for new frame:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=int, width=field_width, oneline=True), + Field(label=field1_label, type=float, width=field_width, oneline=False) + ] + confirm_caption = 'Add' + invalid_index_error = 'Invalid index. (1-%s allowed)' + invalid_delay_error = 'Invalid hold time.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return str(self.ui.active_art.frames + 1) + elif field_number == 1: + return str(DEFAULT_FRAME_DELAY) + + def is_valid_frame_index(self, index): + try: index = int(index) + except: return False + if index < 1 or index > self.ui.active_art.frames + 1: + return False + return True + + def is_valid_frame_delay(self, delay): + try: delay = float(delay) + except: return False + return delay > 0 + + def is_input_valid(self): + if not self.is_valid_frame_index(self.field_texts[0]): + return False, self.invalid_index_error % str(self.ui.active_art.frames + 1) + if not self.is_valid_frame_delay(self.field_texts[1]): + return False, self.invalid_delay_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + index = int(self.field_texts[0]) + delay = float(self.field_texts[1]) + self.ui.active_art.insert_frame_before_index(index - 1, delay) + self.dismiss() + +class DuplicateFrameDialog(AddFrameDialog): + title = 'Duplicate frame' + confirm_caption = 'Duplicate' + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + index = int(self.field_texts[0]) + delay = float(self.field_texts[1]) + self.ui.active_art.duplicate_frame(self.ui.active_art.active_frame, index - 1, delay) + self.dismiss() + +class FrameDelayDialog(AddFrameDialog): + + field0_label = 'New hold time (in seconds) for frame:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=float, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return str(self.ui.active_art.frame_delays[self.ui.active_art.active_frame]) + + def is_input_valid(self): + if not self.is_valid_frame_delay(self.field_texts[0]): + return False, self.invalid_delay_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + delay = float(self.field_texts[0]) + self.ui.active_art.frame_delays[self.ui.active_art.active_frame] = delay + self.dismiss() + +class FrameDelayAllDialog(FrameDelayDialog): + field0_label = 'New hold time (in seconds) for all frames:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=float, width=field_width, oneline=False) + ] + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + delay = float(self.field_texts[0]) + for i in range(self.ui.active_art.frames): + self.ui.active_art.frame_delays[i] = delay + self.dismiss() + +class FrameIndexDialog(AddFrameDialog): + field0_label = 'Move this frame before index:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=int, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + + def is_input_valid(self): + if not self.is_valid_frame_index(self.field_texts[0]): + return False, self.invalid_index_error % str(self.ui.active_art.frames + 1) + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + # set new frame index (effectively moving it in the sequence) + dest_index = int(self.field_texts[0]) + self.ui.active_art.move_frame_to_index(self.ui.active_art.active_frame, dest_index) + self.dismiss() + + +# +# layer menu dialogs +# + +class AddLayerDialog(UIDialog): + + title = 'Add new layer' + field0_label = 'Name for new layer:' + field1_label = 'Z-depth for new layer:' + field0_width = UIDialog.default_field_width + field1_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=str, width=field0_width, oneline=False), + Field(label=field1_label, type=float, width=field1_width, oneline=True) + ] + confirm_caption = 'Add' + name_exists_error = 'Layer by that name already exists.' + invalid_z_error = 'Invalid number.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return 'Layer %s' % str(self.ui.active_art.layers + 1) + elif field_number == 1: + return str(self.ui.active_art.layers_z[self.ui.active_art.active_layer] + DEFAULT_LAYER_Z_OFFSET) + + def is_valid_layer_name(self, name, exclude_active_layer=False): + for i,layer_name in enumerate(self.ui.active_art.layer_names): + if exclude_active_layer and i == self.ui.active_layer: + continue + if layer_name == name: + return False + return True + + def is_input_valid(self): + valid_name = self.is_valid_layer_name(self.field_texts[0]) + if not valid_name: + return False, self.name_exists_error + try: z = float(self.field_texts[1]) + except: return False, self.invalid_z_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + name = self.field_texts[0] + z = float(self.field_texts[1]) + self.ui.active_art.add_layer(z, name) + self.dismiss() + + +class DuplicateLayerDialog(AddLayerDialog): + title = 'Duplicate layer' + confirm_caption = 'Duplicate' + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + name = self.field_texts[0] + z = float(self.field_texts[1]) + self.ui.active_art.duplicate_layer(self.ui.active_art.active_layer, z, name) + self.dismiss() + + +class SetLayerNameDialog(AddLayerDialog): + + title = 'Set layer name' + field0_label = 'New name for this layer:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Rename' + + def confirm_pressed(self): + new_name = self.field_texts[0] + self.ui.active_art.layer_names[self.ui.active_art.active_layer] = new_name + self.ui.active_art.set_unsaved_changes(True) + self.dismiss() + + +class SetLayerZDialog(UIDialog): + title = 'Set layer Z-depth' + field0_label = 'Z-depth for layer:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=float, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + invalid_z_error = 'Invalid number.' + + def get_initial_field_text(self, field_number): + # populate with existing z + if field_number == 0: + return str(self.ui.active_art.layers_z[self.ui.active_art.active_layer]) + + def is_input_valid(self): + try: z = float(self.field_texts[0]) + except: return False, self.invalid_z_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + new_z = float(self.field_texts[0]) + self.ui.active_art.layers_z[self.ui.active_art.active_layer] = new_z + self.ui.active_art.set_unsaved_changes(True) + self.ui.app.grid.reset() + self.dismiss() + + +class PaletteFromFileDialog(UIDialog): + title = 'Create palette from file' + field0_label = 'Filename to create palette from:' + field1_label = 'Filename for new palette:' + field2_label = 'Colors in new palette:' + field0_width = field1_width = UIDialog.default_field_width + field2_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=str, width=field0_width, oneline=False), + Field(label=field1_label, type=str, width=field1_width, oneline=False), + Field(label=field2_label, type=int, width=field2_width, oneline=True) + ] + confirm_caption = 'Create' + invalid_color_error = 'Palettes must be between 2 and 256 colors.' + bad_output_filename_error = 'Enter a filename for the new palette.' + + def get_initial_field_text(self, field_number): + # NOTE: PaletteFromImageChooserDialog.confirm_pressed which invokes us + # sets fields 0 and 1 + if field_number == 2: + return str(256) + return '' + + def valid_colors(self, colors): + try: c = int(colors) + except: return False + return 2 <= c <= 256 + + def is_input_valid(self): + valid_colors = self.valid_colors(self.field_texts[2]) + if not valid_colors: + return False, self.invalid_color_error + if not self.field_texts[1].strip(): + return False, self.bad_output_filename_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + src_filename = self.field_texts[0] + palette_filename = self.field_texts[1] + colors = int(self.field_texts[2]) + new_pal = PaletteFromFile(self.ui.app, src_filename, palette_filename, colors) + self.dismiss() + + +class SetCameraZoomDialog(UIDialog): + title = 'Set camera zoom' + field0_label = 'New camera zoom %:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=float, width=field_width, oneline=True) + ] + confirm_caption = 'Set' + invalid_zoom_error = 'Zoom % must be a number greater than zero.' + all_modes_visible = True + game_mode_visible = True + + def get_initial_field_text(self, field_number): + if field_number == 0: + return '%.1f' % self.ui.app.camera.get_current_zoom_pct() + return '' + + def is_input_valid(self): + try: zoom = float(self.field_texts[0]) + except: return False, self.invalid_zoom_error + if zoom <= 0: + return False, self.invalid_zoom_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + new_zoom_pct = float(self.field_texts[0]) + camera = self.ui.app.camera + camera.z = camera.get_base_zoom() / (new_zoom_pct / 100) + self.dismiss() + + +class OverlayImageOpacityDialog(UIDialog): + title = 'Set overlay image opacity' + field0_label = 'New overlay opacity %:' + field_width = UIDialog.default_short_field_width + fields = [ + Field(label=field0_label, type=float, width=field_width, oneline=True) + ] + confirm_caption = 'Set' + invalid_opacity_error = 'Opacity % must be between 0 and 100.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return '%.1f' % (self.ui.app.overlay_renderable.alpha * 100) + return '' + + def is_input_valid(self): + try: opacity = float(self.field_texts[0]) + except: return False, self.invalid_opacity_error + if opacity <= 0 or opacity > 100: + return False, self.invalid_opacity_error + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + new_opacity = float(self.field_texts[0]) + self.ui.app.overlay_renderable.alpha = new_opacity / 100 + self.dismiss() diff --git a/ui_button.py b/ui_button.py new file mode 100644 index 0000000..e7d69c4 --- /dev/null +++ b/ui_button.py @@ -0,0 +1,162 @@ + +from ui_colors import UIColors + +TEXT_LEFT = 0 +TEXT_CENTER = 1 +TEXT_RIGHT = 2 + +BUTTON_STATES = ['normal', 'hovered', 'clicked', 'dimmed'] + +class UIButton: + + "clickable button that does something in a UIElement" + + # x/y/width/height given in tile scale + x, y = 0, 0 + width, height = 1, 1 + caption = 'TEST' + caption_justify = TEXT_LEFT + # paint caption from string, or not + should_draw_caption = True + caption_y = 0 + callback = None + normal_fg_color = UIColors.black + normal_bg_color = UIColors.lightgrey + hovered_fg_color = UIColors.black + hovered_bg_color = UIColors.white + clicked_fg_color = UIColors.white + clicked_bg_color = UIColors.black + dimmed_fg_color = UIColors.black + dimmed_bg_color = UIColors.medgrey + # dimmed is a special, alternative-to-normal state + dimmed = False + can_hover = True + can_click = True + visible = True + # if true, this button is invisible and used for special trickery + never_draw = False + # weird (gross?) thing: other code can stash an argument to callback here + cb_arg = None + # if True, pass in mouse button # + pass_mouse_button = False + # if true, clear all characters before painting a new caption + clear_before_caption_draw = False + # if true, display a tooltip when hovered, and dismiss it when unhovered. + # contents set from get_tooltip_text and positioned by get_tooltip_location. + tooltip_on_hover = False + + def __init__(self, element, starting_state=None): + self.element = element + self.state = starting_state or 'normal' + + def log_event(self, event_type): + "common code for button event logging" + if self.element.ui.logg: + self.element.ui.app.log("UIButton: %s's %s %s" % (self.element.__class__.__name__, self.__class__.__name__, event_type)) + + def set_state(self, new_state): + if not new_state in BUTTON_STATES: + self.element.ui.app.log('Unrecognized state for button %s: %s' % (self.__class__.__name__, new_state)) + return + self.dimmed = new_state == 'dimmed' + self.state = new_state + self.set_state_colors() + + def get_state_colors(self, state): + fg = getattr(self, '%s_fg_color' % state) + bg = getattr(self, '%s_bg_color' % state) + return fg, bg + + def set_state_colors(self): + if self.never_draw: + return + # set colors for entire button area based on current state + if self.dimmed and self.state == 'normal': + self.state = 'dimmed' + # just bail if we're trying to draw something out of bounds + if self.x + self.width > self.element.art.width: + return + elif self.y + self.height > self.element.art.height: + return + fg, bg = self.get_state_colors(self.state) + for y in range(self.height): + for x in range(self.width): + self.element.art.set_tile_at(0, 0, self.x + x, self.y + y, None, fg, bg) + + def update_tooltip(self): + tt = self.element.ui.tooltip + tt.reset_art() + tt.set_text(self.get_tooltip_text()) + tt.tile_x, tt.tile_y = self.get_tooltip_location() + tt.reset_loc() + + def hover(self): + self.log_event('hovered') + self.set_state('hovered') + if self.tooltip_on_hover: + self.element.ui.tooltip.visible = True + self.update_tooltip() + + def unhover(self): + self.log_event('unhovered') + if self.dimmed: + self.set_state('dimmed') + else: + self.set_state('normal') + if self.tooltip_on_hover: + # if two buttons are adjacent, we might be unhovering this one + # right after hovering the other in the same frame. if so, + # don't dismiss the tooltip + another_tooltip = False + for b in self.element.hovered_buttons: + if b is self: + continue + if b.tooltip_on_hover: + another_tooltip = True + if not another_tooltip: + self.element.ui.tooltip.visible = False + + def click(self): + self.log_event('clicked') + self.set_state('clicked') + + def unclick(self): + self.log_event('unclicked') + if self in self.element.hovered_buttons: + self.hover() + else: + self.unhover() + + def get_tooltip_text(self): + "override in a subclass to define this button's tooltip text" + return 'ERROR' + + def get_tooltip_location(self): + "override in a subclass to define this button's tooltip screen location" + return 10, 10 + + def draw_caption(self): + y = self.y + self.caption_y + text = self.caption + # trim if too long + text = text[:self.width] + if self.caption_justify == TEXT_CENTER: + text = text.center(self.width) + elif self.caption_justify == TEXT_RIGHT: + text = text.rjust(self.width) + # just bail if we're trying to draw something out of bounds + if self.x + len(text) > self.element.art.width: + return + if self.clear_before_caption_draw: + for ty in range(self.height): + for tx in range(self.width): + self.element.art.set_char_index_at(0, 0, self.x+tx, y+ty, 0) + # leave FG color None; should already have been set + self.element.art.write_string(0, 0, self.x, y, text, None) + + def draw(self): + if self.never_draw: + return + self.set_state_colors() + if self.should_draw_caption: + self.draw_caption() diff --git a/ui_chooser_dialog.py b/ui_chooser_dialog.py new file mode 100644 index 0000000..db29ad7 --- /dev/null +++ b/ui_chooser_dialog.py @@ -0,0 +1,483 @@ +# coding=utf-8 + +import os +import sdl2 + +from renderable_sprite import UISpriteRenderable +from ui_dialog import UIDialog, Field +from ui_button import UIButton +from art import UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270, UV_FLIPX, UV_FLIPY +from ui_colors import UIColors + + +class ChooserItemButton(UIButton): + + "button representing a ChooserItem" + + item = None + width = 20 + big_width = 30 + clear_before_caption_draw = True + + def __init__(self, element): + # more room for list items if screen is wide enough + if element.ui.width_tiles - 20 > element.big_width: + self.width = self.big_width + UIButton.__init__(self, element) + self.callback = self.pick_item + + def pick_item(self): + if not self.item: + return + self.item.picked(self.element) + + +class ScrollArrowButton(UIButton): + + "button that scrolls up or down in a chooser item view" + + arrow_char = 129 + up = True + normal_bg_color = UIDialog.bg_color + dimmed_fg_color = UIColors.medgrey + dimmed_bg_color = UIDialog.bg_color + + def draw_caption(self): + xform = [UV_FLIPY, UV_NORMAL][self.up] + self.element.art.set_tile_at(0, 0, self.x, self.y + self.caption_y, + self.arrow_char, None, None, xform) + + def callback(self): + if self.up and self.element.scroll_index > 0: + self.element.scroll_index -= 1 + elif not self.up and self.element.scroll_index < self.element.get_max_scroll(): + self.element.scroll_index += 1 + self.element.load_selected_item() + self.element.reset_art(False) + self.element.set_preview() + self.element.position_preview() + + +class ChooserItem: + + label = 'Chooser item' + + def __init__(self, index, name): + self.index = index + # item's unique name, eg a filename + self.name = name + self.label = self.get_label() + # validity flag lets ChooserItem subclasses exclude themselves + self.valid = True + + def get_label(self): return self.name + + def get_description_lines(self): return [] + + def get_preview_texture(self): return None + + def load(self, app): pass + + def picked(self, element): + # set item selected and refresh preview + element.set_selected_item_index(self.index) + + +class ChooserDialog(UIDialog): + + title = 'Chooser' + confirm_caption = 'Set' + cancel_caption = 'Close' + message = '' + # if True, chooser shows files; show filename on first line of description + show_filenames = False + directory_aware = False + tile_width, tile_height = 60, 20 + # use these if screen is big enough + big_width, big_height = 80, 30 + fields = [ + Field(label='', type=str, width=tile_width - 4, oneline=True) + ] + item_start_x, item_start_y = 2, 4 + no_preview_label = 'No preview available!' + show_preview_image = True + item_button_class = ChooserItemButton + chooser_item_class = ChooserItem + scrollbar_shade_char = 54 + flip_preview_y = True + + def __init__(self, ui, options): + self.ui = ui + # semikludge: track whether user has selected anything in a new dir, + # so double click behavior is consistent even on initial selections + self.first_selection_made = False + if self.ui.width_tiles - 20 > self.big_width: + self.tile_width = self.big_width + self.fields[0] = Field(label='', type=str, + width=self.tile_width - 4, oneline=True) + if self.ui.height_tiles - 30 > self.big_height: + self.tile_height = self.big_height + self.items_in_view = self.tile_height - self.item_start_y - 3 + self.field_texts = [''] + # set active field earlier than UIDialog.init so set_initial_dir + # can change its text + self.active_field = 0 + if self.directory_aware: + self.set_initial_dir() + self.selected_item_index = 0 + # scroll index - how far into items list current screen view begins + self.scroll_index = 0 + self.items = self.get_items() + self.set_selected_item_index(self.get_initial_selection(), True, False) + self.load_selected_item() + # start scroll index higher if initial selection would be offscreen + if self.selected_item_index >= self.items_in_view: + self.scroll_index = self.selected_item_index - self.items_in_view + 1 + # for convenience, create another list where 1st item button starts at 0 + self.item_buttons = [] + self.up_arrow_button, self.down_arrow_button = None, None + # marker for preview drawing + self.description_end_y = 0 + # UIDialog init runs: reset_art, draw_buttons etc + UIDialog.__init__(self, ui, options) + # UIDialog/UIElement initializes self.buttons, create item buttons after + self.init_buttons() + self.reset_art(False) + # preview SpriteRenderable (loaded on item change?) + self.preview_renderable = UISpriteRenderable(ui.app) + # don't blend preview images, eg charsets + self.preview_renderable.blend = False + # offset into items list view provided by buttons starts from + self.position_preview() + + def init_buttons(self): + for i in range(self.items_in_view): + button = self.item_button_class(self) + button.x = self.item_start_x + button.y = i + self.item_start_y + self.buttons.append(button) + self.item_buttons.append(button) + # create scrollbar buttons + self.item_button_width = self.item_buttons[0].width + self.up_arrow_button = ScrollArrowButton(self) + self.up_arrow_button.x = self.item_start_x + self.item_button_width + self.up_arrow_button.y = self.item_start_y + self.down_arrow_button = ScrollArrowButton(self) + self.down_arrow_button.x = self.item_start_x + self.item_button_width + self.down_arrow_button.y = self.item_start_y + self.items_in_view - 1 + self.down_arrow_button.up = False + self.buttons += [self.up_arrow_button, self.down_arrow_button] + + def set_initial_dir(self): + # for directory-aware dialogs, subclasses specify here where to start + self.current_dir = '.' + + def change_current_dir(self, new_dir): + # check permissions: + # os.access(new_dir, os.R_OK) seems to always return True, + # so try/catch listdir instead + try: + l = os.listdir(new_dir) + except PermissionError as e: + line = 'No permission to access %s!' % os.path.abspath(new_dir) + self.ui.message_line.post_line(line, error=True) + return False + self.current_dir = new_dir + if not self.current_dir.endswith('/'): + self.current_dir += '/' + # redo items and redraw + self.selected_item_index = 0 + self.scroll_index = 0 + self.field_texts[self.active_field] = self.current_dir + self.items = self.get_items() + self.reset_art(False) + return True + + def set_selected_item_index(self, new_index, set_field_text=True, + update_view=True): + """ + set the view's selected item to specified index + perform usually-necessary refresh functions for convenience + """ + move_dir = new_index - self.selected_item_index + self.selected_item_index = new_index + can_scroll = len(self.items) > self.items_in_view + should_scroll = self.selected_item_index >= self.scroll_index + self.items_in_view or self.selected_item_index < self.scroll_index + if not can_scroll: + self.scroll_index = 0 + elif should_scroll: + # keep selection in bounds + self.selected_item_index = min(self.selected_item_index, len(self.items)-1) + # scrolling up + if move_dir <= 0: + self.scroll_index = self.selected_item_index + # scrolling down + elif move_dir > 0 and self.selected_item_index - self.scroll_index == self.items_in_view: + self.scroll_index = self.selected_item_index - self.items_in_view + 1 + # keep scroll in bounds + self.scroll_index = min(self.scroll_index, self.get_max_scroll()) + # don't select/load null items + if set_field_text: + item = self.get_selected_item() + if item: + self.field_texts[self.active_field] = item.name + if update_view: + self.load_selected_item() + self.reset_art(False) + self.position_preview() + + def get_max_scroll(self): + return len(self.items) - self.items_in_view + + def get_selected_item(self): + # return None if out of bounds + return self.items[self.selected_item_index] if self.selected_item_index < len(self.items) else None + + def load_selected_item(self): + item = self.get_selected_item() + item.load(self.ui.app) + + def get_initial_selection(self): + # subclasses return index of initial selection + return 0 + + def set_preview(self): + item = self.get_selected_item() + if self.show_preview_image: + self.preview_renderable.texture = item.get_preview_texture(self.ui.app) + + def get_items(self): + # subclasses generate lists of items here + return [] + + def position_preview(self, reset=True): + if reset: + self.set_preview() + if not self.preview_renderable.texture: + return + qw, qh = self.art.quad_width, self.art.quad_height + # determine x position, then width as (dialog width - x) + x = (self.item_button_width + self.item_start_x + 3) * qw + self.preview_renderable.x = self.x + x + self.preview_renderable.scale_x = (self.tile_width - 2) * qw - x + # determine height based on width, then y position + img_inv_aspect = self.preview_renderable.texture.height / self.preview_renderable.texture.width + screen_aspect = self.ui.app.window_width / self.ui.app.window_height + self.preview_renderable.scale_y = self.preview_renderable.scale_x * img_inv_aspect * screen_aspect + y = (self.description_end_y + 1) * qh + # if preview height is above max allotted size, set height to fill size + # and scale down width + max_y = (self.tile_height - 3) * qh + if self.preview_renderable.scale_y > max_y - y: + self.preview_renderable.scale_y = max_y - y + self.preview_renderable.scale_x = self.preview_renderable.scale_y * (1 / img_inv_aspect) * (1 / screen_aspect) + # flip in Y for some (palettes) but not for others (charsets) + if self.flip_preview_y: + self.preview_renderable.scale_y = -self.preview_renderable.scale_y + else: + y += self.preview_renderable.scale_y + self.preview_renderable.y = self.y - y + + def get_height(self, msg_lines): + return self.tile_height + + def reset_buttons(self): + # (re)generate buttons from contents of self.items + for i,button in enumerate(self.item_buttons): + # ??? each button's callback loads charset/palette/whatev + if i >= len(self.items): + button.never_draw = True + # clear item, might be left over from a previous dir view! + button.item = None + continue + item = self.items[self.scroll_index + i] + button.caption = item.label + button.item = item + button.never_draw = False + # highlight selected item + if i == self.selected_item_index - self.scroll_index: + button.normal_fg_color = UIButton.clicked_fg_color + button.normal_bg_color = UIButton.clicked_bg_color + # still allow hover and click + button.hovered_fg_color = UIButton.clicked_fg_color + button.hovered_bg_color = UIButton.clicked_bg_color + else: + button.normal_fg_color = UIButton.normal_fg_color + button.normal_bg_color = UIButton.normal_bg_color + button.hovered_fg_color = UIButton.hovered_fg_color + button.hovered_bg_color = UIButton.hovered_bg_color + # init_buttons has not yet run on first reset_art + if not self.up_arrow_button: + return + # dim scroll buttons if we don't have enough items to scroll + state, hover = 'normal', True + if len(self.items) <= self.items_in_view: + state = 'dimmed' + hover = False + for button in [self.up_arrow_button, self.down_arrow_button]: + button.set_state(state) + button.can_hover = hover + + def get_description_filename(self, item): + "returns a description-appropriate filename for given item" + # truncate from start to fit in description area if needed + max_width = self.tile_width + max_width -= self.item_start_x + self.item_button_width + 5 + if len(item.name) > max_width - 1: + return '…' + item.name[-max_width:] + return item.name + + def get_selected_description_lines(self): + item = self.get_selected_item() + lines = [] + if self.show_filenames: + lines += [self.get_description_filename(item)] + lines += item.get_description_lines() or [] + return lines + + def draw_selected_description(self): + x = self.tile_width - 2 + y = self.item_start_y + lines = self.get_selected_description_lines() + for line in lines: + # trim line if it's too long + max_width = self.tile_width - self.item_button_width - 7 + line = line[:max_width] + self.art.write_string(0, 0, x, y, line, None, None, + right_justify=True) + y += 1 + self.description_end_y = y + + def reset_art(self, resize=True): + self.reset_buttons() + # UIDialog does: clear window, draw titlebar and confirm/cancel buttons + # doesn't: draw message or fields + UIDialog.reset_art(self, resize, clear_buttons=False) + # init_buttons hasn't run yet on first call to reset_art + if not self.up_arrow_button: + return + self.draw_selected_description() + # draw scrollbar shading + # dim if no scrolling + fg = self.up_arrow_button.normal_fg_color + if len(self.items) <= self.items_in_view: + fg = self.up_arrow_button.dimmed_fg_color + for y in range(self.up_arrow_button.y + 1, self.down_arrow_button.y): + self.art.set_tile_at(0, 0, self.up_arrow_button.x, y, + self.scrollbar_shade_char, fg) + + def update_drag(self, mouse_dx, mouse_dy): + UIDialog.update_drag(self, mouse_dx, mouse_dy) + # update thumbnail renderable's position too + self.position_preview(False) + + def handle_input(self, key, shift_pressed, alt_pressed, ctrl_pressed): + keystr = sdl2.SDL_GetKeyName(key).decode() + # up/down keys navigate list + new_index = self.selected_item_index + navigated = False + if keystr == 'Return': + # if handle_enter returns True, bail before rest of input handling - + # make sure any changes to handle_enter are safe for this! + if self.handle_enter(shift_pressed, alt_pressed, ctrl_pressed): + return + elif keystr == 'Up': + navigated = True + if self.selected_item_index > 0: + new_index -= 1 + elif keystr == 'Down': + navigated = True + if self.selected_item_index < len(self.items) - 1: + new_index += 1 + elif keystr == 'PageUp': + navigated = True + page_size = int(self.items_in_view / 2) + new_index -= page_size + new_index = max(0, new_index) + # scroll follows selection jumps + self.scroll_index -= page_size + self.scroll_index = max(0, self.scroll_index) + elif keystr == 'PageDown': + navigated = True + page_size = int(self.items_in_view / 2) + new_index += page_size + new_index = min(new_index, len(self.items) - 1) + self.scroll_index += page_size + self.scroll_index = min(self.scroll_index, self.get_max_scroll()) + # home/end: beginning/end of list, respectively + elif keystr == 'Home': + navigated = True + new_index = 0 + self.scroll_index = 0 + elif keystr == 'End': + navigated = True + new_index = len(self.items) - 1 + self.scroll_index = len(self.items) - self.items_in_view + self.set_selected_item_index(new_index, set_field_text=navigated) + # handle alphanumeric input etc + UIDialog.handle_input(self, key, shift_pressed, alt_pressed, ctrl_pressed) + # if we didn't navigate, seek based on new alphanumeric input + if not navigated: + self.text_input_seek() + + def text_input_seek(self): + field_text = self.field_texts[self.active_field] + if field_text.strip() == '': + return + # seek should be case-insensitive + field_text = field_text.lower() + # field text may be a full path; only care about the base + field_text = os.path.basename(field_text) + for i,item in enumerate(self.items): + # match to base item name within dir + # (if it's a dir, snip last / for match) + item_base = item.name.lower() + if item_base.endswith('/'): + item_base = item_base[:-1] + item_base = os.path.basename(item_base) + item_base = os.path.splitext(item_base)[0] + if item_base.startswith(field_text): + self.set_selected_item_index(i, set_field_text=False) + break + + def handle_enter(self, shift_pressed, alt_pressed, ctrl_pressed): + "handle Enter key, return False if rest of handle_input should continue" + # if selected item is already in text field, pick it + field_text = self.field_texts[self.active_field] + selected_item = self.get_selected_item() + if field_text.strip() == '': + self.field_texts[self.active_field] = field_text = selected_item.name + return True + if field_text == selected_item.name: + # this (and similar following cases) should count as having + # made a selection + self.first_selection_made = True + selected_item.picked(self) + return True + # else navigate to directory or file if it's real + if not os.path.exists(field_text): + self.field_texts[self.active_field] = selected_item.name + return True + # special case for parent dir .. + if self.directory_aware and field_text == self.current_dir and selected_item.name == '..': + self.first_selection_made = True + return self.change_current_dir('..') + if self.directory_aware and os.path.isdir(field_text): + self.first_selection_made = True + return self.change_current_dir(field_text) + if os.path.isfile(field_text): + file_dir_name = os.path.dirname(field_text) + # if a file, change to its dir and select it + if self.directory_aware and file_dir_name != self.current_dir: + if self.change_current_dir(file_dir_name): + for i,item in enumerate(self.items): + if item.name == field_text: + self.set_selected_item_index(i) + item.picked(self) + return True + return False + + def render(self): + UIDialog.render(self) + if self.show_preview_image and self.preview_renderable.texture: + self.preview_renderable.render() diff --git a/ui_colors.py b/ui_colors.py new file mode 100644 index 0000000..ade2691 --- /dev/null +++ b/ui_colors.py @@ -0,0 +1,11 @@ + +class UIColors: + "color indices for UI (c64 original) palette" + white = 2 + lightgrey = 16 + medgrey = 13 + darkgrey = 12 + black = 1 + yellow = 8 + red = 3 + brightred = 11 diff --git a/ui_console.py b/ui_console.py new file mode 100644 index 0000000..075a78d --- /dev/null +++ b/ui_console.py @@ -0,0 +1,538 @@ +import os +import sdl2 +from math import ceil + +from ui_element import UIElement +from art import UV_FLIPY +from key_shifts import SHIFT_MAP + +from image_convert import ImageConverter +from palette import PaletteFromFile + +from image_export import export_still_image, export_animation + +from PIL import Image + +# imports for console execution namespace - be careful! +from OpenGL import GL + + +CONSOLE_HISTORY_FILENAME = 'console_history' + +class ConsoleCommand: + "parent class for console commands" + description = '[Enter a description for this command!]' + def execute(console, args): + return 'Test command executed.' + + +class QuitCommand(ConsoleCommand): + description = 'Quit Playscii.' + def execute(console, args): + console.ui.app.should_quit = True + + +class SaveCommand(ConsoleCommand): + description = 'Save active art, under new filename if given.' + def execute(console, args): + # save currently active file + art = console.ui.active_art + # set new filename if given + if len(args) > 0: + old_filename = art.filename + art.set_filename(' '.join(args)) + art.save_to_file() + console.ui.app.load_art_for_edit(old_filename) + console.ui.set_active_art_by_filename(art.filename) + else: + art.save_to_file() + console.ui.app.update_window_title() + + +class OpenCommand(ConsoleCommand): + description = 'Open art with given filename.' + def execute(console, args): + if len(args) == 0: + return 'Usage: open [art filename]' + filename = ' '.join(args) + console.ui.app.load_art_for_edit(filename) + +class RevertArtCommand(ConsoleCommand): + description = 'Revert active art to last saved version.' + def execute(console, args): + console.ui.app.revert_active_art() + +class LoadPaletteCommand(ConsoleCommand): + description = 'Set the given color palette as active.' + def execute(console, args): + if len(args) == 0: + return 'Usage: pal [palette filename]' + filename = ' '.join(args) + # load AND set + palette = console.ui.app.load_palette(filename) + console.ui.active_art.set_palette(palette) + console.ui.popup.set_active_palette(palette) + +class LoadCharSetCommand(ConsoleCommand): + description = 'Set the given character set as active.' + def execute(console, args): + if len(args) == 0: + return 'Usage: char [character set filename]' + filename = ' '.join(args) + charset = console.ui.app.load_charset(filename) + console.ui.active_art.set_charset(charset) + console.ui.popup.set_active_charset(charset) + +class ImageExportCommand(ConsoleCommand): + description = 'Export active art as PNG image.' + def execute(console, args): + export_still_image(console.ui.app, console.ui.active_art) + +class AnimExportCommand(ConsoleCommand): + description = 'Export active art as animated GIF image.' + def execute(console, args): + export_animation(console.ui.app, console.ui.active_art) + +class ConvertImageCommand(ConsoleCommand): + description = 'Convert given bitmap image to current character set + color palette.' + def execute(console, args): + if len(args) == 0: + return 'Usage: conv [image filename]' + image_filename = ' '.join(args) + ImageConverter(console.ui.app, image_filename, console.ui.active_art) + console.ui.app.update_window_title() + +class OverlayImageCommand(ConsoleCommand): + description = 'Draw given bitmap image over active art document.' + def execute(console, args): + if len(args) == 0: + return 'Usage: img [image filename]' + image_filename = ' '.join(args) + console.ui.app.set_overlay_image(image_filename) + +class ImportCommand(ConsoleCommand): + description = 'Import file using an ArtImport class' + def execute(console, args): + if len(args) < 2: + return 'Usage: imp [ArtImporter class name] [filename]' + importers = console.ui.app.get_importers() + importer_classname, filename = args[0], args[1] + importer_class = None + for c in importers: + if c.__name__ == importer_classname: + importer_class = c + if not importer_class: + console.ui.app.log("Couldn't find importer class %s" % importer_classname) + if not os.path.exists(filename): + console.ui.app.log("Couldn't find file %s" % filename) + importer = importer_class(console.ui.app, filename) + +class ExportCommand(ConsoleCommand): + description = 'Export current art using an ArtExport class' + def execute(console, args): + if len(args) < 2: + return 'Usage: exp [ArtExporter class name] [filename]' + exporters = console.ui.app.get_exporters() + exporter_classname, filename = args[0], args[1] + exporter_class = None + for c in exporters: + if c.__name__ == exporter_classname: + exporter_class = c + if not exporter_class: + console.ui.app.log("Couldn't find exporter class %s" % exporter_classname) + exporter = exporter_class(console.ui.app, filename) + +class PaletteFromImageCommand(ConsoleCommand): + description = 'Convert given image into a palette file.' + def execute(console, args): + if len(args) == 0: + return 'Usage: getpal [image filename]' + src_filename = ' '.join(args) + new_pal = PaletteFromFile(console.ui.app, src_filename, src_filename) + if not new_pal.init_success: + return + #console.ui.app.load_palette(new_pal.filename) + console.ui.app.palettes.append(new_pal) + console.ui.active_art.set_palette(new_pal) + console.ui.popup.set_active_palette(new_pal) + +class SetGameDirCommand(ConsoleCommand): + description = 'Load game from the given folder.' + def execute(console, args): + if len(args) == 0: + return 'Usage: setgame [game dir name]' + game_dir_name = ' '.join(args) + console.ui.app.gw.set_game_dir(game_dir_name, True) + +class LoadGameStateCommand(ConsoleCommand): + description = 'Load the given game state save file.' + def execute(console, args): + if len(args) == 0: + return 'Usage: game [game state filename]' + gs_name = ' '.join(args) + console.ui.app.gw.load_game_state(gs_name) + +class SaveGameStateCommand(ConsoleCommand): + description = 'Save the current game state as the given filename.' + def execute(console, args): + "Usage: savegame [game state filename]" + gs_name = ' '.join(args) + console.ui.app.gw.save_to_file(gs_name) + +class SpawnObjectCommand(ConsoleCommand): + description = 'Spawn an object of the given class name.' + def execute(console, args): + if len(args) == 0: + return 'Usage: spawn [class name]' + class_name = ' '.join(args) + console.ui.app.gw.spawn_object_of_class(class_name) + +class CommandListCommand(ConsoleCommand): + description = 'Show the list of console commands.' + def execute(console, args): + # TODO: print a command with usage if available + console.ui.app.log('Commands:') + # alphabetize command list + command_list = list(commands.keys()) + command_list.sort() + for command in command_list: + desc = commands[command].description + console.ui.app.log(' %s - %s' % (command, desc)) + +class RunArtScriptCommand(ConsoleCommand): + description = 'Run art script with given filename on active art.' + def execute(console, args): + if len(args) == 0: + return 'Usage: src [art script filename]' + filename = ' '.join(args) + console.ui.active_art.run_script(filename) + +class RunEveryArtScriptCommand(ConsoleCommand): + description = 'Run art script with given filename on active art at given rate.' + def execute(console, args): + if len(args) < 2: + return 'Usage: srcev [rate] [art script filename]' + rate = float(args[0]) + filename = ' '.join(args[1:]) + console.ui.active_art.run_script_every(filename, rate) + # hide so user can immediately see what script is doing + console.hide() + +class StopArtScriptsCommand(ConsoleCommand): + description = 'Stop all actively running art scripts.' + def execute(console, args): + console.ui.active_art.stop_all_scripts() + +# map strings to command classes for ConsoleUI.parse +commands = { + 'exit': QuitCommand, + 'quit': QuitCommand, + 'save': SaveCommand, + 'open': OpenCommand, + 'char': LoadCharSetCommand, + 'pal': LoadPaletteCommand, + 'imgexp': ImageExportCommand, + 'animexport': AnimExportCommand, + 'conv': ConvertImageCommand, + 'getpal': PaletteFromImageCommand, + 'setgame': SetGameDirCommand, + 'game': LoadGameStateCommand, + 'savegame': SaveGameStateCommand, + 'spawn': SpawnObjectCommand, + 'help': CommandListCommand, + 'scr': RunArtScriptCommand, + 'screv': RunEveryArtScriptCommand, + 'scrstop': StopArtScriptsCommand, + 'revert': RevertArtCommand, + 'img': OverlayImageCommand, + 'imp': ImportCommand, + 'exp': ExportCommand +} + + +class ConsoleUI(UIElement): + + visible = False + snap_top = True + snap_left = True + # how far down the screen the console reaches when visible + height_screen_pct = 0.75 + # how long (seconds) to shift/fade into view when invoked + show_anim_time = 0.75 + bg_alpha = 0.75 + prompt = '>' + # _ ish char + bottom_line_char_index = 76 + right_margin = 3 + # transient, but must be set here b/c UIElement.init calls reset_art + current_line = '' + game_mode_visible = True + all_modes_visible = True + + def __init__(self, ui): + self.bg_color_index = ui.colors.darkgrey + self.highlight_color = 8 # yellow + UIElement.__init__(self, ui) + # state stuff for console move/fade + self.alpha = 0 + self.target_alpha = 0 + self.target_y = 2 + # start off top of screen + self.renderable.y = self.y = 2 + # user input and log + self.last_lines = [] + self.history_filename = self.ui.app.config_dir + CONSOLE_HISTORY_FILENAME + if os.path.exists(self.history_filename): + self.history_file = open(self.history_filename, 'r') + try: + self.command_history = self.history_file.readlines() + except: + self.command_history = [] + self.history_file = open(self.history_filename, 'a') + else: + self.history_file = open(self.history_filename, 'w+') + self.command_history = [] + self.history_index = 0 + # junk data in last user line so it changes on first update + self.last_user_line = 'test' + # max line length = width of console minus prompt + _ + self.max_line_length = int(self.art.width) - self.right_margin + + def reset_art(self): + self.width = ceil(self.ui.width_tiles * self.ui.scale) + # % of screen must take aspect into account + inv_aspect = self.ui.app.window_height / self.ui.app.window_width + self.height = int(self.ui.height_tiles * self.height_screen_pct * inv_aspect * self.ui.scale) + # dim background + self.renderable.bg_alpha = self.bg_alpha + # must resize here, as window width will vary + self.art.resize(self.width, self.height) + self.max_line_length = int(self.width) - self.right_margin + self.text_color = self.ui.palette.lightest_index + self.clear() + # truncate current user line if it's too long for new width + self.current_line = self.current_line[:self.max_line_length] + #self.update_user_line() + # empty log lines so they refresh from app + self.last_user_line = 'XXtestXX' + self.last_lines = [] + + def toggle(self): + if self.visible: + self.hide() + else: + self.show() + + def show(self): + self.visible = True + self.target_alpha = 1 + self.target_y = 1 + self.ui.menu_bar.visible = False + self.ui.pulldown.visible = False + + def hide(self): + self.target_alpha = 0 + self.target_y = 2 + if self.ui.app.can_edit: + self.ui.menu_bar.visible = True + + def update_loc(self): + # TODO: this lerp is super awful, simpler way based on dt? + # TODO: use self.show_anim_time instead of this garbage! + speed = 0.25 + + if self.y > self.target_y: + self.y -= speed + elif self.y < self.target_y: + self.y += speed + if abs(self.y - self.target_y) < speed: + self.y = self.target_y + + if self.alpha > self.target_alpha: + self.alpha -= speed / 2 + elif self.alpha < self.target_alpha: + self.alpha += speed / 2 + if abs(self.alpha - self.target_alpha) < speed: + self.alpha = self.target_alpha + if self.alpha == 0: + self.visible = False + + self.renderable.y = self.y + self.renderable.alpha = self.alpha + + def clear(self): + self.art.clear_frame_layer(0, 0, self.bg_color_index) + # line -1 is always a line of ____________ + for x in range(self.width): + self.art.set_tile_at(0, 0, x, -1, self.bottom_line_char_index, self.text_color, None, UV_FLIPY) + + def update_user_line(self): + "draw current user input on second to last line, with >_ prompt" + # clear entire user line first + self.art.write_string(0, 0, 0, -2, ' ' * self.width, self.text_color) + self.art.write_string(0, 0, 0, -2, '%s ' % self.prompt, self.text_color) + # if first item of line is a valid command, change its color + items = self.current_line.split() + if len(items) > 0 and items[0] in commands: + self.art.write_string(0, 0, 2, -2, items[0], self.highlight_color) + offset = 2 + len(items[0]) + 1 + args = ' '.join(items[1:]) + self.art.write_string(0, 0, offset, -2, args, self.text_color) + else: + self.art.write_string(0, 0, 2, -2, self.current_line, self.text_color) + # draw underscore for caret at end of input string + x = len(self.prompt) + len(self.current_line) + 1 + i = self.ui.charset.get_char_index('_') + self.art.set_char_index_at(0, 0, x, -2, i) + + def update_log_lines(self): + "update art from log lines" + log_index = -1 + for y in range(self.height - 3, -1, -1): + try: + line = self.ui.app.logger.lines[log_index] + except IndexError: + break + # trim line to width of console + if len(line) >= self.max_line_length: + line = line[:self.max_line_length] + self.art.write_string(0, 0, 1, y, line, self.text_color) + log_index -= 1 + + def update(self): + "update our Art with the current console log lines + user input" + self.update_loc() + if not self.visible: + return + # check for various early out scenarios, updating all chars every frame + # gets expensive + user_input_changed = self.last_user_line != self.current_line + log_changed = self.last_lines != self.ui.app.logger.lines + # remember log & user lines, bail early next update if no change + self.last_lines = self.ui.app.logger.lines[:] + self.last_user_line = self.current_line + if not user_input_changed and not log_changed: + return + # if log lines changed, clear all tiles to shift in new text + if log_changed: + self.clear() + self.update_log_lines() + # if user pressed enter on a blank line, user_input_changed will + # be False but we should still update + self.update_user_line() + # update user line independently of log, it changes at a different rate + if user_input_changed: + self.update_user_line() + + def visit_command_history(self, index): + if len(self.command_history) == 0: + return + self.history_index = index + self.history_index %= len(self.command_history) + self.current_line = self.command_history[self.history_index].strip() + + def handle_input(self, key, shift_pressed, alt_pressed, ctrl_pressed): + "handles a key from Application.input" + keystr = sdl2.SDL_GetKeyName(key).decode() + # TODO: get console bound key from InputLord, detect that instead of + # hard-coded backquote + if keystr == '`': + self.toggle() + return + elif keystr == 'Return': + line = '%s %s' % (self.prompt, self.current_line) + self.ui.app.log(line) + # if command is same as last, don't repeat it + if len(self.command_history) == 0 or (len(self.command_history) > 0 and self.current_line != self.command_history[-1]): + # don't add blank lines to history + if self.current_line.strip(): + self.command_history.append(self.current_line) + self.history_file.write(self.current_line + '\n') + self.parse(self.current_line) + self.current_line = '' + self.history_index = 0 + elif keystr == 'Tab': + # TODO: autocomplete (commands, filenames) + pass + elif keystr == 'Up': + # page back through command history + self.visit_command_history(self.history_index - 1) + elif keystr == 'Down': + # page forward through command history + self.visit_command_history(self.history_index + 1) + elif keystr == 'Backspace' and len(self.current_line) > 0: + # alt-backspace: delete to last delimiter, eg periods + if alt_pressed: + # "index to delete to" + delete_index = -1 + for delimiter in delimiters: + this_delimiter_index = self.current_line.rfind(delimiter) + if this_delimiter_index > delete_index: + delete_index = this_delimiter_index + if delete_index > -1: + self.current_line = self.current_line[:delete_index] + else: + self.current_line = '' + # user is bailing on whatever they were typing, + # reset position in cmd history + self.history_index = 0 + else: + self.current_line = self.current_line[:-1] + if len(self.current_line) == 0: + # same as above: reset position in cmd history + self.history_index = 0 + elif keystr == 'Space': + keystr = ' ' + # ignore any other non-character keys + if len(keystr) > 1: + return + if keystr.isalpha() and not shift_pressed: + keystr = keystr.lower() + elif not keystr.isalpha() and shift_pressed: + keystr = SHIFT_MAP.get(keystr, '') + if len(self.current_line) < self.max_line_length: + self.current_line += keystr + + def parse(self, line): + # is line in a list of know commands? if so, handle it. + items = line.split() + output = None + if len(items) == 0: + pass + elif items[0] in commands: + cmd = commands[items[0]] + output = cmd.execute(self, items[1:]) + else: + # if not, try python eval, give useful error if it fails + try: + # set some locals for easy access from eval + ui = self.ui + app = ui.app + camera = app.camera + art = ui.active_art + player = app.gw.player + sel = None if len(app.gw.selected_objects) == 0 else app.gw.selected_objects[0] + world = app.gw + hud = app.gw.hud + # special handling of assignment statements, eg x = 3: + # detect strings that pattern-match, send them to exec(), + # send all other strings to eval() + eq_index = line.find('=') + is_assignment = eq_index != -1 and line[eq_index+1] != '=' + if is_assignment: + exec(line) + else: + output = str(eval(line)) + except Exception as e: + # try to output useful error text + output = '%s: %s' % (e.__class__.__name__, str(e)) + # commands CAN return None, so only log if there's something + if output and output != 'None': + self.ui.app.log(output) + + def destroy(self): + self.history_file.close() + + +# delimiters - alt-backspace deletes to most recent one of these +delimiters = [' ', '.', ')', ']', ',', '_'] diff --git a/ui_dialog.py b/ui_dialog.py new file mode 100644 index 0000000..24f839c --- /dev/null +++ b/ui_dialog.py @@ -0,0 +1,455 @@ +import platform +import sdl2 +from collections import namedtuple + +from ui_element import UIElement +from ui_button import UIButton, TEXT_LEFT, TEXT_CENTER, TEXT_RIGHT +from ui_colors import UIColors + +from key_shifts import SHIFT_MAP + + +Field = namedtuple('Field', ['label', # text label for field + 'type', # supported: str int float bool + 'width', # width in tiles of the field + 'oneline']) # label and field drawn on same line + + +# "null" field type that tells UI drawing to skip it +class SkipFieldType: pass + +class ConfirmButton(UIButton): + caption = 'Confirm' + caption_justify = TEXT_CENTER + width = len(caption) + 2 + dimmed_fg_color = UIColors.lightgrey + dimmed_bg_color = UIColors.white + +class CancelButton(ConfirmButton): + caption = 'Cancel' + width = len(caption) + 2 + +class OtherButton(ConfirmButton): + "button for 3rd option in some dialogs, eg Don't Save" + caption = 'Other' + width = len(caption) + 2 + visible = False + + +class UIDialog(UIElement): + + tile_width, tile_height = 40, 8 + # extra lines added to height beyond contents length + extra_lines = 0 + fg_color = UIColors.black + bg_color = UIColors.white + title = 'Test Dialog Box' + # string message not tied to a specific field + message = None + other_button_visible = False + titlebar_fg_color = UIColors.white + titlebar_bg_color = UIColors.black + fields = [] + # list of tuples of field #s for linked radio button options + radio_groups = [] + default_field_width = 36 + default_short_field_width = int(default_field_width / 4) + # default amount of lines padding each field + y_spacing = 1 + active_field_fg_color = UIColors.white + active_field_bg_color = UIColors.darkgrey + inactive_field_fg_color = UIColors.black + inactive_field_bg_color = UIColors.lightgrey + # allow subclasses to override confirm caption, eg Save + confirm_caption = None + other_caption = None + cancel_caption = None + # center in window vs use tile_x/y to place + center_in_window = True + # checkbox char index (UI charset) + checkbox_char_index = 131 + # radio buttons, filled and unfilled + radio_true_char_index = 127 + radio_false_char_index = 126 + # field text set for bool fields with True value + true_field_text = 'x' + # if True, field labels will redraw with fields after handling input + always_redraw_labels = False + + def __init__(self, ui, options): + self.ui = ui + # apply options, eg passed in from UI.open_dialog + for k,v in options.items(): + setattr(self, k, v) + self.confirm_button = ConfirmButton(self) + self.other_button = OtherButton(self) + self.cancel_button = CancelButton(self) + # handle caption overrides + def caption_override(button, alt_caption): + if alt_caption and button.caption != alt_caption: + button.caption = alt_caption + button.width = len(alt_caption) + 2 + caption_override(self.confirm_button, self.confirm_caption) + caption_override(self.other_button, self.other_caption) + caption_override(self.cancel_button, self.cancel_caption) + self.confirm_button.callback = self.confirm_pressed + self.other_button.callback = self.other_pressed + self.cancel_button.callback = self.cancel_pressed + self.buttons = [self.confirm_button, self.other_button, self.cancel_button] + # populate fields with text + self.field_texts = [] + for i,field in enumerate(self.fields): + self.field_texts.append(self.get_initial_field_text(i)) + # field cursor starts on + self.active_field = 0 + UIElement.__init__(self, ui) + if self.ui.menu_bar and self.ui.menu_bar.active_menu_name: + self.ui.menu_bar.close_active_menu() + + def get_initial_field_text(self, field_number): + "subclasses specify a given field's initial text here" + return '' + + def get_height(self, msg_lines): + "determine size based on contents (subclasses can use custom logic)" + # base height = 4, titlebar + padding + buttons + padding + h = 4 + h += 0 if len(msg_lines) == 0 else len(msg_lines) + 1 + # determine height of each field from self.fields + for field in self.fields: + if field.type is SkipFieldType: + continue + elif field.oneline or field.type is bool or field.type is None: + h += self.y_spacing + 1 + else: + h += self.y_spacing + 2 + h += self.extra_lines + return h + + def reset_art(self, resize=True, clear_buttons=True): + # get_message splits into >1 line if too long + msg_lines = self.get_message() if self.message else [] + if resize: + self.tile_height = self.get_height(msg_lines) + self.art.resize(self.tile_width, self.tile_height) + if self.center_in_window: + qw, qh = self.art.quad_width, self.art.quad_height + self.x = -(self.tile_width * qw) / 2 + self.y = (self.tile_height * qh) / 2 + # draw window + self.art.clear_frame_layer(0, 0, self.bg_color, self.fg_color) + s = ' ' + self.title.ljust(self.tile_width - 1) + # invert titlebar (if kb focus) + fg = self.titlebar_fg_color + bg = self.titlebar_bg_color + if not self is self.ui.keyboard_focus_element and \ + self is self.ui.active_dialog: + fg = self.fg_color + bg = self.bg_color + self.art.write_string(0, 0, 0, 0, s, fg, bg) + # message + if self.message: + y = 2 + for i,line in enumerate(msg_lines): + self.art.write_string(0, 0, 2, y+i, line) + # field caption(s) + self.draw_fields() + # position buttons + self.confirm_button.x = self.tile_width - self.confirm_button.width - 2 + self.confirm_button.y = self.tile_height - 2 + if self.other_button_visible: + self.other_button.x = self.confirm_button.x + self.other_button.x -= self.other_button.width + 2 + self.other_button.y = self.confirm_button.y + self.other_button.visible = True + self.cancel_button.x = 2 + self.cancel_button.y = self.tile_height - 2 + # create field buttons so you can click em + if clear_buttons: + self.buttons = [self.confirm_button, self.other_button, self.cancel_button] + for i,field in enumerate(self.fields): + # None-type field = just a label + if field.type is None: + continue + field_button = DialogFieldButton(self) + field_button.field_number = i + # field settings mean button can be in a variety of places + field_button.width = 1 if field.type is bool else field.width + field_button.x = 2 if not field.oneline or field.type is bool else len(field.label) + 1 + field_button.y = self.get_field_y(i) + if not field.oneline: + field_button.y += 1 + self.buttons.append(field_button) + # draw buttons + UIElement.reset_art(self) + + def update_drag(self, mouse_dx, mouse_dy): + win_w, win_h = self.ui.app.window_width, self.ui.app.window_height + self.x += (mouse_dx / win_w) * 2 + self.y -= (mouse_dy / win_h) * 2 + self.renderable.x, self.renderable.y = self.x, self.y + + def hovered(self): + # mouse hover on focus + if (self.ui.app.mouse_dx or self.ui.app.mouse_dy) and \ + not self is self.ui.keyboard_focus_element: + self.ui.keyboard_focus_element = self + self.reset_art() + + def update(self): + # redraw fields every update for cursor blink + # (seems a waste, no real perf impact tho) + self.draw_fields(False) + # don't allow confirmation if all field input isn't valid + valid, reason = self.is_input_valid() + # if input invalid, show reason in red along button of window + bottom_y = self.tile_height - 1 + # first clear any previous warnings + self.art.clear_line(0, 0, bottom_y) + self.confirm_button.set_state('normal') + # some dialogs use reason for warning + valid input + if reason: + fg = self.ui.error_color_index + self.art.write_string(0, 0, 1, bottom_y, reason, fg) + if not valid: + self.confirm_button.set_state('dimmed') + UIElement.update(self) + + def get_message(self): + # if a triple quoted string, split line breaks + msg = self.message.rstrip().split('\n') + msg_lines = [] + for line in msg: + if line != '': + msg_lines.append(line) + # TODO: split over multiple lines if too long + return msg_lines + + def get_field_colors(self, index): + "return FG and BG colors for field with given index" + fg, bg = self.inactive_field_fg_color, self.inactive_field_bg_color + # only highlight active field if we have kb focus + if self is self.ui.keyboard_focus_element and index == self.active_field: + fg, bg = self.active_field_fg_color, self.active_field_bg_color + return fg, bg + + def get_field_label(self, field_index): + "Subclasses can override to do custom label logic eg string formatting" + return self.fields[field_index].label + + def draw_fields(self, with_labels=True): + y = 2 + if self.message: + y += len(self.get_message()) + 1 + for i,field in enumerate(self.fields): + if field.type is SkipFieldType: + continue + x = 2 + # bool values: checkbox or radio button, always draw label to right + if field.type is bool: + # if field index is in any radio group, it's a radio button + is_radio = False + for group in self.radio_groups: + if i in group: + is_radio = True + break + # true/false ~ field text is 'x' + field_true = self.field_texts[i] == self.true_field_text + if is_radio: + char = self.radio_true_char_index if field_true else self.radio_false_char_index + else: + char = self.checkbox_char_index if field_true else 0 + fg, bg = self.get_field_colors(i) + self.art.set_tile_at(0, 0, x, y, char, fg, bg) + x += 2 + # draw label + if field.label: + label = self.get_field_label(i) + if with_labels: + self.art.clear_line(0, 0, y) + self.art.write_string(0, 0, x, y, label, self.fg_color) + if field.type in [bool, None]: + pass + elif field.oneline: + x += len(label) + 1 + else: + y += 1 + # draw field contents + if not field.type in [bool, None]: + fg, bg = self.get_field_colors(i) + text = self.field_texts[i] + # caret for active field (if kb focus) + if i == self.active_field and self is self.ui.keyboard_focus_element: + blink_on = int(self.ui.app.get_elapsed_time() / 250) % 2 + if blink_on: + text += '_' + # pad with spaces to full width of field + text = text.ljust(field.width) + self.art.write_string(0, 0, x, y, text, fg, bg) + y += self.y_spacing + 1 + + def get_field_y(self, field_index): + "returns a Y value for where the given field (caption) should start" + y = 2 + # add # of message lines + if self.message: + y += len(self.get_message()) + 1 + for i in range(field_index): + if self.fields[i].oneline or self.fields[i].type in [bool, None]: + y += self.y_spacing + 1 + else: + y += self.y_spacing + 2 + return y + + def get_toggled_bool_field(self, field_index): + field_text = self.field_texts[field_index] + on = field_text == self.true_field_text + # if in a radio group and turning on, toggle off the others + radio_button = False + for group in self.radio_groups: + if field_index in group: + radio_button = True + if not on: + for i in group: + if i != field_index: + self.field_texts[i] = ' ' + break + # toggle checkbox + if not radio_button: + return ' ' if on else self.true_field_text + # only toggle radio button on; selecting others toggles it off + elif on: + return field_text + else: + return self.true_field_text + + def handle_input(self, key, shift_pressed, alt_pressed, ctrl_pressed): + keystr = sdl2.SDL_GetKeyName(key).decode() + field = None + field_text = '' + if self.active_field < len(self.fields): + field = self.fields[self.active_field] + field_text = self.field_texts[self.active_field] + # special case: shortcut 'D' for 3rd button if no field input + if len(self.fields) == 0 and keystr.lower() == 'd': + self.other_pressed() + return + if keystr == '`' and not shift_pressed: + self.ui.console.toggle() + return + # if list panel is up don't let user tab away + lp = self.ui.edit_list_panel + # only allow tab to focus shift IF list panel accepts it + if keystr == 'Tab' and lp.is_visible() and \ + lp.list_operation in lp.list_operations_allow_kb_focus: + self.ui.keyboard_focus_element = self.ui.edit_list_panel + return + elif keystr == 'Return': + self.confirm_pressed() + elif keystr == 'Escape': + self.cancel_pressed() + # cycle through fields with up/down + elif keystr == 'Up' or (keystr == 'Tab' and shift_pressed): + if len(self.fields) > 1: + self.active_field -= 1 + self.active_field %= len(self.fields) + # skip over None-type fields aka dead labels + while self.fields[self.active_field].type is None or self.fields[self.active_field].type is SkipFieldType: + self.active_field -= 1 + self.active_field %= len(self.fields) + return + elif keystr == 'Down' or keystr == 'Tab': + if len(self.fields) > 1: + self.active_field += 1 + self.active_field %= len(self.fields) + while self.fields[self.active_field].type is None or self.fields[self.active_field].type is SkipFieldType: + self.active_field += 1 + self.active_field %= len(self.fields) + return + elif keystr == 'Backspace': + if len(field_text) == 0: + pass + # don't let user clear a bool value + # TODO: allow for checkboxes but not radio buttons + elif field and field.type is bool: + pass + elif alt_pressed: + # for file dialogs, delete back to last slash + last_slash = field_text[:-1].rfind('/') + # on windows, recognize backslash as well + if platform.system() == 'Windows': + last_backslash = field_text[:-1].rfind('\\') + if last_backslash != -1 and last_slash != -1: + last_slash = min(last_backslash, last_slash) + if last_slash == -1: + field_text = '' + else: + field_text = field_text[:last_slash+1] + else: + field_text = field_text[:-1] + elif keystr == 'Space': + # if field.type is bool, toggle value + if field.type is bool: + field_text = self.get_toggled_bool_field(self.active_field) + else: + field_text += ' ' + elif len(keystr) > 1: + return + # alphanumeric text input + elif field and not field.type is bool: + if field.type is str: + if not shift_pressed: + keystr = keystr.lower() + if not keystr.isalpha() and shift_pressed: + keystr = SHIFT_MAP.get(keystr, '') + elif field.type is int and not keystr.isdigit() and keystr != '-': + return + # this doesn't guard against things like 0.00.001 + elif field.type is float and not keystr.isdigit() and keystr != '.' and keystr != '-': + return + field_text += keystr + # apply new field text and redraw + if field and (len(field_text) < field.width or field.type is bool): + self.field_texts[self.active_field] = field_text + self.draw_fields(self.always_redraw_labels) + + def is_input_valid(self): + "subclasses that want to filter input put logic here" + return True, None + + def dismiss(self): + # let UI forget about us + self.ui.active_dialog = None + if self is self.ui.keyboard_focus_element: + self.ui.keyboard_focus_element = None + self.ui.refocus_keyboard() + self.ui.elements.remove(self) + + def confirm_pressed(self): + # subclasses do more here :] + self.dismiss() + + def cancel_pressed(self): + self.dismiss() + + def other_pressed(self): + self.dismiss() + + +class DialogFieldButton(UIButton): + + "invisible button that provides clickability for input fields" + + caption = '' + # re-set by dialog constructor + field_number = 0 + never_draw = True + + def click(self): + UIButton.click(self) + self.element.active_field = self.field_number + # toggle if a bool field + if self.element.fields[self.field_number].type is bool: + self.element.field_texts[self.field_number] = self.element.get_toggled_bool_field(self.field_number) + # redraw fields & labels + self.element.draw_fields(self.element.always_redraw_labels) diff --git a/ui_edit_panel.py b/ui_edit_panel.py new file mode 100644 index 0000000..382339e --- /dev/null +++ b/ui_edit_panel.py @@ -0,0 +1,493 @@ +import os + +from ui_element import UIElement +from ui_button import UIButton +from ui_game_dialog import LoadGameStateDialog, SaveGameStateDialog +from ui_chooser_dialog import ScrollArrowButton +from ui_colors import UIColors + +from game_world import TOP_GAME_DIR, STATE_FILE_EXTENSION +from ui_list_operations import LO_NONE, LO_SELECT_OBJECTS, LO_SET_SPAWN_CLASS, LO_LOAD_STATE, LO_SET_ROOM, LO_SET_ROOM_OBJECTS, LO_SET_OBJECT_ROOMS, LO_OPEN_GAME_DIR, LO_SET_ROOM_EDGE_WARP, LO_SET_ROOM_EDGE_OBJ, LO_SET_ROOM_CAMERA + + +class GamePanel(UIElement): + "base class of game edit UI panels" + tile_y = 5 + game_mode_visible = True + fg_color = UIColors.black + bg_color = UIColors.lightgrey + titlebar_fg = UIColors.white + titlebar_bg = UIColors.darkgrey + text_left = True + support_keyboard_navigation = True + support_scrolling = True + keyboard_nav_offset = -2 + + def __init__(self, ui): + self.ui = ui + self.world = self.ui.app.gw + UIElement.__init__(self, ui) + self.buttons = [] + self.create_buttons() + self.keyboard_nav_index = 0 + + def create_buttons(self): pass + # label and main item draw functions - overridden in subclasses + def get_label(self): pass + def refresh_items(self): pass + + # reset all buttons to default state + def clear_buttons(self, button_list=None): + buttons = button_list or self.buttons + for button in buttons: + self.reset_button(button) + + def reset_button(self, button): + button.normal_fg_color = UIButton.normal_fg_color + button.normal_bg_color = UIButton.normal_bg_color + button.hovered_fg_color = UIButton.hovered_fg_color + button.hovered_bg_color = UIButton.hovered_bg_color + button.can_hover = True + + def highlight_button(self, button): + button.normal_fg_color = UIButton.clicked_fg_color + button.normal_bg_color = UIButton.clicked_bg_color + button.hovered_fg_color = UIButton.clicked_fg_color + button.hovered_bg_color = UIButton.clicked_bg_color + button.can_hover = True + + def draw_titlebar(self): + # only shade titlebar if panel has keyboard focus + fg = self.titlebar_fg if self is self.ui.keyboard_focus_element else self.fg_color + bg = self.titlebar_bg if self is self.ui.keyboard_focus_element else self.bg_color + self.art.clear_line(0, 0, 0, fg, bg) + label = self.get_label() + if len(label) > self.tile_width: + label = label[:self.tile_width] + if self.text_left: + self.art.write_string(0, 0, 0, 0, label) + else: + self.art.write_string(0, 0, -1, 0, label, None, None, True) + + def reset_art(self): + self.art.clear_frame_layer(0, 0, self.bg_color, self.fg_color) + self.draw_titlebar() + self.refresh_items() + UIElement.reset_art(self) + + def clicked(self, mouse_button): + # always handle input, even if we didn't hit a button + UIElement.clicked(self, mouse_button) + return True + + def hovered(self): + # mouse hover on focus + if self.ui.app.mouse_dx or self.ui.app.mouse_dy and \ + not self is self.ui.keyboard_focus_element: + self.ui.keyboard_focus_element = self + if self.ui.active_dialog: + self.ui.active_dialog.reset_art() + + +class ListButton(UIButton): + width = 28 + clear_before_caption_draw = True + +class ListScrollArrowButton(ScrollArrowButton): + x = ListButton.width + normal_bg_color = UIButton.normal_bg_color + +class ListScrollUpArrowButton(ListScrollArrowButton): + y = 1 + +class ListScrollDownArrowButton(ListScrollArrowButton): + up = False + +class EditListPanel(GamePanel): + tile_width = ListButton.width + 1 + tile_y = 5 + scrollbar_shade_char = 54 + # height will change based on how many items in list + tile_height = 30 + snap_left = True + spawn_msg = 'Click anywhere in the world view to spawn a %s' + # transient state + titlebar = 'List titlebar' + items = [] + # text helping user know how to bail + cancel_tip = 'ESC cancels' + list_operation_labels = { + LO_NONE: 'Stuff:', + LO_SELECT_OBJECTS: 'Select objects:', + LO_SET_SPAWN_CLASS: 'Class to spawn:', + LO_LOAD_STATE: 'State to load:', + LO_SET_ROOM: 'Change room:', + LO_SET_ROOM_OBJECTS: "Set objects for %s:", + LO_SET_OBJECT_ROOMS: "Set rooms for %s:", + LO_OPEN_GAME_DIR: 'Open game:', + LO_SET_ROOM_EDGE_WARP: 'Set edge warp room/object:', + LO_SET_ROOM_EDGE_OBJ: 'Set edge bounds object:', + LO_SET_ROOM_CAMERA: 'Set room camera marker:' + } + list_operations_allow_kb_focus = [ + LO_SET_ROOM_EDGE_WARP, + LO_SET_ROOM_EDGE_OBJ, + LO_SET_ROOM_CAMERA + ] + + class ListItem: + def __init__(self, name, obj): self.name, self.obj = name, obj + def __str__(self): return self.name + + def __init__(self, ui): + # topmost index of items to show in view + self.list_scroll_index = 0 + # list operation, ie what does clicking in list do + self.list_operation = LO_NONE + # save & restore a scroll index for each flavor of list + self.scroll_indices = {} + for list_op in self.list_operation_labels: + self.scroll_indices[list_op] = 0 + # map list operations to list builder functions + self.list_functions = {LO_NONE: self.list_none, + LO_SELECT_OBJECTS: self.list_objects, + LO_SET_SPAWN_CLASS: self.list_classes, + LO_LOAD_STATE: self.list_states, + LO_SET_ROOM: self.list_rooms, + LO_SET_ROOM_OBJECTS: self.list_objects, + LO_SET_OBJECT_ROOMS: self.list_rooms, + LO_OPEN_GAME_DIR: self.list_games, + LO_SET_ROOM_EDGE_WARP: self.list_rooms_and_objects, + LO_SET_ROOM_EDGE_OBJ: self.list_objects, + LO_SET_ROOM_CAMERA: self.list_objects + } + # map list operations to "item clicked" functions + self.click_functions = {LO_SELECT_OBJECTS: self.select_object, + LO_SET_SPAWN_CLASS: self.set_spawn_class, + LO_LOAD_STATE: self.load_state, + LO_SET_ROOM: self.set_room, + LO_SET_ROOM_OBJECTS: self.set_room_object, + LO_SET_OBJECT_ROOMS: self.set_object_room, + LO_OPEN_GAME_DIR: self.open_game_dir, + LO_SET_ROOM_EDGE_WARP: self.set_room_edge_warp, + LO_SET_ROOM_EDGE_OBJ: self.set_room_bounds_obj, + LO_SET_ROOM_CAMERA: self.set_room_camera + } + # separate lists for item buttons vs other controls + self.list_buttons = [] + # set when game resets + self.should_reset_list = False + GamePanel.__init__(self, ui) + + def create_buttons(self): + def list_callback(item=None): + if not item: return + self.clicked_item(item) + for y in range(self.tile_height-1): + button = ListButton(self) + button.y = y + 1 + button.callback = list_callback + # button.cb_art set by refresh_items() + self.list_buttons.append(button) + self.buttons = self.list_buttons[:] + self.up_button = ListScrollUpArrowButton(self) + self.up_button.callback = self.scroll_list_up + self.buttons.append(self.up_button) + self.down_button = ListScrollDownArrowButton(self) + self.down_button.callback = self.scroll_list_down + # TODO: adjust height according to screen tile height + self.down_button.y = self.tile_height - 1 + self.buttons.append(self.down_button) + + def reset_art(self): + GamePanel.reset_art(self) + x = self.tile_width - 1 + for y in range(1, self.tile_height): + self.art.set_tile_at(0, 0, x, y, self.scrollbar_shade_char, + UIColors.medgrey) + + def cancel(self): + self.set_list_operation(LO_NONE) + self.world.classname_to_spawn = None + + def scroll_list_up(self): + if self.list_scroll_index > 0: + self.list_scroll_index -= 1 + + def scroll_list_down(self): + max_scroll = len(self.items) - self.tile_height + #max_scroll = len(self.element.items) - self.element.items_in_view + if self.list_scroll_index <= max_scroll: + self.list_scroll_index += 1 + + def clicked_item(self, item): + # do thing appropriate to current list operation + self.click_functions[self.list_operation](item) + + def wheel_moved(self, wheel_y): + if wheel_y > 0: + self.scroll_list_up() + return True + if wheel_y < 0: + self.scroll_list_down() + return True + + def set_list_operation(self, new_op): + "changes list type and sets new items" + if new_op == LO_LOAD_STATE and not self.world.game_dir: + return + if new_op == LO_NONE: + self.list_operation = new_op + self.ui.keyboard_focus_element = None + self.ui.refocus_keyboard() + return + # list is doing something, set us as keyboard focus + # (but not if a dialog just came up) + if not self.ui.active_dialog: + self.ui.keyboard_focus_element = self + self.items = [] + self.clear_buttons(self.list_buttons) + # save old list type's scroll index so we can restore it later + self.scroll_indices[self.list_operation] = self.list_scroll_index + self.list_operation = new_op + self.items = self.list_functions[self.list_operation]() + # restore saved scroll index for new list type + self.list_scroll_index = self.scroll_indices[self.list_operation] + # keep in bounds if list size changed since last view + self.list_scroll_index = min(self.list_scroll_index, len(self.items)) + + def get_label(self): + label = '%s (%s)' % (self.list_operation_labels[self.list_operation], self.cancel_tip) + # some labels contain variables + if '%s' in label: + if self.list_operation == LO_SET_ROOM_OBJECTS: + if self.world.current_room: + label %= self.world.current_room.name + elif self.list_operation == LO_SET_OBJECT_ROOMS: + if len(self.world.selected_objects) == 1: + label %= self.world.selected_objects[0].name + return label + + def should_highlight(self, item): + if self.list_operation == LO_SELECT_OBJECTS: + return item.obj in self.world.selected_objects + elif self.list_operation == LO_SET_SPAWN_CLASS: + return item.name == self.world.classname_to_spawn + elif self.list_operation == LO_LOAD_STATE: + last_gs = os.path.basename(self.world.last_state_loaded) + last_gs = os.path.splitext(last_gs)[0] + return item.name == last_gs + elif self.list_operation == LO_SET_ROOM: + return self.world.current_room and item.name == self.world.current_room.name + elif self.list_operation == LO_SET_ROOM_OBJECTS: + return self.world.current_room and item.name in self.world.current_room.objects + elif self.list_operation == LO_SET_OBJECT_ROOMS: + return len(self.world.selected_objects) == 1 and item.name in self.world.selected_objects[0].rooms + return False + + def game_reset(self): + self.should_reset_list = True + + def items_changed(self): + "called by anything that changes the items list, eg object add/delete" + self.items = self.list_functions[self.list_operation]() + # change selected item index if it's OOB + if self.keyboard_nav_index >= len(self.items): + self.keyboard_nav_index = len(self.items) - 1 + + def refresh_items(self): + for i,b in enumerate(self.list_buttons): + if i >= len(self.items): + b.caption = '' + b.cb_arg = None + self.reset_button(b) + b.can_hover = False + else: + index = self.list_scroll_index + i + item = self.items[index] + b.cb_arg = item + b.caption = item.name[:self.tile_width - 1] + b.can_hover = True + # change button appearance if this item should remain + # highlighted/selected + if self.should_highlight(item): + self.highlight_button(b) + else: + self.reset_button(b) + self.draw_buttons() + + def post_keyboard_navigate(self): + # check for scrolling + if len(self.items) <= len(self.list_buttons): + return + # wrap if at end of list + if self.keyboard_nav_index + self.list_scroll_index >= len(self.items): + self.keyboard_nav_index = 0 + self.list_scroll_index = 0 + # scroll down + elif self.keyboard_nav_index >= len(self.list_buttons): + self.scroll_list_down() + self.keyboard_nav_index -= 1 + # wrap if at top of list + elif self.list_scroll_index == 0 and self.keyboard_nav_index < 0: + self.list_scroll_index = len(self.items) - len(self.list_buttons) + self.keyboard_nav_index = len(self.list_buttons) - 1 + # scroll up + elif self.keyboard_nav_index < 0: + self.scroll_list_up() + self.keyboard_nav_index += 1 + + def update(self): + if self.should_reset_list: + self.set_list_operation(self.list_operation) + self.should_reset_list = False + # redraw contents every update + self.draw_titlebar() + self.refresh_items() + GamePanel.update(self) + self.renderable.alpha = 1 if self is self.ui.keyboard_focus_element else 0.5 + + def is_visible(self): + return GamePanel.is_visible(self) and self.list_operation != LO_NONE + + # + # list functions + # + def list_classes(self): + items = [] + base_class = self.world.modules['game_object'].GameObject + # get list of available classes from GameWorld + for classname,classdef in self.world._get_all_loaded_classes().items(): + # ignore non-GO classes, eg GameRoom, GameHUD + if not issubclass(classdef, base_class): + continue + if classdef.exclude_from_class_list: + continue + item = self.ListItem(classname, classdef) + items.append(item) + # sort classes alphabetically + items.sort(key=lambda i: i.name) + return items + + def list_objects(self): + items = [] + # include just-spawned objects too + all_objects = self.world.objects.copy() + all_objects.update(self.world.new_objects) + for obj in all_objects.values(): + if obj.exclude_from_object_list: + continue + if self.world.list_only_current_room_objects and not self.world.current_room.name in obj.rooms: + continue + li = self.ListItem(obj.name, obj) + items.append(li) + # sort object names alphabetically + items.sort(key=lambda i: i.name) + return items + + def list_states(self): + items = [] + # list state files in current game dir + for filename in os.listdir(self.world.game_dir): + if filename.endswith('.' + STATE_FILE_EXTENSION): + li = self.ListItem(filename[:-3], None) + items.append(li) + items.sort(key=lambda i: i.name) + return items + + def list_rooms(self): + items = [] + for room in self.world.rooms.values(): + li = self.ListItem(room.name, room) + items.append(li) + items.sort(key=lambda i: i.name) + return items + + def list_games(self): + def get_dirs(dirname): + dirs = [] + for filename in os.listdir(dirname): + if os.path.isdir(dirname + filename): + dirs.append(filename) + return dirs + # get list of both app dir games and user dir games + docs_game_dir = self.ui.app.documents_dir + TOP_GAME_DIR + items = [] + game_dirs = get_dirs(TOP_GAME_DIR) + get_dirs(docs_game_dir) + game_dirs.sort() + for game in game_dirs: + li = self.ListItem(game, None) + items.append(li) + return items + + def list_rooms_and_objects(self): + items = self.list_rooms() + # prefix room names with "ROOM:" + for i,item in enumerate(items): + item.name = 'ROOM: %s' % item.name + items += self.list_objects() + return items + + def list_none(self): + return [] + + # + # "clicked list item" functions + # + def select_object(self, item): + # add to/remove from/overwrite selected list based on mod keys + if self.ui.app.il.ctrl_pressed: + self.world.deselect_object(item.obj) + elif self.ui.app.il.shift_pressed: + self.world.select_object(item.obj, force=True) + else: + self.world.deselect_all() + self.world.select_object(item.obj, force=True) + + def set_spawn_class(self, item): + # set this class to be the one spawned when GameWorld is clicked + self.world.classname_to_spawn = item.name + self.ui.message_line.post_line(self.spawn_msg % self.world.classname_to_spawn, 5) + + def load_state(self, item): + self.world.load_game_state(item.name) + + def set_room(self, item): + self.world.change_room(item.name) + + def set_room_object(self, item): + # add/remove object from current room + if item.name in self.world.current_room.objects: + self.world.current_room.remove_object_by_name(item.name) + else: + self.world.current_room.add_object_by_name(item.name) + + def set_object_room(self, item): + # UI can only show a single object's rooms, do nothing if many selected + if len(self.world.selected_objects) != 1: + return + # add if not in room, remove if in room + obj = self.world.selected_objects[0] + room = self.world.rooms[item.name] + if room.name in obj.rooms: + room.remove_object(obj) + else: + room.add_object(obj) + + def open_game_dir(self, item): + self.world.set_game_dir(item.name, True) + + def set_room_edge_warp(self, item): + dialog = self.ui.active_dialog + dialog.field_texts[dialog.active_field] = item.obj.name + self.ui.keyboard_focus_element = dialog + + def set_room_bounds_obj(self, item): + dialog = self.ui.active_dialog + dialog.field_texts[dialog.active_field] = item.obj.name + self.ui.keyboard_focus_element = dialog + + def set_room_camera(self, item): + dialog = self.ui.active_dialog + dialog.field_texts[dialog.active_field] = item.obj.name + self.ui.keyboard_focus_element = dialog diff --git a/ui_element.py b/ui_element.py new file mode 100644 index 0000000..ccc0827 --- /dev/null +++ b/ui_element.py @@ -0,0 +1,474 @@ +import time +import numpy as np +from math import ceil + +import vector +from art import Art +from renderable import TileRenderable +from renderable_line import LineRenderable +from ui_button import UIButton + +class UIElement: + + # size, in tiles + tile_width, tile_height = 1, 1 + snap_top, snap_bottom, snap_left, snap_right = False, False, False, False + # location in tile coords; snap_* trumps these + tile_x, tile_y = 0, 0 + # location in screen (GL) coords + x, y = 0, 0 + visible = True + # UI calls our update() even when we're invisible + update_when_invisible = False + # cheapo drop shadow effect, draws renderable dark at a small offset + drop_shadow = False + renderables = None + can_hover = True + # always return True for clicked/unclicked, "consuming" the input + always_consume_input = False + buttons = [] + # if True, use shared keyboard navigation controls + support_keyboard_navigation = False + support_scrolling = False + keyboard_nav_left_right = False + # renders in "game mode" + game_mode_visible = False + all_modes_visible = False + keyboard_nav_offset = 0 + + def __init__(self, ui): + self.ui = ui + self.hovered_buttons = [] + # generate a unique name + art_name = '%s_%s' % (int(time.time()), self.__class__.__name__) + self.art = UIArt(art_name, self.ui.app, self.ui.charset, self.ui.palette, self.tile_width, self.tile_height) + self.renderable = UIRenderable(self.ui.app, self.art) + self.renderable.ui = self.ui + # some elements add their own renderables before calling this + # constructor, make sure we're not erasing any + if not self.renderables: + self.renderables = [] + self.renderables.append(self.renderable) + self.reset_art() + self.reset_loc() + if self.support_keyboard_navigation: + self.keyboard_nav_index = 0 + + def is_inside(self, x, y): + "returns True if given point is inside this element's bounds" + w = self.tile_width * self.art.quad_width + h = self.tile_height * self.art.quad_height + return self.x <= x <= self.x+w and self.y >= y >= self.y-h + + def is_inside_button(self, x, y, button): + "returns True if given point is inside the given button's bounds" + aqw, aqh = self.art.quad_width, self.art.quad_height + # put negative values in range + bx, by = (button.x % self.art.width) * aqw, (button.y % self.art.height) * aqh + bw, bh = button.width * aqw, button.height * aqh + bxmin, bymin = self.x + bx, self.y - by + bxmax, bymax = bxmin + bw, bymin - bh + return bxmin <= x <= bxmax and bymin >= y >= bymax + + def reset_art(self): + """ + runs on init and resize, restores state. + """ + self.draw_buttons() + + def draw_buttons(self): + for button in self.buttons: + if button.visible: + button.draw() + + def hovered(self): + self.log_event('hovered') + + def unhovered(self): + self.log_event('unhovered') + + def wheel_moved(self, wheel_y): + handled = False + return handled + + def clicked(self, mouse_button): + self.log_event('clicked', mouse_button) + # return if a button did something + handled = False + # tell any hovered buttons they've been clicked + for b in self.hovered_buttons: + if b.can_click: + b.click() + if b.callback: + # button callback might need extra data (cb_arg) + if b.cb_arg is not None: + # button might want to know which mouse button clicked + if b.pass_mouse_button: + b.callback(mouse_button, b.cb_arg) + else: + b.callback(b.cb_arg) + else: + if b.pass_mouse_button: + b.callback(mouse_button) + else: + b.callback() + handled = True + if self.always_consume_input: + return True + return handled + + def unclicked(self, mouse_button): + self.log_event('unclicked', mouse_button) + handled = False + for b in self.hovered_buttons: + b.unclick() + handled = True + if self.always_consume_input: + return True + return handled + + def log_event(self, event_type, mouse_button=None): + mouse_button = mouse_button or '[n/a]' + if self.ui.logg: + self.ui.app.log('UIElement: %s %s with mouse button %s' % (self.__class__.__name__, event_type, mouse_button)) + + def is_visible(self): + if self.all_modes_visible: + return self.visible + elif not self.ui.app.game_mode and self.game_mode_visible: + return False + elif self.ui.app.game_mode and not self.game_mode_visible: + return False + return self.visible + + def reset_loc(self): + if self.snap_top: + self.y = 1 + elif self.snap_bottom: + self.y = self.art.quad_height * self.tile_height - 1 + elif self.tile_y: + self.y = 1 - (self.tile_y * self.art.quad_height) + if self.snap_left: + self.x = -1 + elif self.snap_right: + self.x = 1 - (self.art.quad_width * self.tile_width) + elif self.tile_x: + self.x = -1 + (self.tile_x * self.art.quad_width) + self.renderable.x, self.renderable.y = self.x, self.y + + def keyboard_navigate(self, move_x, move_y): + if not self.support_keyboard_navigation: + return + if self.keyboard_nav_left_right: + if move_x < 0: + self.ui.menu_bar.previous_menu() + return + elif move_x > 0: + self.ui.menu_bar.next_menu() + return + old_idx = self.keyboard_nav_index + new_idx = self.keyboard_nav_index + move_y + self.keyboard_nav_index += move_y + if not self.support_scrolling: + # if button list starts at >0 Y, use an offset + self.keyboard_nav_index %= len(self.buttons) + self.keyboard_nav_offset + tries = 0 + # recognize two different kinds of inactive items: empty caption and dim state + while tries < len(self.buttons) and (self.buttons[self.keyboard_nav_index].caption == '' or self.buttons[self.keyboard_nav_index].state == 'dimmed'): + # move_y might be zero, give it a direction to avoid infinite loop + # if menu item 0 is dimmed + self.keyboard_nav_index += move_y or 1 + self.keyboard_nav_index %= len(self.buttons) + self.keyboard_nav_offset + tries += 1 + if tries == len(self.buttons): + return + self.post_keyboard_navigate() + self.update_keyboard_hover() + + def update_keyboard_hover(self): + if not self.support_keyboard_navigation: + return + for i,button in enumerate(self.buttons): + # don't higlhight if this panel doesn't have focus + if self.keyboard_nav_index == i and self is self.ui.keyboard_focus_element: + button.set_state('hovered') + elif button.state != 'dimmed': + button.set_state('normal') + + def keyboard_select_item(self): + if not self.support_keyboard_navigation: + return + button = self.buttons[self.keyboard_nav_index] + # don't allow selecting dimmed buttons + if button.state == 'dimmed': + return + # check for None; cb_arg could be 0 + if button.cb_arg is not None: + button.callback(button.cb_arg) + else: + button.callback() + return button + + def post_keyboard_navigate(self): + # subclasses can put stuff here to check scrolling etc + pass + + def update(self): + "runs every frame, checks button states" + # this is very similar to UI.update, implying an alternative structure + # in which UIElements can contain other UIElements. i've seen this get + # really confusing on past projects though, so let's try a flatter + # architecture - UI w/ UIelements, UIElements w/ UIButtons - for now. + mx, my = self.ui.get_screen_coords(self.ui.app.mouse_x, self.ui.app.mouse_y) + was_hovering = self.hovered_buttons[:] + self.hovered_buttons = [] + for b in self.buttons: + # element.clicked might have been set it non-hoverable, acknowledge + # its hoveredness here so it can unhover correctly + if b.visible and (b.can_hover or b.state == 'clicked') and self.is_inside_button(mx, my, b): + self.hovered_buttons.append(b) + if not b in was_hovering: + b.hover() + for b in was_hovering: + if not b in self.hovered_buttons: + b.unhover() + # tiles might have just changed + self.art.update() + + def render(self): + # ("is visible" check happens in UI.render, calls our is_visible) + # render drop shadow first + if self.drop_shadow: + # offset in X and Y, render then restore position + orig_x, orig_y = self.renderable.x, self.renderable.y + self.renderable.x += UIArt.quad_width / 10 + self.renderable.y -= UIArt.quad_height / 10 + self.renderable.render(brightness=0.1) + self.renderable.x, self.renderable.y = orig_x, orig_y + self.renderable.render() + + def destroy(self): + for r in self.renderables: + r.destroy() + + +class UIArt(Art): + recalc_quad_height = False + log_creation = False + + +class UIRenderable(TileRenderable): + + grain_strength = 0.2 + + def get_projection_matrix(self): + # don't use projection matrix, ie identity[0][0]=aspect; + # rather do all aspect correction in UI.set_scale when determining quad size + return self.ui.view_matrix + + def get_view_matrix(self): + return self.ui.view_matrix + + +class FPSCounterUI(UIElement): + + tile_y = 1 + tile_width, tile_height = 12, 2 + snap_right = True + game_mode_visible = True + all_modes_visible = True + visible = False + + def update(self): + bg = 0 + self.art.clear_frame_layer(0, 0, bg) + color = self.ui.colors.white + # yellow or red if framerate dips + if self.ui.app.fps < 30: + color = self.ui.colors.yellow + if self.ui.app.fps < 10: + color = self.ui.colors.red + text = '%.1f fps' % self.ui.app.fps + x = self.tile_width - 1 + self.art.write_string(0, 0, x, 0, text, color, None, True) + # display last tick time; frame_time includes delay, is useless + text = '%.1f ms ' % self.ui.app.frame_time + self.art.write_string(0, 0, x, 1, text, color, None, True) + + def render(self): + # always show FPS if low + if self.visible or self.ui.app.fps < 30: + self.renderable.render() + + +class MessageLineUI(UIElement): + + "when console outputs something new, show last line here before fading out" + + tile_y = 2 + snap_left = True + # just info, don't bother with hover, click etc + can_hover = False + default_hold_time = 1 + fade_rate = 0.025 + game_mode_visible = True + all_modes_visible = True + drop_shadow = True + + def __init__(self, ui): + UIElement.__init__(self, ui) + # line we're currently displaying (even after fading out) + self.line = '' + self.last_post = self.ui.app.get_elapsed_time() + self.hold_time = self.default_hold_time + self.alpha = 1 + + def reset_art(self): + self.tile_width = ceil(self.ui.width_tiles) + self.art.resize(self.tile_width, self.tile_height) + self.art.clear_frame_layer(0, 0, 0, self.ui.colors.white) + UIElement.reset_loc(self) + + def post_line(self, new_line, hold_time=None, error=False): + "write a line to this element (ie so as not to spam console log)" + self.hold_time = hold_time or self.default_hold_time + # use a different color if it's an error + color = self.ui.error_color_index if error else self.ui.colors.white + start_x = 1 + # trim to screen width + self.line = str(new_line)[:self.tile_width-start_x-1] + self.art.clear_frame_layer(0, 0, 0, color) + self.art.write_string(0, 0, start_x, 0, self.line) + self.alpha = 1 + self.last_post = self.ui.app.get_elapsed_time() + + def update(self): + if self.ui.app.get_elapsed_time() > self.last_post + (self.hold_time * 1000): + if self.alpha >= self.fade_rate: + self.alpha -= self.fade_rate + if self.alpha <= self.fade_rate: + self.alpha = 0 + self.renderable.alpha = self.alpha + + def render(self): + # TODO: draw if popup is visible but not obscuring message line? + if not self.ui.popup in self.ui.hovered_elements and not self.ui.console.visible: + UIElement.render(self) + + +class DebugTextUI(UIElement): + + "simple UI element for posting debug text" + + tile_x, tile_y = 1, 4 + tile_height = 20 + clear_lines_after_render = True + game_mode_visible = True + visible = False + + def __init__(self, ui): + UIElement.__init__(self, ui) + self.lines = [] + + def reset_art(self): + self.tile_width = ceil(self.ui.width_tiles) + self.art.resize(self.tile_width, self.tile_height) + self.art.clear_frame_layer(0, 0, 0, self.ui.colors.white) + UIElement.reset_loc(self) + + def post_lines(self, lines): + if type(lines) is list: + self.lines += lines + else: + self.lines += [lines] + + def update(self): + self.art.clear_frame_layer(0, 0, 0, self.ui.colors.white) + for y,line in enumerate(self.lines): + self.art.write_string(0, 0, 0, y, line) + + def render(self): + UIElement.render(self) + if self.clear_lines_after_render: + self.lines = [] + #self.art.clear_frame_layer(0, 0, 0, self.ui.colors.white) + + +class ToolTip(UIElement): + + "popup text label that is invoked and controlled by a UIButton hover" + + visible = False + tile_width, tile_height = 30, 1 + tile_x, tile_y = 10, 5 + + def set_text(self, text): + self.art.write_string(0, 0, 0, 0, text, + self.ui.colors.black, self.ui.colors.white) + # clear tiles past end of text + for x in range(len(text), self.tile_width): + self.art.set_color_at(0, 0, x, 0, 0, 0) + + def reset_art(self): + UIElement.reset_art(self) + self.art.clear_frame_layer(0, 0, + self.ui.colors.white, self.ui.colors.black) + + +class GameLabel(UIElement): + tile_width, tile_height = 50, 1 + game_mode_visible = True + drop_shadow = True + update_when_invisible = True + + +class GameSelectionLabel(GameLabel): + + multi_select_label = '[%s selected]' + + def update(self): + self.visible = False + if self.ui.pulldown.visible or not self.ui.is_game_edit_ui_visible(): + return + if len(self.ui.app.gw.selected_objects) == 0: + return + self.visible = True + if len(self.ui.app.gw.selected_objects) == 1: + obj = self.ui.app.gw.selected_objects[0] + text = obj.name[:self.tile_width-1] + x, y, z = obj.x, obj.y, obj.z + else: + # draw "[N selected]" at avg of selected object locations + text = self.multi_select_label % len(self.ui.app.gw.selected_objects) + x, y, z = 0, 0, 0 + for obj in self.ui.app.gw.selected_objects: + x += obj.x + y += obj.y + z += obj.z + x /= len(self.ui.app.gw.selected_objects) + y /= len(self.ui.app.gw.selected_objects) + z /= len(self.ui.app.gw.selected_objects) + self.art.clear_line(0, 0, 0, self.ui.colors.white, -1) + self.art.write_string(0, 0, 0, 0, text) + self.x, self.y = vector.world_to_screen_normalized(self.ui.app, x, y, z) + self.reset_loc() + +class GameHoverLabel(GameLabel): + + alpha = 0.75 + + def update(self): + self.visible = False + if self.ui.pulldown.visible or not self.ui.is_game_edit_ui_visible(): + return + if not self.ui.app.gw.hovered_focus_object: + return + self.visible = True + obj = self.ui.app.gw.hovered_focus_object + text = obj.name[:self.tile_width-1] + x, y, z = obj.x, obj.y, obj.z + self.art.clear_line(0, 0, 0, self.ui.colors.white, -1) + self.art.write_string(0, 0, 0, 0, text) + self.x, self.y = vector.world_to_screen_normalized(self.ui.app, x, y, z) + self.reset_loc() + self.renderable.alpha = self.alpha diff --git a/ui_file_chooser_dialog.py b/ui_file_chooser_dialog.py new file mode 100644 index 0000000..83f4466 --- /dev/null +++ b/ui_file_chooser_dialog.py @@ -0,0 +1,464 @@ + +import os, time, json + +from PIL import Image + +from texture import Texture +from ui_chooser_dialog import ChooserDialog, ChooserItem, ChooserItemButton +from ui_console import OpenCommand, LoadCharSetCommand, LoadPaletteCommand +from ui_art_dialog import PaletteFromFileDialog, ImportOptionsDialog +from art import ART_DIR, ART_FILE_EXTENSION, THUMBNAIL_CACHE_DIR, SCRIPT_FILE_EXTENSION, ART_SCRIPT_DIR +from palette import Palette, PALETTE_DIR, PALETTE_EXTENSIONS +from charset import CharacterSet, CHARSET_DIR, CHARSET_FILE_EXTENSION +from image_export import write_thumbnail + + +class BaseFileChooserItem(ChooserItem): + + hide_file_extension = False + + def get_short_dir_name(self): + # name should end in / but don't assume + dir_name = self.name[:-1] if self.name.endswith('/') else self.name + return os.path.basename(dir_name) + '/' + + def get_label(self): + if os.path.isdir(self.name): + return self.get_short_dir_name() + else: + label = os.path.basename(self.name) + if self.hide_file_extension: + return os.path.splitext(label)[0] + else: + return label + + def get_description_lines(self): + if os.path.isdir(self.name): + if self.name == '..': + return ['[parent folder]'] + # TODO: # of items in dir? + return [] + return None + + def picked(self, element): + # if this is different from the last clicked item, pick it + if element.selected_item_index != self.index: + ChooserItem.picked(self, element) + element.first_selection_made = True + return + # if we haven't yet clicked something in this view, require another + # click before opening it (consistent double click behavior for + # initial selections) + if not element.first_selection_made: + element.first_selection_made = True + return + if self.name == '..' and self.name != '/': + new_dir = os.path.abspath(os.path.abspath(element.current_dir) + '/..') + element.change_current_dir(new_dir) + elif os.path.isdir(self.name): + new_dir = element.current_dir + self.get_short_dir_name() + element.change_current_dir(new_dir) + else: + element.confirm_pressed() + element.first_selection_made = False + +class BaseFileChooserDialog(ChooserDialog): + + "base class for choosers whose items correspond with files" + chooser_item_class = BaseFileChooserItem + show_filenames = True + file_extensions = [] + + def set_initial_dir(self): + self.current_dir = self.ui.app.documents_dir + self.field_texts[self.active_field] = self.current_dir + + def get_filenames(self): + "subclasses override: get list of desired filenames" + return self.get_sorted_dir_list() + + def get_sorted_dir_list(self): + "common code for getting sorted directory + file lists" + # list parent, then dirs, then filenames with extension(s) + parent = [] if self.current_dir == '/' else ['..'] + if not os.path.exists(self.current_dir): + return parent + dirs, files = [], [] + for filename in os.listdir(self.current_dir): + # skip unix-hidden files + if filename.startswith('.'): + continue + full_filename = self.current_dir + filename + # if no extensions specified, take any file + if len(self.file_extensions) == 0: + self.file_extensions = [''] + for ext in self.file_extensions: + if os.path.isdir(full_filename): + dirs += [full_filename + '/'] + break + elif filename.lower().endswith(ext.lower()): + files += [full_filename] + break + dirs.sort(key=lambda x: x.lower()) + files.sort(key=lambda x: x.lower()) + return parent + dirs + files + + def get_items(self): + "populate and return items from list of files, loading as needed" + items = [] + # find all suitable files (images) + filenames = self.get_filenames() + # use manual counter, as we skip past some files that don't fit + i = 0 + for filename in filenames: + item = self.chooser_item_class(i, filename) + if not item.valid: + continue + items.append(item) + i += 1 + return items + + +# +# art chooser +# + +class ArtChooserItem(BaseFileChooserItem): + + # set in load() + art_width = None + hide_file_extension = True + + def get_description_lines(self): + lines = BaseFileChooserItem.get_description_lines(self) + if lines is not None: + return lines + if not self.art_width: + return [] + mod_time = time.gmtime(self.art_mod_time) + mod_time = time.strftime('%Y-%m-%d %H:%M:%S', mod_time) + lines = ['last change: %s' % mod_time] + line = '%s x %s, ' % (self.art_width, self.art_height) + line += '%s frame' % self.art_frames + # pluralize properly + line += 's' if self.art_frames > 1 else '' + line += ', %s layer' % self.art_layers + line += 's' if self.art_layers > 1 else '' + lines += [line] + lines += ['char: %s, pal: %s' % (self.art_charset, self.art_palette)] + return lines + + def get_preview_texture(self, app): + if os.path.isdir(self.name): + return + thumbnail_filename = app.cache_dir + THUMBNAIL_CACHE_DIR + self.art_hash + '.png' + # create thumbnail if it doesn't exist + if not os.path.exists(thumbnail_filename): + write_thumbnail(app, self.name, thumbnail_filename) + # read thumbnail + img = Image.open(thumbnail_filename) + img = img.convert('RGBA') + img = img.transpose(Image.FLIP_TOP_BOTTOM) + return Texture(img.tobytes(), *img.size) + + def load(self, app): + if os.path.isdir(self.name): + return + if not os.path.exists(self.name): + return + # get last modified time for description + self.art_mod_time = os.path.getmtime(self.name) + # get file's hash for unique thumbnail name + self.art_hash = app.get_file_hash(self.name) + # rather than load the entire art, just get some high level stats + d = json.load(open(self.name)) + self.art_width, self.art_height = d['width'], d['height'] + self.art_frames = len(d['frames']) + self.art_layers = len(d['frames'][0]['layers']) + self.art_charset = d['charset'] + self.art_palette = d['palette'] + + +class ArtChooserDialog(BaseFileChooserDialog): + + title = 'Open art' + confirm_caption = 'Open' + cancel_caption = 'Cancel' + chooser_item_class = ArtChooserItem + flip_preview_y = False + directory_aware = True + file_extensions = [ART_FILE_EXTENSION] + + def set_initial_dir(self): + # TODO: IF no art in Documents dir yet, start in app/art/ for examples? + # get last opened dir, else start in docs/game art dir + if self.ui.app.last_art_dir: + self.current_dir = self.ui.app.last_art_dir + else: + self.current_dir = self.ui.app.gw.game_dir if self.ui.app.gw.game_dir else self.ui.app.documents_dir + self.current_dir += ART_DIR + self.field_texts[self.active_field] = self.current_dir + + def confirm_pressed(self): + if not os.path.exists(self.field_texts[0]): + return + self.ui.app.last_art_dir = self.current_dir + OpenCommand.execute(self.ui.console, [self.field_texts[0]]) + self.dismiss() + + +# +# generic file chooser for importers +# +class GenericImportChooserDialog(BaseFileChooserDialog): + + title = 'Import %s' + confirm_caption = 'Import' + cancel_caption = 'Cancel' + # allowed extensions set by invoking + file_extensions = [] + show_preview_image = False + directory_aware = True + + def __init__(self, ui, options): + self.title %= ui.app.importer.format_name + self.file_extensions = ui.app.importer.allowed_file_extensions + BaseFileChooserDialog.__init__(self, ui, options) + + def set_initial_dir(self): + if self.ui.app.last_import_dir: + self.current_dir = self.ui.app.last_import_dir + else: + self.current_dir = self.ui.app.documents_dir + self.field_texts[self.active_field] = self.current_dir + + def confirm_pressed(self): + filename = self.field_texts[0] + if not os.path.exists(filename): + return + self.ui.app.last_import_dir = self.current_dir + self.dismiss() + # importer might offer a dialog for options + if self.ui.app.importer.options_dialog_class: + options = {'filename': filename} + self.ui.open_dialog(self.ui.app.importer.options_dialog_class, + options) + else: + ImportOptionsDialog.do_import(self.ui.app, filename, {}) + + +class ImageChooserItem(BaseFileChooserItem): + + def get_preview_texture(self, app): + if os.path.isdir(self.name): + return + # may not be a valid image file + try: + img = Image.open(self.name) + except: + return + try: + img = img.convert('RGBA') + except: + # (probably) PIL bug: some images just crash! return None + return + img = img.transpose(Image.FLIP_TOP_BOTTOM) + return Texture(img.tobytes(), *img.size) + +class ImageFileChooserDialog(BaseFileChooserDialog): + + cancel_caption = 'Cancel' + chooser_item_class = ImageChooserItem + flip_preview_y = False + directory_aware = True + file_extensions = ['png', 'jpg', 'jpeg', 'bmp', 'gif'] + +class PaletteFromImageChooserDialog(ImageFileChooserDialog): + + title = 'Palette from image' + confirm_caption = 'Choose' + + def confirm_pressed(self): + if not os.path.exists(self.field_texts[0]): + return + # open new dialog, pipe our field 0 into its field 0 + filename = self.field_texts[0] + self.dismiss() + self.ui.open_dialog(PaletteFromFileDialog) + self.ui.active_dialog.field_texts[0] = filename + # base new palette filename on source image + palette_filename = os.path.basename(filename) + palette_filename = os.path.splitext(palette_filename)[0] + self.ui.active_dialog.field_texts[1] = palette_filename + +# +# palette chooser +# + +class PaletteChooserItem(BaseFileChooserItem): + + def get_label(self): + return os.path.splitext(self.name)[0] + + def get_description_lines(self): + colors = len(self.palette.colors) + return ['Unique colors: %s' % str(colors - 1)] + + def get_preview_texture(self, app): + return self.palette.src_texture + + def load(self, app): + self.palette = app.load_palette(self.name) + + +class PaletteChooserDialog(BaseFileChooserDialog): + + title = 'Choose palette' + chooser_item_class = PaletteChooserItem + + def get_initial_selection(self): + if not self.ui.active_art: + return 0 + for item in self.items: + # depend on label being same as palette's internal name, + # eg filename minus extension + if item.label == self.ui.active_art.palette.name: + return item.index + #print("couldn't find initial selection for %s, returning 0" % self.__class__.__name__) + return 0 + + def get_filenames(self): + filenames = [] + # search all files in dirs with appropriate extensions + for dirname in self.ui.app.get_dirnames(PALETTE_DIR, False): + for filename in os.listdir(dirname): + for ext in PALETTE_EXTENSIONS: + if filename.lower().endswith(ext.lower()): + filenames.append(filename) + filenames.sort(key=lambda x: x.lower()) + return filenames + + def confirm_pressed(self): + item = self.get_selected_item() + self.ui.active_art.set_palette(item.palette, log=True) + self.ui.popup.set_active_palette(item.palette) + +# +# charset chooser +# + +class CharsetChooserItem(BaseFileChooserItem): + + def get_label(self): + return os.path.splitext(self.name)[0] + + def get_description_lines(self): + # first comment in file = description + lines = [] + for line in open(self.charset.filename, encoding='utf-8').readlines(): + line = line.strip() + if line.startswith('//'): + lines.append(line[2:]) + break + lines.append('Characters: %s' % str(self.charset.last_index)) + return lines + + def get_preview_texture(self, app): + return self.charset.texture + + def load(self, app): + self.charset = app.load_charset(self.name) + + +class CharSetChooserDialog(BaseFileChooserDialog): + + title = 'Choose character set' + flip_preview_y = False + chooser_item_class = CharsetChooserItem + + def get_initial_selection(self): + if not self.ui.active_art: + return 0 + for item in self.items: + if item.label == self.ui.active_art.charset.name: + return item.index + #print("couldn't find initial selection for %s, returning 0" % self.__class__.__name__) + return 0 + + def get_filenames(self): + filenames = [] + # search all files in dirs with appropriate extensions + for dirname in self.ui.app.get_dirnames(CHARSET_DIR, False): + for filename in os.listdir(dirname): + if filename.lower().endswith(CHARSET_FILE_EXTENSION.lower()): + filenames.append(filename) + filenames.sort(key=lambda x: x.lower()) + return filenames + + def confirm_pressed(self): + item = self.get_selected_item() + self.ui.active_art.set_charset(item.charset, log=True) + self.ui.popup.set_active_charset(item.charset) + # change in charset aspect should be treated as a resize + # for purposes of grid, camera, cursor, overlay + self.ui.adjust_for_art_resize(self.ui.active_art) + + +class ArtScriptChooserItem(BaseFileChooserItem): + + def get_label(self): + label = os.path.splitext(self.name)[0] + return os.path.basename(label) + + def get_description_lines(self): + lines = [] + # read every comment line until a non-comment line is encountered + for line in self.script.readlines(): + line = line.strip() + if not line: + continue + if not line.startswith('#'): + break + # snip # + line = line[line.index('#')+1:] + lines.append(line) + return lines + + def load(self, app): + self.script = open(self.name) + + +class RunArtScriptDialog(BaseFileChooserDialog): + + title = 'Run Artscript' + tile_width, big_width = 70, 90 + tile_height, big_height = 15, 25 + chooser_item_class = ArtScriptChooserItem + show_preview_image = False + + def get_filenames(self): + filenames = [] + # search all files in dirs with appropriate extensions + for dirname in self.ui.app.get_dirnames(ART_SCRIPT_DIR, False): + for filename in os.listdir(dirname): + if filename.lower().endswith(SCRIPT_FILE_EXTENSION.lower()): + filenames.append(dirname + filename) + filenames.sort(key=lambda x: x.lower()) + return filenames + + def confirm_pressed(self): + item = self.get_selected_item() + self.ui.app.last_art_script = item.name + self.ui.active_art.run_script(item.name, log=False) + self.dismiss() + + +class OverlayImageFileChooserDialog(ImageFileChooserDialog): + + title = 'Choose overlay image' + confirm_caption = 'Choose' + + def confirm_pressed(self): + filename = self.field_texts[0] + self.ui.app.set_overlay_image(filename) + self.dismiss() diff --git a/ui_game_dialog.py b/ui_game_dialog.py new file mode 100644 index 0000000..1c17827 --- /dev/null +++ b/ui_game_dialog.py @@ -0,0 +1,198 @@ + +from ui_dialog import UIDialog, Field + +from ui_console import SetGameDirCommand, LoadGameStateCommand, SaveGameStateCommand +from ui_list_operations import LO_NONE, LO_SELECT_OBJECTS, LO_SET_SPAWN_CLASS, LO_LOAD_STATE, LO_SET_ROOM, LO_SET_ROOM_OBJECTS, LO_SET_OBJECT_ROOMS, LO_OPEN_GAME_DIR, LO_SET_ROOM_EDGE_WARP + + +class NewGameDirDialog(UIDialog): + title = 'New game' + field0_label = 'Name of new game folder:' + field1_label = 'Name of new game:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False), + Field(label=field1_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Create' + game_mode_visible = True + + # TODO: only allow names that don't already exist + + def get_initial_field_text(self, field_number): + # provide a reasonable non-blank name + if field_number == 0: + return 'newgame' + elif field_number == 1: + return type(self.ui.app.gw).game_title + + def confirm_pressed(self): + if self.ui.app.gw.create_new_game(self.field_texts[0], self.field_texts[1]): + self.ui.app.enter_game_mode() + self.dismiss() + +class LoadGameStateDialog(UIDialog): + + title = 'Open game state' + field_label = 'Game state file to open:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Open' + game_mode_visible = True + + # TODO: only allow valid game state file in current game directory + + def confirm_pressed(self): + LoadGameStateCommand.execute(self.ui.console, [self.field_texts[0]]) + self.dismiss() + +class SaveGameStateDialog(UIDialog): + + title = 'Save game state' + field_label = 'New filename for game state:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Save' + game_mode_visible = True + + def confirm_pressed(self): + SaveGameStateCommand.execute(self.ui.console, [self.field_texts[0]]) + self.dismiss() + +class AddRoomDialog(UIDialog): + title = 'Add new room' + field0_label = 'Name for new room:' + field1_label = 'Class of new room:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False), + Field(label=field1_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Add' + game_mode_visible = True + invalid_room_name_error = 'Invalid room name.' + + def get_initial_field_text(self, field_number): + # provide a reasonable non-blank name + if field_number == 0: + return 'Room ' + str(len(self.ui.app.gw.rooms) + 1) + elif field_number == 1: + return 'GameRoom' + + def is_input_valid(self): + return self.field_texts[0] != '', self.invalid_room_name_error + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + self.ui.app.gw.add_room(self.field_texts[0], self.field_texts[1]) + self.dismiss() + +class SetRoomCamDialog(UIDialog): + title = 'Set room camera marker' + tile_width = 48 + field0_label = 'Name of location marker object for this room:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + game_mode_visible = True + + def dismiss(self): + self.ui.edit_list_panel.set_list_operation(LO_NONE) + UIDialog.dismiss(self) + + def confirm_pressed(self): + self.ui.app.gw.current_room.set_camera_marker_name(self.field_texts[0]) + self.dismiss() + +class SetRoomEdgeWarpsDialog(UIDialog): + title = 'Set room edge warps' + tile_width = 48 + fields = 4 + field0_label = 'Name of room/object to warp at LEFT edge:' + field1_label = 'Name of room/object to warp at RIGHT edge:' + field2_label = 'Name of room/object to warp at TOP edge:' + field3_label = 'Name of room/object to warp at BOTTOM edge:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False), + Field(label=field1_label, type=str, width=field_width, oneline=False), + Field(label=field2_label, type=str, width=field_width, oneline=False), + Field(label=field3_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + game_mode_visible = True + + def get_initial_field_text(self, field_number): + room = self.ui.app.gw.current_room + names = {0: room.left_edge_warp_dest_name, 1: room.right_edge_warp_dest_name, + 2: room.top_edge_warp_dest_name, 3: room.bottom_edge_warp_dest_name} + return names[field_number] + + def dismiss(self): + self.ui.edit_list_panel.set_list_operation(LO_NONE) + UIDialog.dismiss(self) + + def confirm_pressed(self): + room = self.ui.app.gw.current_room + room.left_edge_warp_dest_name = self.field_texts[0] + room.right_edge_warp_dest_name = self.field_texts[1] + room.top_edge_warp_dest_name = self.field_texts[2] + room.bottom_edge_warp_dest_name = self.field_texts[3] + room.reset_edge_warps() + self.dismiss() + +class SetRoomBoundsObjDialog(UIDialog): + title = 'Set room edge object' + field0_label = 'Name of object to use for room bounds:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + game_mode_visible = True + + def get_initial_field_text(self, field_number): + if field_number == 0: + return self.ui.app.gw.current_room.warp_edge_bounds_obj_name + + def dismiss(self): + self.ui.edit_list_panel.set_list_operation(LO_NONE) + UIDialog.dismiss(self) + + def confirm_pressed(self): + room = self.ui.app.gw.current_room + room.warp_edge_bounds_obj_name = self.field_texts[0] + room.reset_edge_warps() + self.dismiss() + +class RenameRoomDialog(UIDialog): + title = 'Rename room' + field0_label = 'New name for current room:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Rename' + game_mode_visible = True + invalid_room_name_error = 'Invalid room name.' + + def get_initial_field_text(self, field_number): + if field_number == 0: + return self.ui.app.gw.current_room.name + + def is_input_valid(self): + return self.field_texts[0] != '', self.invalid_room_name_error + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + world = self.ui.app.gw + world.rename_room(world.current_room, self.field_texts[0]) + self.dismiss() diff --git a/ui_game_menu_pulldown_item.py b/ui_game_menu_pulldown_item.py new file mode 100644 index 0000000..deaeac7 --- /dev/null +++ b/ui_game_menu_pulldown_item.py @@ -0,0 +1,345 @@ +# coding=utf-8 + +from ui_menu_pulldown_item import PulldownMenuItem, SeparatorItem, PulldownMenuData, FileQuitItem, ViewToggleCRTItem, ViewToggleCameraTiltItem, ViewSetZoomItem, ViewToggleGridItem + +class GameModePulldownMenuItem(PulldownMenuItem): + # unless overridden, game mode items not allowed in art mode + art_mode_allowed = False + + +# +# game menu +# +class HideEditUIItem(GameModePulldownMenuItem): + label = 'Hide edit UI' + command = 'toggle_game_edit_ui' + close_on_select = True + always_active = True + +class NewGameDirItem(GameModePulldownMenuItem): + label = 'New game…' + command = 'new_game_dir' + always_active = True + +class SetGameDirItem(GameModePulldownMenuItem): + label = 'Open game…' + command = 'set_game_dir' + close_on_select = True + always_active = True + +class PauseGameItem(GameModePulldownMenuItem): + label = 'blah' + command = 'toggle_anim_playback' + always_active = True + def get_label(app): + return ['Pause game', 'Unpause game'][app.gw.paused] + +class OpenConsoleItem(GameModePulldownMenuItem): + label = 'Open dev console' + command = 'toggle_console' + close_on_select = True + always_active = True + art_mode_allowed = True + +# +# state menu +# +class ResetStateItem(GameModePulldownMenuItem): + label = 'Reset to last state' + command = 'reset_game' + close_on_select = True + def should_dim(app): + return not app.gw.game_dir + +class LoadStateItem(GameModePulldownMenuItem): + label = 'Load state…' + command = 'load_game_state' + close_on_select = True + def should_dim(app): + return not app.gw.game_dir + +class SaveStateItem(GameModePulldownMenuItem): + label = 'Save current state' + command = 'save_current' + close_on_select = True + def should_dim(app): + return not app.gw.game_dir + +class SaveNewStateItem(GameModePulldownMenuItem): + label = 'Save new state…' + command = 'save_game_state' + def should_dim(app): + return not app.gw.game_dir + +# +# view menu +# +class ObjectsToCameraItem(GameModePulldownMenuItem): + label = 'Move selected object(s) to camera' + command = 'objects_to_camera' + close_on_select = True + def should_dim(app): + return len(app.gw.selected_objects) == 0 + +class CameraToObjectsItem(GameModePulldownMenuItem): + label = 'Move camera to selected object' + command = 'camera_to_objects' + close_on_select = True + def should_dim(app): + return len(app.gw.selected_objects) != 1 + +class ToggleDebugObjectsItem(GameModePulldownMenuItem): + label = ' Draw debug objects' + command = 'toggle_debug_objects' + def should_dim(app): + return not app.gw.game_dir + def should_mark(ui): + return ui.app.gw.properties and ui.app.gw.properties.draw_debug_objects + +class ToggleOriginVizItem(GameModePulldownMenuItem): + label = ' Show all object origins' + command = 'toggle_all_origin_viz' + def should_dim(app): + return not app.gw.game_dir + def should_mark(ui): + return ui.app.gw.show_origin_all + +class ToggleBoundsVizItem(GameModePulldownMenuItem): + label = ' Show all object bounds' + command = 'toggle_all_bounds_viz' + def should_dim(app): + return not app.gw.game_dir + def should_mark(ui): + return ui.app.gw.show_bounds_all + +class ToggleCollisionVizItem(GameModePulldownMenuItem): + label = ' Show all object collision' + command = 'toggle_all_collision_viz' + def should_dim(app): + return not app.gw.game_dir + def should_mark(ui): + return ui.app.gw.show_collision_all + +# +# world menu +# +class EditWorldPropertiesItem(GameModePulldownMenuItem): + label = 'Edit world properties…' + command = 'edit_world_properties' + close_on_select = True + def should_dim(app): + return not app.gw.game_dir + +# +# room menu +# + +class ChangeRoomItem(GameModePulldownMenuItem): + label = 'Change current room…' + command = 'change_current_room' + close_on_select = True + def should_dim(app): + return len(app.gw.rooms) == 0 + +class AddRoomItem(GameModePulldownMenuItem): + label = 'Add room…' + command = 'add_room' + def should_dim(app): + return not app.gw.game_dir + +class SetRoomObjectsItem(GameModePulldownMenuItem): + label = 'Add/remove objects from room…' + command = 'set_room_objects' + close_on_select = True + def should_dim(app): + return app.gw.current_room is None + +class RemoveRoomItem(GameModePulldownMenuItem): + label = 'Remove this room' + command = 'remove_current_room' + close_on_select = True + def should_dim(app): + return app.gw.current_room is None + +class RenameRoomItem(GameModePulldownMenuItem): + label = 'Rename this room…' + command = 'rename_current_room' + def should_dim(app): + return app.gw.current_room is None + +class ToggleAllRoomsVizItem(GameModePulldownMenuItem): + label = 'blah' + command = 'toggle_all_rooms_visible' + def should_dim(app): + return len(app.gw.rooms) == 0 + def get_label(app): + return ['Show all rooms', 'Show only current room'][app.gw.show_all_rooms] + +class ToggleListOnlyRoomObjectItem(GameModePulldownMenuItem): + label = ' List only objects in this room' + command = 'toggle_list_only_room_objects' + def should_dim(app): + return len(app.gw.rooms) == 0 + def should_mark(ui): + return ui.app.gw.list_only_current_room_objects + +class ToggleRoomCamerasItem(GameModePulldownMenuItem): + label = ' Camera changes with room' + command = 'toggle_room_camera_changes' + def should_dim(app): + return len(app.gw.rooms) == 0 + def should_mark(ui): + return ui.app.gw.room_camera_changes_enabled + +class SetRoomCameraItem(GameModePulldownMenuItem): + label = "Set this room's camera marker…" + command = 'set_room_camera_marker' + def should_dim(app): + return app.gw.current_room is None + +class SetRoomEdgeDestinationsItem(GameModePulldownMenuItem): + label = "Set this room's edge warps…" + command = 'set_room_edge_warps' + def should_dim(app): + return app.gw.current_room is None + +class SetRoomBoundsObject(GameModePulldownMenuItem): + label = "Set this room's edge object…" + command = 'set_room_bounds_obj' + def should_dim(app): + return app.gw.current_room is None + +class AddSelectedToCurrentRoomItem(GameModePulldownMenuItem): + label = 'Add selected objects to this room' + command = 'add_selected_to_room' + def should_dim(app): + return app.gw.current_room is None or len(app.gw.selected_objects) == 0 + +class RemoveSelectedFromCurrentRoomItem(GameModePulldownMenuItem): + label = 'Remove selected objects from this room' + command = 'remove_selected_from_room' + def should_dim(app): + return app.gw.current_room is None or len(app.gw.selected_objects) == 0 + +# +# object menu +# + +class SpawnObjectItem(GameModePulldownMenuItem): + label = 'Spawn object…' + command = 'choose_spawn_object_class' + close_on_select = True + def should_dim(app): + return not app.gw.game_dir + +class DuplicateObjectsItem(GameModePulldownMenuItem): + label = 'Duplicate selected objects' + command = 'duplicate_selected_objects' + close_on_select = True + def should_dim(app): + return len(app.gw.selected_objects) == 0 + +class SelectObjectsItem(GameModePulldownMenuItem): + label = 'Select objects…' + command = 'select_objects' + close_on_select = True + def should_dim(app): + return not app.gw.game_dir + +class EditArtForObjectsItem(GameModePulldownMenuItem): + label = 'Edit art for selected…' + command = 'edit_art_for_selected_objects' + close_on_select = True + def should_dim(app): + return len(app.gw.selected_objects) == 0 + +class SetObjectRoomsItem(GameModePulldownMenuItem): + label = 'Add/remove this object from rooms…' + command = 'set_object_rooms' + close_on_select = True + def should_dim(app): + return len(app.gw.selected_objects) != 1 + +class DeleteSelectedObjectsItem(GameModePulldownMenuItem): + label = 'Delete selected object(s)' + command = 'erase_selection_or_art' + close_on_select = True + def should_dim(app): + return len(app.gw.selected_objects) == 0 + +class GameMenuData(PulldownMenuData): + items = [HideEditUIItem, OpenConsoleItem, SeparatorItem, + NewGameDirItem, SetGameDirItem, PauseGameItem, SeparatorItem, + FileQuitItem] + +class GameStateMenuData(PulldownMenuData): + items = [ResetStateItem, LoadStateItem, SaveStateItem, SaveNewStateItem] + +class GameViewMenuData(PulldownMenuData): + items = [ViewToggleCRTItem, ViewToggleGridItem, SeparatorItem, + ViewSetZoomItem, ViewToggleCameraTiltItem, SeparatorItem, + ObjectsToCameraItem, CameraToObjectsItem, ToggleDebugObjectsItem, + ToggleOriginVizItem, ToggleBoundsVizItem, ToggleCollisionVizItem] + + def should_mark_item(item, ui): + if hasattr(item, 'should_mark'): + return item.should_mark(ui) + return False + +class GameWorldMenuData(PulldownMenuData): + items = [EditWorldPropertiesItem] + +class GameRoomMenuData(PulldownMenuData): + items = [ChangeRoomItem, AddRoomItem, RemoveRoomItem, RenameRoomItem, + ToggleAllRoomsVizItem, ToggleListOnlyRoomObjectItem, ToggleRoomCamerasItem, SeparatorItem, + AddSelectedToCurrentRoomItem, RemoveSelectedFromCurrentRoomItem, + SetRoomObjectsItem, SeparatorItem, + SetRoomCameraItem, SetRoomEdgeDestinationsItem, SetRoomBoundsObject, + SeparatorItem + ] + def should_mark_item(item, ui): + "show checkmark for current room" + if not ui.app.gw.current_room: + return False + if hasattr(item, 'should_mark'): + return item.should_mark(ui) + return ui.app.gw.current_room.name == item.cb_arg + + def get_items(app): + items = [] + if len(app.gw.rooms) == 0: + return items + # TODO: this is almost c+p'd from LayerMenuData, generalize it + # first determine longest line to set width of items + longest_line = 0 + for room_name in app.gw.rooms: + if len(room_name) > longest_line: + longest_line = len(room_name) + # check non-generated menu items too + for item in GameRoomMenuData.items: + if len(item.label) + 1 > longest_line: + longest_line = len(item.label) + 1 + # cap at max allowed line length + for room_name,room in app.gw.rooms.items(): + class TempMenuItemClass(GameModePulldownMenuItem): pass + item = TempMenuItemClass + # leave spaces for mark + item.label = ' %s' % room_name + # pad, put Z depth on far right + item.label = item.label.ljust(longest_line) + # trim to keep below a max length + item.label = item.label[:longest_line] + # tell PulldownMenu's button creation process not to auto-pad + item.no_pad = True + item.command = 'change_current_room_to' + item.cb_arg = room_name + items.append(item) + # sort room list alphabetically so it's stable, if arbitrary + items.sort(key=lambda item: item.label, reverse=False) + return items + + +class GameObjectMenuData(PulldownMenuData): + items = [SpawnObjectItem, DuplicateObjectsItem, SeparatorItem, + SelectObjectsItem, EditArtForObjectsItem, SetObjectRoomsItem, + DeleteSelectedObjectsItem] diff --git a/ui_info_dialog.py b/ui_info_dialog.py new file mode 100644 index 0000000..2f09e58 --- /dev/null +++ b/ui_info_dialog.py @@ -0,0 +1,133 @@ +import sdl2 + +from ui_element import UIElement +from ui_dialog import UIDialog + +class PagedInfoDialog(UIDialog): + + "dialog that presents multiple pages of info w/ buttons to navigate next/last page" + + title = 'Info' + # message = list of page strings, each can be triple-quoted / contain line breaks + message = [''] + tile_width = 54 + confirm_caption = '>>' + other_caption = '<<' + cancel_caption = 'Done' + other_button_visible = True + extra_lines = 1 + + def __init__(self, ui, options): + self.page = 0 + UIDialog.__init__(self, ui, options) + self.reset_art() + + def update(self): + # disable prev/next buttons if we're at either end of the page list + if self.page == 0: + self.other_button.can_hover = False + self.other_button.set_state('dimmed') + elif self.page == len(self.message) - 1: + self.confirm_button.can_hover = False + self.confirm_button.set_state('dimmed') + else: + for button in [self.confirm_button, self.other_button]: + button.can_hover = True + button.dimmed = False + if button.state != 'normal': + button.set_state('normal') + UIElement.update(self) + + def handle_input(self, key, shift_pressed, alt_pressed, ctrl_pressed): + keystr = sdl2.SDL_GetKeyName(key).decode() + if keystr == 'Left': + self.other_pressed() + elif keystr == 'Right': + self.confirm_pressed() + elif keystr == 'Escape': + self.cancel_pressed() + + def get_message(self): + return self.message[self.page].rstrip().split('\n') + + def confirm_pressed(self): + # confirm repurposed to "next page" + if self.page < len(self.message) - 1: + self.page += 1 + # redraw, tell reset_art not to resize + self.reset_art(False) + + def cancel_pressed(self): + self.dismiss() + + def other_pressed(self): + # other repurposed to "previous page" + if self.page > 0: + self.page -= 1 + self.reset_art(False) + + +about_message = [ +# max line width 50 characters! +""" + by JP LeBreton (c) 2014-2022 | + +Playscii was made with the support of many nice +people. + + Patrons: + +Andrew Anderson, Evan Armour, Jason Bakker, +Aaron Brown, Jason Buck, Ben Burbank, Josh Closs, +Lachlan Cooper, Sam Crisp, +Torbjørn Grønnevik Dahle, Holger Dors, +Matthew Duhamel, Jaron Eldon, Jacques Frechet, +Katelyn Gigante, Isaac Halvorson, Leon Hartwig, +Aubrey Hesselgren, Nick Keirle, Jón Kristinsson, +Pat LaBine, Jeremy Lonien, Rohit Nirmal, +James Noble, David Pittman, Richard Porczak, +Dan Sanderson, Shannon Strucci, Pablo López Soriano, +Jack Turner, Chris Welch, Andrew Yoder +""", +""" + Programming Contributions: + +Mattias Gustavsson, Rohit Nirmal, Sean Gubelman, +Erin Congden, Tin Tvrtković, Dan Reeves, +Raigan Burns + + Technical Advice: + +Shawn Walker, Sean Barrett, Mark Wonnacott, +Ian MacLarty, Goldbuick, Chevy Ray Johnston, +Raigan Burns + + Tool Design Inspiration: + +Anna Anthropy, Andi McClure, Bret Victor, +Tim Sweeney (ZZT), Craig Hickman (Kid Pix), +Bill Atkinson (HyperCard) +""", +""" + Love, Encouragement, Moral Support: + +L Stiger +Gail, Gil, and Lee LeBreton +Brendan Sinclair +Liz Ryerson +Johnnemann Nordhagen +Aubrey Hesselgren +Zak McClendon +Claire Hosking +#tool-design +""" +] + +class AboutDialog(PagedInfoDialog): + title = 'Playscii' + message = about_message + game_mode_visible = True + all_modes_visible = True + def __init__(self, ui, options): + self.title += ' %s' % ui.app.version + PagedInfoDialog.__init__(self, ui, options) diff --git a/ui_list_operations.py b/ui_list_operations.py new file mode 100644 index 0000000..6fe5623 --- /dev/null +++ b/ui_list_operations.py @@ -0,0 +1,14 @@ + +# list operations - tells ListPanel what to do when clicked + +LO_NONE = 0 +LO_SELECT_OBJECTS = 1 +LO_SET_SPAWN_CLASS = 2 +LO_LOAD_STATE = 3 +LO_SET_ROOM = 4 +LO_SET_ROOM_OBJECTS = 5 +LO_SET_OBJECT_ROOMS = 6 +LO_OPEN_GAME_DIR = 7 +LO_SET_ROOM_EDGE_WARP = 8 +LO_SET_ROOM_EDGE_OBJ = 9 +LO_SET_ROOM_CAMERA = 10 diff --git a/ui_menu_bar.py b/ui_menu_bar.py new file mode 100644 index 0000000..5d74fbc --- /dev/null +++ b/ui_menu_bar.py @@ -0,0 +1,307 @@ +from math import ceil + +from ui_element import UIElement +from ui_button import UIButton, TEXT_LEFT, TEXT_CENTER, TEXT_RIGHT +from ui_menu_pulldown_item import FileMenuData, EditMenuData, ToolMenuData, ViewMenuData, ArtMenuData, FrameMenuData, LayerMenuData, CharColorMenuData, HelpMenuData +from ui_game_menu_pulldown_item import GameMenuData, GameStateMenuData, GameViewMenuData, GameWorldMenuData, GameRoomMenuData, GameObjectMenuData +from ui_info_dialog import AboutDialog +from ui_colors import UIColors +from renderable_sprite import UISpriteRenderable + +class MenuButton(UIButton): + caption = 'Base Class Menu Button' + caption_justify = TEXT_CENTER + # menu data is just a class w/ little more than a list of items, partly + # so we don't have to list all the items here in a different module + menu_data = None + # styling + normal_bg_color = UIColors.white + hovered_bg_color = UIColors.lightgrey + dimmed_bg_color = UIColors.lightgrey + + def __init__(self, element): + UIButton.__init__(self, element) + self.callback = self.open_pulldown + + def open_pulldown(self): + # don't open menus if a dialog is up + if self.element.ui.active_dialog: + return + # if clicking the same button twice, close it + if self.element.active_menu_name == self.name: + self.element.close_active_menu() + return + # close any existing menu before opening new one + if self.element.active_menu_name: + self.element.close_active_menu() + # tell pulldown what's opening it, it can populate its items based on + # our data + self.pulldown.open_at(self) + self.element.active_menu_name = self.name + # set button state to be dimmed until menu is closed + self.dimmed = True + + +# playscii logo button = normal UIButton, opens About screen directly +class PlaysciiMenuButton(UIButton): + name = 'playscii' + caption = ' ' + caption_justify = TEXT_CENTER + width = len(caption) + 2 + normal_bg_color = MenuButton.normal_bg_color + hovered_bg_color = MenuButton.hovered_bg_color + dimmed_bg_color = MenuButton.dimmed_bg_color + +# +# art mode menu buttons +# + +class FileMenuButton(MenuButton): + name = 'file' + caption = 'File' + menu_data = FileMenuData + +class EditMenuButton(MenuButton): + name = 'edit' + caption = 'Edit' + menu_data = EditMenuData + +class ToolMenuButton(MenuButton): + name = 'tool' + caption = 'Tool' + menu_data = ToolMenuData + +class ViewMenuButton(MenuButton): + name = 'view' + caption = 'View' + menu_data = ViewMenuData + +class ArtMenuButton(MenuButton): + name = 'art' + caption = 'Art' + menu_data = ArtMenuData + +class FrameMenuButton(MenuButton): + name = 'frame' + caption = 'Frame' + menu_data = FrameMenuData + +class LayerMenuButton(MenuButton): + name = 'layer' + caption = 'Layer' + menu_data = LayerMenuData + +class CharColorMenuButton(MenuButton): + name = 'char_color' + caption = 'Char/Color' + menu_data = CharColorMenuData + +# (appears in both art and game mode menus) +class HelpMenuButton(MenuButton): + name = 'help' + caption = 'Help' + menu_data = HelpMenuData + +# +# game mode menu buttons +# + +class GameMenuButton(MenuButton): + name = 'game' + caption = 'Game' + menu_data = GameMenuData + +class StateMenuButton(MenuButton): + name = 'state' + caption = 'State' + menu_data = GameStateMenuData + +class GameViewMenuButton(MenuButton): + name = 'view' + caption = 'View' + menu_data = GameViewMenuData + +class WorldMenuButton(MenuButton): + name = 'world' + caption = 'World' + menu_data = GameWorldMenuData + +class RoomMenuButton(MenuButton): + name = 'room' + caption = 'Room' + menu_data = GameRoomMenuData + +class ObjectMenuButton(MenuButton): + name = 'object' + caption = 'Object' + menu_data = GameObjectMenuData + +class ModeMenuButton(UIButton): + caption_justify = TEXT_CENTER + normal_bg_color = UIColors.black + normal_fg_color = UIColors.white + #hovered_bg_color = UIColors.lightgrey + #dimmed_bg_color = UIColors.lightgrey + +class ArtModeMenuButton(ModeMenuButton): + caption = 'Game Mode' + width = len(caption) + 2 + +class GameModeMenuButton(ModeMenuButton): + caption = 'Art Mode' + width = len(caption) + 2 + + +class MenuBar(UIElement): + + "main menu bar element, has lots of buttons which control the pulldown" + + snap_top = True + snap_left = True + always_consume_input = True + # buttons set in subclasses + button_classes = [] + # button to toggle between art and game mode + mode_button_class = None + # empty tiles between each button + button_padding = 1 + + def __init__(self, ui): + # bitmap icon for about menu button + self.playscii_sprite = UISpriteRenderable(ui.app) + self.mode_button = None + UIElement.__init__(self, ui) + self.active_menu_name = None + # list of menu buttons that can be navigated etc + self.menu_buttons = [] + x = PlaysciiMenuButton.width + self.button_padding + for button_class in self.button_classes: + button = button_class(self) + button.width = len(button.caption) + 2 + button.x = x + x += button.width + self.button_padding + setattr(self, '%s_button' % button.name, button) + # NOTE: callback already defined in MenuButton class, + # menu data for pulldown with set in MenuButton subclass + button.pulldown = self.ui.pulldown + self.menu_buttons.append(button) + playscii_button = PlaysciiMenuButton(self) + playscii_button.callback = self.open_about + # implement Playscii logo menu as a normal UIButton that opens + # the About screen directly + self.menu_buttons.append(playscii_button) + self.reset_icon() + # copy from menu buttons, any buttons past this point are not menus + self.buttons = self.menu_buttons[:] + # toggle mode button at far right + if not self.mode_button_class: + return + self.mode_button = self.mode_button_class(self) + self.mode_button.x = int(self.ui.width_tiles * self.ui.scale) - self.mode_button.width + self.mode_button.callback = self.toggle_game_mode + self.buttons.append(self.mode_button) + + def reset_icon(self): + inv_aspect = self.ui.app.window_height / self.ui.app.window_width + self.playscii_sprite.scale_x = self.art.quad_height * inv_aspect + self.playscii_sprite.scale_y = self.art.quad_height + self.playscii_sprite.x = -1 + self.art.quad_width + self.playscii_sprite.y = 1 - self.art.quad_height + + def open_about(self): + if self.ui.active_dialog: + return + self.ui.open_dialog(AboutDialog) + + def toggle_game_mode(self): + if self.ui.active_dialog: + return + if not self.ui.app.game_mode: + self.ui.app.enter_game_mode() + else: + self.ui.app.exit_game_mode() + self.ui.app.update_window_title() + + def close_active_menu(self): + # un-dim active menu button + for button in self.menu_buttons: + if button.name == self.active_menu_name: + button.dimmed = False + button.set_state('normal') + self.active_menu_name = None + self.ui.pulldown.visible = False + self.ui.keyboard_focus_element = None + self.ui.refocus_keyboard() + + def refresh_active_menu(self): + if not self.ui.pulldown.visible: + return + for button in self.menu_buttons: + if button.name == self.active_menu_name: + # don't reset keyboard nav index + self.ui.pulldown.open_at(button, False) + + def open_menu_by_name(self, menu_name): + if not self.ui.app.can_edit: + return + for button in self.menu_buttons: + if button.name == menu_name: + button.callback() + + def open_menu_by_index(self, index): + if index > len(self.menu_buttons) - 1: + return + # don't navigate to the about menu + # (does this mean it's not accessible via kb-only? probably, that's fine) + if self.menu_buttons[index].name == 'playscii': + return + self.menu_buttons[index].callback() + + def get_menu_index(self, menu_name): + for i,button in enumerate(self.menu_buttons): + if button.name == self.active_menu_name: + return i + + def next_menu(self): + i = self.get_menu_index(self.active_menu_name) + self.open_menu_by_index(i + 1) + + def previous_menu(self): + i = self.get_menu_index(self.active_menu_name) + self.open_menu_by_index(i - 1) + + def reset_art(self): + self.tile_width = ceil(self.ui.width_tiles * self.ui.scale) + # must resize here, as window width will vary + self.art.resize(self.tile_width, self.tile_height) + # repaint bar contents + bg = self.ui.colors.white + fg = self.ui.colors.black + self.art.clear_frame_layer(0, 0, bg, fg) + # reposition right-justified mode switch button + if self.mode_button: + self.mode_button.x = int(self.ui.width_tiles * self.ui.scale) - self.mode_button.width + # draw buttons, etc + UIElement.reset_art(self) + self.reset_icon() + + def render(self): + UIElement.render(self) + self.playscii_sprite.render() + + def destroy(self): + UIElement.destroy(self) + self.playscii_sprite.destroy() + +class ArtMenuBar(MenuBar): + button_classes = [FileMenuButton, EditMenuButton, ToolMenuButton, + ViewMenuButton, ArtMenuButton, FrameMenuButton, + LayerMenuButton, CharColorMenuButton, HelpMenuButton] + mode_button_class = GameModeMenuButton + +class GameMenuBar(MenuBar): + button_classes = [GameMenuButton, StateMenuButton, GameViewMenuButton, + WorldMenuButton, RoomMenuButton, ObjectMenuButton, + HelpMenuButton] + game_mode_visible = True + mode_button_class = ArtModeMenuButton diff --git a/ui_menu_pulldown.py b/ui_menu_pulldown.py new file mode 100644 index 0000000..b5aa4d5 --- /dev/null +++ b/ui_menu_pulldown.py @@ -0,0 +1,182 @@ + +from ui_element import UIElement +from ui_button import UIButton +from ui_colors import UIColors +from art import UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270, UV_FLIPX, UV_FLIPY +from ui_menu_pulldown_item import PulldownMenuItem, PulldownMenuData, SeparatorItem + + +class MenuItemButton(UIButton): + dimmed_fg_color = UIColors.medgrey + dimmed_bg_color = UIColors.lightgrey + + def hover(self): + UIButton.hover(self) + # keyboard nav if hovering with mouse + for i,button in enumerate(self.element.buttons): + if button is self: + self.element.keyboard_nav_index = i + self.element.update_keyboard_hover() + break + + def click(self): + UIButton.click(self) + if self.item.close_on_select: + self.element.ui.menu_bar.close_active_menu() + + +class PulldownMenu(UIElement): + + "element that's moved and resized based on currently active pulldown" + + label_shortcut_padding = 5 + visible = False + always_consume_input = True + bg_color = UIColors.lightgrey + border_color = UIColors.medgrey + border_corner_char = 77 + border_horizontal_line_char = 78 + border_vertical_line_char = 79 + mark_char = 131 + all_modes_visible = True + support_keyboard_navigation = True + keyboard_nav_left_right = True + + def open_at(self, menu_button, reset_keyboard_nav_index=True): + # set X and Y based on calling menu button's location + self.tile_x = menu_button.x + self.tile_y = menu_button.y + 1 + # determine pulldown width from longest item label length + self.tile_width = 1 + # save shortcuts as we got through + shortcuts = [] + callbacks = [] + # if menu data has an item generator, use it to add to the existing list + # copy list from class though; this function will run many times + items = menu_button.menu_data.items[:] + if menu_button.menu_data.get_items is not PulldownMenuData.get_items: + items += menu_button.menu_data.get_items(self.ui.app) + for item in items: + shortcut,command = self.get_shortcut(item) + shortcuts.append(shortcut) + callbacks.append(command) + # get label, static or dynamic + label = item.label + if item.get_label is not PulldownMenuItem.get_label: + label = item.get_label(self.ui.app) + # item might have already calculated padding, ie from get_items + if item.no_pad: + item_width = len(label) + 2 + # get full width of item, label shortcut and some padding + else: + item_width = len(label) + self.label_shortcut_padding + item_width += len(shortcut) + if item_width > self.tile_width: + self.tile_width = item_width + self.tile_height = len(items) + 2 + self.art.resize(self.tile_width, self.tile_height) + # draw + fg = self.ui.colors.black + self.art.clear_frame_layer(0, 0, self.bg_color, fg) + self.draw_border(menu_button) + # create as many buttons as needed, set their sizes, captions, callbacks + self.buttons = [] + for i,item in enumerate(items): + # skip button creation for separators, just draw a line + if item is SeparatorItem: + for x in range(1, self.tile_width - 1): + self.art.set_tile_at(0, 0, x, i+1, self.border_horizontal_line_char, self.border_color) + continue + button = MenuItemButton(self) + # give button a handle to its item + button.item = item + full_label = item.label + if item.get_label is not PulldownMenuItem.get_label: + # trim output + full_label = item.get_label(self.ui.app) + if not item.no_pad: + full_label += shortcuts[i].rjust(self.tile_width - 2 - len(full_label)) + button.caption = full_label + button.width = len(full_label) + button.x = 1 + button.y = i+1 + button.callback = callbacks[i] + if item.cb_arg is not None: + button.cb_arg = item.cb_arg + # dim items that aren't applicable to current app state + if not item.always_active and item.should_dim(self.ui.app): + button.set_state('dimmed') + button.can_hover = False + self.buttons.append(button) + # set our X and Y, draw buttons, etc + self.reset_loc() + self.reset_art() + # if this menu has special logic for marking items, use it + if not menu_button.menu_data.should_mark_item is PulldownMenuData.should_mark_item: + for i,item in enumerate(items): + if menu_button.menu_data.should_mark_item(item, self.ui): + self.art.set_char_index_at(0, 0, 1, i+1, self.mark_char) + # reset keyboard nav state for popups + if reset_keyboard_nav_index: + self.keyboard_nav_index = 0 + self.keyboard_navigate(0, 0) + self.visible = True + self.ui.keyboard_focus_element = self + + def draw_border(self, menu_button): + "draws a fancy lil frame around the pulldown's edge" + fg = self.border_color + char = self.border_horizontal_line_char + # top/bottom edges + for x in range(self.tile_width): + self.art.set_tile_at(0, 0, x, 0, char, fg) + self.art.set_tile_at(0, 0, x, self.tile_height-1, char, fg) + # left/right edges + char = self.border_vertical_line_char + for y in range(self.tile_height): + self.art.set_tile_at(0, 0, 0, y, char, fg) + self.art.set_tile_at(0, 0, self.tile_width-1, y, char, fg) + # corners: bottom left, bottom right, top right + char = self.border_corner_char + x, y = 0, self.tile_height - 1 + xform = UV_FLIPY + self.art.set_tile_at(0, 0, x, y, char, fg, None, xform) + x = self.tile_width - 1 + xform = UV_ROTATE180 + self.art.set_tile_at(0, 0, x, y, char, fg, None, xform) + y = 0 + xform = UV_FLIPX + self.art.set_tile_at(0, 0, x, y, char, fg, None, xform) + # gap beneath menu bar button + for x in range(1, len(menu_button.caption) + 2): + self.art.set_tile_at(0, 0, x, 0, 0) + self.art.set_tile_at(0, 0, x, 0, char, fg, None, UV_FLIPY) + + def get_shortcut(self, menu_item): + # get InputLord's binding from given menu item's command name, + # return concise string for bind and the actual function it runs. + def null(): + pass + # special handling of SeparatorMenuItem, no command or label + if menu_item is SeparatorItem: + return '', null + binds = self.ui.app.il.edit_binds + for bind_tuple in binds: + command_functions = binds[bind_tuple] + for f in command_functions: + if f.__name__ == 'BIND_%s' % menu_item.command: + shortcut = '' + # shift, alt, ctrl + if bind_tuple[1]: + shortcut += 'Shift-' + if bind_tuple[2]: + shortcut += 'Alt-' + if bind_tuple[3]: + # TODO: cmd vs ctrl for mac vs non + shortcut += 'C-' + # bind strings that start with _ will be disregarded + if not (bind_tuple[0].startswith('_') and len(bind_tuple[0]) > 1): + shortcut += bind_tuple[0] + return shortcut, f + self.ui.app.log('Shortcut/command not found: %s' % menu_item.command) + return '', null diff --git a/ui_menu_pulldown_item.py b/ui_menu_pulldown_item.py new file mode 100644 index 0000000..be62b36 --- /dev/null +++ b/ui_menu_pulldown_item.py @@ -0,0 +1,769 @@ +from renderable import LAYER_VIS_FULL, LAYER_VIS_DIM, LAYER_VIS_NONE + +from ui_tool import PencilTool, EraseTool, RotateTool, GrabTool, TextTool, SelectTool, PasteTool, FillTool + +# +# specific pulldown menu items, eg File > Save, Edit > Copy +# + +class PulldownMenuItem: + # label that displays for this item + label = 'Test Menu Item' + # bindable command we look up from InputLord to get binding text from + command = 'test_command' + # if not None, passed to button's cb_arg + cb_arg = None + # if True, pulldown button creation process won't auto-pad + no_pad = False + # if True, item will never be dimmed + always_active = False + # if True, pulldown will close when this item is selected + close_on_select = False + # item is allowed in Art Mode + art_mode_allowed = True + # item is allowed in Game Mode + game_mode_allowed = True + def should_dim(app): + "returns True if this item should be dimmed based on current application state" + # so many commands are inapplicable with no active art, default to dimming an + # item if this is the case + return app.ui.active_art is None + def get_label(app): + "returns custom generated label based on app state" + return None + +class SeparatorItem(PulldownMenuItem): + "menu separator, non-interactive and handled specially by menu drawing" + pass + +class ArtModePulldownMenuItem(PulldownMenuItem): + # unless overridden, art mode items not allowed in game mode + game_mode_allowed = False + +# +# file menu +# +class FileNewItem(ArtModePulldownMenuItem): + label = 'New…' + command = 'new_art' + always_active = True + +class FileOpenItem(ArtModePulldownMenuItem): + label = 'Open…' + command = 'open_art' + always_active = True + +class FileSaveItem(ArtModePulldownMenuItem): + label = 'Save' + command = 'save_current' + def should_dim(app): + return not app.ui.active_art or not app.ui.active_art.unsaved_changes + +class FileSaveAsItem(ArtModePulldownMenuItem): + label = 'Save As…' + command = 'save_art_as' + def should_dim(app): + return app.ui.active_art is None + +class FileCloseItem(ArtModePulldownMenuItem): + label = 'Close' + command = 'close_art' + def should_dim(app): + return app.ui.active_art is None + +class FileRevertItem(ArtModePulldownMenuItem): + label = 'Revert' + command = 'revert_art' + def should_dim(app): + return app.ui.active_art is None or not app.ui.active_art.unsaved_changes + +class FileImportItem(ArtModePulldownMenuItem): + label = 'Import…' + command = 'import_file' + always_active = True + +class FileExportItem(ArtModePulldownMenuItem): + label = 'Export…' + command = 'export_file' + def should_dim(app): + return app.ui.active_art is None + +class FileExportLastItem(ArtModePulldownMenuItem): + label = 'Export last' + command = 'export_file_last' + def should_dim(app): + return app.ui.active_art is None + +class FileConvertImageItem(ArtModePulldownMenuItem): + label = 'Convert Image…' + command = 'convert_image' + def should_dim(app): + return app.ui.active_art is None + +class FileQuitItem(ArtModePulldownMenuItem): + label = 'Quit' + command = 'quit' + always_active = True + game_mode_allowed = True + +# +# edit menu +# +class EditUndoItem(ArtModePulldownMenuItem): + label = 'Undo' + command = 'undo' + def should_dim(app): + return not app.ui.active_art or len(app.ui.active_art.command_stack.undo_commands) == 0 + +class EditRedoItem(ArtModePulldownMenuItem): + label = 'Redo' + command = 'redo' + def should_dim(app): + return not app.ui.active_art or len(app.ui.active_art.command_stack.redo_commands) == 0 + +class EditCutItem(ArtModePulldownMenuItem): + label = 'Cut' + command = 'cut_selection' + def should_dim(app): + return len(app.ui.select_tool.selected_tiles) == 0 + +class EditCopyItem(ArtModePulldownMenuItem): + label = 'Copy' + command = 'copy_selection' + def should_dim(app): + return len(app.ui.select_tool.selected_tiles) == 0 + +class EditPasteItem(ArtModePulldownMenuItem): + label = 'Paste' + command = 'select_paste_tool' + def should_dim(app): + return len(app.ui.clipboard) == 0 + +class EditDeleteItem(ArtModePulldownMenuItem): + label = 'Clear' + command = 'erase_selection_or_art' + +class EditSelectAllItem(ArtModePulldownMenuItem): + label = 'Select All' + command = 'select_all' + +class EditSelectNoneItem(ArtModePulldownMenuItem): + label = 'Select None' + command = 'select_none' + +class EditSelectInvertItem(ArtModePulldownMenuItem): + label = 'Invert Selection' + command = 'select_invert' + +class EditPreferences(ArtModePulldownMenuItem): + label = 'Preferences…' + command = 'edit_cfg' + +# +# tool menu +# + +class ToolTogglePickerItem(ArtModePulldownMenuItem): + # two spaces in front of each label to leave room for mark + label = 'Show char/color picker' + command = 'toggle_picker' + +class ToolTogglePickerHoldItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'toggle_picker_hold' + def get_label(app): + return 'Picker toggle key: %s' % ['press', 'hold'][app.ui.popup_hold_to_show] + +class ToolSwapSelectedColors(ArtModePulldownMenuItem): + label = 'Swap selected fg/bg colors' + command = 'swap_fg_bg_colors' + +class ToolToggleArtToolbar(ArtModePulldownMenuItem): + label = ' Show toolbar' + command = 'toggle_art_toolbar' + def should_mark(ui): + return ui.art_toolbar.visible + +class ToolPaintItem(ArtModePulldownMenuItem): + # two spaces in front of each label to leave room for mark + label = ' %s' % PencilTool.button_caption + command = 'select_pencil_tool' + +class ToolEraseItem(ArtModePulldownMenuItem): + label = ' %s' % EraseTool.button_caption + command = 'select_erase_tool' + +class ToolRotateItem(ArtModePulldownMenuItem): + label = ' %s' % RotateTool.button_caption + command = 'select_rotate_tool' + +class ToolGrabItem(ArtModePulldownMenuItem): + label = ' %s' % GrabTool.button_caption + command = 'select_grab_tool' + +class ToolTextItem(ArtModePulldownMenuItem): + label = ' %s' % TextTool.button_caption + command = 'select_text_tool' + +class ToolSelectItem(ArtModePulldownMenuItem): + label = ' %s' % SelectTool.button_caption + command = 'select_select_tool' + +class ToolPasteItem(ArtModePulldownMenuItem): + label = ' %s' % PasteTool.button_caption + command = 'select_paste_tool' + +class ToolFillItem(ArtModePulldownMenuItem): + label = ' %s' % FillTool.button_caption + command = 'select_fill_tool' + +class ToolIncreaseBrushSizeItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'increase_brush_size' + def should_dim(app): + # dim this item for tools where brush size doesn't apply + if not app.ui.active_art or not app.ui.selected_tool.brush_size: + return True + def get_label(app): + if not app.ui.selected_tool.brush_size: + return 'Increase brush size' + size = app.ui.selected_tool.brush_size + 1 + return 'Increase brush size to %s' % size + +class ToolDecreaseBrushSizeItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'decrease_brush_size' + def should_dim(app): + if not app.ui.active_art or not app.ui.selected_tool.brush_size: + return True + return app.ui.selected_tool.brush_size <= 1 + def get_label(app): + if not app.ui.selected_tool.brush_size: + return 'Decrease brush size' + size = app.ui.selected_tool.brush_size - 1 + return 'Decrease brush size to %s' % size + +class ToolSettingsItem(ArtModePulldownMenuItem): + # base class for tool settings toggle items + def should_dim(app): + # blacklist specific tools + return not app.ui.active_art or type(app.ui.selected_tool) in [SelectTool] + +class ToolToggleAffectsCharItem(ToolSettingsItem): + label = ' Affects: character' + command = 'toggle_affects_char' + def should_mark(ui): + return ui.selected_tool.affects_char + +class ToolToggleAffectsFGItem(ToolSettingsItem): + label = ' Affects: foreground color' + command = 'toggle_affects_fg' + def should_mark(ui): + return ui.selected_tool.affects_fg_color + +class ToolToggleAffectsBGItem(ToolSettingsItem): + label = ' Affects: background color' + command = 'toggle_affects_bg' + def should_mark(ui): + return ui.selected_tool.affects_bg_color + +class ToolToggleAffectsXformItem(ToolSettingsItem): + label = ' Affects: character xform' + command = 'toggle_affects_xform' + def should_mark(ui): + return ui.selected_tool.affects_xform + +# cycle between the 3 different fill boundary types +class ToolSetFillBoundariesItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'cycle_fill_boundary_mode' + def should_dim(app): + return not type(app.ui.selected_tool) is FillTool + def get_label(app): + return 'Fill tool bounded by: %s' % app.ui.fill_tool.boundary_mode_names[app.ui.fill_tool.boundary_mode] + + +# +# view menu +# +class ViewToggleCRTItem(ArtModePulldownMenuItem): + label = ' CRT filter' + command = 'toggle_crt' + game_mode_allowed = True + def should_dim(app): + return app.fb.disable_crt + def should_mark(ui): + return ui.app.fb.crt + +class ViewToggleGridItem(ArtModePulldownMenuItem): + label = ' Grid' + command = 'toggle_grid_visibility' + game_mode_allowed = True + def should_mark(ui): + return ui.app.grid.visible + +class ViewBGTextureItem(ArtModePulldownMenuItem): + label = ' Textured background' + command = 'toggle_bg_texture' + always_active = True + def should_mark(ui): + return ui.app.show_bg_texture + +class ViewToggleZoomExtentsItem(ArtModePulldownMenuItem): + label = ' Zoom to Art extents' + command = 'toggle_zoom_extents' + def should_mark(ui): + return ui.active_art and ui.active_art.camera_zoomed_extents + +class ViewZoomInItem(ArtModePulldownMenuItem): + label = 'Zoom in' + command = 'camera_zoom_in_proportional' + +class ViewZoomOutItem(ArtModePulldownMenuItem): + label = 'Zoom out' + command = 'camera_zoom_out_proportional' + +class ViewSetZoomItem(ArtModePulldownMenuItem): + label = 'Set camera zoom…' + command = 'set_camera_zoom' + +class ViewToggleCameraTiltItem(ArtModePulldownMenuItem): + label = ' Camera tilt' + command = 'toggle_camera_tilt' + always_active = True + game_mode_allowed = True + def should_mark(ui): + return ui.app.camera.y_tilt != 0 + +class ViewSetOverlayImageItem(ArtModePulldownMenuItem): + label = 'Set overlay image…' + command = 'select_overlay_image' + +class ViewToggleOverlayImageItem(ArtModePulldownMenuItem): + label = ' Toggle overlay image' + command = 'toggle_overlay_image' + def should_mark(ui): + return ui.app.draw_overlay + def should_dim(app): + return app.overlay_renderable is None + +class ViewSetOverlayImageOpacityItem(ArtModePulldownMenuItem): + label = 'Set overlay image opacity…' + command = 'set_overlay_image_opacity' + def should_dim(app): + return app.overlay_renderable is None or not app.draw_overlay + +class ViewSetOverlayImageScalingItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'set_overlay_image_scaling' + def get_label(app): + return 'Overlay image scaling: %s' % ['width', 'height', 'fill'][app.overlay_scale_type] + def should_dim(app): + return app.overlay_renderable is None or not app.draw_overlay + +# +# art menu +# +class ArtOpenAllGameAssetsItem(ArtModePulldownMenuItem): + label = 'Open all Game Mode assets' + command = 'open_all_game_assets' + def should_dim(app): + return len(app.gw.objects) == 0 + +class ArtPreviousItem(ArtModePulldownMenuItem): + label = 'Previous Art' + command = 'previous_art' + def should_dim(app): + return len(app.art_loaded_for_edit) < 2 + +class ArtNextItem(ArtModePulldownMenuItem): + label = 'Next Art' + command = 'next_art' + def should_dim(app): + return len(app.art_loaded_for_edit) < 2 + +class ArtCropToSelectionItem(ArtModePulldownMenuItem): + label = 'Crop to selection' + command = 'crop_to_selection' + def should_dim(app): + return len(app.ui.select_tool.selected_tiles) == 0 + +class ArtResizeItem(ArtModePulldownMenuItem): + label = 'Resize…' + command = 'resize_art' + +class ArtFlipHorizontal(ArtModePulldownMenuItem): + label = 'Flip horizontally' + command = 'art_flip_horizontal' + +class ArtFlipVertical(ArtModePulldownMenuItem): + label = 'Flip vertically' + command = 'art_flip_vertical' + +class ArtToggleFlipAffectsXforms(ArtModePulldownMenuItem): + label = ' Flip affects xforms' + command = 'art_toggle_flip_affects_xforms' + def should_mark(ui): + return ui.flip_affects_xforms + +class ArtRunScriptItem(ArtModePulldownMenuItem): + label = 'Run Artscript…' + command = 'run_art_script' + +class ArtRunLastScriptItem(ArtModePulldownMenuItem): + label = 'Run last Artscript' + command = 'run_art_script_last' + def should_dim(app): + return app.last_art_script is None + +# +# frame menu +# +class FramePreviousItem(ArtModePulldownMenuItem): + label = 'Previous frame' + command = 'previous_frame' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.frames < 2 + +class FrameNextItem(ArtModePulldownMenuItem): + label = 'Next frame' + command = 'next_frame' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.frames < 2 + +class FrameTogglePlaybackItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'toggle_anim_playback' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.frames < 2 + def get_label(app): + if not app.ui.active_art: + return 'Start animation playback' + animating = app.ui.active_art.renderables[0].animating + return ['Start', 'Stop'][animating] + ' animation playback' + +class FrameToggleOnionItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'toggle_onion_visibility' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.frames < 2 + def get_label(app): + l = '%s onion skin frames' % ['Show', 'Hide'][app.onion_frames_visible] + return l + +class FrameCycleOnionFramesItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'cycle_onion_frames' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.frames < 2 + def get_label(app): + return 'Number of onion frames: %s' % app.onion_show_frames + +class FrameCycleOnionDisplayItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'cycle_onion_ahead_behind' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.frames < 2 + def get_label(app): + if app.onion_show_frames_behind and app.onion_show_frames_ahead: + display = 'Next & Previous' + elif app.onion_show_frames_behind: + display = 'Previous' + else: + display = 'Next' + return 'Onion frames show: %s' % display + +class FrameAddFrameItem(ArtModePulldownMenuItem): + label = 'Add frame…' + command = 'add_frame' + +class FrameDuplicateFrameItem(ArtModePulldownMenuItem): + label = 'Duplicate this frame…' + command = 'duplicate_frame' + +class FrameChangeDelayItem(ArtModePulldownMenuItem): + label = "Change this frame's hold time…" + command = 'change_frame_delay' + +class FrameChangeDelayAllItem(ArtModePulldownMenuItem): + label = "Change all frames' hold times…" + command = 'change_frame_delay_all' + +class FrameChangeIndexItem(ArtModePulldownMenuItem): + label = "Change this frame's index…" + command = 'change_frame_index' + +class FrameDeleteFrameItem(ArtModePulldownMenuItem): + label = 'Delete this frame' + command = 'delete_frame' + def should_dim(app): + # don't delete last frame + return not app.ui.active_art or app.ui.active_art.frames < 2 + +# +# layer menu +# +class LayerAddItem(ArtModePulldownMenuItem): + label = "Add layer…" + command = 'add_layer' + +class LayerDuplicateItem(ArtModePulldownMenuItem): + label = "Duplicate this layer…" + command = 'duplicate_layer' + +class LayerSetNameItem(ArtModePulldownMenuItem): + label = "Change this layer's name…" + command = 'change_layer_name' + +class LayerSetZItem(ArtModePulldownMenuItem): + label = "Change this layer's Z-depth…" + command = 'change_layer_z' + +class LayerToggleVisibleItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'toggle_layer_visibility' + def get_label(app): + if not app.ui.active_art: + return 'Show this layer (Game Mode)' + visible = app.ui.active_art.layers_visibility[app.ui.active_art.active_layer] + return ['Show', 'Hide'][visible] + ' this layer (Game Mode)' + +class LayerDeleteItem(ArtModePulldownMenuItem): + label = "Delete this layer" + command = 'delete_layer' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.layers < 2 + +class LayerSetInactiveVizItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'cycle_inactive_layer_visibility' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.layers < 2 + def get_label(app): + l = 'Inactive layers: ' + if app.inactive_layer_visibility == LAYER_VIS_FULL: + return l + 'Visible' + elif app.inactive_layer_visibility == LAYER_VIS_DIM: + return l + 'Dim' + elif app.inactive_layer_visibility == LAYER_VIS_NONE: + return l + 'Invisible' + +class LayerShowHiddenItem(ArtModePulldownMenuItem): + label = 'blah' + command = 'toggle_hidden_layers_visible' + def get_label(app): + l = 'Art Mode-only layers: ' + l += ['Hidden', 'Visible'][app.show_hidden_layers] + return l + +class LayerPreviousItem(ArtModePulldownMenuItem): + label = 'Previous layer' + command = 'previous_layer' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.layers < 2 + +class LayerNextItem(ArtModePulldownMenuItem): + label = 'Next layer' + command = 'next_layer' + def should_dim(app): + return not app.ui.active_art or app.ui.active_art.layers < 2 + +# +# char/color menu +# +class ChooseCharSetItem(ArtModePulldownMenuItem): + label = 'Choose character set…' + command = 'choose_charset' + +class ChoosePaletteItem(ArtModePulldownMenuItem): + label = 'Choose palette…' + command = 'choose_palette' + +class PaletteFromImageItem(ArtModePulldownMenuItem): + label = 'Palette from image…' + command = 'palette_from_file' + always_active = True + +# +# help menu +# +class HelpDocsItem(ArtModePulldownMenuItem): + label = 'Help (in browser)' + command = 'open_help_docs' + always_active = True + close_on_select = True + game_mode_allowed = True + +class HelpGenerateDocsItem(ArtModePulldownMenuItem): + label = 'Generate documentation' + command = 'generate_docs' + close_on_select = True + def should_dim(app): + return not app.pdoc_available + +class HelpWebsiteItem(ArtModePulldownMenuItem): + label = 'Playscii website' + command = 'open_website' + always_active = True + close_on_select = True + +# +# menu data +# +class PulldownMenuData: + "data for pulldown menus, eg File, Edit, etc; mainly a list of menu items" + items = [] + def should_mark_item(item, ui): + "returns True if this item should be marked, subclasses have custom logic here" + return False + def get_items(app): + """ + returns a list of items generated from app state, used for + dynamically-generated items + """ + return [] + +class FileMenuData(PulldownMenuData): + items = [FileNewItem, FileOpenItem, FileSaveItem, FileSaveAsItem, + FileCloseItem, FileRevertItem, SeparatorItem, FileImportItem, + FileExportItem, FileExportLastItem, SeparatorItem, FileQuitItem] + +class EditMenuData(PulldownMenuData): + items = [EditUndoItem, EditRedoItem, SeparatorItem, + EditCutItem, EditCopyItem, EditPasteItem, EditDeleteItem, + SeparatorItem, EditSelectAllItem, + EditSelectNoneItem, EditSelectInvertItem, SeparatorItem, + EditPreferences] + +class ToolMenuData(PulldownMenuData): + items = [ToolTogglePickerItem, ToolTogglePickerHoldItem, + ToolSwapSelectedColors, ToolToggleArtToolbar, SeparatorItem, + ToolPaintItem, ToolEraseItem, ToolRotateItem, ToolGrabItem, + ToolTextItem, ToolSelectItem, ToolPasteItem, ToolFillItem, SeparatorItem, + ToolIncreaseBrushSizeItem, ToolDecreaseBrushSizeItem, + ToolToggleAffectsCharItem, ToolToggleAffectsFGItem, + ToolToggleAffectsBGItem, ToolToggleAffectsXformItem, SeparatorItem, + ToolSetFillBoundariesItem + ] + # TODO: cycle char/color/xform items? + # TODO: generate list from UI.tools instead of manually specified MenuItems + def should_mark_item(item, ui): + # if it's a tool setting toggle, use its own mark check function + if item.__bases__[0] is ToolSettingsItem: + return item.should_mark(ui) + elif hasattr(item, 'should_mark'): # toolbar toggle, etc + return item.should_mark(ui) + return item.label == ' %s' % ui.selected_tool.button_caption + +class ViewMenuData(PulldownMenuData): + items = [ViewToggleCRTItem, ViewToggleGridItem, ViewBGTextureItem, + SeparatorItem, + ViewToggleZoomExtentsItem, ViewZoomInItem, ViewZoomOutItem, + ViewSetZoomItem, ViewToggleCameraTiltItem, SeparatorItem, + ViewSetOverlayImageItem, ViewToggleOverlayImageItem, + ViewSetOverlayImageOpacityItem, ViewSetOverlayImageScalingItem + ] + + def should_mark_item(item, ui): + if hasattr(item, 'should_mark'): + return item.should_mark(ui) + return False + +class ArtMenuData(PulldownMenuData): + items = [ArtResizeItem, ArtCropToSelectionItem, + ArtFlipHorizontal, ArtFlipVertical, ArtToggleFlipAffectsXforms, + SeparatorItem, + ArtRunScriptItem, ArtRunLastScriptItem, SeparatorItem, + ArtOpenAllGameAssetsItem, SeparatorItem, + ArtPreviousItem, ArtNextItem, SeparatorItem] + + def should_mark_item(item, ui): + "show checkmark for active art" + if hasattr(item, 'should_mark'): + return item.should_mark(ui) + return ui.active_art and ui.active_art.filename == item.cb_arg + + def get_items(app): + "turn each loaded art into a menu item" + items = [] + for art in app.art_loaded_for_edit: + # class just being used to store data, no need to spawn it + class TempMenuItemClass(ArtModePulldownMenuItem): pass + item = TempMenuItemClass + # leave spaces for mark + item.label = ' %s' % art.filename + item.command = 'art_switch_to' + item.cb_arg = art.filename + # order list by art's time loaded + item.time_loaded = art.time_loaded + items.append(item) + items.sort(key=lambda item: item.time_loaded) + return items + + +class FrameMenuData(PulldownMenuData): + items = [FrameAddFrameItem, FrameDuplicateFrameItem, + FrameChangeDelayItem, FrameChangeDelayAllItem, + FrameChangeIndexItem, FrameDeleteFrameItem, SeparatorItem, + FrameTogglePlaybackItem, FramePreviousItem, FrameNextItem, + SeparatorItem, + FrameToggleOnionItem, FrameCycleOnionFramesItem, + FrameCycleOnionDisplayItem] + + +class LayerMenuData(PulldownMenuData): + + items = [LayerAddItem, LayerDuplicateItem, LayerSetNameItem, LayerSetZItem, + LayerDeleteItem, SeparatorItem, + LayerSetInactiveVizItem, LayerPreviousItem,LayerNextItem, + SeparatorItem, LayerToggleVisibleItem, LayerShowHiddenItem, + SeparatorItem] + + def should_mark_item(item, ui): + "show checkmark for active art" + if not ui.active_art: + return False + return ui.active_art.active_layer == item.cb_arg + + def get_items(app): + "turn each layer into a menu item" + items = [] + if not app.ui.active_art: + return items + # first determine longest line to set width of items + longest_line = 0 + for layer_name in app.ui.active_art.layer_names: + if len(layer_name) > longest_line: + longest_line = len(layer_name) + # check non-generated menu items too + for item in LayerMenuData.items: + if len(item.label) + 1 > longest_line: + longest_line = len(item.label) + 1 + # cap at max allowed line length + longest_line = min(longest_line, 50) + for i,layer_name in enumerate(app.ui.active_art.layer_names): + class TempMenuItemClass(ArtModePulldownMenuItem): pass + item = TempMenuItemClass + # leave spaces for mark + item.label = ' %s' % layer_name + if not app.ui.active_art.layers_visibility[i]: + item.label += ' (hidden)' + # pad, put Z depth on far right + item.label = item.label.ljust(longest_line) + # trim to keep below a max length + item.label = item.label[:longest_line] + # spaces between layer name and z depth + item.label += 'z:%.2f' % app.ui.active_art.layers_z[i] + # tell PulldownMenu's button creation process not to auto-pad + item.no_pad = True + item.command = 'layer_switch_to' + item.cb_arg = i + items.append(item) + return items + +class CharColorMenuData(PulldownMenuData): + items = [ChooseCharSetItem, ChoosePaletteItem, SeparatorItem, + PaletteFromImageItem] + +class HelpMenuData(PulldownMenuData): + items = [HelpDocsItem, HelpGenerateDocsItem, HelpWebsiteItem] diff --git a/ui_object_panel.py b/ui_object_panel.py new file mode 100644 index 0000000..70ae028 --- /dev/null +++ b/ui_object_panel.py @@ -0,0 +1,227 @@ +import os + +from ui_button import UIButton, TEXT_RIGHT +from ui_edit_panel import GamePanel +from ui_dialog import UIDialog, Field +from ui_colors import UIColors + + +class ResetObjectButton(UIButton): + caption = 'Reset object properties' + caption_justify = TEXT_RIGHT + def selected(button): + world = button.element.world + world.reset_object_in_place(world.selected_objects[0]) + + +class EditObjectPropertyDialog(UIDialog): + + "dialog invoked by panel property click, modified at runtime as needed" + base_title = 'Set %s' + field0_base_label = 'New %s for %s:' + field_width = UIDialog.default_field_width + fields = [ + Field(label=field0_base_label, type=str, width=field_width, oneline=False) + ] + confirm_caption = 'Set' + center_in_window = False + game_mode_visible = True + + def is_input_valid(self): + try: self.fields[0].type(self.field_texts[0]) + except: return False, '' + return True, None + + def confirm_pressed(self): + valid, reason = self.is_input_valid() + if not valid: return + # set property for selected object(s) + new_value = self.fields[0].type(self.field_texts[0]) + for obj in self.ui.app.gw.selected_objects: + obj.set_object_property(self.item.prop_name, new_value) + self.dismiss() + # restore keyboard focus to edit panel + self.ui.keyboard_focus_element = self.ui.edit_object_panel + + +class EditObjectPropertyButton(UIButton): + caption_justify = TEXT_RIGHT + + +class PropertyItem: + multi_value_text = '[various]' + + def __init__(self, prop_name): + self.prop_name = prop_name + # property value & type filled in after creation + self.prop_value = None + self.prop_type = None + def set_value(self, value): + # convert value to a button-friendly string + if type(value) is float: + valstr = '%.3f' % value + # non-fixed decimal version may be shorter, if so use it + if len(str(value)) < len(valstr): + valstr = str(value) + elif type(value) is str: + # file? shorten to basename minus extension + if os.path.exists: + valstr = os.path.basename(value) + valstr = os.path.splitext(valstr)[0] + else: + valstr = value + else: + valstr = str(value) + # if values vary across objects use [various] + if self.prop_value is not None and self.prop_value != valstr: + self.prop_value = self.multi_value_text + else: + self.prop_value = valstr + + +class EditObjectPanel(GamePanel): + + "panel showing info for selected game object" + tile_width = 36 + tile_height = 36 + snap_right = True + text_left = False + base_button_classes = [ResetObjectButton] + + def __init__(self, ui): + self.base_buttons = [] + self.property_buttons = [] + GamePanel.__init__(self, ui) + + def create_buttons(self): + # buttons for persistent unique commands, eg reset object + for i,button_class in enumerate(self.base_button_classes): + button = button_class(self) + button.caption += ' ' + button.width = self.tile_width + button.y = i + 1 + button.callback = button.selected + if button.clear_before_caption_draw: + button.refresh_caption() + self.base_buttons.append(button) + def callback(item=None): + if not item: return + self.clicked_item(item) + for y in range(self.tile_height - len(self.base_buttons) - 1): + button = EditObjectPropertyButton(self) + button.y = y + len(self.base_buttons) + 1 + # button.cb_arg set in refresh_items + button.callback = callback + # below properties reset every update + button.caption = str(y + 1) + button.width = 10 + self.property_buttons.append(button) + self.buttons = self.base_buttons[:] + self.property_buttons[:] + + def clicked_item(self, item): + # if property is a bool just toggle/set it, no need for a dialog + if item.prop_type is bool: + for obj in self.world.selected_objects: + # if multiple object values vary, set it True + if item.prop_value == PropertyItem.multi_value_text: + obj.set_object_property(item.prop_name, True) + else: + val = getattr(obj, item.prop_name) + obj.set_object_property(item.prop_name, not val) + return + # set dialog values appropriate to property being edited + EditObjectPropertyDialog.title = EditObjectPropertyDialog.base_title % item.prop_name + + # can't set named tuple values directly, build a new one and set it + old_field = EditObjectPropertyDialog.fields[0] + new_label = EditObjectPropertyDialog.field0_base_label % (item.prop_type.__name__, item.prop_name) + new_type = item.prop_type + # if None, assume string + if item.prop_type is type(None): + new_type = str + new_field = Field(label=new_label, type=new_type, width=old_field.width, + oneline=old_field.oneline) + EditObjectPropertyDialog.fields[0] = new_field + + tile_x = int(self.ui.width_tiles * self.ui.scale) - self.tile_width + tile_x -= EditObjectPropertyDialog.tile_width + # give dialog a handle to item + EditObjectPropertyDialog.item = item + self.ui.open_dialog(EditObjectPropertyDialog) + self.ui.active_dialog.field_texts[0] = str(item.prop_value) + self.ui.active_dialog.tile_x, self.ui.active_dialog.tile_y = tile_x, self.tile_y + self.ui.active_dialog.reset_loc() + + def get_label(self): + # if 1 object seleted, show its name; if >1 selected, show # + selected = len(self.world.selected_objects) + # panel shouldn't draw when nothing selected, fill in anyway + if selected == 0: + return '[nothing selected]' + elif selected == 1 and self.world.selected_objects[0]: + return self.world.selected_objects[0].name + else: + return '[%s selected]' % selected + + def refresh_items(self): + if len(self.world.selected_objects) == 0: + return + # get list of unique properties across all selected objects + propnames = [] + for obj in self.world.selected_objects: + # sometimes object deselect puts None into this list + # TODO: understand why, fix if needed + if obj is None: + continue + for propname in obj.serialized + obj.editable: + if not propname in propnames: + propnames.append(propname) + # build list of items from properties + items = [] + for propname in propnames: + item = PropertyItem(propname) + for obj in self.world.selected_objects: + if hasattr(obj, propname): + # fill in type and value + if item.prop_type is None: + item.prop_type = type(getattr(obj, propname)) + item.set_value(getattr(obj, propname)) + items.append(item) + # set each line + for i,b in enumerate(self.property_buttons): + item = None + if i < len(items): + item = items[i] + self.draw_property_line(b, i, item) + self.draw_buttons() + + def draw_property_line(self, button, button_index, item): + "set button + label appearance correctly" + y = button_index + len(self.base_buttons) + 1 + self.art.clear_line(0, 0, y, self.fg_color, self.bg_color) + if item is None: + button.caption = '' + button.cb_arg = None + button.can_hover = False + return + # set button caption, width, x based on value + button.caption = '%s ' % item.prop_value + button.width = len(button.caption) + 1 + button.x = self.tile_width - button.width + button.cb_arg = item + button.can_hover = True + # set non-button text to the left correctly + x = button.x + 1 + label = '%s: ' % item.prop_name + self.art.write_string(0, 0, x, y, label, UIColors.darkgrey, None, True) + + def update(self): + # redraw contents every update + if self.is_visible(): + self.draw_titlebar() + self.refresh_items() + GamePanel.update(self) + self.renderable.alpha = 1 if self is self.ui.keyboard_focus_element else 0.5 + + def is_visible(self): + return GamePanel.is_visible(self) and len(self.world.selected_objects) > 0 diff --git a/ui_popup.py b/ui_popup.py new file mode 100644 index 0000000..523b87f --- /dev/null +++ b/ui_popup.py @@ -0,0 +1,681 @@ + +from ui_element import UIElement, UIArt, UIRenderable +from ui_button import UIButton, TEXT_LEFT, TEXT_CENTER, TEXT_RIGHT +from ui_swatch import CharacterSetSwatch, PaletteSwatch, MIN_CHARSET_WIDTH +from ui_colors import UIColors +from ui_tool import FillTool, FILL_BOUND_CHAR, FILL_BOUND_FG_COLOR, FILL_BOUND_BG_COLOR +from renderable_line import LineRenderable, SwatchSelectionBoxRenderable +from art import UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270, UV_FLIPX, UV_FLIPY +from ui_file_chooser_dialog import CharSetChooserDialog, PaletteChooserDialog + +TOOL_PANE_WIDTH = 10 + +class ToolTabButton(UIButton): + x, y = 0, 0 + caption_y = 1 + # width is set on the fly by popup size in reset_art + height = 3 + caption_justify = TEXT_CENTER + caption = 'Tools' + +class CharColorTabButton(UIButton): + caption_y = 1 + height = ToolTabButton.height + caption_justify = TEXT_CENTER + caption = 'Chars/Colors' + +# charset view scale up/down buttons + +class CharSetScaleUpButton(UIButton): + width, height = 3, 1 + x, y = -width, ToolTabButton.height + 1 + caption = '+' + caption_justify = TEXT_CENTER + +class CharSetScaleDownButton(CharSetScaleUpButton): + x = -CharSetScaleUpButton.width + CharSetScaleUpButton.x + caption = '-' + +# charset flip / rotate buttons + +class CharXformButton(UIButton): + hovered_fg_color = UIColors.white + hovered_bg_color = UIColors.medgrey + +class CharFlipNoButton(CharXformButton): + x = 3 + len('Flip:') + 1 + y = CharSetScaleUpButton.y + 1 + caption = 'None' + width = len(caption) + 2 + caption_justify = TEXT_CENTER + +class CharFlipXButton(CharFlipNoButton): + x = CharFlipNoButton.x + CharFlipNoButton.width + 1 + width = 3 + caption = 'X' + +class CharFlipYButton(CharFlipXButton): + x = CharFlipXButton.x + CharFlipXButton.width + 1 + caption = 'Y' + +class CharRot0Button(CharXformButton): + x = 3 + len('Rotation:') + 1 + y = CharFlipNoButton.y + 1 + width = 3 + caption = '0' + caption_justify = TEXT_CENTER + +class CharRot90Button(CharRot0Button): + x = CharRot0Button.x + CharRot0Button.width + 1 + width = 4 + caption = '90' + +class CharRot180Button(CharRot0Button): + x = CharRot90Button.x + CharRot90Button.width + 1 + width = 5 + caption = '180' + +class CharRot270Button(CharRot0Button): + x = CharRot180Button.x + CharRot180Button.width + 1 + width = 5 + caption = '270' + +# tool and tool settings buttons + +class ToolButton(UIButton): + "a tool entry in the tool tab's left hand pane. populated from UI.tools" + width = TOOL_PANE_WIDTH + caption = 'TOOLZ' + y = ToolTabButton.height + 2 + +class BrushSizeUpButton(UIButton): + width = 3 + y = ToolTabButton.height + 3 + caption = '+' + caption_justify = TEXT_CENTER + normal_fg_color = UIColors.white + normal_bg_color = UIColors.medgrey + +class BrushSizeDownButton(BrushSizeUpButton): + caption = '-' + +class AffectCharToggleButton(UIButton): + width = 3 + x = TOOL_PANE_WIDTH + 2 + y = BrushSizeUpButton.y + 3 + # don't paint caption from string + should_draw_caption = False + normal_fg_color = UIColors.white + normal_bg_color = UIColors.medgrey + +class AffectFgToggleButton(AffectCharToggleButton): + y = AffectCharToggleButton.y + 1 + +class AffectBgToggleButton(AffectCharToggleButton): + y = AffectCharToggleButton.y + 2 + +class AffectXformToggleButton(AffectCharToggleButton): + y = AffectCharToggleButton.y + 3 + +# fill boundary mode items +class FillBoundaryModeCharButton(AffectCharToggleButton): + y = AffectXformToggleButton.y + 3 + +class FillBoundaryModeFGButton(AffectCharToggleButton): + y = FillBoundaryModeCharButton.y + 1 + +class FillBoundaryModeBGButton(AffectCharToggleButton): + y = FillBoundaryModeCharButton.y + 2 + + +# charset / palette chooser buttons + +class CharSetChooserButton(UIButton): + caption = 'Set:' + x = 1 + normal_fg_color = UIColors.black + normal_bg_color = UIColors.white + hovered_fg_color = UIColors.white + hovered_bg_color = UIColors.medgrey + +class PaletteChooserButton(CharSetChooserButton): + caption = 'Palette:' + + +TAB_TOOLS = 0 +TAB_CHAR_COLOR = 1 + + +class ToolPopup(UIElement): + + visible = False + # actual width will be based on character set + palette size and scale + tile_width, tile_height = 20, 15 + tab_height = ToolTabButton.height + swatch_margin = 0.05 + fg_color = UIColors.black + bg_color = UIColors.lightgrey + highlight_color = UIColors.white + tool_settings_label = 'Tool Settings:' + brush_size_label = 'Brush size:' + affects_heading_label = 'Affects:' + affects_char_label = 'Character' + affects_fg_label = 'Foreground Color' + affects_bg_label = 'Background Color' + affects_xform_label = 'Rotation/Flip' + fill_boundary_modes_label = 'Fill boundary mode:' + fill_boundary_char_label = affects_char_label + fill_boundary_fg_label = affects_fg_label + fill_boundary_bg_label = affects_bg_label + flip_label = 'Flip:' + rotation_label = 'Rotation:' + # index of check mark character in UI charset + check_char_index = 131 + # index of off and on radio button characters in UI charset + radio_char_0_index = 126 + radio_char_1_index = 127 + # map classes to member names / callbacks + button_names = { + ToolTabButton: 'tool_tab', + CharColorTabButton: 'char_color_tab', + } + char_color_tab_button_names = { + CharSetScaleUpButton: 'scale_charset_up', + CharSetScaleDownButton: 'scale_charset_down', + CharSetChooserButton: 'choose_charset', + CharFlipNoButton: 'xform_normal', + CharFlipXButton: 'xform_flipX', + CharFlipYButton: 'xform_flipY', + CharRot0Button: 'xform_0', + CharRot90Button: 'xform_90', + CharRot180Button: 'xform_180', + CharRot270Button: 'xform_270', + PaletteChooserButton: 'choose_palette', + } + tool_tab_button_names = { + BrushSizeUpButton: 'brush_size_up', + BrushSizeDownButton: 'brush_size_down', + AffectCharToggleButton: 'toggle_affect_char', + AffectFgToggleButton: 'toggle_affect_fg', + AffectBgToggleButton: 'toggle_affect_bg', + AffectXformToggleButton: 'toggle_affect_xform', + } + fill_boundary_mode_button_names = { + FillBoundaryModeCharButton: 'set_fill_boundary_char', + FillBoundaryModeFGButton: 'set_fill_boundary_fg', + FillBoundaryModeBGButton: 'set_fill_boundary_bg' + } + + def __init__(self, ui): + self.ui = ui + self.charset_swatch = CharacterSetSwatch(ui, self) + self.palette_swatch = PaletteSwatch(ui, self) + self.cursor_box = SwatchSelectionBoxRenderable(ui.app, self.charset_swatch.art) + self.renderables = [self.cursor_box] + # set by swatch.set_cursor_loc based on selection validity + self.cursor_char = -1 + self.cursor_color = -1 + self.active_tab = TAB_CHAR_COLOR + # create buttons from button:name map, button & callback names generated + # group these into lists that can be combined into self.buttons + self.common_buttons = self.create_buttons_from_map(self.button_names) + self.char_color_tab_buttons = self.create_buttons_from_map(self.char_color_tab_button_names) + self.fill_boundary_mode_buttons = self.create_buttons_from_map(self.fill_boundary_mode_button_names) + self.tool_tab_buttons = self.create_buttons_from_map(self.tool_tab_button_names) + self.fill_boundary_mode_buttons + # populate more tool tab buttons from UI's list of tools + # similar to create_buttons_from_map, but class name isn't known + # MAYBE-TODO: is there a way to unify this? + for tool in self.ui.tools: + tool_button = ToolButton(self) + # caption: 1-space padding from left + tool_button.caption = ' %s' % tool.button_caption + tool_button_name = '%s_tool_button' % tool.name + setattr(self, tool_button_name, tool_button) + cb_name = '%s_pressed' % tool_button_name + tool_button.callback = getattr(self, cb_name) + # set a special property UI can refer to + tool_button.tool_name = tool.name + self.tool_tab_buttons.append(tool_button) + UIElement.__init__(self, ui) + # set initial tab state + self.char_color_tab_button_pressed() + self.xform_0_button.normal_bg_color = self.xform_normal_button.normal_bg_color = self.highlight_color + + def create_buttons_from_map(self, button_dict): + buttons = [] + for button_class in button_dict: + button = button_class(self) + button_name = '%s_button' % button_dict[button_class] + setattr(self, button_name, button) + cb_name = '%s_pressed' % button_name + button.callback = getattr(self, cb_name) + buttons.append(button) + return buttons + + def tool_tab_button_pressed(self): + self.active_tab = TAB_TOOLS + self.char_color_tab_button.can_hover = True + self.char_color_tab_button.dimmed = True + self.tool_tab_button.can_hover = False + self.tool_tab_button.dimmed = False + self.buttons = self.common_buttons + self.tool_tab_buttons + self.draw_tool_tab() + self.draw_buttons() + + def char_color_tab_button_pressed(self): + self.active_tab = TAB_CHAR_COLOR + self.tool_tab_button.can_hover = True + self.tool_tab_button.dimmed = True + self.char_color_tab_button.can_hover = False + self.char_color_tab_button.dimmed = False + self.buttons = self.common_buttons + self.char_color_tab_buttons + self.draw_char_color_tab() + self.draw_buttons() + + def scale_charset_up_button_pressed(self): + self.charset_swatch.increase_scale() + self.reset_art() + self.charset_swatch.reset_loc() + self.palette_swatch.reset_loc() + + def scale_charset_down_button_pressed(self): + self.charset_swatch.decrease_scale() + self.reset_art() + self.charset_swatch.reset_loc() + self.palette_swatch.reset_loc() + + def brush_size_up_button_pressed(self): + # any changes to tool's setting will force redraw of settings tab + self.ui.selected_tool.increase_brush_size() + + def brush_size_down_button_pressed(self): + self.ui.selected_tool.decrease_brush_size() + + def toggle_affect_char_button_pressed(self): + self.ui.selected_tool.toggle_affects_char() + + def toggle_affect_fg_button_pressed(self): + self.ui.selected_tool.toggle_affects_fg() + + def toggle_affect_bg_button_pressed(self): + self.ui.selected_tool.toggle_affects_bg() + + def toggle_affect_xform_button_pressed(self): + self.ui.selected_tool.toggle_affects_xform() + + def set_fill_boundary_char_button_pressed(self): + self.ui.fill_tool.boundary_mode = FILL_BOUND_CHAR + self.ui.tool_settings_changed = True + + def set_fill_boundary_fg_button_pressed(self): + self.ui.fill_tool.boundary_mode = FILL_BOUND_FG_COLOR + self.ui.tool_settings_changed = True + + def set_fill_boundary_bg_button_pressed(self): + self.ui.fill_tool.boundary_mode = FILL_BOUND_BG_COLOR + self.ui.tool_settings_changed = True + + def pencil_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.pencil_tool) + + def erase_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.erase_tool) + + def grab_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.grab_tool) + + def rotate_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.rotate_tool) + + def text_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.text_tool) + + def select_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.select_tool) + + def paste_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.paste_tool) + + def fill_tool_button_pressed(self): + self.ui.set_selected_tool(self.ui.fill_tool) + + def set_xform(self, new_xform): + "tells UI elements to respect new xform" + self.charset_swatch.set_xform(new_xform) + self.update_xform_buttons() + + def update_xform_buttons(self): + # light up button for current selected option + button_map = { + UV_NORMAL: self.xform_normal_button, + UV_ROTATE90: self.xform_90_button, + UV_ROTATE180: self.xform_180_button, + UV_ROTATE270: self.xform_270_button, + UV_FLIPX: self.xform_flipX_button, + UV_FLIPY: self.xform_flipY_button + } + for b in button_map: + if b == self.ui.selected_xform: + button_map[b].normal_bg_color = self.highlight_color + else: + button_map[b].normal_bg_color = self.bg_color + self.xform_0_button.normal_bg_color = self.xform_normal_button.normal_bg_color + self.draw_buttons() + + def xform_normal_button_pressed(self): + self.ui.set_selected_xform(UV_NORMAL) + + def xform_flipX_button_pressed(self): + self.ui.set_selected_xform(UV_FLIPX) + + def xform_flipY_button_pressed(self): + self.ui.set_selected_xform(UV_FLIPY) + + def xform_0_button_pressed(self): + self.ui.set_selected_xform(UV_NORMAL) + + def xform_90_button_pressed(self): + self.ui.set_selected_xform(UV_ROTATE90) + + def xform_180_button_pressed(self): + self.ui.set_selected_xform(UV_ROTATE180) + + def xform_270_button_pressed(self): + self.ui.set_selected_xform(UV_ROTATE270) + + def choose_charset_button_pressed(self): + self.hide() + self.ui.open_dialog(CharSetChooserDialog) + + def choose_palette_button_pressed(self): + self.hide() + self.ui.open_dialog(PaletteChooserDialog) + + def draw_char_color_tab(self): + "draw non-button bits of this tab" + # charset renderable location will be set in update() + charset = self.ui.active_art.charset + palette = self.ui.active_art.palette + cqw, cqh = self.charset_swatch.art.quad_width, self.charset_swatch.art.quad_height + self.art.clear_frame_layer(0, 0, self.bg_color, self.fg_color) + # position & caption charset button + y = self.tab_height + 1 + self.choose_charset_button.y = y + self.choose_charset_button.caption = ' %s %s ' % (CharSetChooserButton.caption, charset.name) + self.choose_charset_button.width = len(self.choose_charset_button.caption) + # charset scale + charset_scale = '%.2fx' % self.charset_swatch.char_scale + x = -self.scale_charset_up_button.width * 2 + self.art.write_string(0, 0, x, y, charset_scale, None, None, True) + # transform labels and buttons, eg + # Transform: [Normal] [Flip X] [Flip Y] + # Rotation: [ 0 ] [ 90] [180] [270] + x = 3 + y += 1 + self.art.write_string(0, 0, x, y, self.flip_label) + y += 1 + self.art.write_string(0, 0, x, y, self.rotation_label) + # position & caption palette button + pal_caption_y = (cqh * charset.map_height) / self.art.quad_height + pal_caption_y += self.tab_height + 5 + self.choose_palette_button.y = int(pal_caption_y) + self.choose_palette_button.caption = ' %s %s ' % (PaletteChooserButton.caption, palette.name) + self.choose_palette_button.width = len(self.choose_palette_button.caption) + # set button states so captions draw properly + tab_width = int(self.tile_width / 2) + self.tool_tab_button.width = tab_width + self.char_color_tab_button.width = int(self.tile_width) - tab_width + self.char_color_tab_button.x = tab_width + + def draw_tool_tab(self): + self.art.clear_frame_layer(0, 0, self.bg_color, self.fg_color) + # fill tool bar with dimmer color, highlight selected tool + for y in range(self.art.height): + for x in range(TOOL_PANE_WIDTH): + self.art.set_color_at(0, 0, x, y, self.ui.colors.medgrey, False) + # set selected tool BG lighter + y = self.tab_height + 1 + for i,tool in enumerate(self.ui.tools): + tool_button = None + for button in self.tool_tab_buttons: + try: + if button.tool_name == tool.name: + tool_button = button + except: + pass + tool_button.y = y+i + if tool == self.ui.selected_tool: + tool_button.normal_bg_color = self.ui.colors.lightgrey + else: + tool_button.normal_bg_color = self.ui.colors.medgrey + # draw current tool settings + x = TOOL_PANE_WIDTH + 1 + y = self.tab_height + 1 + label = '%s %s' % (self.ui.selected_tool.button_caption, self.tool_settings_label) + self.art.write_string(0, 0, x, y, label) + x += 1 + y += 2 + # brush size (if applicable) + if self.ui.selected_tool.brush_size: + self.brush_size_down_button.visible = True + self.brush_size_up_button.visible = True + label = self.brush_size_label + # calculate X of + and - buttons based on size string + self.brush_size_down_button.x = TOOL_PANE_WIDTH + len(label) + 2 + label += ' ' * (self.brush_size_down_button.width + 1) + label += '%s' % self.ui.selected_tool.brush_size + self.brush_size_up_button.x = TOOL_PANE_WIDTH + len(label) + 3 + self.art.write_string(0, 0, x, y, label) + else: + # if inapplicable, hide those controls + self.brush_size_down_button.visible = False + self.brush_size_up_button.visible = False + if self.ui.selected_tool.affects_masks: + # affects char/fg/bg settings + self.toggle_affect_char_button.visible = True + self.toggle_affect_fg_button.visible = True + self.toggle_affect_bg_button.visible = True + self.toggle_affect_xform_button.visible = True + y += 2 + self.art.write_string(0, 0, x, y, self.affects_heading_label) + y += 1 + # set affects-* button labels AND captions + def get_affects_char(affects): + return [0, self.check_char_index][affects] + w = self.toggle_affect_char_button.width + label_toggle_pairs = [] + label_toggle_pairs += [(self.affects_char_label, self.ui.selected_tool.affects_char)] + label_toggle_pairs += [(self.affects_fg_label, self.ui.selected_tool.affects_fg_color)] + label_toggle_pairs += [(self.affects_bg_label, self.ui.selected_tool.affects_bg_color)] + label_toggle_pairs += [(self.affects_xform_label, self.ui.selected_tool.affects_xform)] + for label,toggle in label_toggle_pairs: + self.art.write_string(0, 0, x+w+1, y, '%s' % label) + #self.art.set_tile_at(0, 0, x, y, get_affects_char(toggle), 4, 2) + self.art.set_char_index_at(0, 0, x+1, y, get_affects_char(toggle)) + y += 1 + else: + self.toggle_affect_char_button.visible = False + self.toggle_affect_fg_button.visible = False + self.toggle_affect_bg_button.visible = False + self.toggle_affect_xform_button.visible = False + # custom setting for fill tool: boundary mode + if type(self.ui.selected_tool) is FillTool: + y += 1 + self.art.write_string(0, 0, x, y, self.fill_boundary_modes_label) + y += 1 + # boundary mode buttons + labels + #x += + labels = [self.fill_boundary_char_label, + self.fill_boundary_fg_label, + self.fill_boundary_bg_label] + for i,button in enumerate(self.fill_boundary_mode_buttons): + button.visible = True + char = [self.radio_char_0_index, self.radio_char_1_index][i == self.ui.fill_tool.boundary_mode] + #self.ui.app.log(char) + self.art.set_char_index_at(0, 0, x+1, y, char) + self.art.write_string(0, 0, x + FillBoundaryModeCharButton.width + 1, y, labels[i]) + y += 1 + else: + for button in self.fill_boundary_mode_buttons: + button.visible = False + + def reset_art(self): + if not self.ui.active_art: + return + self.charset_swatch.reset_art() + self.palette_swatch.reset_art() + # set panel size based on charset size + margin = self.swatch_margin * 2 + charset = self.ui.active_art.charset + cqw, cqh = self.charset_swatch.art.quad_width, self.charset_swatch.art.quad_height + old_width, old_height = self.tile_width, self.tile_height + # min width in case of tiny charsets + charset_tile_width = max(charset.map_width, MIN_CHARSET_WIDTH) + self.tile_width = (cqw * charset_tile_width + margin) / UIArt.quad_width + # tile height = height of charset + distance from top of popup + self.tile_height = (cqh * charset.map_height) / UIArt.quad_height + margin + # account for popup info lines etc: charset name + palette name + 1 padding each + extra_lines = 7 + # account for size of palette + bottom margin + palette_height = ((self.palette_swatch.art.height * self.palette_swatch.art.quad_height) + self.swatch_margin) / UIArt.quad_height + self.tile_height += self.tab_height + palette_height + extra_lines + if old_width != self.tile_width or old_height != self.tile_height: + self.art.resize(int(self.tile_width), int(self.tile_height)) + # panel text - position different elements based on selected tab + if self.active_tab == TAB_CHAR_COLOR: + self.draw_char_color_tab() + elif self.active_tab == TAB_TOOLS: + self.draw_tool_tab() + self.update_xform_buttons() + # draw button captions + UIElement.reset_art(self) + + def show(self): + # if already visible, bail - key repeat probably triggered this + if self.visible: + return + if self.ui.active_dialog: + return + self.visible = True + # visible, grab keyboard focus + self.ui.keyboard_focus_element = self + # set cursor as starting point for keyboard navigation + self.charset_swatch.set_cursor_selection_index(self.ui.selected_char) + if self.ui.pulldown.visible: + self.ui.menu_bar.close_active_menu() + self.reset_loc() + + def toggle(self): + if self.visible: + self.hide() + else: + self.show() + + def reset_loc(self): + if not self.ui.active_art: + return + x, y = self.ui.get_screen_coords(self.ui.app.mouse_x, self.ui.app.mouse_y) + # center on mouse + w, h = self.tile_width * self.art.quad_width, self.tile_height * self.art.quad_height + x -= w / 2 + y += h / 2 + # clamp to edges of screen + self.x = max(-1, min(1 - w, x)) + self.y = min(1, max(-1 + h, y)) + # set location for sub elements + self.renderable.x, self.renderable.y = self.x, self.y + self.charset_swatch.reset_loc() + self.palette_swatch.reset_loc() + + def hide(self): + self.visible = False + self.ui.keyboard_focus_element = None + self.ui.refocus_keyboard() + + def set_active_charset(self, new_charset): + self.charset_swatch.art.charset = new_charset + self.palette_swatch.art.charset = new_charset + # make sure selected char isn't out of bounds w/ new set + self.ui.selected_char %= new_charset.last_index + self.ui.status_bar.set_active_charset(new_charset) + self.charset_swatch.reset() + # charset width drives palette swatch width + self.palette_swatch.reset() + self.reset_art() + + def set_active_palette(self, new_palette): + self.charset_swatch.art.palette = new_palette + self.palette_swatch.art.palette = new_palette + # make sure selected colors aren't out of bounds w/ new palette + self.ui.selected_fg_color %= len(new_palette.colors) - 1 + self.ui.selected_bg_color %= len(new_palette.colors) - 1 + self.ui.status_bar.set_active_palette(new_palette) + self.palette_swatch.reset() + self.reset_art() + + def update(self): + UIElement.update(self) + if not self.ui.active_art: + return + if self.active_tab == TAB_CHAR_COLOR: + # bail if mouse didn't move, but also respect keyboard editing + mouse_moved = self.ui.app.mouse_dx != 0 or self.ui.app.mouse_dy != 0 + if self.ui.app.keyboard_editing: + self.cursor_box.visible = True + elif mouse_moved and self in self.ui.hovered_elements: + self.cursor_box.visible = False + x, y = self.ui.get_screen_coords(self.ui.app.mouse_x, self.ui.app.mouse_y) + for e in [self.charset_swatch, self.palette_swatch]: + if e.is_inside(x, y): + self.cursor_box.visible = True + e.set_cursor_loc_from_mouse(self.cursor_box, x, y) + break + # note: self.cursor_box updates in charset_swatch.update + self.charset_swatch.update() + self.palette_swatch.update() + elif self.active_tab == TAB_TOOLS and self.ui.tool_settings_changed: + self.draw_tool_tab() + self.draw_buttons() + + def keyboard_navigate(self, dx, dy): + active_swatch = self.charset_swatch if self.cursor_char != -1 else self.palette_swatch + # TODO: can't handle cross-swatch navigation properly, restrict to chars + active_swatch = self.charset_swatch + # reverse up/down direction + active_swatch.move_cursor(self.cursor_box, dx, -dy) + + def keyboard_select_item(self): + # called as ui.keyboard_focus_element + # simulate left/right click in popup to select stuff + self.select_key_pressed(self.ui.app.il.shift_pressed) + + def select_key_pressed(self, mod_pressed): + mouse_button = [1, 3][mod_pressed] + self.clicked(mouse_button) + + def clicked(self, mouse_button): + handled = UIElement.clicked(self, mouse_button) + if handled: + return + # if cursor is over a char or color, make it the ui's selected one + if self.cursor_char != -1: + self.ui.selected_char = self.cursor_char + # update cursor, eg keyboard select when cursor isn't beneath popup + self.ui.app.cursor.undo_preview_edits() + self.ui.app.cursor.update_cursor_preview() + elif self.cursor_color != -1: + if mouse_button == 1: + self.ui.selected_fg_color = self.cursor_color + elif mouse_button == 3: + self.ui.selected_bg_color = self.cursor_color + return True + + def render(self): + if not self.visible: + return + UIElement.render(self) + if self.active_tab == TAB_CHAR_COLOR: + self.charset_swatch.render() + self.palette_swatch.render() + if self.cursor_char != -1 or self.cursor_color != -1: + self.cursor_box.render() diff --git a/ui_status_bar.py b/ui_status_bar.py new file mode 100644 index 0000000..fe9e543 --- /dev/null +++ b/ui_status_bar.py @@ -0,0 +1,476 @@ +import os.path, time +from math import ceil + +from ui_element import UIElement, UIArt, UIRenderable +from ui_button import UIButton, TEXT_LEFT, TEXT_CENTER, TEXT_RIGHT +from ui_colors import UIColors +from renderable_line import UIRenderableX +from art import uv_names + +# buttons to toggle "affects" status / cycle through choices, respectively + +class StatusBarToggleButton(UIButton): + caption_justify = TEXT_RIGHT + +class StatusBarCycleButton(UIButton): + # do different stuff for left vs right click + pass_mouse_button = True + should_draw_caption = False + width = 3 + +class CharToggleButton(StatusBarToggleButton): + x = 0 + caption = 'ch:' + width = len(caption) + 1 + tooltip_on_hover = True + def get_tooltip_text(self): + return 'character index: %s' % self.element.ui.selected_char + def get_tooltip_location(self): + return 1, self.element.get_tile_y() - 1 + +class CharCycleButton(StatusBarCycleButton): + x = CharToggleButton.width + tooltip_on_hover = True + # reuse above + def get_tooltip_text(self): return CharToggleButton.get_tooltip_text(self) + def get_tooltip_location(self): return CharToggleButton.get_tooltip_location(self) + +class FGToggleButton(StatusBarToggleButton): + x = CharCycleButton.x + CharCycleButton.width + caption = 'fg:' + width = len(caption) + 1 + tooltip_on_hover = True + def get_tooltip_text(self): + return 'foreground color index: %s' % self.element.ui.selected_fg_color + def get_tooltip_location(self): + return 8, self.element.get_tile_y() - 1 + +class FGCycleButton(StatusBarCycleButton): + x = FGToggleButton.x + FGToggleButton.width + tooltip_on_hover = True + def get_tooltip_text(self): return FGToggleButton.get_tooltip_text(self) + def get_tooltip_location(self): return FGToggleButton.get_tooltip_location(self) + +class BGToggleButton(StatusBarToggleButton): + x = FGCycleButton.x + FGCycleButton.width + caption = 'bg:' + width = len(caption) + 1 + tooltip_on_hover = True + def get_tooltip_text(self): + return 'background color index: %s' % self.element.ui.selected_bg_color + def get_tooltip_location(self): + return 15, self.element.get_tile_y() - 1 + +class BGCycleButton(StatusBarCycleButton): + x = BGToggleButton.x + BGToggleButton.width + tooltip_on_hover = True + def get_tooltip_text(self): return BGToggleButton.get_tooltip_text(self) + def get_tooltip_location(self): return BGToggleButton.get_tooltip_location(self) + +class XformToggleButton(StatusBarToggleButton): + x = BGCycleButton.x + BGCycleButton.width + caption = 'xform:' + width = len(caption) + 1 + +# class for things like xform and tool whose captions you can cycle through +class StatusBarTextCycleButton(StatusBarCycleButton): + should_draw_caption = True + caption_justify = TEXT_CENTER + normal_fg_color = UIColors.lightgrey + normal_bg_color = UIColors.black + hovered_fg_color = UIColors.lightgrey + hovered_bg_color = UIColors.black + clicked_fg_color = UIColors.black + clicked_bg_color = UIColors.white + +class XformCycleButton(StatusBarTextCycleButton): + x = XformToggleButton.x + XformToggleButton.width + width = len('Rotate 180') + caption = uv_names[0] + +class ToolCycleButton(StatusBarTextCycleButton): + x = XformCycleButton.x + XformCycleButton.width + len('tool:') + 1 + # width and caption are set during status bar init after button is created + +class FileCycleButton(StatusBarTextCycleButton): + caption = '[nothing]' + +class LayerCycleButton(StatusBarTextCycleButton): + caption = 'X/Y' + width = len(caption) + +class FrameCycleButton(StatusBarTextCycleButton): + caption = 'X/Y' + width = len(caption) + +class ZoomSetButton(StatusBarTextCycleButton): + caption = '100.0' + width = len(caption) + +class StatusBarUI(UIElement): + + snap_bottom = True + snap_left = True + always_consume_input = True + dim_color = 12 + swatch_width = 3 + char_swatch_x = CharCycleButton.x + fg_swatch_x = FGCycleButton.x + bg_swatch_x = BGCycleButton.x + tool_label = 'tool:' + tool_label_x = XformCycleButton.x + XformCycleButton.width + 1 + tile_label = 'tile:' + layer_label = 'layer:' + frame_label = 'frame:' + zoom_label = '%' + right_items_width = len(tile_label) + len(layer_label) + len(frame_label) + (len('X/Y') + 2) * 2 + len('XX/YY') + 2 + len(zoom_label) + 10 + button_names = { + CharToggleButton: 'char_toggle', + CharCycleButton: 'char_cycle', + FGToggleButton: 'fg_toggle', + FGCycleButton: 'fg_cycle', + BGToggleButton: 'bg_toggle', + BGCycleButton: 'bg_cycle', + XformToggleButton: 'xform_toggle', + XformCycleButton: 'xform_cycle', + ToolCycleButton: 'tool_cycle', + FileCycleButton: 'file_cycle', + LayerCycleButton: 'layer_cycle', + FrameCycleButton: 'frame_cycle', + ZoomSetButton: 'zoom_set' + } + + def __init__(self, ui): + art = ui.active_art + self.ui = ui + # create 3 custom Arts w/ source charset and palette, renderables for each + art_name = '%s_%s' % (int(time.time()), self.__class__.__name__) + self.char_art = UIArt(art_name, ui.app, art.charset, art.palette, self.swatch_width, 1) + self.char_renderable = UIRenderable(ui.app, self.char_art) + self.fg_art = UIArt(art_name, ui.app, art.charset, art.palette, self.swatch_width, 1) + self.fg_renderable = UIRenderable(ui.app, self.fg_art) + self.bg_art = UIArt(art_name, ui.app, art.charset, art.palette, self.swatch_width, 1) + self.bg_renderable = UIRenderable(ui.app, self.bg_art) + # "dimmed out" box + self.dim_art = UIArt(art_name, ui.app, ui.charset, ui.palette, self.swatch_width + self.char_swatch_x, 1) + self.dim_renderable = UIRenderable(ui.app, self.dim_art) + self.dim_renderable.alpha = 0.75 + # separate dimmed out box for xform, easier this way + xform_width = XformToggleButton.width + XformCycleButton.width + self.dim_xform_art = UIArt(art_name, ui.app, ui.charset, ui.palette, xform_width, 1) + self.dim_xform_renderable = UIRenderable(ui.app, self.dim_xform_art) + self.dim_xform_renderable.alpha = 0.75 + # create clickable buttons + self.buttons = [] + self.button_map = {} + for button_class, button_name in self.button_names.items(): + button = button_class(self) + setattr(self, button_name + '_button', button) + cb_name = '%s_button_pressed' % button_name + button.callback = getattr(self, cb_name) + self.buttons.append(button) + # keep a mapping of button names to buttons, for eg tooltip updates + self.button_map[button_name] = button + # some button captions, widths, locations will be set in reset_art + # determine total width of left-justified items + self.left_items_width = self.tool_cycle_button.x + self.tool_cycle_button.width + 15 + # set some properties in bulk + self.renderables = [] + for r in [self.char_renderable, self.fg_renderable, self.bg_renderable, + self.dim_renderable, self.dim_xform_renderable]: + r.ui = ui + r.grain_strength = 0 + # add to list of renderables to manage eg destroyed on quit + self.renderables.append(r) + # red X for transparent colors + self.x_renderable = UIRenderableX(ui.app, self.char_art) + # give it a special reference to this element + self.x_renderable.status_bar = self + self.renderables.append(self.x_renderable) + UIElement.__init__(self, ui) + + # button callbacks + + def char_toggle_button_pressed(self): + if self.ui.active_dialog: return + self.ui.selected_tool.toggle_affects_char() + + def char_cycle_button_pressed(self, mouse_button): + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.select_char(self.ui.selected_char + 1) + elif mouse_button == 3: + self.ui.select_char(self.ui.selected_char - 1) + + def fg_toggle_button_pressed(self): + if self.ui.active_dialog: return + self.ui.selected_tool.toggle_affects_fg() + + def fg_cycle_button_pressed(self, mouse_button): + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.select_fg(self.ui.selected_fg_color + 1) + elif mouse_button == 3: + self.ui.select_fg(self.ui.selected_fg_color - 1) + + def bg_toggle_button_pressed(self): + if self.ui.active_dialog: return + self.ui.selected_tool.toggle_affects_bg() + + def bg_cycle_button_pressed(self, mouse_button): + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.select_bg(self.ui.selected_bg_color + 1) + elif mouse_button == 3: + self.ui.select_bg(self.ui.selected_bg_color - 1) + + def xform_toggle_button_pressed(self): + if self.ui.active_dialog: return + self.ui.selected_tool.toggle_affects_xform() + + def xform_cycle_button_pressed(self, mouse_button): + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.cycle_selected_xform() + elif mouse_button == 3: + self.ui.cycle_selected_xform(True) + # update caption with new xform + self.xform_cycle_button.caption = uv_names[self.ui.selected_xform] + + def tool_cycle_button_pressed(self, mouse_button): + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.cycle_selected_tool() + elif mouse_button == 3: + self.ui.cycle_selected_tool(True) + self.tool_cycle_button.caption = self.ui.selected_tool.get_button_caption() + + def file_cycle_button_pressed(self, mouse_button): + if not self.ui.active_art: return + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.next_active_art() + elif mouse_button == 3: + self.ui.previous_active_art() + + def layer_cycle_button_pressed(self, mouse_button): + if not self.ui.active_art: return + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.set_active_layer(self.ui.active_art.active_layer + 1) + elif mouse_button == 3: + self.ui.set_active_layer(self.ui.active_art.active_layer - 1) + + def frame_cycle_button_pressed(self, mouse_button): + if not self.ui.active_art: return + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.set_active_frame(self.ui.active_art.active_frame + 1) + elif mouse_button == 3: + self.ui.set_active_frame(self.ui.active_art.active_frame - 1) + + def zoom_set_button_pressed(self, mouse_button): + if not self.ui.active_art: return + if self.ui.active_dialog: return + if mouse_button == 1: + self.ui.app.camera.zoom_proportional(1) + elif mouse_button == 3: + self.ui.app.camera.zoom_proportional(-1) + + def reset_art(self): + UIElement.reset_art(self) + self.tile_width = ceil(self.ui.width_tiles * self.ui.scale) + # must resize here, as window width will vary + self.art.resize(self.tile_width, self.tile_height) + # write chars/colors to the art + self.rewrite_art() + self.x_renderable.scale_x = self.char_art.width + self.x_renderable.scale_y = -self.char_art.height + # dim box + self.dim_art.clear_frame_layer(0, 0, self.ui.colors.white) + self.dim_art.update() + self.dim_xform_art.clear_frame_layer(0, 0, self.ui.colors.white) + self.dim_xform_art.update() + # rebuild geo, elements may be new dimensions + self.dim_art.geo_changed = True + self.dim_xform_art.geo_changed = True + self.char_art.geo_changed = True + self.fg_art.geo_changed = True + self.bg_art.geo_changed = True + + def rewrite_art(self): + bg = self.ui.colors.white + self.art.clear_frame_layer(0, 0, bg) + # if user is making window reeeeally skinny, bail + if self.tile_width < self.left_items_width: + return + # draw tool label + self.art.write_string(0, 0, self.tool_label_x, 0, self.tool_label, + self.ui.palette.darkest_index) + # only draw right side info if the window is wide enough + if self.art.width > self.left_items_width + self.right_items_width: + self.file_cycle_button.visible = True + self.layer_cycle_button.visible = True + self.frame_cycle_button.visible = True + self.zoom_set_button.visible = True + self.write_right_elements() + else: + self.file_cycle_button.visible = False + self.layer_cycle_button.visible = False + self.frame_cycle_button.visible = False + self.zoom_set_button.visible = False + + def set_active_charset(self, new_charset): + self.char_art.charset = self.fg_art.charset = self.bg_art.charset = new_charset + self.reset_art() + + def set_active_palette(self, new_palette): + self.char_art.palette = self.fg_art.palette = self.bg_art.palette = new_palette + self.reset_art() + + def get_tile_y(self): + "returns tile coordinate Y position of bar" + return int(self.ui.app.window_height / (self.ui.charset.char_height * self.ui.scale)) - 1 + + def update_button_captions(self): + "set captions for buttons that change from selections" + art = self.ui.active_art + self.xform_cycle_button.caption = uv_names[self.ui.selected_xform] + self.tool_cycle_button.caption = self.ui.selected_tool.get_button_caption() + self.tool_cycle_button.width = len(self.tool_cycle_button.caption) + 2 + # right edge elements + self.file_cycle_button.caption = os.path.basename(art.filename) if art else FileCycleButton.caption + self.file_cycle_button.width = len(self.file_cycle_button.caption) + 2 + # NOTE: button X offsets will be set in write_right_elements + null = '---' + layers = art.layers if art else 0 + layer = '%s/%s' % (art.active_layer + 1, layers) if art else null + self.layer_cycle_button.caption = layer + self.layer_cycle_button.width = len(self.layer_cycle_button.caption) + frames = art.frames if art else 0 + frame = '%s/%s' % (art.active_frame + 1, frames) if art else null + self.frame_cycle_button.caption = frame + self.frame_cycle_button.width = len(self.frame_cycle_button.caption) + # zoom % + zoom = '%.1f' % self.ui.app.camera.get_current_zoom_pct() if art else null + self.zoom_set_button.caption = zoom[:5] # maintain size + + def update(self): + if not self.ui.active_art: + return + # update buttons + UIElement.update(self) + # set color swatches + for i in range(self.swatch_width): + self.char_art.set_color_at(0, 0, i, 0, self.ui.selected_bg_color, False) + self.fg_art.set_color_at(0, 0, i, 0, self.ui.selected_fg_color, False) + self.bg_art.set_color_at(0, 0, i, 0, self.ui.selected_bg_color, False) + # set char w/ correct FG color and xform + self.char_art.set_char_index_at(0, 0, 1, 0, self.ui.selected_char) + self.char_art.set_color_at(0, 0, 1, 0, self.ui.selected_fg_color, True) + self.char_art.set_char_transform_at(0, 0, 1, 0, self.ui.selected_xform) + # position elements + self.position_swatch(self.char_renderable, self.char_swatch_x) + self.position_swatch(self.fg_renderable, self.fg_swatch_x) + self.position_swatch(self.bg_renderable, self.bg_swatch_x) + # update buttons before redrawing art (ie non-interactive bits) + self.update_button_captions() + for art in [self.char_art, self.fg_art, self.bg_art]: + art.update() + self.rewrite_art() + self.draw_buttons() + + def position_swatch(self, renderable, x_offset): + renderable.x = (self.char_art.quad_width * x_offset) - 1 + renderable.y = self.char_art.quad_height - 1 + + def reset_loc(self): + UIElement.reset_loc(self) + + def write_right_elements(self): + """ + fills in right-justified parts of status bar, eg current + frame/layer/tile labels (buttons positioned but drawn separately) + """ + dark = self.ui.colors.black + light = self.ui.colors.white + art = self.ui.active_art + padding = 2 + # position file button + x = self.tile_width - (self.file_cycle_button.width + 1) + self.file_cycle_button.x = x + x -= padding + # zoom + self.art.write_string(0, 0, x, 0, self.zoom_label, dark, light, True) + x -= len(self.zoom_label) + self.zoom_set_button.width + self.zoom_set_button.x = x + x -= padding + # tile + tile = 'X/Y' + color = light + if self.ui.app.cursor and art: + tile_x, tile_y = self.ui.app.cursor.get_tile() + tile_y = int(tile_y) + # user-facing coordinates are always base 1 + tile_x += 1 + tile_y += 1 + if tile_x <= 0 or tile_x > art.width: + color = self.dim_color + if tile_y <= 0 or tile_y > art.height: + color = self.dim_color + tile_x = str(tile_x).rjust(3) + tile_y = str(tile_y).rjust(3) + tile = '%s,%s' % (tile_x, tile_y) + self.art.write_string(0, 0, x, 0, tile, color, dark, True) + # tile label + x -= len(tile) + self.art.write_string(0, 0, x, 0, self.tile_label, dark, light, True) + # position layer button + x -= (padding + len(self.tile_label) + self.layer_cycle_button.width) + self.layer_cycle_button.x = x + # layer label + self.art.write_string(0, 0, x, 0, self.layer_label, dark, light, True) + # position frame button + x -= (padding + len(self.layer_label) + self.frame_cycle_button.width) + self.frame_cycle_button.x = x + # frame label + self.art.write_string(0, 0, x, 0, self.frame_label, dark, light, True) + + def render(self): + if not self.ui.active_art: + return + UIElement.render(self) + # draw wireframe red X /behind/ char if BG transparent + if self.ui.selected_bg_color == 0: + self.x_renderable.x = self.char_renderable.x + self.x_renderable.y = self.char_renderable.y + self.x_renderable.render() + self.char_renderable.render() + self.fg_renderable.render() + self.bg_renderable.render() + # draw red X for transparent FG or BG + if self.ui.selected_fg_color == 0: + self.x_renderable.x = self.fg_renderable.x + self.x_renderable.y = self.fg_renderable.y + self.x_renderable.render() + if self.ui.selected_bg_color == 0: + self.x_renderable.x = self.bg_renderable.x + self.x_renderable.y = self.bg_renderable.y + self.x_renderable.render() + # dim out items if brush is set to not affect them + self.dim_renderable.y = self.char_renderable.y + swatch_width = self.art.quad_width * StatusBarCycleButton.width + if not self.ui.selected_tool.affects_char: + self.dim_renderable.x = self.char_renderable.x - swatch_width + self.dim_renderable.render() + if not self.ui.selected_tool.affects_fg_color: + self.dim_renderable.x = self.fg_renderable.x - swatch_width + self.dim_renderable.render() + if not self.ui.selected_tool.affects_bg_color: + self.dim_renderable.x = self.bg_renderable.x - swatch_width + self.dim_renderable.render() + if not self.ui.selected_tool.affects_xform: + # separate dimmer renderable for xform's wider size + self.dim_xform_renderable.y = self.char_renderable.y + self.dim_xform_renderable.x = XformToggleButton.x * self.art.quad_width - 1 + self.dim_xform_renderable.render() diff --git a/ui_swatch.py b/ui_swatch.py new file mode 100644 index 0000000..1e65acb --- /dev/null +++ b/ui_swatch.py @@ -0,0 +1,408 @@ +import math, time +import numpy as np + +from ui_element import UIElement, UIArt, UIRenderable +from renderable_line import LineRenderable, SwatchSelectionBoxRenderable, UIRenderableX + +# min width for charset; if charset is tiny adjust to this +MIN_CHARSET_WIDTH = 16 + +class UISwatch(UIElement): + + def __init__(self, ui, popup): + self.ui = ui + self.popup = popup + self.reset() + + def reset(self): + self.tile_width, self.tile_height = self.get_size() + art = self.ui.active_art + # generate a unique name for debug purposes + art_name = '%s_%s' % (int(time.time()), self.__class__.__name__) + self.art = UIArt(art_name, self.ui.app, art.charset, art.palette, self.tile_width, self.tile_height) + # tear down existing renderables if any + if not self.renderables: + self.renderables = [] + else: + for r in self.renderables: + r.destroy() + self.renderables = [] + self.renderable = UIRenderable(self.ui.app, self.art) + self.renderable.ui = self.ui + self.renderable.grain_strength = 0 + self.renderables.append(self.renderable) + self.reset_art() + + def reset_art(self): + pass + + def get_size(self): + return 1, 1 + + def set_cursor_loc_from_mouse(self, cursor, mouse_x, mouse_y): + # get location within char map + w, h = self.art.quad_width, self.art.quad_height + tile_x = (mouse_x - self.x) / w + tile_y = (mouse_y - self.y) / h + self.set_cursor_loc(cursor, tile_x, tile_y) + + def set_cursor_loc(self, cursor, tile_x, tile_y): + """ + common, generalized code for both character and palette swatches: + set cursor's screen location, tile location, and quad size. + """ + w, h = self.art.quad_width, self.art.quad_height + # snap to tile (tile_x/y already set in move_cursor) + tile_x = int(tile_x) + tile_y = int(tile_y) + # back to screen coords + x = tile_x * w + self.x + y = tile_y * h + self.y + tile_index = (abs(tile_y) * self.art.width) + tile_x + # if a valid character isn't hovered, bail + if not self.is_selection_index_valid(tile_index): + self.set_cursor_selection_index(-1) + return + # cool, set cursor location & size + self.set_cursor_selection_index(tile_index) + cursor.quad_size_ref = self.art + cursor.tile_x, cursor.tile_y = tile_x, tile_y + cursor.x, cursor.y = x, y + + def is_selection_index_valid(self, index): + "returns True if given index is valid for choices this swatch offers" + return False + + def set_cursor_selection_index(self, index): + "another set_cursor_loc support method, overriden by subclasses" + self.popup.blah = index + + def render(self): + self.renderable.render() + + +class CharacterSetSwatch(UISwatch): + + # scale the character set will be drawn at + char_scale = 2 + min_scale = 1 + max_scale = 5 + scale_increment = 0.25 + + def increase_scale(self): + if self.char_scale <= self.max_scale - self.scale_increment: + self.char_scale += self.scale_increment + + def decrease_scale(self): + if self.char_scale >= self.min_scale + self.scale_increment: + self.char_scale -= self.scale_increment + + def reset(self): + UISwatch.reset(self) + self.selection_box = SwatchSelectionBoxRenderable(self.ui.app, self.art) + self.grid = CharacterGridRenderable(self.ui.app, self.art) + self.create_shade() + self.renderables = [self.renderable, self.selection_box, self.grid, + self.shade] + + def create_shade(self): + # shaded box neath chars in case selected colors make em hard to see + self.shade_art = UIArt('charset_shade', self.ui.app, + self.ui.active_art.charset, self.ui.palette, + self.tile_width, self.tile_height) + self.shade_art.clear_frame_layer(0, 0, self.ui.colors.black) + self.shade = UIRenderable(self.ui.app, self.shade_art) + self.shade.ui = self.ui + self.shade.alpha = 0.2 + + def get_size(self): + art = self.ui.active_art + return art.charset.map_width, art.charset.map_height + + def reset_art(self): + # MAYBE-TODO: using screen resolution, try to set quad size to an even + # multiple of screen so the sampling doesn't get chunky + aspect = self.ui.app.window_width / self.ui.app.window_height + charset = self.art.charset + self.art.quad_width = UIArt.quad_width * self.char_scale + self.art.quad_height = self.art.quad_width * (charset.char_height / charset.char_width) * aspect + # only need to populate characters on reset_art, but update + # colors every update() + self.art.clear_frame_layer(0, 0, 0) + i = 0 + for y in range(charset.map_height): + for x in range(charset.map_width): + self.art.set_char_index_at(0, 0, x, y, i) + i += 1 + self.art.geo_changed = True + + def reset_loc(self): + self.x = self.popup.x + self.popup.swatch_margin + self.y = self.popup.y + self.y -= self.popup.art.quad_height * (self.popup.tab_height + 4) + self.renderable.x, self.renderable.y = self.x, self.y + self.grid.x, self.grid.y = self.x, self.y + self.grid.y -= self.art.quad_height + self.shade.x, self.shade.y = self.x, self.y + + def set_xform(self, new_xform): + for y in range(self.art.height): + for x in range(self.art.width): + self.art.set_char_transform_at(0, 0, x, y, new_xform) + + def is_selection_index_valid(self, index): + return index < self.art.charset.last_index + + def set_cursor_selection_index(self, index): + self.popup.cursor_char = index + self.popup.cursor_color = -1 + + def move_cursor(self, cursor, dx, dy): + "moves cursor by specified amount in selection grid" + # determine new cursor tile X/Y + tile_x = cursor.tile_x + dx + tile_y = cursor.tile_y + dy + tile_index = (abs(tile_y) * self.art.width) + tile_x + if tile_x < 0 or tile_x >= self.art.width: + return + elif tile_y > 0: + return + elif tile_y <= -self.art.height: + # TODO: handle "jump" to palette swatch, and back + #cursor.tile_y = 0 + #self.popup.palette_swatch.move_cursor(cursor, 0, 0) + return + elif tile_index >= self.art.charset.last_index: + return + self.set_cursor_loc(cursor, tile_x, tile_y) + + def update(self): + charset = self.ui.active_art.charset + fg, bg = self.ui.selected_fg_color, self.ui.selected_bg_color + xform = self.ui.selected_xform + # repopulate colors every update + for y in range(charset.map_height): + for x in range(charset.map_width): + self.art.set_tile_at(0, 0, x, y, None, fg, bg, xform) + self.art.update() + if self.shade_art.quad_width != self.art.quad_width or self.shade_art.quad_height != self.art.quad_height: + self.shade_art.quad_width = self.art.quad_width + self.shade_art.quad_height = self.art.quad_height + self.shade_art.geo_changed = True + self.shade_art.update() + # selection box color + elapsed_time = self.ui.app.get_elapsed_time() + color = 0.75 + (math.sin(elapsed_time / 100) / 2) + self.selection_box.color = (color, color) * 2 + # set cursor color here rather than doin sin(time) again in popup update + self.popup.cursor_box.color = (color, color) * 2 + # position + self.selection_box.x = self.renderable.x + selection_x = self.ui.selected_char % charset.map_width + self.selection_box.x += selection_x * self.art.quad_width + self.selection_box.y = self.renderable.y + selection_y = (self.ui.selected_char - selection_x) / charset.map_width + self.selection_box.y -= selection_y * self.art.quad_height + + def render_bg(self): + # draw shaded box beneath swatch if selected color(s) too similar to BG + def is_hard_to_see(other_color_index): + return self.ui.palette.are_colors_similar(self.popup.bg_color, + self.art.palette, + other_color_index) + fg, bg = self.ui.selected_fg_color, self.ui.selected_bg_color + if is_hard_to_see(fg) or is_hard_to_see(bg): + self.shade.render() + + def render(self): + if not self.popup.visible: + return + self.render_bg() + UISwatch.render(self) + self.grid.render() + self.selection_box.render() + + +class PaletteSwatch(UISwatch): + + def reset(self): + UISwatch.reset(self) + self.transparent_x = UIRenderableX(self.ui.app, self.art) + self.fg_selection_box = SwatchSelectionBoxRenderable(self.ui.app, self.art) + self.bg_selection_box = SwatchSelectionBoxRenderable(self.ui.app, self.art) + # F label for FG color selection + self.f_art = ColorSelectionLabelArt(self.ui, 'F') + # make character dark + self.f_art.set_color_at(0, 0, 0, 0, self.f_art.palette.darkest_index, True) + self.f_renderable = ColorSelectionLabelRenderable(self.ui.app, self.f_art) + self.f_renderable.ui = self.ui + # B label for BG color seletion + self.b_art = ColorSelectionLabelArt(self.ui, 'B') + self.b_renderable = ColorSelectionLabelRenderable(self.ui.app, self.b_art) + self.b_renderable.ui = self.ui + self.renderables += self.transparent_x, self.fg_selection_box, self.bg_selection_box, self.f_renderable, self.b_renderable + + def get_size(self): + # balance rows/columns according to character set swatch width + charmap_width = max(self.popup.charset_swatch.art.charset.map_width, MIN_CHARSET_WIDTH) + colors = len(self.popup.charset_swatch.art.palette.colors) + rows = math.ceil(colors / charmap_width) + columns = math.ceil(colors / rows) + # !special case hack! for atari palette + if colors == 129 and columns == 15: + columns = 16 + return columns, rows + + def reset_art(self): + # base our quad size on charset's + cqw, cqh = self.popup.charset_swatch.art.quad_width, self.popup.charset_swatch.art.quad_height + # maximize item size based on row/column determined in get_size() + charmap_width = max(self.art.charset.map_width, MIN_CHARSET_WIDTH) + self.art.quad_width = (charmap_width / self.art.width) * cqw + self.art.quad_height = (charmap_width / self.art.width) * cqh + self.art.clear_frame_layer(0, 0, 0) + palette = self.ui.active_art.palette + # clear color is index 0, start after that + i = 1 + for y in range(self.tile_height): + for x in range(self.tile_width): + if i >= len(palette.colors): + break + self.art.set_color_at(0, 0, x, y, i, False) + i += 1 + self.art.geo_changed = True + + def reset_loc(self): + self.x = self.popup.x + self.popup.swatch_margin + self.y = self.popup.charset_swatch.renderable.y + # adjust Y for charset + self.y -= self.popup.charset_swatch.art.quad_height * self.ui.active_art.charset.map_height + # adjust Y for palette caption and character scale + self.y -= self.popup.art.quad_height * 2 + self.renderable.x, self.renderable.y = self.x, self.y + # color 0 is always transparent, but draw it at the end + w, h = self.get_size() + colors = len(self.art.palette.colors) + if colors % w == 0: + transparent_x_tile = w - 1 + elif h == 1: + transparent_x_tile = colors - 1 + else: + transparent_x_tile = colors % w - 1 + self.transparent_x.x = self.renderable.x + self.transparent_x.x += transparent_x_tile * self.art.quad_width + self.transparent_x.y = self.renderable.y - self.art.quad_height + self.transparent_x.y -= (h - 1) * self.art.quad_height + # set f/b_art's quad size + self.f_art.quad_width, self.f_art.quad_height = self.b_art.quad_width, self.b_art.quad_height = self.popup.art.quad_width, self.popup.art.quad_height + self.f_art.geo_changed = True + self.b_art.geo_changed = True + + def is_selection_index_valid(self, index): + return index < len(self.art.palette.colors) + + def set_cursor_selection_index(self, index): + # modulo wrap if selecting last color + self.popup.cursor_color = (index + 1) % len(self.art.palette.colors) + self.popup.cursor_char = -1 + + def move_cursor(self, cursor, dx, dy): + # similar enough to charset swatch's move_cursor, different enough to + # merit this small bit of duplicate code + pass + + def update(self): + self.art.update() + self.f_art.update() + self.b_art.update() + # color selection boxes + elapsed_time = self.ui.app.get_elapsed_time() + color = 0.75 + (math.sin(elapsed_time / 100) / 2) + self.fg_selection_box.color = (color, color) * 2 + self.bg_selection_box.color = (color, color) * 2 + # fg selection box position + self.fg_selection_box.x = self.renderable.x + # draw transparent color last (even tho it's first in color list) + fg_x = (self.ui.selected_fg_color - 1) % self.art.width + # uneven # of palette columns, handle box specially + odd_colors = len(self.art.palette.colors) % 2 == 1 + if self.ui.selected_fg_color == 0 and odd_colors: + fg_x -= 1 + self.fg_selection_box.x += fg_x * self.art.quad_width + self.fg_selection_box.y = self.renderable.y + fg_y = math.floor((self.ui.selected_fg_color - 1) / self.art.width) + fg_y %= self.art.height + self.fg_selection_box.y -= fg_y * self.art.quad_height + # bg box position + self.bg_selection_box.x = self.renderable.x + bg_x = (self.ui.selected_bg_color - 1) % self.art.width + if self.ui.selected_bg_color == 0 and odd_colors: + bg_x -= 1 + self.bg_selection_box.x += bg_x * self.art.quad_width + self.bg_selection_box.y = self.renderable.y + bg_y = math.floor((self.ui.selected_bg_color - 1) / self.art.width) + bg_y %= self.art.height + self.bg_selection_box.y -= bg_y * self.art.quad_height + # FG label position + self.f_renderable.alpha = 1 - color + self.f_renderable.x = self.fg_selection_box.x + self.f_renderable.y = self.fg_selection_box.y + # center F in box + x_offset = (self.art.quad_width - self.popup.art.quad_width) / 2 + y_offset = (self.art.quad_height - self.popup.art.quad_height) / 2 + self.f_renderable.x += x_offset + self.f_renderable.y -= y_offset + # BG label position + self.b_renderable.alpha = 1 - color + self.b_renderable.x = self.bg_selection_box.x + self.b_renderable.y = self.bg_selection_box.y + self.b_renderable.x += x_offset + self.b_renderable.y -= y_offset + + def render(self): + if not self.popup.visible: + return + UISwatch.render(self) + self.transparent_x.render() + self.fg_selection_box.render() + self.bg_selection_box.render() + self.f_renderable.render() + self.b_renderable.render() + + +class ColorSelectionLabelArt(UIArt): + def __init__(self, ui, letter): + letter_index = ui.charset.get_char_index(letter) + art_name = '%s_%s' % (int(time.time()), self.__class__.__name__) + UIArt.__init__(self, art_name, ui.app, ui.charset, ui.palette, 1, 1) + label_color = ui.colors.white + label_bg_color = 0 + self.set_tile_at(0, 0, 0, 0, letter_index, label_color, label_bg_color) + + +class ColorSelectionLabelRenderable(UIRenderable): + # transparent background so we can see the swatch color behind it + bg_alpha = 0 + + +class CharacterGridRenderable(LineRenderable): + + color = (0.5, 0.5, 0.5, 0.25) + + def build_geo(self): + w, h = self.quad_size_ref.width, self.quad_size_ref.height + v = [] + e = [] + c = self.color * 4 * w * h + index = 0 + for x in range(1, w): + v += [(x, -h+1), (x, 1)] + e += [index, index+1] + index += 2 + for y in range(h-1): + v += [(w, -y), (0, -y)] + e += [index, index+1] + index += 2 + self.vert_array = np.array(v, dtype=np.float32) + self.elem_array = np.array(e, dtype=np.uint32) + self.color_array = np.array(c, dtype=np.float32) diff --git a/ui_tool.py b/ui_tool.py new file mode 100644 index 0000000..5f84eb6 --- /dev/null +++ b/ui_tool.py @@ -0,0 +1,549 @@ +import math +import sdl2 +from PIL import Image + +from texture import Texture +from edit_command import EditCommandTile +from art import UV_NORMAL, UV_ROTATE90, UV_ROTATE180, UV_ROTATE270, UV_FLIPX, UV_FLIPY, UV_FLIP90, UV_FLIP270 +from key_shifts import SHIFT_MAP +from selection import SelectionRenderable + +class UITool: + + name = 'DEBUGTESTTOOL' + # name visible in popup's tool tab + button_caption = 'Debug Tool' + # paint continuously, ie every time mouse enters a new tile + paint_while_dragging = True + # show preview of paint result under cursor + show_preview = True + # if True, refresh paint preview immediately after Cursor.finish_paint + # set this for anything that produces a different change each paint + update_preview_after_paint = False + brush_size = 1 + # affects char/fg/bg/xform masks are relevant to how this tool works + # (false for eg Selection tool) + affects_masks = True + # filename of icon in UI_ASSET_DIR, shown on cursor + icon_filename = 'icon.png' + + def __init__(self, ui): + self.ui = ui + self.affects_char = True + self.affects_fg_color = True + self.affects_bg_color = True + self.affects_xform = True + # load icon, cursor's sprite renderable will reference this texture + icon_filename = self.ui.asset_dir + self.icon_filename + self.icon_texture = self.load_icon_texture(icon_filename) + + def load_icon_texture(self, img_filename): + img = Image.open(img_filename) + img = img.convert('RGBA') + img = img.transpose(Image.FLIP_TOP_BOTTOM) + return Texture(img.tobytes(), *img.size) + + def get_icon_texture(self): + """ + Returns icon texture that should display for tool's current state. + (override to eg choose from multiples for mod keys) + """ + return self.icon_texture + + def get_button_caption(self): + # normally just returns button_caption, but can be overridden to + # provide custom behavior (eg fill tool) + return self.button_caption + + def toggle_affects_char(self): + if not self.affects_masks or self.ui.app.game_mode: + return + self.affects_char = not self.affects_char + self.ui.tool_settings_changed = True + line = self.button_caption + ' ' + line = '%s %s' % (self.button_caption, [self.ui.affects_char_off_log, self.ui.affects_char_on_log][self.affects_char]) + self.ui.message_line.post_line(line) + + def toggle_affects_fg(self): + if not self.affects_masks or self.ui.app.game_mode: + return + self.affects_fg_color = not self.affects_fg_color + self.ui.tool_settings_changed = True + line = '%s %s' % (self.button_caption, [self.ui.affects_fg_off_log, self.ui.affects_fg_on_log][self.affects_fg_color]) + self.ui.message_line.post_line(line) + + def toggle_affects_bg(self): + if not self.affects_masks or self.ui.app.game_mode: + return + self.affects_bg_color = not self.affects_bg_color + self.ui.tool_settings_changed = True + line = '%s %s' % (self.button_caption, [self.ui.affects_bg_off_log, self.ui.affects_bg_on_log][self.affects_bg_color]) + self.ui.message_line.post_line(line) + + def toggle_affects_xform(self): + if not self.affects_masks or self.ui.app.game_mode: + return + self.affects_xform = not self.affects_xform + self.ui.tool_settings_changed = True + line = '%s %s' % (self.button_caption, [self.ui.affects_xform_off_log, self.ui.affects_xform_on_log][self.affects_xform]) + self.ui.message_line.post_line(line) + + def get_paint_commands(self): + "returns a list of EditCommandTiles for a given paint operation" + return [] + + def increase_brush_size(self): + if not self.brush_size: + return + self.brush_size += 1 + self.ui.app.cursor.set_scale(self.brush_size) + self.ui.tool_settings_changed = True + + def decrease_brush_size(self): + if not self.brush_size: + return + if self.brush_size > 1: + self.brush_size -= 1 + self.ui.app.cursor.set_scale(self.brush_size) + self.ui.tool_settings_changed = True + + +class PencilTool(UITool): + + name = 'pencil' + # "Paint" not Pencil so the A mnemonic works :/ + button_caption = 'Paint' + icon_filename = 'tool_paint.png' + + def get_tile_change(self, b_char, b_fg, b_bg, b_xform): + """ + return the tile value changes this tool would perform on a tile - + lets Pencil and Erase tools use same paint() + """ + a_char = self.ui.selected_char if self.affects_char else None + # don't paint fg color for blank characters + # (disabled, see BB issue #86) + #a_fg = self.ui.selected_fg_color if self.affects_fg_color and a_char != 0 else None + a_fg = self.ui.selected_fg_color if self.affects_fg_color else None + a_bg = self.ui.selected_bg_color if self.affects_bg_color else None + a_xform = self.ui.selected_xform if self.affects_xform else None + return a_char, a_fg, a_bg, a_xform + + def get_paint_commands(self): + commands = [] + art = self.ui.active_art + frame = art.active_frame + layer = art.active_layer + cur = self.ui.app.cursor + # handle dragging while painting (cursor does the heavy lifting here) + # !!TODO!! finish this, work in progress + if cur.moved_this_frame() and cur.current_command and False: #DEBUG + #print('%s: cursor moved' % self.ui.app.get_elapsed_time()) #DEBUG + tiles = cur.get_tiles_under_drag() + else: + tiles = cur.get_tiles_under_brush() + for tile in tiles: + # don't allow painting out of bounds + if not art.is_tile_inside(*tile): + continue + # if a selection is active, only paint inside it + if len(self.ui.select_tool.selected_tiles) > 0: + if not self.ui.select_tool.selected_tiles.get(tile, False): + continue + new_tc = EditCommandTile(art) + new_tc.set_tile(frame, layer, *tile) + b_char, b_fg, b_bg, b_xform = art.get_tile_at(frame, layer, *tile) + new_tc.set_before(b_char, b_fg, b_bg, b_xform) + a_char, a_fg, a_bg, a_xform = self.get_tile_change(b_char, b_fg, b_bg, b_xform) + new_tc.set_after(a_char, a_fg, a_bg, a_xform) + # Note: even if command has same result as another in command_tiles, + # add it anyway as it may be a tool for which subsequent edits to + # the same tile have different effects, eg rotate + if not new_tc.is_null(): + commands.append(new_tc) + return commands + + +class EraseTool(PencilTool): + + name = 'erase' + button_caption = 'Erase' + icon_filename = 'tool_erase.png' + + def get_tile_change(self, b_char, b_fg, b_bg, b_xform): + char = 0 if self.affects_char else None + fg = 0 if self.affects_fg_color else None + # erase to BG color, not transparent + bg = self.ui.selected_bg_color if self.affects_bg_color else None + xform = UV_NORMAL if self.affects_xform else None + return char, fg, bg, xform + + +class RotateTool(PencilTool): + + name = 'rotate' + button_caption = 'Rotate' + update_preview_after_paint = True + rotation_shifts = { + UV_NORMAL: UV_ROTATE90, + UV_ROTATE90: UV_ROTATE180, + UV_ROTATE180: UV_ROTATE270, + UV_ROTATE270: UV_NORMAL, + # support flipped characters! counter-intuitive results though? + UV_FLIPX: UV_FLIP270, + UV_FLIP270: UV_FLIPY, + UV_FLIPY: UV_ROTATE270, + UV_FLIP90: UV_FLIPX + } + icon_filename = 'tool_rotate.png' + + def get_tile_change(self, b_char, b_fg, b_bg, b_xform): + return b_char, b_fg, b_bg, self.rotation_shifts[b_xform] + + +class GrabTool(UITool): + + name = 'grab' + button_caption = 'Grab' + brush_size = None + show_preview = False + icon_filename = 'tool_grab.png' + + def grab(self): + x, y = self.ui.app.cursor.get_tile() + art = self.ui.active_art + if not art.is_tile_inside(x, y): + return + # in order to get the actual tile under the cursor, we must undo the + # cursor preview edits, grab, then redo them + for edit in self.ui.app.cursor.preview_edits: + edit.undo() + frame, layer = art.active_frame, art.active_layer + if self.affects_char: + self.ui.selected_char = art.get_char_index_at(frame, layer, x, y) + if self.affects_fg_color: + self.ui.selected_fg_color = art.get_fg_color_index_at(frame, layer, x, y) + if self.affects_bg_color: + self.ui.selected_bg_color = art.get_bg_color_index_at(frame, layer, x, y) + if self.affects_xform: + # tells popup etc xform has changed + self.ui.set_selected_xform(art.get_char_transform_at(frame, layer, x, y)) + for edit in self.ui.app.cursor.preview_edits: + edit.apply() + + +class TextTool(UITool): + + name = 'text' + button_caption = 'Text' + brush_size = None + show_preview = False + icon_filename = 'tool_text.png' + + def __init__(self, ui): + UITool.__init__(self, ui) + self.input_active = False + self.cursor = None + + def start_entry(self): + self.cursor = self.ui.app.cursor + # popup gobbles keyboard input, so always dismiss it if it's up + if self.ui.popup.visible: + self.ui.popup.hide() + if self.cursor.x < 0 or self.cursor.x > self.ui.active_art.width or \ + -self.cursor.y < 0 or -self.cursor.y > self.ui.active_art.height: + return + self.input_active = True + self.reset_cursor_start(self.cursor.x, -self.cursor.y) + self.cursor.start_paint() + #self.ui.message_line.post_line('Started text entry at %s, %s' % (self.start_x + 1, self.start_y + 1)) + self.ui.message_line.post_line('Started text entry, press Escape to stop entering text.', 5) + + def finish_entry(self): + self.input_active = False + self.ui.tool_settings_changed = True + if self.cursor: + x, y = int(self.cursor.x) + 1, int(-self.cursor.y) + 1 + self.cursor.finish_paint() + #self.ui.message_line.post_line('Finished text entry at %s, %s' % (x, y)) + self.ui.message_line.post_line('Finished text entry.') + + def reset_cursor_start(self, new_x, new_y): + self.start_x, self.start_y = int(new_x), int(new_y) + + def handle_keyboard_input(self, key, shift_pressed, ctrl_pressed, alt_pressed): + # for now, do nothing on ctrl/alt + if ctrl_pressed or alt_pressed: + return + # popup should get input if it's up + if self.ui.popup.visible: + return + keystr = sdl2.SDL_GetKeyName(key).decode() + art = self.ui.active_art + frame, layer = art.active_frame, art.active_layer + x, y = int(self.cursor.x), int(-self.cursor.y) + char_w, char_h = art.quad_width, art.quad_height + # TODO: if cursor isn't inside selection, bail early + if keystr == 'Return': + if self.cursor.y < art.width: + self.cursor.x = self.start_x + self.cursor.y -= 1 + elif keystr == 'Backspace': + if self.cursor.x > self.start_x: + self.cursor.x -= char_w + # undo command on previous tile + self.cursor.current_command.undo_commands_for_tile(frame, layer, x-1, y) + elif keystr == 'Space': + keystr = ' ' + elif keystr == 'Up': + if -self.cursor.y > 0: + self.cursor.y += 1 + elif keystr == 'Down': + if -self.cursor.y < art.height - 1: + self.cursor.y -= 1 + elif keystr == 'Left': + if self.cursor.x > 0: + self.cursor.x -= char_w + elif keystr == 'Right': + if self.cursor.x < art.width - 1: + self.cursor.x += char_w + elif keystr == 'Escape': + self.finish_entry() + return + # ignore any other non-character keys + if len(keystr) > 1: + return + # respect capslock + # NOTE: if user has their OS rebind capslock to something else, SDL2 + # will still track its state as a toggle. which means sometimes these + # users will try to do text entry here and be surprised to see all caps. + # if this becomes an issue, maybe offer a cfg setting to always ignore + # capslock? since it's kind of a power user thing anyway. + if keystr.isalpha() and not shift_pressed and not self.ui.app.il.capslock_on: + keystr = keystr.lower() + elif not keystr.isalpha() and shift_pressed: + keystr = SHIFT_MAP.get(keystr, ' ') + # if cursor got out of bounds, don't input + if 0 > x or x >= art.width or 0 > y or y >= art.height: + return + # create tile command + new_tc = EditCommandTile(art) + new_tc.set_tile(frame, layer, x, y) + b_char, b_fg, b_bg, b_xform = art.get_tile_at(frame, layer, x, y) + new_tc.set_before(b_char, b_fg, b_bg, b_xform) + a_char = art.charset.get_char_index(keystr) + a_fg = self.ui.selected_fg_color if self.affects_fg_color else None + a_bg = self.ui.selected_bg_color if self.affects_bg_color else None + a_xform = self.ui.selected_xform if self.affects_xform else None + new_tc.set_after(a_char, a_fg, a_bg, a_xform) + # add command, apply immediately, and move cursor + if self.cursor.current_command: + self.cursor.current_command.add_command_tiles([new_tc]) + else: + self.ui.app.log('DEV WARNING: Cursor current command was expected') + new_tc.apply() + self.cursor.x += char_w + if self.cursor.x >= self.ui.active_art.width: + self.cursor.x = self.start_x + self.cursor.y -= char_h + if -self.cursor.y >= self.ui.active_art.height: + self.finish_entry() + + +class SelectTool(UITool): + + name = 'select' + button_caption = 'Select' + brush_size = None + affects_masks = False + show_preview = False + icon_filename = 'tool_select_add.png' # used only for toolbar + icon_filename_normal = 'tool_select.png' + icon_filename_add = 'tool_select_add.png' + icon_filename_sub = 'tool_select_sub.png' + + def __init__(self, ui): + UITool.__init__(self, ui) + self.selection_in_progress = False + # dict of all tiles (x, y) that have been selected + # (dict for fast random access in SelectionRenderable.get_adjacet_tile) + self.selected_tiles, self.last_selection = {}, {} + # dict of tiles being selected in a drag that's active right now + self.current_drag, self.last_drag = {}, {} + self.drag_start_x, self.drag_start_y = -1, -1 + # create selected tiles and current drag LineRenderables + self.select_renderable = SelectionRenderable(self.ui.app, self.ui.active_art) + self.drag_renderable = SelectionRenderable(self.ui.app, self.ui.active_art) + icon = self.ui.asset_dir + self.icon_filename_normal + self.icon_texture = self.load_icon_texture(icon) + icon = self.ui.asset_dir + self.icon_filename_add + self.icon_texture_add = self.load_icon_texture(icon) + icon = self.ui.asset_dir + self.icon_filename_sub + self.icon_texture_sub = self.load_icon_texture(icon) + + def get_icon_texture(self): + # show different icons based on mod key status + if self.ui.app.il.shift_pressed: + return self.icon_texture_add + elif self.ui.app.il.ctrl_pressed: + return self.icon_texture_sub + else: + return self.icon_texture + + def start_select(self): + self.selection_in_progress = True + self.current_drag = {} + x, y = self.ui.app.cursor.x, int(-self.ui.app.cursor.y) + self.drag_start_x, self.drag_start_y = x, y + #print('started select drag at %s,%s' % (x, y)) + + def finish_select(self, add_to_selection, subtract_from_selection): + self.selection_in_progress = False + # selection boolean operations: + # shift = add, ctrl = subtract, neither = replace + if not add_to_selection and not subtract_from_selection: + self.selected_tiles = self.current_drag.copy() + elif add_to_selection: + for tile in self.current_drag: + self.selected_tiles[tile] = True + elif subtract_from_selection: + for tile in self.current_drag: + self.selected_tiles.pop(tile, None) + self.current_drag = {} + #x, y = self.ui.app.cursor.x, int(-self.ui.app.cursor.y) + #print('finished select drag at %s,%s' % (x, y)) + + def update(self): + if not self.ui.active_art: + return + # update drag based on cursor + # context: cursor has already updated, UI.update calls this + if self.selection_in_progress: + self.current_drag = {} + start_x, start_y = int(self.drag_start_x), int(self.drag_start_y) + end_x, end_y = int(self.ui.app.cursor.x), int(-self.ui.app.cursor.y) + if start_x > end_x: + start_x, end_x, = end_x, start_x + if start_y > end_y: + start_y, end_y, = end_y, start_y + # always grow to include cursor's tile + end_x += 1 + end_y += 1 + w, h = self.ui.active_art.width, self.ui.active_art.height + for y in range(start_y, end_y): + for x in range(start_x, end_x): + # never allow out-of-bounds tiles to be selected + if 0 <= x < w and 0 <= y < h: + self.current_drag[(x, y)] = True + # if selection or drag tiles have updated since last update, + # tell our renderables to update + if self.selected_tiles != self.last_selection: + self.select_renderable.rebuild_geo(self.selected_tiles) + self.select_renderable.rebind_buffers() + if self.current_drag != self.last_drag: + self.drag_renderable.rebuild_geo(self.current_drag) + self.drag_renderable.rebind_buffers() + self.last_selection = self.selected_tiles.copy() + self.last_drag = self.current_drag.copy() + + def render_selections(self): + if len(self.selected_tiles) > 0: + self.select_renderable.render() + if len(self.current_drag) > 0: + self.drag_renderable.render() + + +class PasteTool(UITool): + + name = 'paste' + button_caption = 'Paste' + brush_size = None + icon_filename = 'tool_paste.png' + + # TODO!: dragging large pastes around seems heck of slow, investigate + # why this function might be to blame and see if there's a fix! + def get_paint_commands(self): + # for each command in UI.clipboard, update edit command tile with + # set_before so we can hover/undo/redo properly + commands = [] + # similar to PencilTool's get_paint_commands, but "tiles under brush" + # isn't as straightforward here + art = self.ui.active_art + for tc in self.ui.clipboard: + # deep copy of each clipboard command + new_tc = tc.copy() + # not much depends on EditCommand.art at the moment, set it just + # to be safe + # TODO: determine whether it makes sense to remove it entirely + new_tc.art = art + frame, layer, x, y = new_tc.frame, new_tc.layer, new_tc.x, new_tc.y + frame = art.active_frame + layer = art.active_layer + # offset cursor position, center paste on cursor + x += int(self.ui.app.cursor.x) - int(self.ui.clipboard_width / 2) + y -= int(self.ui.app.cursor.y) + int(self.ui.clipboard_height / 2) + if not (0 <= x < art.width and 0 <= y < art.height): + continue + # if a selection is active, only paint inside it + if len(self.ui.select_tool.selected_tiles) > 0: + if not self.ui.select_tool.selected_tiles.get((x, y), False): + continue + b_char, b_fg, b_bg, b_xform = self.ui.active_art.get_tile_at(frame, layer, x, y) + new_tc.set_before(b_char, b_fg, b_bg, b_xform) + new_tc.set_tile(frame, layer, x, y) + # respect affects masks like other tools + a_char = new_tc.a_char if self.affects_char else b_char + a_fg = new_tc.a_fg if self.affects_fg_color else b_fg + a_bg = new_tc.a_bg if self.affects_bg_color else b_bg + a_xform = new_tc.a_xform if self.affects_xform else b_xform + new_tc.set_after(a_char, a_fg, a_bg, a_xform) + # see comment at end of PencilTool.get_paint_commands + if not new_tc.is_null(): + commands.append(new_tc) + return commands + +# "fill boundary" modes: character, fg color, bg color +FILL_BOUND_CHAR = 0 +FILL_BOUND_FG_COLOR = 1 +FILL_BOUND_BG_COLOR = 2 + +class FillTool(UITool): + + name = 'fill' + button_caption = 'Fill' + brush_size = None + icon_filename = 'tool_fill_char.png' # used only for toolbar + # icons and strings for different boundary modes + icon_filename_char = 'tool_fill_char.png' + icon_filename_fg = 'tool_fill_fg.png' + icon_filename_bg = 'tool_fill_bg.png' + boundary_mode = FILL_BOUND_CHAR + # user-facing names for the boundary modes + boundary_mode_names = { + FILL_BOUND_CHAR : 'character', + FILL_BOUND_FG_COLOR : 'fg color', + FILL_BOUND_BG_COLOR : 'bg color' + } + # determine cycling order + next_boundary_modes = { + FILL_BOUND_CHAR : FILL_BOUND_FG_COLOR, + FILL_BOUND_FG_COLOR : FILL_BOUND_BG_COLOR, + FILL_BOUND_BG_COLOR : FILL_BOUND_CHAR + } + + def __init__(self, ui): + UITool.__init__(self, ui) + icon = self.ui.asset_dir + self.icon_filename_char + self.icon_texture_char = self.load_icon_texture(icon) + icon = self.ui.asset_dir + self.icon_filename_fg + self.icon_texture_fg = self.load_icon_texture(icon) + icon = self.ui.asset_dir + self.icon_filename_bg + self.icon_texture_bg = self.load_icon_texture(icon) + + def get_icon_texture(self): + # show different icon based on boundary type + return [self.icon_texture_char, self.icon_texture_fg, + self.icon_texture_bg][self.boundary_mode] + + def get_button_caption(self): + return '%s (%s bounded)' % (self.button_caption, self.boundary_mode_names[self.boundary_mode]) diff --git a/ui_toolbar.py b/ui_toolbar.py new file mode 100644 index 0000000..e986eb6 --- /dev/null +++ b/ui_toolbar.py @@ -0,0 +1,120 @@ + +from ui_element import UIElement +from ui_button import UIButton + +from renderable_sprite import UISpriteRenderable +from renderable_line import ToolSelectionBoxRenderable + + +class ToolBar(UIElement): + + tile_width, tile_height = 4, 1 # real size will be set based on buttons + icon_scale_factor = 4 + snap_left = True + + def __init__(self, ui): + self.ui = ui + self.icon_renderables = [] + self.create_toolbar_buttons() + UIElement.__init__(self, ui) + self.selection_box = ToolSelectionBoxRenderable(ui.app, self.art) + + def reset_art(self): + # by default, a 1D vertical bar + self.tile_width = ToolBarButton.width + # dynamically set height based on # of buttons + self.tile_height = ToolBarButton.height * len(self.buttons) + self.art.resize(self.tile_width, self.tile_height) + UIElement.reset_art(self) + + def reset_loc(self): + UIElement.reset_loc(self) + # by default, a vertical bar centered along left edge of the screen + height = self.art.quad_height * len(self.buttons) * self.buttons[0].height + self.y = height / 2 + # (x is set by snap_left property in UIElement.reset_loc) + self.renderable.x, self.renderable.y = self.x, self.y + # scale and position button icons only now that we're positioned + self.reset_button_icons() + + def create_toolbar_buttons(self): + # (override in subclass) + pass + + def update_selection_box(self): + # (override in subclass) + pass + + def update(self): + UIElement.update(self) + self.update_selection_box() + + def render(self): + UIElement.render(self) + for r in self.icon_renderables: + r.render() + self.selection_box.render() + + +class ToolBarButton(UIButton): + width, height = 4, 2 + caption = '' + tooltip_on_hover = True + + def get_tooltip_text(self): + return self.cb_arg.button_caption + + def get_tooltip_location(self): + x = self.width + window_height_chars = self.element.ui.app.window_height / (self.element.ui.charset.char_height * self.element.ui.scale) + cursor_y = self.element.ui.app.mouse_y / self.element.ui.app.window_height + y = int(cursor_y * window_height_chars) + return x, y + + +class ArtToolBar(ToolBar): + + def create_toolbar_buttons(self): + for i,tool in enumerate(self.ui.tools): + button = ToolBarButton(self) + # button.caption = tool.button_caption # DEBUG + button.x = 0 + button.y = i * button.height + # alternate colors + button.normal_bg_color = self.ui.colors.white if i % 2 == 0 else self.ui.colors.lightgrey + button.hovered_bg_color = self.ui.colors.medgrey + # callback: tell ui to set this tool as selected + button.callback = self.ui.set_selected_tool + button.cb_arg = tool + self.buttons.append(button) + # create button icon + sprite = UISpriteRenderable(self.ui.app, self.ui.asset_dir + tool.icon_filename) + self.icon_renderables.append(sprite) + + def reset_button_icons(self): + button_height = self.art.quad_height * ToolBarButton.height + for i,icon in enumerate(self.icon_renderables): + # scale: same screen size as cursor icon + scale_x = icon.texture.width / self.ui.app.window_width + scale_x *= self.icon_scale_factor * self.ui.scale + icon.scale_x = scale_x + scale_y = icon.texture.height / self.ui.app.window_height + scale_y *= self.icon_scale_factor * self.ui.scale + icon.scale_y = scale_y + # position + # remember that in renderable space, (0, 0) = center of screen + icon.x = self.x + icon.x += (icon.scale_x / 8) + icon.y = self.y + icon.y -= button_height * i + icon.y -= icon.scale_y + icon.y -= (icon.scale_y / 8) + + def update_selection_box(self): + # scale and position box around currently selected tool + self.selection_box.scale_x = ToolBarButton.width + self.selection_box.scale_y = ToolBarButton.height + self.selection_box.x = self.x + self.selection_box.y = self.y + sel_index = self.ui.tools.index(self.ui.selected_tool) + self.selection_box.y -= sel_index * self.art.quad_height * ToolBarButton.height diff --git a/vector.py b/vector.py new file mode 100644 index 0000000..1179991 --- /dev/null +++ b/vector.py @@ -0,0 +1,208 @@ +import math +import numpy as np + +from OpenGL import GL, GLU + +class Vec3: + + "Basic 3D vector class. Not used very much currently." + + def __init__(self, x=0, y=0, z=0): + self.x, self.y, self.z = x, y, z + + def __str__(self): + return 'Vec3 %.4f, %.4f, %.4f' % (self.x, self.y, self.z) + + def __sub__(self, b): + "Return a new vector subtracted from given other vector." + return Vec3(self.x - b.x, self.y - b.y, self.z - b.z) + + def length(self): + "Return this vector's scalar length." + return math.sqrt(self.x ** 2 + self.y ** 2 + self.z ** 2) + + def normalize(self): + "Return a unit length version of this vector." + n = Vec3() + l = self.length() + if l != 0: + ilength = 1.0 / l + n.x = self.x * ilength + n.y = self.y * ilength + n.z = self.z * ilength + return n + + def cross(self, b): + "Return a new vector of cross product with given other vector." + x = self.y * b.z - self.z * b.y + y = self.z * b.x - self.x * b.z + z = self.x * b.y - self.y * b.x + return Vec3(x, y, z) + + def dot(self, b): + "Return scalar dot product with given other vector." + return self.x * b.x + self.y * b.y + self.z * b.z + + def inverse(self): + "Return a new vector that is inverse of this vector." + return Vec3(-self.x, -self.y, -self.z) + + def copy(self): + "Return a copy of this vector." + return Vec3(self.x, self.y, self.z) + +def get_tiles_along_line(x0, y0, x1, y1): + """ + Return list of (x,y) tuples for all tiles crossing given worldspace + line points. + from http://playtechs.blogspot.com/2007/03/raytracing-on-grid.html + NOTE: this implementation assumes square tiles! + """ + dx, dy = abs(x1 - x0), abs(y1 - y0) + x, y = math.floor(x0), math.floor(y0) + n = 1 + if dx == 0: + x_inc = 0 + error = float('inf') + elif x1 > x0: + x_inc = 1 + n += math.floor(x1) - x + error = (math.floor(x0) + 1 - x0) * dy + else: + x_inc = -1 + n += x - math.floor(x1) + error = (x0 - math.floor(x0)) * dy + if dy == 0: + y_inc = 0 + error -= float('inf') + elif y1 > y0: + y_inc = 1 + n += math.floor(y1) - y + error -= (math.floor(y0) + 1 - y0) * dx + else: + y_inc = -1 + n += y - math.floor(y1) + error -= (y0 - math.floor(y0)) * dx + tiles = [] + while n > 0: + tiles.append((x, y)) + if error > 0: + y += y_inc + error -= dx + else: + x += x_inc + error += dy + n -= 1 + return tiles + +def get_tiles_along_integer_line(x0, y0, x1, y1, cut_corners=True): + """ + simplified version of get_tiles_along_line using only integer math, + also from http://playtechs.blogspot.com/2007/03/raytracing-on-grid.html + + cut_corners=True: when a 45 degree line is only intersecting the corners + of two tiles, don't count them as overlapped. + """ + dx, dy = abs(x1 - x0), abs(y1 - y0) + x, y = x0, y0 + n = 1 + dx + dy + x_inc = 1 if x1 > x0 else -1 + y_inc = 1 if y1 > y0 else -1 + error = dx - dy + dx *= 2 + dy *= 2 + tiles = [] + while n > 0: + tiles.append((x, y)) + if error == 0 and cut_corners: + x += x_inc + y += y_inc + # count this iteration as two + n -= 1 + elif error > 0: + x += x_inc + error -= dy + else: + y += y_inc + error += dx + n -= 1 + return tiles + +def cut_xyz(x, y, z, threshold): + """ + Return input x,y,z with each axis clamped to 0 if it's close enough to + given threshold + """ + x = x if abs(x) > threshold else 0 + y = y if abs(y) > threshold else 0 + z = z if abs(z) > threshold else 0 + return x, y, z + +def ray_plane_intersection(plane_x, plane_y, plane_z, + plane_dir_x, plane_dir_y, plane_dir_z, + ray_x, ray_y, ray_z, + ray_dir_x, ray_dir_y, ray_dir_z): + # from http://stackoverflow.com/a/39424162 + plane = np.array([plane_x, plane_y, plane_z]) + plane_dir = np.array([plane_dir_x, plane_dir_y, plane_dir_z]) + ray = np.array([ray_x, ray_y, ray_z]) + ray_dir = np.array([ray_dir_x, ray_dir_y, ray_dir_z]) + ndotu = plane_dir.dot(ray_dir) + if abs(ndotu) < 0.000001: + #print ("no intersection or line is within plane") + return 0, 0, 0 + w = ray - plane + si = -plane_dir.dot(w) / ndotu + psi = w + si * ray_dir + plane + return psi[0], psi[1], psi[2] + +def screen_to_world(app, screen_x, screen_y): + """ + Return 3D (float) world space coordinates for given 2D (int) screen space + coordinates. + """ + # thanks http://www.bfilipek.com/2012/06/select-mouse-opengl.html + # get world space ray from view space mouse loc + screen_y = app.window_height - screen_y + z1, z2 = 0, 0.99999 + pjm = np.matrix(app.camera.projection_matrix, dtype=np.float64) + vm = np.matrix(app.camera.view_matrix, dtype=np.float64) + start_x, start_y, start_z = GLU.gluUnProject(screen_x, screen_y, z1, vm, pjm) + end_x, end_y, end_z = GLU.gluUnProject(screen_x, screen_y, z2, vm, pjm) + dir_x, dir_y, dir_z = end_x - start_x, end_y - start_y, end_z - start_z + # define Z of plane to test against + # TODO: what Z is appropriate for game mode picking? test multiple planes? + art = app.ui.active_art + plane_z = art.layers_z[art.active_layer] if art and not app.game_mode else 0 + x, y, z = ray_plane_intersection(0, 0, plane_z, # plane loc + 0, 0, 1, # plane dir + end_x, end_y, end_z, # ray origin + dir_x, dir_y, dir_z) # ray dir + return x, y, z + +def world_to_screen(app, world_x, world_y, world_z): + """ + Return 2D screen pixel space coordinates for given 3D (float) world space + coordinates. + """ + pjm = np.matrix(app.camera.projection_matrix, dtype=np.float64) + vm = np.matrix(app.camera.view_matrix, dtype=np.float64) + # viewport tuple order should be same as glGetFloatv(GL_VIEWPORT) + viewport = (0, 0, app.window_width, app.window_height) + try: + x, y, z = GLU.gluProject(world_x, world_y, world_z, vm, pjm, viewport) + except: + x, y, z = 0, 0, 0 + app.log('GLU.gluProject failed!') + # does Z mean anything here? + return x, y + +def world_to_screen_normalized(app, world_x, world_y, world_z): + """ + Return normalized (-1 to 1) 2D screen space coordinates for given 3D + world space coordinates. + """ + x, y = world_to_screen(app, world_x, world_y, world_z) + x = (2 * x) / app.window_width - 1 + y = (-2 * y) / app.window_height + 1 + return x, -y diff --git a/version b/version new file mode 100644 index 0000000..128edb0 --- /dev/null +++ b/version @@ -0,0 +1 @@ +9.18 diff --git a/win_copy_include b/win_copy_include new file mode 100644 index 0000000..e8f44dd --- /dev/null +++ b/win_copy_include @@ -0,0 +1,6 @@ +version +*.default +README.md +license.txt +code_of_conduct.txt +*.dll diff --git a/win_xcopy_exclude b/win_xcopy_exclude new file mode 100644 index 0000000..0041fb8 --- /dev/null +++ b/win_xcopy_exclude @@ -0,0 +1 @@ +__pycache__ diff --git a/win_xcopy_include b/win_xcopy_include new file mode 100644 index 0000000..3cce6ee --- /dev/null +++ b/win_xcopy_include @@ -0,0 +1,10 @@ +art\*.* +charsets\*.* +palettes\*.* +games\*.* +artscripts\*.arsc +formats\*.* +shaders\*.glsl +ui\*.png +docs\html\*.* +docs\html\generated\*.* diff --git a/zip_build.bat b/zip_build.bat new file mode 100644 index 0000000..481f574 --- /dev/null +++ b/zip_build.bat @@ -0,0 +1,10 @@ +@echo off +set ZIP_EXE="c:\Program Files\7-Zip\7z.exe" +REM get version number from file +set /p PLAYSCII_VERSION=