From a9c1f9a8a705bf58283f08273269cd438e0a19ed Mon Sep 17 00:00:00 2001 From: Mivirl <213014337+Mivirl@users.noreply.github.com> Date: Thu, 26 Jun 2025 22:26:38 +0000 Subject: [PATCH] [Renderers/termbox2] Termbox2 renderer & examples (#419) --- examples/termbox2-demo/CMakeLists.txt | 36 + examples/termbox2-demo/main.c | 789 +++++ examples/termbox2-demo/readme.md | 72 + .../resources/512px-Shark_antwerp_zoo.jpeg | Bin 0 -> 67516 bytes examples/termbox2-image-demo/CMakeLists.txt | 38 + examples/termbox2-image-demo/main.c | 707 ++++ examples/termbox2-image-demo/readme.md | 88 + .../512px-Balmoral_Castle_30_July_2011.jpeg | Bin 0 -> 41919 bytes ...Deutscher_Schäferhund_(Folder_(IV)_22.jpeg | Bin 0 -> 40341 bytes .../512px-Rosa_Cubana_2018-09-21_1610.jpeg | Bin 0 -> 50809 bytes .../resources/512px-Shark_antwerp_zoo.jpeg | Bin 0 -> 67516 bytes ...rderer_Graben_10_Bamberg_20190830_001.jpeg | Bin 0 -> 49045 bytes renderers/termbox2/clay_renderer_termbox2.c | 1776 ++++++++++ renderers/termbox2/image_character_masks.h | 2863 +++++++++++++++++ 14 files changed, 6369 insertions(+) create mode 100644 examples/termbox2-demo/CMakeLists.txt create mode 100644 examples/termbox2-demo/main.c create mode 100644 examples/termbox2-demo/readme.md create mode 100644 examples/termbox2-demo/resources/512px-Shark_antwerp_zoo.jpeg create mode 100644 examples/termbox2-image-demo/CMakeLists.txt create mode 100644 examples/termbox2-image-demo/main.c create mode 100644 examples/termbox2-image-demo/readme.md create mode 100644 examples/termbox2-image-demo/resources/512px-Balmoral_Castle_30_July_2011.jpeg create mode 100644 examples/termbox2-image-demo/resources/512px-German_Shepherd_(aka_Alsatian_and_Alsatian_Wolf_Dog),_Deutscher_Schäferhund_(Folder_(IV)_22.jpeg create mode 100644 examples/termbox2-image-demo/resources/512px-Rosa_Cubana_2018-09-21_1610.jpeg create mode 100644 examples/termbox2-image-demo/resources/512px-Shark_antwerp_zoo.jpeg create mode 100644 examples/termbox2-image-demo/resources/512px-Vorderer_Graben_10_Bamberg_20190830_001.jpeg create mode 100644 renderers/termbox2/clay_renderer_termbox2.c create mode 100644 renderers/termbox2/image_character_masks.h diff --git a/examples/termbox2-demo/CMakeLists.txt b/examples/termbox2-demo/CMakeLists.txt new file mode 100644 index 0000000..20d9026 --- /dev/null +++ b/examples/termbox2-demo/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.25) +project(clay_examples_termbox2_demo C) +set(CMAKE_C_STANDARD 11) + +include(FetchContent) +set(FETCHCONTENT_QUIET FALSE) + +FetchContent_Declare( + termbox2 + GIT_REPOSITORY "https://github.com/termbox/termbox2.git" + GIT_TAG "9c9281a9a4c971a2be57f8645e828ec99fd555e8" + GIT_PROGRESS TRUE + GIT_SHALLOW TRUE +) +FetchContent_MakeAvailable(termbox2) + +FetchContent_Declare( + stb + GIT_REPOSITORY "https://github.com/nothings/stb.git" + GIT_TAG "f58f558c120e9b32c217290b80bad1a0729fbb2c" + GIT_PROGRESS TRUE + GIT_SHALLOW TRUE +) +FetchContent_MakeAvailable(stb) + +add_executable(clay_examples_termbox2_demo main.c) + +target_compile_options(clay_examples_termbox2_demo PUBLIC) +target_include_directories(clay_examples_termbox2_demo PUBLIC . PRIVATE ${termbox2_SOURCE_DIR} PRIVATE ${stb_SOURCE_DIR}) +target_link_libraries(clay_examples_termbox2_demo PRIVATE m) # Used by stb_image.h + +add_custom_command( + TARGET clay_examples_termbox2_demo POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${CMAKE_CURRENT_SOURCE_DIR}/resources + ${CMAKE_CURRENT_BINARY_DIR}/resources) diff --git a/examples/termbox2-demo/main.c b/examples/termbox2-demo/main.c new file mode 100644 index 0000000..a4ac094 --- /dev/null +++ b/examples/termbox2-demo/main.c @@ -0,0 +1,789 @@ +/* + Unlicense + + Copyright (c) 2025 Mivirl + + This is free and unencumbered software released into the public domain. + + Anyone is free to copy, modify, publish, use, compile, sell, or + distribute this software, either in source code form or as a compiled + binary, for any purpose, commercial or non-commercial, and by any + means. + + In jurisdictions that recognize copyright laws, the author or authors + of this software dedicate any and all copyright interest in the + software to the public domain. We make this dedication for the benefit + of the public at large and to the detriment of our heirs and + successors. We intend this dedication to be an overt act of + relinquishment in perpetuity of all present and future rights to this + software under copyright law. + + 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 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. + + For more information, please refer to +*/ + +#define CLAY_IMPLEMENTATION +#include "../../clay.h" +#include "../../renderers/termbox2/clay_renderer_termbox2.c" + +#define TB_IMPL +#include "termbox2.h" + +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" + +#define STB_IMAGE_RESIZE_IMPLEMENTATION +#include "stb_image_resize2.h" + + +// ------------------------------------------------------------------------------------------------- +// -- Internal state + +// If the program should exit the main render/interaction loop +bool end_loop = false; + +// If the debug tools should be displayed +bool debugMode = false; + + +// ------------------------------------------------------------------------------------------------- +// -- Clay components + +void component_text_pair(const char *key, const char *value) +{ + size_t keylen = strlen(key); + size_t vallen = strlen(value); + Clay_String keytext = (Clay_String) { + .length = keylen, + .chars = key, + }; + Clay_String valtext = (Clay_String) { + .length = vallen, + .chars = value, + }; + Clay_TextElementConfig *textconfig = + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff } }); + CLAY({ + .layout = { + .sizing = { + .width = { + .size.minMax = { + .min = strlen("Border chars CLAY_TB_IMAGE_MODE_UNICODE_FAST") * Clay_Termbox_Cell_Width(), + } + }, + } + }, + }) { + CLAY_TEXT(keytext, textconfig); + CLAY({ .layout = { .sizing = CLAY_SIZING_GROW(1) } }) { } + CLAY_TEXT(valtext, textconfig); + } + +} + +void component_termbox_settings(void) +{ + CLAY({ + .floating = { + .attachTo = CLAY_ATTACH_TO_PARENT, + .zIndex = 1, + .attachPoints = { CLAY_ATTACH_POINT_CENTER_CENTER, CLAY_ATTACH_POINT_CENTER_TOP }, + .offset = { 0, 0 } + }, + }) { + CLAY({ + .layout = { + .sizing = CLAY_SIZING_FIT(), + .padding = { + 6 * Clay_Termbox_Cell_Width(), + 6 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Height(), + 2 * Clay_Termbox_Cell_Height(), + } + }, + .border = { + .width = CLAY_BORDER_ALL(1), + .color = { 0x00, 0x00, 0x00, 0xff } + }, + .backgroundColor = { 0x7f, 0x00, 0x00, 0x7f } + }) { + const char *color_mode = NULL; + switch (clay_tb_color_mode) { + case TB_OUTPUT_NORMAL: { + color_mode = "TB_OUTPUT_NORMAL"; + break; + } + case TB_OUTPUT_256: { + color_mode = "TB_OUTPUT_256"; + break; + } + case TB_OUTPUT_216: { + color_mode = "TB_OUTPUT_216"; + break; + } + case TB_OUTPUT_GRAYSCALE: { + color_mode = "TB_OUTPUT_GRAYSCALE"; + break; + } + case TB_OUTPUT_TRUECOLOR: { + color_mode = "TB_OUTPUT_TRUECOLOR"; + break; + } + case CLAY_TB_OUTPUT_NOCOLOR: { + color_mode = "CLAY_TB_OUTPUT_NOCOLOR"; + break; + } + default: { + color_mode = "INVALID"; + break; + } + } + const char *border_mode = NULL; + switch (clay_tb_border_mode) { + case CLAY_TB_BORDER_MODE_ROUND: { + border_mode = "CLAY_TB_BORDER_MODE_ROUND"; + break; + } + case CLAY_TB_BORDER_MODE_MINIMUM: { + border_mode = "CLAY_TB_BORDER_MODE_MINIMUM"; + break; + } + default: { + border_mode = "INVALID"; + break; + } + } + const char *border_chars = NULL; + switch (clay_tb_border_chars) { + case CLAY_TB_BORDER_CHARS_ASCII: { + border_chars = "CLAY_TB_BORDER_CHARS_ASCII"; + break; + } + case CLAY_TB_BORDER_CHARS_UNICODE: { + border_chars = "CLAY_TB_BORDER_CHARS_UNICODE"; + break; + } + case CLAY_TB_BORDER_CHARS_BLANK: { + border_chars = "CLAY_TB_BORDER_CHARS_BLANK"; + break; + } + case CLAY_TB_BORDER_CHARS_NONE: { + border_chars = "CLAY_TB_BORDER_CHARS_NONE"; + break; + } + default: { + border_chars = "INVALID"; + break; + } + } + const char *image_mode = NULL; + switch (clay_tb_image_mode) { + case CLAY_TB_IMAGE_MODE_PLACEHOLDER: { + image_mode = "CLAY_TB_IMAGE_MODE_PLACEHOLDER"; + break; + } + case CLAY_TB_IMAGE_MODE_BG: { + image_mode = "CLAY_TB_IMAGE_MODE_BG"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FG: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII_FG"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FG_FAST: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII_FG_FAST"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FAST: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII_FAST"; + break; + } + case CLAY_TB_IMAGE_MODE_UNICODE: { + image_mode = "CLAY_TB_IMAGE_MODE_UNICODE"; + break; + } + case CLAY_TB_IMAGE_MODE_UNICODE_FAST: { + image_mode = "CLAY_TB_IMAGE_MODE_UNICODE_FAST"; + break; + } + default: { + image_mode = "INVALID"; + break; + } + } + const char *transparency = NULL; + if (clay_tb_transparency) { + transparency = "true"; + } else { + transparency = "false"; + } + + CLAY({ + .layout = { .layoutDirection = CLAY_TOP_TO_BOTTOM }, + }) { + component_text_pair("Color mode", color_mode); + component_text_pair("Border mode", border_mode); + component_text_pair("Border chars", border_chars); + component_text_pair("Image mode", image_mode); + component_text_pair("Transparency", transparency); + } + } + } +} + +void component_color_palette(void) +{ + CLAY({ + .layout = { + .childGap = 16, + .padding = { + 2 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Height(), + 2 * Clay_Termbox_Cell_Height(), + } + }, + .border = { + .width = CLAY_BORDER_OUTSIDE(2), + .color = { 0x00, 0x00, 0x00, 0xff } + }, + .backgroundColor = { 0x7f, 0x7f, 0x7f, 0xff } + }) { + for (int type = 0; type < 2; ++type) { + CLAY({ + .layout ={ + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .sizing = CLAY_SIZING_FIT(), + .childGap = Clay_Termbox_Cell_Height() + }, + }) { + for (float ri = 0; ri < 4; ri += 1) { + CLAY({ + .layout ={ + .sizing = CLAY_SIZING_FIT(), + .childGap = Clay_Termbox_Cell_Width() + }, + }) { + for (float r = ri * 0x44; r < (ri + 1) * 0x44; r += 0x22) { + CLAY({ + .layout ={ + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .sizing = CLAY_SIZING_FIT(), + }, + }) { + for (float g = 0; g < 0xff; g += 0x22) { + CLAY({ + .layout ={ + .sizing = CLAY_SIZING_FIT(), + }, + }) { + for (float b = 0; b < 0xff; b += 0x22) { + Clay_Color color = { r, g, b, 0x7f }; + + Clay_LayoutConfig layout = (Clay_LayoutConfig) { + .sizing = { + .width = CLAY_SIZING_FIXED(2 * Clay_Termbox_Cell_Width()), + .height = CLAY_SIZING_FIXED(1 * Clay_Termbox_Cell_Height()) + } + }; + if (0 == type) { + CLAY({ + .layout = layout, + .backgroundColor = color + }) {} + } else if (1 == type) { + CLAY({ + .layout = layout, + }) { + CLAY_TEXT(CLAY_STRING("#"), CLAY_TEXT_CONFIG({ .textColor = color })); + } + } + } + } + } + } + } + } + } + } + } + } +} + +void component_unicode_text(void) +{ + CLAY({ + .layout = { + .sizing = CLAY_SIZING_FIT(), + .padding = { + 2 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Height(), + 2 * Clay_Termbox_Cell_Height(), + } + }, + .backgroundColor = { 0xcc, 0xbb, 0xaa, 0xff }, + .border = { + // This border should still be displayed in CLAY_TB_BORDER_MODE_ROUND mode + .width = { + 0.75 * Clay_Termbox_Cell_Width(), + 0.75 * Clay_Termbox_Cell_Width(), + 0.75 * Clay_Termbox_Cell_Height(), + 0.75 * Clay_Termbox_Cell_Height(), + }, + .color = { 0x33, 0x33, 0x33, 0xff }, + }, + }) { + CLAY_TEXT( + CLAY_STRING("Non-ascii character tests:\n" + "\n" + "(from https://www.w3.org/2001/06/utf-8-test/UTF-8-demo.html)\n" + " Mathematics and Sciences:\n" + " ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β),\n" + " ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (A ⇔ B),\n" + " 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm\n" + "\n" + " Compact font selection example text:\n" + " ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789\n" + " abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ\n" + " –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд\n" + " ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა\n" + "\n" + "(from https://blog.denisbider.com/2015/09/when-monospace-fonts-arent-unicode.html):\n" + " aeioucsz\n" + " áéíóúčšž\n" + " 台北1234\n" + " QRS12\n" + " アイウ1234\n" + "\n" + "(from https://stackoverflow.com/a/1644280)\n" + " ٩(-̮̮̃-̃)۶ ٩(●̮̮̃•̃)۶ ٩(͡๏̯͡๏)۶ ٩(-̮̮̃•̃)." + ), + CLAY_TEXT_CONFIG({ .textColor = { 0x11, 0x11, 0x11, 0xff } }) + ); + } +} + +void component_keybinds(void) +{ + CLAY({ + .layout = { + .sizing = CLAY_SIZING_FIT(), + .padding = { + 4 * Clay_Termbox_Cell_Width(), + 4 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Height(), + 2 * Clay_Termbox_Cell_Height(), + } + }, + .backgroundColor = { 0x00, 0x7f, 0x7f, 0xff } + }) { + CLAY_TEXT( + CLAY_STRING( + "Termbox2 renderer test\n" + "\n" + "Keybinds:\n" + " c/C - Cycle through color modes\n" + " b/B - Cycle through border modes\n" + " h/H - Cycle through border characters\n" + " i/I - Cycle through image modes\n" + " t/T - Toggle transparency\n" + " d/D - Toggle debug mode\n" + " q/Q - Quit\n" + ), + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff }}) + ); + } +} + +void component_image(clay_tb_image *image, int width) +{ + CLAY({ + .layout = { + .sizing = { + .width = (0 == width) ? CLAY_SIZING_GROW() : CLAY_SIZING_FIXED(width), + }, + }, + .image = { + .imageData = image, + }, + .aspectRatio = { 512.0 / 406.0 } + }) { } +} + +void component_mouse_data(void) +{ + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + }, + }, + }) { + Clay_Context* context = Clay_GetCurrentContext(); + Clay_Vector2 mouse_position = context->pointerInfo.position; + + Clay_LayoutConfig layout = (Clay_LayoutConfig) { + .sizing = { + .width = CLAY_SIZING_FIXED(2 * Clay_Termbox_Cell_Width()), + .height = CLAY_SIZING_FIXED(1 * Clay_Termbox_Cell_Height()) + } + }; + + float v = 255 * mouse_position.x / Clay_Termbox_Width(); + v = (0 > v) ? 0 : v; + v = (255 < v) ? 255 : v; + Clay_Color color = (Clay_Color) { v, v, v, 0xff }; + + CLAY({ + .layout = layout, + .backgroundColor = color + }) {} + + v = 255 * mouse_position.y / Clay_Termbox_Height(); + v = (0 > v) ? 0 : v; + v = (255 < v) ? 255 : v; + color = (Clay_Color) { v, v, v, 0xff }; + + + CLAY({ + .layout = layout, + .backgroundColor = color + }) {} + + } +} + +void component_bordered_text(void) +{ + CLAY({ + .layout = { + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .sizing = { + .width = CLAY_SIZING_FIT(450), + .height = CLAY_SIZING_FIT(), + }, + .padding = CLAY_PADDING_ALL(32) + }, + .backgroundColor = { 0x24, 0x55, 0x34, 0xff }, + }) { + CLAY({ + .border = { .width = { 1, 1, 1, 1, 1 }, .color = { 0xaa, 0x00, 0x00, 0xff } }, + }) { + CLAY_TEXT( + CLAY_STRING("Test"), CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff } })); + } + CLAY({ + .border = { .width = { 1, 1, 1, 1, 1 }, .color = { 0x00, 0xaa, 0x00, 0xff } }, + }) { + CLAY_TEXT(CLAY_STRING("of the border width"), + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff } })); + } + CLAY({ + .border = { .width = { 1, 1, 1, 1, 1 }, .color = { 0x00, 0x00, 0xaa, 0xff } }, + }) { + CLAY_TEXT(CLAY_STRING("and overlap for multiple lines\nof text"), + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff } })); + } + CLAY({ + .border = { .width = { 1, 1, 1, 1, 1 }, .color = { 0x00, 0x00, 0xaa, 0xff } }, + }) { + CLAY_TEXT(CLAY_STRING("this text\nis long enough\nto display all\n borders\naround it"), + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff } })); + } + } +} + +Clay_RenderCommandArray CreateLayout(clay_tb_image *image1, clay_tb_image *image2) +{ + Clay_BeginLayout(); + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + .height = CLAY_SIZING_GROW() + }, + .childAlignment = { + .x = CLAY_ALIGN_X_CENTER, + .y = CLAY_ALIGN_Y_CENTER + }, + .childGap = 64 + }, + .backgroundColor = { 0x24, 0x24, 0x24, 0xff } + }) { + CLAY({ + .layout = { + .childAlignment = { + .x = CLAY_ALIGN_X_RIGHT, + }, + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .sizing = CLAY_SIZING_FIT(), + }, + }) { + component_keybinds(); + component_unicode_text(); + } + CLAY({ + .layout = { + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .childGap = 32, + .sizing = CLAY_SIZING_FIT(), + }, + }) { + component_termbox_settings(); + component_image(image1, 150); + component_image(image2, 0); + component_mouse_data(); + component_bordered_text(); + } + + component_color_palette(); + } + return Clay_EndLayout(); +} + + +// ------------------------------------------------------------------------------------------------- +// -- Interactive functions + +void handle_clay_errors(Clay_ErrorData errorData) +{ + Clay_Termbox_Close(); + fprintf(stderr, "%s", errorData.errorText.chars); + exit(1); +} + +/** + Process events received from termbox2 and handle interaction + */ +void handle_termbox_events(void) +{ + // Wait up to 100ms for an event (key/mouse press, terminal resize) before continuing + // If an event is already available, this doesn't wait. Will not wait due to the previous call + // to termbox_waitfor_event. Increasing the wait time reduces load without reducing + // responsiveness (but will of course prevent other code from running on this thread while it's + // waiting) + struct tb_event evt; + int ms_to_wait = 0; + int err = tb_peek_event(&evt, ms_to_wait); + + switch (err) { + default: + case TB_ERR_NO_EVENT: { + break; + } + case TB_ERR_POLL: { + if (EINTR != tb_last_errno()) { + Clay_Termbox_Close(); + fprintf(stderr, "Failed to read event from TTY\n"); + exit(1); + } + break; + } + case TB_OK: { + switch (evt.type) { + case TB_EVENT_RESIZE: { + Clay_SetLayoutDimensions((Clay_Dimensions) { + Clay_Termbox_Width(), + Clay_Termbox_Height() + }); + break; + } + case TB_EVENT_KEY: { + if (TB_KEY_CTRL_C == evt.key) { + end_loop = true; + break; + } + switch (evt.ch) { + case 'q': + case 'Q': { + end_loop = true; + break; + } + case 'd': + case 'D': { + debugMode = !debugMode; + Clay_SetDebugModeEnabled(debugMode); + break; + } + case 'c': { + int new_mode = clay_tb_color_mode - 1; + new_mode = (0 <= new_mode) ? new_mode : TB_OUTPUT_TRUECOLOR; + Clay_Termbox_Set_Color_Mode(new_mode); + break; + } + case 'C': { + int new_mode = (clay_tb_color_mode + 1) % (TB_OUTPUT_TRUECOLOR + 1); + Clay_Termbox_Set_Color_Mode(new_mode); + break; + } + case 'b': { + enum border_mode new_mode = clay_tb_border_mode - 1; + new_mode = (CLAY_TB_BORDER_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_BORDER_MODE_MINIMUM; + Clay_Termbox_Set_Border_Mode(new_mode); + break; + } + case 'B': { + enum border_mode new_mode = (clay_tb_border_mode + 1) + % (CLAY_TB_BORDER_MODE_MINIMUM + 1); + new_mode = (CLAY_TB_BORDER_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_BORDER_MODE_ROUND; + Clay_Termbox_Set_Border_Mode(new_mode); + break; + } + case 'h': { + enum border_chars new_chars = clay_tb_border_chars - 1; + new_chars = (CLAY_TB_BORDER_CHARS_DEFAULT < new_chars) + ? new_chars + : CLAY_TB_BORDER_CHARS_NONE; + Clay_Termbox_Set_Border_Chars(new_chars); + break; + } + case 'H': { + enum border_chars new_chars + = (clay_tb_border_chars + 1) % (CLAY_TB_BORDER_CHARS_NONE + 1); + new_chars = (CLAY_TB_BORDER_CHARS_DEFAULT < new_chars) + ? new_chars + : CLAY_TB_BORDER_CHARS_ASCII; + Clay_Termbox_Set_Border_Chars(new_chars); + break; + } + case 'i': { + enum image_mode new_mode = clay_tb_image_mode - 1; + new_mode = (CLAY_TB_IMAGE_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_IMAGE_MODE_UNICODE_FAST; + Clay_Termbox_Set_Image_Mode(new_mode); + break; + } + case 'I': { + enum image_mode new_mode = (clay_tb_image_mode + 1) + % (CLAY_TB_IMAGE_MODE_UNICODE_FAST + 1); + new_mode = (CLAY_TB_IMAGE_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_IMAGE_MODE_PLACEHOLDER; + Clay_Termbox_Set_Image_Mode(new_mode); + break; + } + case 't': + case 'T': { + Clay_Termbox_Set_Transparency(!clay_tb_transparency); + } + } + break; + } + case TB_EVENT_MOUSE: { + Clay_Vector2 mousePosition = { + (float)evt.x * Clay_Termbox_Cell_Width(), + (float)evt.y * Clay_Termbox_Cell_Height() + }; + + // Mouse release events may not be produced by all terminals, and will + // be sent during hover, so can't be used to detect when the mouse has + // been released + + switch (evt.key) { + case TB_KEY_MOUSE_LEFT: { + Clay_SetPointerState(mousePosition, true); + break; + } + case TB_KEY_MOUSE_RIGHT: { + Clay_SetPointerState(mousePosition, false); + break; + } + case TB_KEY_MOUSE_MIDDLE: { + Clay_SetPointerState(mousePosition, false); + break; + } + case TB_KEY_MOUSE_RELEASE: { + Clay_SetPointerState(mousePosition, false); + break; + } + case TB_KEY_MOUSE_WHEEL_UP: { + Clay_Vector2 scrollDelta = { 0, 1 * Clay_Termbox_Cell_Height() }; + Clay_UpdateScrollContainers(false, scrollDelta, 1); + break; + } + case TB_KEY_MOUSE_WHEEL_DOWN: { + Clay_Vector2 scrollDelta = { 0, -1 * Clay_Termbox_Cell_Height() }; + Clay_UpdateScrollContainers(false, scrollDelta, 1); + break; + } + default: { + break; + } + } + break; + } + default: { + break; + } + } + break; + } + } +} + +int main(void) +{ + clay_tb_image shark_image1 = Clay_Termbox_Image_Load_File("resources/512px-Shark_antwerp_zoo.jpeg"); + clay_tb_image shark_image2 = Clay_Termbox_Image_Load_File("resources/512px-Shark_antwerp_zoo.jpeg"); + if (NULL == shark_image1.pixel_data) { exit(1); } + if (NULL == shark_image2.pixel_data) { exit(1); } + + int num_elements = 3 * 8192; + Clay_SetMaxElementCount(num_elements); + + uint64_t size = Clay_MinMemorySize(); + void *memory = malloc(size); + if (NULL == memory) { exit(1); } + + Clay_Arena clay_arena = Clay_CreateArenaWithCapacityAndMemory(size, memory); + + Clay_Termbox_Initialize( + TB_OUTPUT_256, CLAY_TB_BORDER_MODE_DEFAULT, CLAY_TB_BORDER_CHARS_DEFAULT, CLAY_TB_IMAGE_MODE_DEFAULT, false); + + Clay_Initialize(clay_arena, (Clay_Dimensions) { Clay_Termbox_Width(), Clay_Termbox_Height() }, + (Clay_ErrorHandler) { handle_clay_errors, NULL }); + + Clay_SetMeasureTextFunction(Clay_Termbox_MeasureText, NULL); + + // Initial render before waiting for events + Clay_RenderCommandArray commands = CreateLayout(&shark_image1, &shark_image2); + Clay_Termbox_Render(commands); + tb_present(); + + while (!end_loop) { + // Block until event is available. Optional, but reduces load since this demo is purely + // synchronous to user input. + Clay_Termbox_Waitfor_Event(); + + handle_termbox_events(); + + commands = CreateLayout(&shark_image1, &shark_image2); + + tb_clear(); + Clay_Termbox_Render(commands); + tb_present(); + } + + Clay_Termbox_Close(); + Clay_Termbox_Image_Free(&shark_image1); + Clay_Termbox_Image_Free(&shark_image2); + free(memory); + return 0; +} diff --git a/examples/termbox2-demo/readme.md b/examples/termbox2-demo/readme.md new file mode 100644 index 0000000..0c1ecd6 --- /dev/null +++ b/examples/termbox2-demo/readme.md @@ -0,0 +1,72 @@ +# Termbox2 renderer demo + +Terminal-based renderer using [termbox2](https://github.com/termbox/termbox2) + +This demo shows a color palette and a few different components. It allows +changing configuration settings for colors, border size rounding mode, +characters used for borders, and transparency. + +``` +Keybinds: +c/C - Cycle through color modes +b/B - Cycle through border modes +h/H - Cycle through border characters +i/I - Cycle through image modes +t/T - Toggle transparency +d/D - Toggle debug mode +q/Q - Quit +``` + +Configuration can be also be overriden by environment variables: +- `CLAY_TB_COLOR_MODE` + - `NORMAL` + - `256` + - `216` + - `GRAYSCALE` + - `TRUECOLOR` + - `NOCOLOR` +- `CLAY_TB_BORDER_CHARS` + - `DEFAULT` + - `ASCII` + - `UNICODE` + - `NONE` +- `CLAY_TB_IMAGE_MODE` + - `DEFAULT` + - `PLACEHOLDER` + - `BG` + - `ASCII_FG` + - `ASCII` + - `UNICODE` + - `ASCII_FG_FAST` + - `ASCII_FAST` + - `UNICODE_FAST` +- `CLAY_TB_TRANSPARENCY` + - `1` + - `0` +- `CLAY_TB_CELL_PIXELS` + - `widthxheight` + +## Building + +Build the binary with cmake + +```sh +mkdir build +cd build +cmake .. +make +``` + +Then run the executable: + +```sh +./clay_examples_termbox2_demo +``` + +## Attributions + +Resources used: +- `512px-Shark_antwerp_zoo.jpeg` + - Retrieved from + - License: [Creative Commons Attribution 3.0 Unported](https://creativecommons.org/licenses/by/3.0/deed.en) + - No changes made diff --git a/examples/termbox2-demo/resources/512px-Shark_antwerp_zoo.jpeg b/examples/termbox2-demo/resources/512px-Shark_antwerp_zoo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a487d8e8d2e6e2dd86fcec75c6a2513386f5da5f GIT binary patch literal 67516 zcmb@tcT^O?^DjCq%aU`>IW3tbgTRs`EP2UD&N(U|Ip-XfoMFkJNKhmP1q3AvNCpK& zK|lc!AAZ00o!|ZMy?f5>vpe(Y>YA#WneLhD>YBeRe|JEN8p_JndIq{`8VFSY0|Nj+ z!f+KORS*dPczOl+89Y>CF*P%1!JY*m04DICVr%d31J~0-{Hu6*dpZ7>`oC{~E&=zF z0AOC=pRE7A<^Ko9v-j}}xaYgQ|BE^}`r88lhVVUhe-hwxPsb>^#}sz%|H1A5upiPu z`JO&{kBOZBix>W3yZ_?7f7tK-B<^`G{_#8i2ZM0_VY~lghJQG~G3cLOK-t?T*w5A3 zC4falT3VU~?%-|b$YL1mAK>We&!XXF@9pQ~?PnX{=y1>bU;F+Y1(5!i@!u8Wxj#^f z_dnGCi<^J<;lJX}_5X8yF{q~hhxR{;>;wHC|F0Sb2nGQEU-kcyQ9=U%y0riRzWpDX zSQ-FS@B;vG-v7|JL;!$92mty^{;mPa02mYV-w%ul#sY(}Ab8l2`$C9|hl58Ae9U3``7c@IB9eSpK6z1WX3kCubA2_02lP zimL2j|8TG1?C&Z-aL;vb11X>YT(u7fVhQIFd2GsBN3?gYAt*JUjTiIORr;0W902fl zuCU&dZ;EVljq7t5#+-TSu940gfl+HD+sMqqT%PQ>w@{Vhp^F>ZiDx2W4=fF5+zwbB zK)l5p<3Cfv5;_gwQ+gzLIp-*WOq!g{-?n__ez4?srHIHmO3jJR;?+Q@&SpQuaGPc= zK7xgB(H@dt*qdz<7s1(m&nljiV6XtqT8!TB%a$=o-k*pyvO6~90t&f9B-j?E1Fcl5 zirePTIkE*mRzFfXuKmT0rLm{E)vF4sA}-kq1uaFfw)UTNLD&dpkajwRh<)Jc+Q=!O(l} z=5B`Meshh=TCi9s4%t$E11#dadz>Lm2*ba;7(G48MQckyOkj>35Dk{X&6~AWhFpnS zb5$bqtxhLsxEZ}poo5#vEyW%Itf6F9Z-h4q^SEUfcN)o3H{EgoMdZKUWBdzP7&I)J9yaj zOW!{$;8#RGG6q`*{Wz?-u^qh@ea;dR+m?^ST5%-j;yyW!^_6qR9E7!zkKswnyCEC> zO%H9kAZPLkl;t}EM78GGS5Fd5c9Kc(jr{PN{{o|`cR3>I9;IshUd8Vb*pZGp4o>s$$yP z)g@96u#&>`~F!;O1cQ;I+@ZM7-6!evTj8QFH$u=v|%1)Qr7(F|= z(*z*rs5uHnbxs8iWp)M_cgl&cS}44vNug8)x0!ZWTWkGY^OgbQuGdiCjE3r_tB5m6 zVvWfwNmAqj*+HD9krs)Qn!(dw%XD7c!$F%wX!4}fJIOfX+hM69)zH!Je}SYv+QVh) zrqh1H?H7$f<-|J-*2LQZ&{~;WNy1SIKMRQrjyRFxBNb5k4zpa#`_KbC&Llm-fE}_g!J{T>ABkieEpR-Gg%7+;~=YBj_j^ zrtlgv1)Z?A1jmv(Gd8X+!>M;7;`^LaDz(O>ym7B$Mw+<7>C<#Dugp7cFPds$`{=qo z9@e;<$QizEg^>ZuZu}i4?$b*H4Ws7rQ9XjSk;vt*PV7|Yod##m-(IJgK9_N#q_xE) z_rvO1U7cCm9%@+hvU?tF!iV(b?~dt1xILX{3)^9iv63E~7r!M=J^jwKoqSCn)t22P zXi;V{-u1q$6leQtgFN{vA_;fblGB=a7mzl1Em7zE7hvjlkKsn}X;bvPA~i_yN6bUd za|u2ob6A)@g^k(_#ybQUnDxED9Mp%Qm*KE^-0cX#rWfXzi9aBYL~?`Xc1})VvUapZ zC?s5mjvJPOk0P)6<~&eC(b*e~=hKu+X6b^wPW=nO+g5BQpf7Vq7V0zr4aJs))c{z9 zWIsu=i!XtGeyfo&(I`Rp0!jF)P2uEwxY@HNK+yn9o9%46G>XUxRl$gMm&~F7?d23t zdf6b#x#DckJJQcb_Lm4WlV&t9sLW8zhO!kk)U^mgs^e9~$(n*69{06cG`MDtjhqNML zh9)46H`BAZr4Cu07Wg6>X)Fu`HI!(7#}`{SUqftjIH|BHCs~gbCN&?mk&?hk1Or#1 z;!hXz%;O%K)MuSL*AXNz#$9G0un86^pZna_;(eB|bI4YVblMn~F|{WqiLNHWK_^$n z44`NeH*O|cPGW4UCa6dM0^~++GLGhBm{XZrmRfG`lKH>D8jW!+RZH=kv4l)HG5mc| z8E@I07j(1Qe6`%XC}q%Iu+w40-ODxKWq?vz0kw!JRT8TCIWqGKw-t<3bY z6fmx}s_-|8oTTWmaZ{m96A)?JxEgb8?sN-{YT+tP0%O|xSBU&MBWJZW3QBh$;AJ&U zR>OT)GajuyQ!uO_Lv2R+42=dy8(?%E1LTR5>j_U8CNcEX>E8Aa`velO)gosadsT!j z3S&t3lU9mTw(39=q^c$;ipaR(gBc5HQZ9^nC2y`zXI#&P@XGX*l;_n^hLX!7FK1mJ z_!_c4b|gz2d^-&ZJGh(Bb`BaLSfJRbsRC$JvWaYiQ^t0ju6W|=f*-f&uN5HS&g`-% zNpAm!jFV^;9r}22H*V5fMdtkd6IkcE>5+FGq>9S?1@Ai*RZ`12T+kqijOkBU7X_{9 z%e^);Wa^RJ9M_#^t3-xvVpp^!g)XsLhI|3E)Od#F8s*e3tbHEh_S8lXi5~c!;O3^| z7pJil$aa&I22N!wYBEG$j6qegf9vW>*fLA}2rJoF~u+#wFN=k05 zO0bB~<-TJkvx$W%~sfid2K9PCEoyvz2g^pi7R7XgnY5k{QL6w7g_kwc4q zZ*$&C19;w7oHMrEl!Gy#zn*AH^CeTD8WzL}W#`#7{xdUx8$m}k&IE1LTx^9_>V4E) z!9`_riGAnpB2H|?+(XZ*KjXu3&*6+rxqgUPo9WTyY0}PpNmZY>=$aU*rRB(N%`J`slngcSzF<*8U{-7hvHeWhdHr}Awzxy6!V>G`F}iU^tuF$M4qXoI zm9X?=5O2>Xnr*w{xnsf%@llxw+O@U*vshx#>3ALGm8NBvWut3HM~@+GDO{vZh6t3z zRp`9WmT8PJrMD3lIG{mq4_!c05YY^&ykm)GqLWoG<@)WO9vl!RR<_kY)-hWsl=Nqo zKV&A4G|P|3j0K62fwKJ0cK7mfP_|^d6B)#@0Q(E9{1OfCp=;QuIA#|%l$OhWi70;j z`-?Np6bcT+Wuek=CCmo2zp~TvY}62!Hl!{bAf2|PU4#ktCY?t%yslYlmr$w z%h{4q#~uP&(tvDaIm$M+>wLg~C9GYuMY}{p#KpIgO})J^YfalbI*xzA&2rA&&>-9v zoFyEr4=PTXy}9@O~TCu7E+&!T=v!utmwzaHq4=#(;|(5ojhdpKDVKG>Ok?;{2l-XL`ge8<&h&*V3yeoKcnd ztz1<_q#}z@Zg5g!F}(lh8r4LC=zcT_&6|@~ylf-dxW`Lsg8Ew<`b@4=!dsb)mPyo- z?>)gf-4hh_i2bRBCw`;sbPTc(B~nwrk4e$+FFJKgN4TAz7MgnO1iyZU#c=7A9sGD; zck1i#!3b?CWk&-y2faJO?>EnY5jDk|^_{IV4HIKhmgFI(HZss(I2M#QAWP?_A7{&KDE zSBc(EkV(_D7t@Ongv0Hs2+L6M$wqk38lMmuABguyWd4j6-s5XX7Nf&)A7-SvS|gVk z8hH>O`oRwC=X+hPfRW~mg{%Uv8JT*l9kGZ+&FgDQ`tzzXPddM(2Sdyr0#d6RIC*YY z+|-6KyA8F%i##wxbc>y4F{y8-cb6>Yus=@&k7#VZl^0^Fvi%zbJNfj8LCtt4$jaXz z=BycRknGo)dOVhA#UXMBVXdF#lo>XL<)|++# z)}&)@rs~tbzz(@2mO8TGR+S)DYrVZM?J47ceum&~D0xDwYKT~`G`lDcl(X6@fByY< zDS4)D{Owj!2Ezs&e;T%fp_e&rhT#>d?g4)g+gy7mB3#>2^+fs?k}*NAA(Uj%FQ8so zMJfB7HKQs?m-IegEieWvjhv8Uft$sCUJUX_8pPc=H&H1p7Zi1{gt^5bC^iCgh0LfE{o5)g)&w#78;BhHnc{0E0@{i zZme(Mj}75cVRX7f!St|fTJ+*9D@jivADUAXfv{@&^5lNJtDG&(l!rUB;N4It?%r~U zq3U><2_`$C*z1e&Y!pQ!RaFfi!Jr|Np1rmQ%g&>!B-IgZy(Nqoy77u0$2!Ywwdc+5 z1&0qh@ZK5M7dBFf@W-FKMC%>2IcCG_<@){0h%>9#>B=T_M(9>ZzM_q_E6P8h{0 z7-2$5)AS+@DzE0DCNrKZr8uyDRBMXaTvY;^)xX~cNxJ;S?#di`y?%hkakQ2w&Z#RX zuVb?bUHR2?J-TfCn82Uck0V+=YYuqPeScFcdM$?vu~M>CHoU2p6#O53*<*E7H)a{m z`C=~ORD51tuFDr3Isyl6zYOd?j&J8+q$0wS*(;9BgfA3(x7vqSlRavrq@_SMBJ&+{ z*ydQ$=kJ8S6Q3scb5Hn$Gj8>9dMTu~Zu1&cehx{E$i-KgdFdWru5l}UmmV5YAGdJE zoZK^mAK$vp=ZhU*^;v-1BH0u4lbU6aJ*+X`!zcVAd%)l}Ode6fe&DFaN081dXxH>Q zBY$&Jq4U>h1%@T8Q3S8Bw@@^tyczTIySG=vmCw4XF2$iVLN zO!{XEBYn;z@@%D39T*TSfaXF^ z^4z2+Rrd-P9S9E|oF=wq-73~B9A++pz>x^hJBR?|MR#2SDW0}krDdF2JjE(eEX};v z%A}EbPSGvj188csfT(}4h75T_?^2jA5wt~LzY*g1rE%NV6xS>T-n~YIqS;avZF%&z zMq^IdR6XlOeM4qI=UbeG0v@C3xHL68u3zVjHuMu7&@`pRCV$JK$l^%<6Fe6Bwd15} z{oW=$acEuYvv<-2f=)uE;{8;n1pahtVOr9DjF}txPW7$G|BHtL~?GLP9eF^#)4>$yqG5(=XMuocd;@#kS|1n=4jjdPym*CVQH zhQ;!-b(ciHcQX254tAaoqDgT*-6lZ}(=#t|*MdeSL|-ebL~f@Du+Tt&)TPqIl+p+7 z6%};0xQG-~CzXwwosLye;3k$zn`HUu%c^Jjf=$I@rK%OU4_dm7DM^%zD3kS6E0NdG zX!gru+HCRPHqcs41Wd1V`WYpWuij_AbTAX=nTk>-0=4^u$9TmF@uUtT>5v(TaGVW!4)y}c)K zsK5j#=(Vt_qJ_VWOu*)?O%pf&^9qANy=FBF^WTNk)9MyupK z%P2Y5O$h2FUeVp)T)3TZ8XEhr@4N8 z1n@)UD~qM&-AQyLX-)e#rY5|&6uL%&A#Afbotr=H@{a}GP0&b&UT79oq=yqwwwj9N zs~g`!pl!LW@xe2nOHh4Pg!9LXCxTxE*stqMt`j+|0+$Jr;7#HWX`e@1kvPrR`@_1P z{~WbyhkQq}(we1OAV%FI+{;j-SeUFnZ^mI%)UelY=`cL2v9$HQ5t;3BZ)jD>1Cw$f zG8W4OEMqn`y%;(+7ZV(LkiWo>1(kHnzAv$Txl5u?A)XKXM%0OgRuPD4m!+Avr+Gf&^HyJ}F5D9pZ(#ltjB_0e z;FK>@^=b~A#;al}2cz~5TlOy5Lv3F_PdB3{<8?GvS`;O1XrayjtS>6yvhr&L;25*( z#o?pPD6B9IU@4XPH5R3YW~grgNLlwo0Ep=$HT2UFgZG;@}>b1dc}zJ~Hn2mVS! zb()hou;BK&fVE{XshLJdbTupRLXki;D_9nITufTqz5(WC!Y(n-gYx8=M%z)S?rC&B ze(^oF1yB9mTeba{=YS2iI#gnL?!!Di93dwl#-}TSS6zEo=l#0b&L^)P2g#0vG;vbbW|N@D|;f1s8>fK8wobWpbGk`R3WxGfqjGr_F_zI^Fz(?JpqV4u258t5xzS z1hL3g%l5-Y7%R~T^z+4Z`mb@mIB_Or!`eb+Qard!)XF!09lGH{vq-_OP*`=zP&C%N zK+y0Fd@fMRLVvGb+;vP1vK1Nb`2?atcR|x(o*>x!mKSoOw;!0tZ4mK;y`l@Vz#uWS zv7NvPx2mhh~|&@rx%9vZSI$-@c#ll)S~=>t1HK;@u{mJ(l=I= zw=xCQ#*Ia3z-YXS1unZ)NAHC4KMy%1^Z+YUIN8-tG#iV2V`C> zD3&yDs?^6!%x9&><^fZ=j@ANj1BqkVoTKooAIX7w(e8WrIg(ka>7`r~-(+{bC!8L| zqie_TkVlA>%yy?wcP~?2c8+RL%Z>7Br$WiRz9f8S40DQcXw~$XX+goj%ZZv$*_{n$ z?M6d}u^n~M!rbIo526HRkI+x2i$pa0Ze=X02KZ!%s26X(h$$>H6>KHx@1!`j_8O~` zjjj)-;U1IP!s^5pjEy=LR-NbiDR-@ycW@1d`xMjpVw-EknK-Fhut|N4UOk@RJbQAZ zb*pgotZ=7~JT@XBXfj6OFEFx#r~SI&w&Rdy`4)G3YJA>`vq6C@+XiJMY~NYRF*g37 zdZ?i-z7cSns}jfCkEFYO{o9_n$>6Z|j@R%)%x89Wysm|rd-VNT zIxRiYvU%W7!F0t-MkJNc-pL2%X3XK>E3fUwH0!iB}Ty+ZMx8a)!erXk| zu(}2=~t{#-Y>%8*3+i52VhZ=c{qNr#D-6PqyAL2qwWFw z{%`Ni{s%dy7F(;q%)3JLHPF)wcRG3Uk%gB_J6P}h6bfCB!%S0XhCE#Czd6793)C}@ z^b>E@GDM^s)*J4GOQ7Vm7MQ$n2`7lEo!IcpRgW{8t{m%4;`U$0s~NPuBJog@ce;9* zAt(Mszyx*4P|yJ54|LtoJ8P%>eu$osg>V}eDBA4BrPxls@04H=2;0+Qhv58%!9Zd z5m#Yx(3-Lb`zLl37P4fKUleao=NiFTlzTZxT)2)NJbr(NV&Y4l$<1$)Y2n;Az{^x5 zgkcX1G}|D11axB@%X!TVNt}iWR1XMG52O2tP24PnO|~ak*Tv!@iKmKGf6jM@l4V(x z)x_1cGrF?cRceT`O$sq$C>U|dxSAI&*ew*{eO_ng_jLDif>0W_zze0@@>|%NQ+#s^ z$yDE5d-tY_Qf444frY7sRvq< z)@c=w=1E5VdVMBa%_yPZP&S9l`$I0hDi@9(*8tDNhQ7KXKaPKebVMf(QlMyxdqK7YQ1nONh@iymvZei7+xU>An7>XU~~{c3hQ z8JzjN$mvPxS47DJ%maL6ol~My!;j(>TFHfSOH%#)=@({6TA;B~e3Y;ReU$sJ(P-ub zb*}7B1+%n8V)J(3W82H|s_EPYp4n@MXT=+)uKnX!7o&nt>dX@Dx+eG9{X#C@lW~Uz z*MyWQo0m*4n!$Ng#6S=2!&oet@|R8-kvxuMp!S?#`kSM$*-&y4UIESKakPPGMH~qN zlkV_=&;#Ej9n2ziUQvFGcLX>b7KU68R2WQSamaX)#%eam;F?A>%>O>3E#%ogmSogq zpv_A#sTJSOy0!B2OW+y^Om@A&!Ar%+`J#RPr!XGxf`fruBfp?4*;CZXVHb^+GS~oV z>?k*q`@GfkBBtdM_T4{b`$GdAvT?EYq3F>nybpCk_xO9F+yhNbq%bjtDYei(O8$ey z-3rKBz#vUS8P0#a4{!c`So_j8Q<~qe@pRp%q6Hz$3e@X_o zhQgES5e2`iLf#TycP^=)MhecCFdw40hE{8l7X8AJO7MP48ZO7XpQ!?F&oR$sc*^-_ zESDtSulWwBk6eQq`FsgnwRKGG8(e>nb*55r6FcM!C^b0RUyEK-OQ_mz46YFU@tqGc z0a=VlDc1Cg?V^bETgIPDcDt7NQ=Dj&r{vY8HX7w$3RT3oEd3;1V|+MVVz9Vf99tK; zP%o}W)q!0*dhttQ+}eWbY!zA*R(r(22%3I?LnZu37;+uqeqJoBBL$Va<53M}SP&jEIBC6h|B%793Db zWVv_rWw%qC>m`Lm^t14C1cGv0U&odoraG|5`(ZJhR&+p6E2UMEuTMfr;c8;@KlJm_ z`ufk?3EBMuMO+@Jp_Gucq)4POlLfDIf|i#$yT!B)9>Zr`_1?mK_lbNig@~nc`W-py z1fGToUz}vi=w`?C@uk-G?HiwtkRIFgf*?Rad0uBwaPXmqa}&r__mQ%SFp4)yG_eOp%y>sCp%;wg1R?T9J@~HCW83% z0w!Ex%!)p+M!5+h3Ohq~R<8oxu*E6;fM^4_;a@-?WNl8w&hJ8c-KHm^+`ocP-)7(A zT8TS%m^q9_B_b<%CnkEQ3DF|lz#;-zhDl0xjG0pgt?H0Moz)sp290smkDPu-vHN!k z2$417wyD*MvaW(NkK8b|7$R!shOwsB* z^1=~e`aHMNer=}xsUaS(O}JtdL=+e1MZ_}4(tf~e(9V0nfk6rh5JeCjd}hQm$0UwD zlerZ!x6Sjn1cS*Qh>3i+O`qMKO}|Pf%$sVr98y`~0eK!NAbgGyoj@Wo(qs~2pe{2a z41>270!i_6U;I#*P z5%519)wDK8f7VM1_@7Voz%I*BI=LR$ybsg5(4ZrN{Dckj5a zx_5}KOM{A z> zK|~E0(*54eIkQfdQy7yo*%qQdm1mV|CG69>GXL5t7kAiB4p|1C22NPID&X%LeVMBl zld3G~dW$3s8|x^}C)3jmeSLR0{}*s}a4P*!&kVUzNIOlL2zo*wMb#>#UGSDQk)<_8 z**6_?XJBwPPM*W5@=PdJzuIzED0vDxdeP8$!w~X$#7J9*=mi&Cx4@_f1*TQwjOq>@ zS)(01TkM%7*$wg%aHZ4SHz?Gm2$Y@a$vX1i&COf2F3*=J=N>O7i>S8Zj@m^poeGh+ zS&V2KQGVH@gccbdywN>Zjd!JUO)E%0UDqZO&A@s%a&+}D-bXB$ftui);t)5AYwQ=d zF-J*QOEF8ld&ksSTA{6)C!h9bmoX?p z|D0!YzP$SenoqI(s``K!Qg0%9z-kbY`!pp?{_2-PRH$~te!XdG)q6-ef_p3i`zi$C zeyd=S|1w!Tbn5Hl;XbxfYfOLTu?9&jeE@Ivhh+8PiAR9ryOhT91;$)8vI#!tmJfkV zI;sn4X9t@kcf>xS&UClV(LI&Z{Ier3a>-vZz7|=(dSvIy@l7bLeV!?TTEDouIH;5k zN;*ZCb^Y{e^D4sde)Z^#eoT%pS>RT{PwE?OE?||Xk=0IXt{SVt5WLR;YKN=9!ANOt z-4kH<`}a%lE953^D3v_-siu(OL^xC3*i!a^+bucsJ4H!8XU4pQbNj7TD@yA`w3|<7 zoFgDA;ZYHBjk)w-26b5~WW-dB_hxhX`12psBNLr7hnnPf;wG?#8oZu3C0lrLG~&|p z^hVCeX{)D5yysc+QLC$gt9dgW#Gj3A&%zWW=yMYeIYt>b48Mo^=RFZOBS_gdJM0~Q z%X5m9ieBhR7i=Syu8SdJRC#d;9+XIxd)ci2!;jzZxteARK?3x(>JOx7rTS+5yoc#l zkCp6b6Z$lqIc3-NGxBjgVvp7CI<H@;I$UCTT>!YF!9p#3xVCe*rrwkYn_n#)(h= zRRrz$S&2Q{Qk!{$viCHT;)mP1PlDjx0`4Q>jFFB%2~A>ex06QBbd~RiNqpUcvNjZ1 zp45!-`dSe!0s1OJHmh7DCz)|Z<$fNjoMJ@^!jP}0qVdWkJ_Bc~!N;k3AwvW`A=U#?aYwg*^=!o-?h&Nk{>FUe1%J7hZPF|E>6-Ts6CgH0uBB>3ThLuz1 zX*iQA+I`J~8v(G+n_bQ6Rk^w1WKaI}F+ogCFK5F}qEg@7)VUgW@ltgY0|5w4S*9ep z%oYdC(ea4^82A|LNha$}HR6h0i|AW$FeFk+F&)+Id5|u*^FWI`0l=%}ou_<;$u%Mt z$)XY{c^D1MQ-WWZBO}37=Q`Qk3t_Lecp!kF?~hpHsXq1gY!95jK(pqI8ix|2Uvmnh z{L2d|2fjUMMxmCupqg6&pbHQCPQTq4+-cn9H*HzP%aQdUygFE7@Pi|ohD1+#8dSVQY_9DvP?&Vl${>f5g9i8nZe}#OsawREZCHX z1^*kz^^4>94@LMK=hi$1FQp8065!3p_7{Uilfz|B4TYRq2QsBL8O%PbBBjJg1tjX>o$6gEXV)zKRV!^N#ihHDx#E z_>_6WsD!X;k-;`@5* zNRm-yp$&H$5EYAJ{t@F_0SooH!#%_D#z&6|H^En}a?}~8({=>0J)SUNg;@Ftkq_z$ zygMxEYR_ZW=qz_HvALviOgAx?=BB0+ea#VqhNA60^BGQoak+(R@DZNmQDUg)dHmPN z&RH01PYh!PhKI#71IOUHiD^abx7@;I6@-_l;ZGm+HSb@^o_HVAmmyE)HyIoS;~aDt zagBdG#|3M@{>E*UMZOTL{m7|Bmj~xMIT|Oav_A`QjhDf@Gk0}MrG;s%&$zrtNs_Xt zaq1;Qd3v~E4mck@g#{lz8ujkNke1F!3^fgkAgW5lwVWr=TCX6q_4Y;G?9LSBMbPYE zJw%hb5sbIEPE}^|bFAOHRx;j*CsyO8x?vTNEz&wA6{AgRqXQFA|vjlE^EnDq@-X{aOhL z8+t?AWoz9>ZRxm1y>KYAG!8yJCK!I7T17h&C*uOfOG6-y@r%B3Tg{+NhJy77l7oz?ru*#gE9!7LOgdtR9Yqh40_ z_CviA7boczTZpx(qEhE)zY{r_8wtg&!xRcs+Ul;!8rDtyrZ8BNPy zpl|KB?RUiq1`U&BApP`HtJ-msNX-R?W)uI}&|zCm?d4i$vm zBBwR_fyh?{f;(a4)-7?;X*z!d{m>bP@`vW$C>Tp*z~wR%vmSENT!XBdPo#7j_uoTR zmJ`v4zhQg7u6s} zgP+3e!++HO+NTpO`uZ)kM|M)qNM`rPCyS>fJ{~DXn$O}5(QNREx3>{DQCEgrjSC7F z<%tTHcMM#%TG16>Tt|b6Y^ZSFzumBBC?DNCcHR*b_Uk7+CBh!okM+Mg@PgKC5D+91 zdrR<6-8`KT&@h?RJ()daJF49Kt>Pmt6)exR|L`v`>0WF@onIt_*m=xZyHxE31{;$WKVQgUeY zXQBMTJZkB_|}2>Nf5>vmdfUcXJgcmLifU#VW(3)g*kRdDwCjC*HN9DP+V zX6Z;oRl#!+gy%ZkL^xXUj&!kYlgUTw$qrQ2d=biq;^@c7&`8=`wM{~P>m)8rO|9|rH|I}P?~SLVS}`@C7#;1!$dk4&#Fmz-_{KF2 z{OHiCpI_CAllprE8H_02E1T}w7w|J}n)TCFND|?F-rvj0|G*Wn=Dpm{>+hW}rpFWC zFjKKFd~zTu0zCe`9bFE)15;g(4oB73htdsZi5r;~A3^ee-=W$&B^)J6t_6f0To8v5 zp~yXPob4WaaUytLl|?>AJJn_SN|=~RK7VC?rGWzok|Vo1c$2=;i7pvdSVwzIem3yn zw!IT_9bIh9&9Bu=(=4j`^eJACy8(>h=bhZrzKFBqlB_))21+?#hyMix^Ka~DS$BkQv`_^bwxo~-`Lnp@5YwR2zIkyF^NT7UG=rp20*qCL(XS*26e< zLyau5f2eY@`j5xGxyD`}nrD0sMM{O!e(~uXs)>0!#exF~ef=H$J?wPG59#DRec(i^ zS4bFCtU^ooWQ}Ha(#k%sv3bn4YzfoCy>oZz;**4YkvP_XHUI4Fg2NG~UqpAs{aHyL z=1e<8!14*@R?kaKD zr@)cok{7%Y@}>-9eusj;_)tBW`)-Z8L(c zj9G>p`4CS=2kS>KOSI+Qz=6r@mD=Y{i39zV`nqB*iZhqE)5Er@ZZbm`?W0r~ z;`{k-wOLwb$X>31sO2t(Me4+YR)2BWy^F51m#O{vS12cxhx%G2=NwR!0DtXq(#wmJ zaKM5?D#4KeDyBhHfK23b*5Ridcv4Lh0(3fzOZyx|yfE~0z(W`ndViVq66Az*rG z;c^)3*b!%Jj0LJ*dz4;t_q~pWWWT717LN0#%9NA^k$x9r$qbs~bZym4(p#{r7REq! zbj0{c{#qs!ix#aXN6ZIeLRbARJk^F}FP2F}7Y(l6#9@ZhgOC+6T(%RC4~3<=iZ6yb zR$_F`bn*HV8r#Q|GL5xnXtb3D6w$bfOTDynA83@o)kHa|P1lRCHor^)kVsPBY?T(gQKrj1%GQg`=}leg&!4ZO1zannL*Y)wO%K`f$XX2H0A}ag znBYya7f2+emtu*ZoxetPi&TcV6;wU1Irv&dsRhL@K0j%Lc|p3i35Gs`S%HFL@ zVv6xV_AnXQh+%@tbVbh;9;Rt!>wrQF%&auBw)(Q!(ySpKc;%R`| zxLtfW3MbtO6-xTRp75krpZ$S^6Bf&c#uA6ciNyGjak1gE%t_7cX#`p_szw9s-mq@} zrU%-mOK6eMGSbbLWO(g)AL>smTvJaCVUD>~9l09X^OY-OPHdkNHU0S)m}>chb(XXc z(8m0lvF*!Fnf#}gYKM#Aasie_3+Mv(G|jBHz5k{qv;y5rLJFnHa~9y@SbZQ43w>0J z2sg}pL1oP@nU6L0*^u0pX-%-65a-m)HKst&vr0_H^;o1IHu+)v{pm&RuACv-%^}$< zQEpklPJ>OmRn{|Q4+|?-z&scO@y0ZfLmk^9O*hoMLF+FNhFqvFhY<``cI03;P)RP} ztLO+6@oDHE6D%ab$N*M{91e6&jTGhMZ1izDG`oviI2%VE%>ky7tPoFEcM1-BZ%Y4d$Wl1FuOJn6BqxB18v`36%oBogMNOcW}=Go z%ph_hGNAZ={?TD`x`(92;`9-k%*M&G?d@L;^TBc|>xsGn)cdm(ngOhK^?XN{pBG>r>WS&f**qWdwG z3%@`Qe+|vo@-!MD8apHfT*>`g?pAFY@a;yTX%ZOPaR>)2X2`JTl z=H)*r2T;_qw2}TNM#hKcFg!)GyXDk)O`WEjB3xv;^m4#QmPoi`f zu-WC%rtXPR+@}5QkRtjWE*ZPB3^#bG@m^tuA)4{=&%r!2m#g3t+JSX8jpMb$E~cZ@ zL4v$^8+E8sXVSdilkR0qecDpXR>SHJQ!xGd_xhkz8QW(sRNp>?y=FI9))kKu;W!Sf zf9f75&gxn0_YMDx6!+q8}Q0 zg13jHFxKVGLJ!)0mh5vp@qF;R1Qxq1RYsX|x@d}POh8jI{P?a1rm|#XDvcE@60@K} z_}Yh-7Rk>7#lc1`0bdlC?W60K36Qs?1u@}VLCdipD*6;iq;q>x-O70G3DXD{YyzkRWOjUP0toUkF9-dWQENBjze zcK%z7Xa@7YYhn3w0>z7S4*qNCBd+-4vR=k5BJ|kERgt3`4^LyJ4uS%}q?XHg6PMdw z`eOw+Zf!Ko6oKb54{qY;PMDA)n=ve@F__kEroHg$Ymn4d$_=zz{JWidY43z(k!A{E z;j)T_8dQ;RW+pY)*HCcf0f)+}5X33JL2kaia0&vYhy(}#9Z#g~7_g{0brFGxBPy<2 zW+y?c<(yR6bV;U!smcImLz?|=Z#J+S&#oL8JOb3|nDS*J1X|?B->xNTvCScK8M8FS zr}ycLbdxm8D;FaxE#mf{O?|pzyDyALprktFB}KvRd&R$Vhf?9uoI`+rl;#(o@%8Jj z2EP--cwY+KUx`-~=}{6{fQHvjr=TD8!}#yTTz`urQ1JRs;k*-x6$$?U+|?UL{{YJb z4zt@A;OVk;GN>X+s4Hhl;{N~__&xx;?OXOjmNy;Rf9eYXNzARHUQki;>UYKi)(*)cQNsX<(xYbD{a=Uk9 zYJP7Hrlm*z%>t7qmqnqxD3tfU(Wogl#OKA^drQEGLM}ff58> zKob@_nA;6xLwUf2N>y3ZDzFW-10ZJD+QX>V0Zmwihs{SqG$2L()7IlmWmh1O+4BO$ zOvxQL*g=yv!ZR&kGEGDV$2X7?ZzrsY9dHpjI06^SB|;SjQ$i=@%eaxRz6z}|NEfKa zi!qXOl4C8jJ#c_IYb_@tsbv6zl-_jyv(RoDX*Ui7(a5j9@JQ>@CwRx7Tpp2=L6$0( zLTQBag>fLyTfy&a8WLd`C?sVdHe$lp(oFkmJ?qg&$xW#;GZM@Sh%up?i%9;seFbXn za;xPoRU`mOnKPi)eaF$z8VPEmhf3VCgl2k5@BkkA^!wu!)~8D-*#f3V4U~Avjz+wW1WmINHVP^?XI*`Nx z8Uwj80yM;B;ufzlLuF_N<1y5Wo`6pFwlI(4In@UaMKtpj4oE>DN!ld;0Q$X71w=AZ z^K!w;q%KJR0G3)`!qmw5^3!B0z+NUu zfdI!@_9FxjLMW&x9+p`J6!kYFsJC02_9def%Qu~X3*}Oz zT+2{2HKAO4X|o}L8e)1F_5uf zW=I74{{Z^C;%TE)b5A`&7MKkLX%o1$$+zi@%Jo8WL8KVuW40;f+Szl7HUy+rpcP46=88ud4y~?x2LWFXe9&7dVrS9 z6$1@Gf!f^;_=qX7Jf+0&C{4PVH}^NV!w|HpGBBuf z5Lgga_kkn`v|M}QX)vhevr>jo08(Ogzd`y=DKjd=xO%J>($@_WF%fCgcsOS<6_rk9 zLuQ)@n4QSdb&WK_P&VQ% zr$wnNPmmL75+rZ?>U}VD)tHtfI|#TCNfW2(?~98>k|X9@W{88hiP!h8IWElw8W%>9 z5Q=kNbUVz>nA!MOgYkYR;yf>hct;0UkMTY^`FuYK!>P|uf@GbQ03@@U0B&>`-25x> zUyFQQ<6J+4_zw(~xb7r*d6UbdOc*s>i;7?oCsJ~OB;)Kagg*&%#bakNyQFS?B)%m9PH*5TZstR{UoC67iqHZxMR#kK#WK*J89d$P$FllBgfe(CBBb zKK-HMZ^IHsU_pqV-$RXui11z+@qdMJ9v$M`JuWkcuTLdPRX}BMbr{&emVGOyxc>k{ zWycKht`Eu<2C!1uRA;iAoY4XXqd|;O&7{>`(LDJ{yZ}%0cJ;sOk6-+F`~~B`3HbKo z{4Hv6zYFm-GSR5ulfp6o0OP2C;%3Z!4m@fNI)xZDI=Q5RCJ(3Xap<8XD5n>r4<Xk0=shvog1s5ttivn{n2jysqJt8#4h^Qk^mr5F@Wi>L=wZsGV{q2G-r-@AC!Q6$4;>ki#!O>!BvrkDKAQ% zY|Azib9;5auY4PE2BvydE0F4*eaIgxy=mFb%yPO z`;&~O?EY{m86f$=5OtXbg3Zgu=z`G z-b8DF4hdidAnfLtH48$t1LimHawlsXHXgNGkctQ*X^0CjE%YBwrdG@qiH1~1WRRd< z;8^wR8{wQfRCNZb9L@^O(TbHIncZYZ*A9x`06MiwF4We4m8#}}et>QvwZBNgqSLKZ zu&N1fG9WjxH`+9q(mimToXok{Mp8rraTXwxU_W!N2$>92yNakpxtpC}A4?r=hC~?7 z7`xV7%U5PhDMko z$jSL?&gFnKoq!7QpgX~jt_T9pPJvM9Y0KWGcu)+BPhZ^I0P3~4aOm>u`DzhoHIBP> zjYr=S;i*!mQ_ag(BJr3s5@dALPwW*sF;=6XfJ~C&;bWzw7`4By2)rv8^;L68N{a!I zk@AU{+87IOU~wfvs+NGkSd#$Qbkv2kU#xNX}*tH@lpvw74m{4_{EI-U*8zDI} zhEtTo5`?MN-F4FtOQ<4=V^1k0m|&tVAoQN&-q<8T({wC}Qkv9yz!(js<5CUhQ)^=c zlzB6h#Z0E^K<#~uVtkaI7VAx0D1mb(3|N!;Vt7cThLt5ORT#Sg0h4=li9X**BjU@P zCl_0UuTl6%MR#l2fLH(;OQ= zCY>dy)n(a>`R_Uw0&ZZRzL-E%cmYBKSysCUXqSlIqE!fOfL)rUCd`e8M<+1hgT4QeYoL2No%si=9|K zP{Jm_ubK&+1cANvGlny&sHjN|O;k#PwlWKEuj|tQQ%_rlT+qP}5F8VkGTfme4A|wq zQ>UciO-ZT)A=a6L3rGutI!KMrYh!K@sAYl6=7t$J5dwY4xWa0ndSF!nmF(koAi=S} z)^xTaB1V&lLZF6Z6pEQ4NHM+SZ*Qz(vvBUnYLN*yB+gJw7PX+;zBj+YhNv9KS4k+c zGi`Z0TYi|VXt@kog0Pmz56^udOwZVTaLJRj)4Cw#%}k6$(+UIvL`8v{PO*UsoW_Jq zgL2I6g1u#)b zP_RdE#Hl49`9hxCY7BS!!AhL57O{)S zm~C|$Ylu7=trE(jm}Q7iV09Mj-%?`t#9RsBtxtz%3bdb?rD9q@vH75Se_}6)^Fy|* zl)TKqk~f~`PNF^WZlx8R-V-fM1DbChtyQ#8K5*3XlYOSlhfz`X1Qoyeg2WrlV%6ssRX~vs}OcMdX;i=e|6z zgyWiv(^k!!Hl%7u(5(7&$8X?&5z_GfFT;w|4Ak44>PDaO`|AdIcJ zlQW?DY<95F#^8rFpkb{^xH`SzSX8kpZ!m2u|mgX7xPElf{#9#H)TL6f1o|v8=HB_g=Q52s#<{-d5;!k6*QHZZdnpu!}K+m2R&Tb+#B6L2p zfoft$FwHQ-Dg`!hBc+U=wg^u@mLv*QS%8RkO)PFFO$OQ>I?WYt;nb8XNW7y3(E4gD zNwB#Y8V$v4M(I@meeKCNM=`0ZJsYokkLFWGe zWC%L+xxmw=YPii_(xAc0ut+-} zr+fufNkI-Ws2PWp&rnaf_ZW&`qJp%U-zg+A=n2!*>8R3h>L!tTY#cdY7^z|l0tAQ$ zUY8gm@Ga=H!1ll_Rb8gsZ2$dSM!Wa?xU=eUH8gKsqQGi79)TmU1SS(qI z*4d11a_epS&Lx5|YLqH5Kma7oi$=a~7X3BL*y1AjXn<#Obaiu&lXh zs;SDQrOL$Z-)orL7+1{st8$GPBnh0XV1xevmw4W0b-*ezDPCoZC{tEcGyq7GsXg{O zYlaqxSE*6esJMdOP)Q|3%tR0P-u-XBGc7cvh}2w4&oL#7X=Ab1Z*B38P?BmlIH@FD zC~U?g{Y+n7&KX8UD5h5}HYDbl-YhN+g{MiuKzcB*Ca)khK#}Df&nOy#PP?0W;Hgq! zP_AFik`$K876tPe(A40I(3~LsoGZIPFMBRzncN+a?5Fi@Gv!cMt*??oL3!hu} z!=Y#(f|CH1T`97FwL0GY2J=3cI<+#rNU)eWTonKg-!Ugi(*|?%6*zRcrW#Z(iy*Nk z;K9_-rLLl?OCseuWdJDF1=Q$tJ>%*H9ZaxlW}=Y5Wu}2c0B%V=fb^St8C7?tXxFIf z!9dh8H){zKdHYT)(hR6kpEIn;rlr)z{)5b5ZHE*g0XcIfV(J4Kw84qL>E94WfuuqL zuT(=X$(V(S8uYk=Juo!n)fE`$EtKYIb_Og=ks{b?rA{1F6$872b6+H3wv+5 z!D{&f;O@K^<8-f*kBQSMR1l)AG|f$|GFCOd*EZ{pYGOq9 z+orhi)Cn(8vPof1DoJWYFp^>>dd|^{UKQe;XM_`5fUj1VNDPxXj2%Xo@1*Z+X65Lk zEyG{Y&n$jX?&zrNMC3}LS2+xVMq@c+bN#)rHAB;4Ly-Mc>;C{K7PY#aG~XO2g?xUZ zprPYjHDvObt3-^dz(KdZxb1jf65)8>82v*u&RSKMs*GpkP?|${#Y02dL2En zYPB+!Vzk176x#w;5S+Ok$R&l&lOJ*? zrWr6QDbuG?kw;gmJjz>R2TLEJn9~YUPb#fU%aoOt6V^h^`rg+#*qUNOfm1P(L`f~7 zvD8k#QP&AtEmG(&lg*mvQQJ?gtvlja$r__cGA%cPL_l!gC>ou6M@#9Z1?ZBiQ#r~Q z31YH#FhJ}Ft~MbSm~t77Or#cimopG9I_)E;s@j7*tvNXrV89EYJrDgGb;F=hr)p>v z$!G+5SIee{+5nGHfvdw3T?k}MpsMGQEI=AZPk6@8w=Sc$M4n@2N@`3PX^x#Oy!+vA zP1%{bDp^)CD2Wqt0M}dCo%-O5My$~$v=B2he=3q6GJyc-C#K(QR~#r&QtXOORwR&C zBTxyQ2>4J2_pX3h?PZtV$se~l~7+IfU;xm49suS75G-F73)l~@}zl83xGtcaV#p4e(|j@UWq${$ohm&)FeVIwY)@Uk zV;@HR0r;n%l$Bky$^!#(JNi%4Tzrzqs>hO3F_@77;y2z;Ol|xl#_RZXRccP^1Sp$F zP;cAT{@B^+y2l0ClW{JN{zvII!ygsW;^?8LT2+81P4VAwd}476V|eM0gZ}^x{{R!) zgso1O7h5Q7poTFvJ8AEHeN*s<#gw?}YAMzgGKo2Q?~3})hBJ?}#CBoK-@86elj5I+ zY4OyXir|2!T|C49A%{$PmjU9OPs3g$DhFT#0QB2cJ$8UCk8$BR#o`uJiwoZzcgKGT zjyr~_#_$Nd_47K%&5llwsi*96@Xm?F^0_&G#$Us32l3nR`IEz1l6dz9IsPA5kCvz( zAw3&Rer|Cb6o5c!LosNLZ-+603G)`;K*(rSmw*i z3PgY+L`3w7u6euJ~z3=T9)J)818Z`4&%4r&9^GMZ{4dicew)n7&YYLR< zQY_L6vk<1!Z~>SAo$sy}%R+!=YD9@u6+)0f*8c!0>1|A4g+-=Hy3-CoVNs3NTE<5G zcD@bRD1wwK0z#aqa}_d4T+lD3^*(aq4K!%&#P|btDh~h|uZj zdwPs6nlrPi6;f4dRe2yVGX$Bozt;jPa@E<9LNQei#48KPkY;^vV~7uu9g%6Ws=#$( zpfIr5d5OG@t^F`OwM5Fw!!cFKAZ9B7iP#bAF^T4drBP8sQwHFcT*mi-+!8-rFc#s^ z)TX&xDY~o*PymkiCf(-+3PPmhq8+KCmm(T6!i(Ek9k1wa$~m}$%R(E<5H00I*jn>5 zZA9%D2CJ5`DtRgi%m6IaHTio0I^Poi0Fz6SRInuFW+n_s4YUm-xjknNfXFP3Nlis% zDo$dya76Flsp%MHMPMoNnvHj53;R zOquJZ1X+n?T8$-;qgvqH@6%bB9=K{tUxozLkCRZqfnfysj3rRCAv2wBBRQ)2wI@Tr^hYS7ykRlBz^H45mPU6liWdzuOLgtieK?=E|x8flQAq zn_LM!btnAFs+vVY@|jB#tVBSz{cSsvH`p_;@hM1@rT~LXsf?r>OzZ7BYm8PD(ZO7~ zOB!H+VsD}SW@Kn^#HPs<(fGAD zVnL?EDhYBn1Zp+gw|olFm7}fjuf!h`;mD=pLZ25-OO?9R0$>>$*qySD*z9~W;$IK( zL`A1r=+$N_sZtS(X3LNsy8|Qdk0Z+T=?teWLv{=;*lYg)R@V($w4H2oHDXoDvlRku z0&Xk^uo~lwFG-4gD*6>TE>Z4f(ye9yxfK^OfMiYg26Q@h!UZLMTltFe_NF6IC$OJk zk2mn2jJW;=%i%}(oFk0l1xA*OgY`7_?_qR{34vtdr!iQ5U(^-M5?yQY4J63<&eB$WkGRC-wj_hj8^vlyJn1vJ6>CjUau8 z_ZT;XT(3#Wv5zP+E-xRb8v}|7MPoxfMOG7;ODPruSvL|UOmz?jAdJcta@0owgo9x= z%ESKvta@)avq%?JQbVo5H;CE~OX@xJ#Hu|;rlrHHtSvmGGM=%e_tQ*3QAKG>k_uUf z`2f!o9>D28*8r&Hxn+svgVBM5XpWPiy}Cv=O-M84d4@~o7u3e)BiDRadSaU9DQ3-; zN0tdPCP<%4eX#_hlOQy01wfPLAb=*|XfOJE;v0v~pt%v4Ug-iLf;!y$pG;q+L9(?q zIf-}76o3rHhg~P?G|^_82v5w)z=c)UTSWY$d=ty+OxmTab?ERuo=p5*(Vwi?A~)>WZR*E_2z5MJ?hf@UUm)_t(5rFm^l zkg8mjA12@sPi?1J#>w48tsntV7UM9rjBWOjAY!qm)so3I94*NZ3EY5YOo4gR5ilC^ zCz@ClQ8fz*5DDlso9V1y0;JM_T&rIwWSA3UHUi(N#nZ#0Qc9~-!PhOI7|;&mO)Z6| z3>oRdIH#PbWYFai0{!|zPjAI&>YA2ZriwwERQ!#RS zXnOU3o7b^+1>|<|F(-m5g3Wb4CM37HQ z+IIC5i=!gtqIfPorw>pyH)c|xjXwDHzrzp33ced&jSe!i1%Ls|0Q&SgU)FKqwG%6b zEEh7E&v*du`}FC8;rO56$*oEvNh}(~{i6Q9*wE?vnPGmYJo0{*d>!$9K0k*>R?I*E z>m>B=k3`|Ps&(o7!L57a^Uv_(@l%NKs?_Q66)f;UB%YeVwm!S~Bjdgs#khKHLZXl& z25-NoOdhMFj%fRAJRP`mzlR}T@k8L#MNf%v6xr5)FaabRpQPhI5ByVs_{ZVT5cosl zfV@`=#n65o(X?bTAawrY9-z%f#Q0XFPzOg?yk2+5fqYfryhp%)5>w*%L6Va`dQ81% zLN~R(_&qjH`B5Yf+Q5T2=H8De)>7F(D>OPp&!;{)UJ|Ca2pU+A&^Fc;h;fpVo z(!g2_X3PlG{)eDAB9&2<J+FHKv3E!xwhB-fX)G_H!aGL z;-HX%SO6yHdH3mtRcgFVRpKkLWT*0md!)emb{3t!@q=K|=j?e*fma|O$n7HAExo(n z*BFWl)F771Jn&3kKy9pn^f%iE3sS2bvrGY)kYJH$GS|Jj{V^45BEDKjJ0U0zL7*n* zt&iIH!$+YpNnj8$uS^DY2E^?VsXuSN8_oeL)I_8y)s<3IF^L9L#iYQSX@!&oj$=4n zu*sM(U< z5akym0@VPpp0O}Zx6on*N2)oX1DgE1c|q0)7uTfQOcIzQB`U2_q>RT#G6+5Y0CvF# z)XcQ9)TY^)YLFPC0Bq+?qILE9;2Cnan35zg5DxbwL|p#>Yv8I?FG%E46#}hJU@{2Y zZLsfQfdMiqx;av^bpR3n0C8y4_Q68^Kx$%>N~6 zwf4~cP4K`(I#qO9DQJKK+*owmNVvuV)akP2YDLr)OJxN5%oEUP2*aRQWjRSq)ldMJ zCn*7>k_71!I(y#$bMjTiQBZ`MgCHeT5ht+IzuN@-x+2t#Dy~;5hRFhCtQ!+?Zup9I z8j65vmUJ=|i9gG52AYBE(*}iJqiHi&%xN%i8de%eU}sJG4KWnZs3fB%R$xxhL_-sM zpX_kTF6@l7vt%IV3JhG%(nbFOz5q~FQ&i^#SQV%ea)WD)t^x0YgfUAyQH4%f@`xnn z*Ih5!x=tnhqD@w-O+JbKkz0hRI8s zYtu&s8bX2s$h?8H{wt;e%*UKMY@i=mD??Cf8Ys}1E zn1ahvZ9Cdz&X$}q6|o|tla{GklT0WK%^3(+=12H7&q<}$< z{+LUx66JoDNbO_NF<2)f3L1oUp<44T|CH>HWwgX!t;GF`c*kpnDV6*d390% zk1;#PLDu`=_!npqNku%$6%~eK=MW?r&DLb=(`-7GMG0PoRBZDqs-X%tqhp}gsKs$S z*+d}(7CgZ|V0Pb5p1pA1V$({6%CN}N7zhwx2${CC2k(H;jW$Xya$qGUSqegx0?~7< zMeVGOryJjds@A2&an->lol1c@VBCcO%FgB|TS@7S0yqltsKS&iijp$}0gu;v{c+Lw zMGxS3BwXP@Ku<781Nv*X+gxV#j-f?z)LGi_{w6{aYMRWTg4raIFvjKy+WQT+*ihp) zM&%-c6<7fP`E@!*n|<-iQYsXxBMO;8Xl$TFl_V2${r&N5@r8j5$I8;gn}OWKo&C-6 zk4HLZL~8RH^Eq~Lp*NU+0d%>JNc(M6`(ld}i07wunC(oh*=9k zFh)|ul0aMDWAD=qrNw0~0hJWR^fN0GP(8@iCH)NDMwvC4_@xy}S15fPN;A6tdX>0%_9@2CxBM@(G={ z*Aujc+(R;EWmd~&4>LE=_SD;M_yT~`C>dBN%%n7v2c!dO7xc!NxMN8Ra9mY-T*VBi z7{-D|@-7D3>`o8=08-;PcW!b1F#sPS%J2aK+BTPh0riY8Z=k8yCeevVsLbn0*d)MX z7tl`dHrz&-NmoY*U1|bYlH`B+Zf-w%NRA7Rp~NssM=It8mNLJ2S&$F7vA!JDLjd&- zbOS9+mXo|6z50_oVMb2TMd`UmQp~7{m>6q+jkVZ%;dN_E3W`HPP^b(~K-QVlzAvy1 zQB{~_q--KU6Qu7qAKwe9!sQ`p0z^PiVs39X);GLqh83FjV2D*J2vZ=ahCb)e3zLO% zloGWQmMWl4^_`~Y<*_rp#6~YFjaA3XloJm*NVMumJ^SEka6GnC%M`zuu>{%6?4T(EOJ!i9kn+ zcGzhq*q`CxfPqTD<^}{QQY^>su)(q##h^KW)FRdr&`ijWQ8BknEx2;3NDN3wBpliu z=EnBYewW!(rWc4-2Q^FO$b{+->jZD@H^WU5kC1~*E&R458|mvEZ|{Pb(KP0P4O{ql zOubAK7Q9ZM)^LiHk~wQmnFcZpqH~SN7B;-&X4F+#fjh9S*xHaT|RQx#nOReBsRT>p)IHP2O#AVk10Bm`6S}fVO{{Y2UnS&xbM%W5fo|(Ir$iOks zh1LL`lkc`V@MV@MS_*0DpQIlFd~?J2z4SBI_ujL%KTB&of?2XB~T?q9^d1-=aU)5H9GfJ~e}6Ioi*8TXj$`;2%8`m*pk zejWIa!~8+PtA7dcPlrAC>Y%>WY+TP@L!@t_3rIa;08jk^1K-)mDO0B?l3|IqQ|9%V#IrgX zM{7cYSQ!AxA8mhJVk6Lb2AIkfYRju6ktfUv>Neg4?QA}uoKr!T8I%C?Lm(lR*DRzgoY$cfg}$?WBXw_nN@@kjdkW7N0bl%HUJBC{VgCBYWYE9 zH8NzUXv{!u)6b^|Z_WU4fhS$7whHn*l73&I5zskoyBX@Ux-V=PFq z()z?7?}(-ysZ;@8q8qR!x?aco?b{RiOH!Gvg6tTT6PbYRDn+&R#OGsGyvwm5-aJ*eU85k`!CJ8FS3r=C0PpRvQRKn4!VZccR%a16I;^NnV*JwD*%BrgMR3pR; z*=$IgSnJnpMWVKo4Jf16G|fe2L6poK#7(sNeK1kYsJVe+x6ZAWX7FU*2qb!7Gd5?Z zSC+!}G~rtD1Wtq4V6z2eaKLJ;4YU&?e|ld@B-t#bpDz(iWDIhdzmv4Cgg$DZ#Dx`Jy%WBD9+5omPuyvg&>ds zlM^u{+=1zb5*sBo){^Cr2?1^|Z7sQ*>4Gg#w&9BepsuP|1+zdm21zHN>@i_Dl_;W< zp;rvVK$!keS6Q77x56rM4@Q$ysLG(q&To)|8*LJ2c{ssNm=zV>;bE6DLjV+$18YUS zaP|tdvGge@lF0P{AbC!=Hq&3dj2OXIMJ%OFF-@V=WrZVsz%3*g(+EWrUCm~QAc|tc zVR0J4{dK|9CYqjLC27@Q2!om~1dRkQd7W%A5UmBxRz6x+1g%0v?o6F0uDW_-9M!95 z1gjg0ppwLxkVdmJAFd%h*CvNz`zW|ToJc#z6{W&f{Rjdo#}$nBPHMr)&#`K z+epDo6ifxmVQI4*!R!q+3wZ)3YwbPf02+cbtz>1SNM;NHwz{4Db;B1eUSJGr0{{k0 zz#tZYPg58BVQDNOVB?YE(wrbQv2E4qv1CSypM z1l}OV1Xps(5U3!443m^~iJk6yi{Mzr+Pp?(s#GYZ{z9=~bE%D>-aeY*spAb4I@2Op zXbJ1B&fQ{0E7#)!ikaJ*gi0oc2-FGcO|`Ynu~M_OO4XD!D3Y-tC>A!G9M&gz!BQBr zSH)g}9GO%xf<;0aa*$58Sd;I$#L@A$Mo=L{u)7FQNsp;h7TC@;RVcMc$ugrXMri^` z^%mFmYn6FeYk}ou2E=MFrK~&m#I_1d=#Ps~;z>&Msn5&^FlJ<286c80n6ZI&-xZBeEW06X+;Yx`fc5ze6OhB|rZMMeBnlQ~xsfJ?t;2gq6gzaeco8yl7 z8^?HJEAW0P#10rJ29GsZMdg-FiQHSf+TM%E4uGygk}{~PDoNAUBhw1>!`jy+CtQst zl&*>wL$}STA5)}ZO-)vLl?y3y*+H-;(|dh}=NmQQRcbC<6_Qd&1F!>KgiqH{wc)^3 z1XKo{GO+hB0m~;qe*5i(A*QQDd7WGuVO6vlfV}IekPmV&6*y)thL}dHP!pKb4L;i5 z4f>n)#?iQ7{Ln!vm&(TC^90&7&`7or^g|@p4NNgC*jesH-iR5ZtGed8 zys2q`E=`R8083#d8kh$$0cA&*EP!X`KAkl<*i@j-nP>)N%Af}T+@6!9YHoe-x|FJB zUS4wM8g^C&WKQ=Umo~#76e}Tia#XWB0N|XvTIX;Mx?dE}3@R2uIiz_?>(q3Zzo;E? zvNVW5fmvc@*<=O+W+zDOC+mQEC3t-7GXlhcBv@b4#suC(*k2YVPUBZsg=7`YWd*Gy zDLJk#0km9n_rfZp48(WNNa*xom$Sq@vOzt+ z%G_VWUM472D|SjXS1eA~2!6QrPxSfm>ikRL4Z?ARHCldF1j#XL_Ka~K75EqMUk`pR z{3H~P7;wMG@RZfIN9GT>Ao}A^r;3f^UK(rY^#1^}vQqDgZ_b(WXk)`VI@CsdtCR@l z0yHrZ6aN5R5L7uKQk`1F{#p|TNSk)rZGZ$7&T7&D#%KVOJr1^lY&vzpR4nz4K5Jzp zDAb$WOzG+Cj)R2Cij`ed({?lfmK86cJ+Fy7G^vKPDbz>;HzfYJ zK%ALU33ebdtP(E~JtJ;o`5X|5%RTPVvmjn{P0im5IeQmZThZ9omPddylY?|6E zeJ?S-C0wE&bw#Fg2j%65CghNM3!B>boT@WYN{LdOD^nLx%rv>zX#xhPrX{L? z?9~Wh#tAZDNsuR9jk<4#NFfATe6b6e8$e7EEv>r$0B*R0NvWf&2F`+VhLI#(lWX?r zIBOK3d2}4nqg+N+Xk}A-u-5tvM=2=ObQJaS83I}i7?Wx55jZp@kQ`F6L75HZ*sE!v z0tnw2m5ODuu|pvgW|_E;akTnibCpSUH0kA>t*a5X;Ak!Wa9|!qQ#{IgKvFjJxSYSK z5r|3;lxl-dI4r8F2wyIw+VT9x$9!WNWs4M28QK{LASl$8pI@#Pa#jq)gU)|5KwEk$A|sH4jLQb>s)jM2YalYmMaO1S)yP^m%ySX1RUi%ID--w=hCm;wtD8c-6f zV8Joc0FM6nieRhA8AGu7#f*sVMx*v{N?BElol+ ziG?THHah8uRt)UqhRpGOi5^k~=HflaY+u+(;t0QM7!<_2=@kh}&G za-82Owt~^t;|wo@DZ8m(>QNl{YI-J3$450z|7=h}@s*FNjSJQ~6}2CMvfnbj&T&_9q3y zxiwOiJdc>DCCn`K8xTZ`i+W*vAa&*ht#$!fLHWdxK?l}jsouu|rWhKP5{Y1Pt1*HG zpum78b-l-~2(%beQc!a%B~=QFyNLNjZN8W`sO?&+mZYyltkeS3+DNn!qyudy3n5FB zmWq}GC`P+3h8Sor41I7^z+}jQ0vHSfz(X(yz3c|Nf!7QV0aI>WWM{}ic?Btu2mExn z*9>>a;8h^jU;=D%Mz3qC=KQkSjZMIJ*U$SMhL6RV0d=QVOdCHd+A~a zo3*`>h}Oo`R1{Q$NGN5Dw7RxfB-s0dj)9$$nPnM?VgVW2(<%mn;28Z5IfYsxk|26Z zRi1fyOKL^Owe8#6rCMcN42a~5u`xHX1OBu)#_JZ*&yXcju~etZmTZPX$*`Hdy)H2E zR+J@Lg+rkNtkd%mIw;MgOpRomR$t5ta{|SPIYa{>L7hkabvUrHX%cD~EKv%avLF+b ztn@ZMhkR!wBv40+rndr`gJM~(4^1r)57cdpCEmS49D|$6N=lHV=0DYqywuQl*d4H18a?MGw+8wS(%qMWCfck1e=lH zdwnrpwM8n#v=+=rc@WwtlNK?y;6&oct00QB$`^`(gl1ODH_Z%gCv7#fde^I2si^{+ zx`L%uTmw--)1b8Jd?$?Y6ycRACSg{m`(Z|BVGw3|01TTBrwLvKs?$c}ss$mfO`uR)qkqmn|`6W*|XeAV9UxZD$2uqOz?@!5J75M97a#cGDX;v85VlMw2^V z5Bx~+E)VkjN|z7Brl60@acv}SZ}l^dyTiW_JRgo)hOw)`RAkHzdSfKS$d0V7_C~1s)A{@VyzI2HMIK1{@pPD015bu!hCs&n7Y&#J4{k%%P1No193jEOmxQ!i-V~u14fRo4ytl8G#iK!m;zuE7Swv+Gr_9$ z4=At@WJ?LLkY-@-={CmJwI<~iaJ4D1LIDRXmVzMl)7KO@o&}Vux&ZFPWj8Sd3y)s2 zd>bqJ6>}(OD9k1Us*I)#8MW*H?03@&S};UZ3lirk5pZ?(-`9LHvV%$U1T##S32e96 z>U}k~0f}Jr%c~+F4h(}N0tr=;GTTW#{{T!n(P}yRoIF)p zNTEox88FwFwf_K=gV^GgK#0RCv$r4N=RVlQpIh(mwU(m z0F+}_Uxtj+Ob9vvE)C3!fwj*}bizPqpns>|A3g*4fx>XrDv?WxAqfD(TH5*nKc@cQ z@qIH-@l(aP4ke2J03G3VDS3b)sl6iysn_j~k^DP}tKdE(!*SFL7vSm&p>`z>w!O?- zq~q&fjl5ou#npZa`1isO4tRbqgFFX_a@aQ}uq2>8jJOA^1C5T0C;1c~oqzB9`;QId zYtZ3)wLm`HB%W`hr48a|z4z2l|RceZ9WTjQC ziM#OruA+d+U?AM-y}fWEw=n@L&0tisHB72>i+1hb0F0?2)E-zR*h2`| zNC#_2^u8xJ1m>!>S1GwB0G)T=_c+5xp`!wX6v1>kTQZeNS^ogaH~zy6pxK2|i3Ncr za{R+J;F34n*IYn;RYzt7y9*Lbf*?;=u@h~&V5!s5XLBq$R%pK~6V zDu9&8o?#(K26d5X5qo{{5C+yX+MI@V&c~M!CgRur+gfnUsuMEPsZt3gQ3)#$Y+^5I ziT?Rn%~H>wEC3N&1PyZBezUI8gQPM5u1cy9jA^4dQ6>enGHusfJ(c(-qLu~Nin)s_ zvaHVGZ~p+>SlDlgb5#{{y0bEzrzj$A8W|QOe!F5;LWLPhsAUAKU8I%owz2fZdXLLO za;YpxfU&3>4xW>SPLQcv3BN6%7O65wEH4s%#$e+qBUJ#?UT#f@4ZKWm+~U1jYfTv} znH*;pm!6lkh%tGCd>BeKS*r?pl@4Y+umcRybD$R2zg!OHTiTHB9a_CaN;H$1lmVH* zGqEJtXnvdFO6*rL9#JM>T6FGze)5Glnl4?`sYO`>EZQW2vAOlZs=ZaDiq&$k%82cu zgP{5iH3Qw0g|AVlg;>Lkj6)EkJb|yZ$L{!p!_7d+@`oeO1d}(PU*B9qA!1cqFa=9J zPbmNpNa%WhPOahGDK6oeT)Cj@w6nTjtL@$t*k*90VZrG&hmZ=D7(+oib31tg!ENx&U+}{LP z?~%z(e~4;C4dnV zq5UFb30m1vgaWG#1u_$27D$78+x5e#)TZ?cL$D?q_KvF{Y&8%~&IptRBFv+c<{5Km zS0Br{y}IicwhjYTEk)f{3d;g>jG|!cte@+FrWY%kV22_UsS?(>i5*UxZG$yvr3}ke z?n6=%Mq)gqup?c5-nfMN6Gc#$NT?ey0DQ>xR-$4MwC3KmnK%5bDH`WPmjwVk#)DRYP$B7!1LHfL1JTsk}y_cfnN|!lFnj zY%)YGvk99U>3uO^1E9n)MSPA!1$tXDbAmA_%?AY1?gZ3oyw= zxrVC+kkWOF0c(IF@$apWGt^aeETsPc@+l`-VH%H`Km38)6|%M^X__lgw1!w^0Wwrj zM8g@d-f_`+UZAE}m2qV-3u@LPOk7@Vag7k9hlPC4=7Lx_&uv7Lb2gKuj7b>XQmdFN zHAZ@jptva|`VvG;Thw*NM_J&iTNtX2?2b^>E>k-LB%4?cns2vEI+DB9MpzXpCy_-> zFQaW8J9oe%Ei%;Jd4z}*j%5r1w@viWV-e6%%_gd_W?aCDHQpkD8oi^1+?Xqh9{l8cN7B za@Uyy%1jY6W4C>J<8vN06h_2>6^VjQ!`g4t z5CuAgsI5f^4rb+oS%|WU9lqFF5X#vRNdq(~GFYDX)N31J@oM&4rko>x?%#-I;uxr_ zK>#xX(bNqz-uSIWxnbI^C2b((D=c6FEzs+2jx&c!bX_V_BA#Ts1vy^k;Ee^b9JhPb zsmnP5n-Ktl1+@T2O)v;Bw6QMXzm!xlZ;MNb_{nT(F(m^xom6M5^7HRLIW3>3COx&Hu>xYMqLV6%j%<*!T( z(&XwO1HQAqDxNrG)Rl_kXS#Stj_^MaD>ngIYE@Wjl-cssH@J&Po%Gh&u~W*9!BA5Z zP!Qlq5C|k4_ZFK*k~~YoczX5t)lLo8j}^|fMQD%(-=tdIeX;CxxP;*RGL>FG#A)%Y zS!vgCN)!VHOdUk}TYH>i=INFv?y!40MS8q4gbJwn5aeJ%07Zme2d1VX_^DAC8m!~Y z6qY3=Nn4ofV>TbAH;hGON{F&Sm{(z;w*6zE?}|J}4yd42$Y?&fgo17?0q!mL$0922 zHFVvl@`7eXVVP8Q0_SVTZDXb^fYOL_oT^v|B*Z~kCs0SY>w%~W0t}+%lCzQw+Dv3M0a(gC%M#KrO7S3kqiszpEIxJSw>aE`zX zx`O~nVR8@F#~eo&!&BjEQ9LbIslruk%T<8Rr$Vftm|v0OI`s6!1!V&{2PCRHAj_}KB*f|Mf~rL?B@%MoRb5PE7xwS#v|(@* z63sOhA1oI}2e!vS_tzbES4ScvA!>}wVsonIxddt6E==v#aJE*bPv;8FdsB%3KqmLs z+XYN>9x5uiXF0A3h}UucFnmFWrb5X1KqdqEjC)&OL5xFx%^5*?6zS(v$&r{4NRl8i z_L~#mX~ZQxVcFRlZ)~SiroAvK9u=~j(g2en2+*7Bw%BJijeN9Uk_VYGHNXev7uQp+ z834dSQzJR^45TeGcg+IwRs`BLJ+O2twIYQGHBgYM$s;M#a%9KVyWmi{EFUdTIV2Gf zNg{n``d|{HRHx=-dWQaI=n0PTZ|#Oa8BLvy1xCmen2WIPNijDO>4ws*N{&p1aTLL* ze5Pcrt_0t04_qN>HAJYj6_~35VIYf;eawBaluL?_Z9!rKWn9t$0BBFIQ-k1IvEjy6 zd0?b2X$A@UY2W%`Y|d&EDM%0rf><3ye|fNh>3~eGVx1(Wq-JXvj*w4V;6*pCPE_)! z4N!?CW2yc9aW2CYtU7T`vT)NNh*klVMERm%>TG(P6e`ne!_+E3Bg)Y`9WHHrEhy6t z$2BJejJ{%Wh@I~f*Sz4;oKkZIxr>=p!%UsVr_2Y}aB&dKG@7CjLnr}>kp#?y$m=3Z4GH?fm1kx1QR-`YLK@6Z7?>#$5t`4g+QVmj_oRh? zM=eeA<|R>5n=BbEG5-ML6W?4#Ri=PFR7q=-u3Ks7U}#P;9HOT&7nlTP{#d@_OcK+| z7^wWTIhvZ1OdCzi@31;_7=rmE6g7&h*yd#iC<1Osw%eY)q{$U2Fpz{KjNlR#WXRLd z^^LJG3-YO{%rb>YwKJ{8!%s-U(w=IlhKVHRP>XE0xV%K)(-0hzYOAqoWIF;wGOfrU z4G0$Yo8W=x0?AdZ(4c{61_r))Bjik4cm>9QQHIRgn2vwg|f+!4M3Oe&6DGW5=4 zlTij_TX8sKFVJAAONvocI?xLDEYd`RND~u##8~tg8kt|1X;nfrB)^%A$(cUAVmc$b}^b?QDxVz*PJDh=~hZ2lhZ^31W3wsiLs8I_l!iyWh!LTbTthw zVSwt{g0@|BumBUSyWxeK=A`E>LRU6>usfYh-01{+VgV_ZofJq4q!qa8Z@rGf#Cu?= zAZ06;macwM(k5(5_JbM?E@Ka3u+dtYhHUiyR$g$^U}isG*9)wGOLLKhM^ykD7CVI^ zOc|eP!|K*EQI!=;4AD=Q0>(AhNf8ry#3HfcWt%twjhF&I{Is^dm%`J02BKcwvDU!nG_6&WkrW?bfE?z|?BQR+M z5)2&-`u@yg9_Xx+&B>^#TRk^_kO2y9tbJzMVXE0sIWUOfR22yz%;mlA#t+}DFokNB zmZPDim9pg#Cq|M+=Jxwy#X3KlEIk zl`0IV)Z7U36O=%REw%kb9Yzu1)K3k;(+m*tgtJyGOFL9IAkLN|{bv1a)S}H?XH#CC zG0Uc<&zizbu6Ekuap<~yY7j%pueZRI0Qsvb)Txz-Boim~vv3 zt{ll55@T(_Ab(6mB_g5K@*>$ogWO&LH$4U$U7LueX)Pcs3S_IH2E^O~Zgjbk2ks3G zRYwm`T7$~RK@lK9w$md_HIWb))M|@S+sKnmeptTy4ySxa5l%RDG>BA@PdGPW1cFR^ zTTL-5RfRH25VD|xk;MLwxdh|l@HZ39- zKm-G}q9AmgL|Spa@ID0bDg{7Xa#^1`!$6xIfY)2jIJ0tClBzmtUN^c`ctJBHLq=3n&6!}VvPF;to7sg!C&ox^*(ZqtKg9Rrs5GODyMf+>^>4>cG zxq~iyYBOdxG8fxV(-k;S6cSVv0Dw`60{bk%n-l6aj9XMHwIyAdgpg7%BpIC|52hw2KDwF5TS0|9!AKNx=2BP?!r})10KGIg<9te& zKZ2^YC<)D(ms6&e+J8-P(0Df(YSCIXKw8ulPn!9B#t4BkZ@$*RU|MG3R-uAOXkd)Q zkU;|O1?ES8OjE1Dmu4$aD`*Id0~aGrPqd$Hh+xz~rmRc?%!*W8=r41m;!g~$%}tTH zdGe9cPJnI)Q{Mv1qG;=QYE`J>qMcSRp)@xc65;Z^)0n~vdCs?n%bc%V#X z01_BPm1}FZy>aWW;mpv~#%iDj3p0`dH|uVjUu<%IKgV!X=~dypNx-D*37ABvJ9j$u z#n^L764uV8Qd>N$iQ(x59GB)&t2qE;=14h#BEkqVJNLwwW@cq)r%a5VWAh6@HX6s! z#wd!*;hc3|2}E!;onD#D7nIXut(HVvw!7L|c|l6W(GkvPEg?vOZloJq>5oT>eepRb z9@CEGu?$qfE}-XZxqq2No%`Y`xQcrua=nX%bF)?R6(o6zjbmHer%m^mN^%NRAXJeCLzVvkCtauOh+Ik| z7YM`>ZU_c$4TOofoHI2=L~zcf*yqgP3D6Vw{^Hmof*G4IiioC4%w;x!1><5qm=-Qe zC@c|(2KHbkBpq=pMa?2IfZ<5YMxqVoHow$H2}7EWjzKQ~gLxO9@qx(`p;TN1=2T^b zCBOke>PMu-wu~C&IUPYI$qkyFqVc!QAJYvqnwq03(`sabTrOq}d&RnI+iWf3oi=)( zl;md4ilV{(1|c~bX^I|NpYJM=bGA}0Bx+{RH9F%Gqz0($wCYY`7+9gog_tsy0Yr*sWC_^V`yQkWS6snD`AZ7}062pqsMbE4V1k-;Uz|dy z1xj24?K+R_aOn%lo<+?J%tC;sOh7sTr1i!{B2)^Jt1_WZRTDP9_1xn*l0rh}%PdIL zkVW_PJ4Ons(?B`&)|?+GAnC9>j_g!2L8WX1PgXL zjWup~L~vA^rf(oI(M`3@>9+U|QnFKIc5Y-ss~B(_yiKtRtb`$RO+ymI!75Dq9e~z5 zVz_Ys05Qu@fF4+D5X;+RXq*rv*=6dAsZ2Q(!!$5kfC(_sxx8s&ey#J+iWN`r+36D~pr7T73qU<|#DZ!XN`Eyo5tJYTOs(MF+u)&Dl$8|~vV{X; zNxt%Qo#)Wb7K=|SoZ>u?rNpTgp50@i)-b{whfTo>$OF^L48SmKH`Ar}!xF0iRIC1G zV8Qxn}%|w$8 zmB*9;(?Udh&e-#^MRZ+I8AU?tQP4psxh4RKXqkY0jvlC*?p%4VHuq5Wa^t6$LEJ$*yWI_VdNiex?-hlk0 zzWd)CSH{)9i{p3?3Zz~MH7g+Vc{RD;d6Tqbv{!UT%_x$k**vo_AhzZY@`xDoI$THb ze-n6@5k;Ljd8tuVya~Kb=EU`!bl{JC(l5rU<>5de)y0wBiU_Y8|D^PLoP8znt63lK=qnGx35kgv_Cljd5YoRT2lQr~F? zEv)0wrK6Y{ZfT;eR#sOB=1X7gruyD+B9V6{L#Y6TSu8IWh$hq1O>oLIK*Mqy1*BSJKqift`vb4YbgxHw;89dhIiI|@h-xzG2OX}g8AH> z(bg{(9>dZ_l+}ugbOss@q>DD=f458rJXYb(V5;n=^9egeqeE*9LL@mESy>XJWf7R_ zT)`xXHt!!yVxfBOlfCZKJz=*mFS#!jabRYDd-=j5om zh(VZwAanqUziAjK18Tb06xNpyPL^5oDfz^LPfdD8gB8sxYf>qRVoWMLsnkw_*8O?| zh6yf)oj{dVn9R%pB!L&X0LSTpTDjFtCo~uW(UdXL<_?7JMi`uMVo^t^BBj}aubM1k zCQr9aADWnDOzO-$xy){EKnJ3OZM4+jQI+b`W@+9)pHKlBUf#Z#K2fYQjLFPm#I{up z7VCYq6K`AsFPK4*>XArg4B-w|1&Q0B-)~%YTm=^J{{V)(bB;7toiRuFYFXD;Zu-u# zf2KK)2jF<05%E3`hT%b}UbR(Fiy48mk^qxBcZ_-;;@<~L;jaPke}=earnTyxXA~Ky zF(zQe%zAB(X|7x0FXw{9tn+UWGw`)aK(U(1Opr2z4*++t*IfoW9u}ENidjOiNDY}q z&Bk4BAbs)A@pZXWyeEgNmD%{g3J8EeF|ELp+I!=s;aZv_(+^WCpha1ROY0YqHuatH zk2kS$FL8c;aBgVSdTSyJ5?V7r`LqIWHuUed(u-88Km~}(LYT}!7a~uwAP%#RdXFDT z9cgg+>(w?|bg7ndH6{;xNxl1HprOO@P6bd049d#}L1C%O15bYQ7_8(#apCCGRpG!j zGZ@T-K;1^O2kb^AEB^ouSznmvmPSxp%NLRcrKESzTdkL(Y6n``t0SlxReZHCW0YB7 z4P&phdbHVj%qbp@#AYo90`}VR(9Rkv!$#4(bBCtXnypbY<{3=MjkdH-*BIDwe;D{5 zgHURfd_gM`jZ>FH&zQt{r%T48rZ_){_?6*lGShY~P&$t&k*K#)Op6S0DZ&(|nbyjI zGPK>MJxCKheQ}|OqmD@TNsSjrS;zh&c=r`lHwRje4NoS>PnSo)4n;66!AY8 z_<*3V#!wjz;Iy^ONm~tlz2^ksoDzjeE`$>yrY2-=e_U+o=V}yMvoALwEF$Hi^C0U7 zPuCZ!)N~b=L%9|)A%^!BgY}U!fU8+qN^^^vBo*Z`AkL=NfM6XgbnA9JOCJH2Nn}Yg zi>dj+)VXIKZ?Cl9GrMOvklO(Bvq03Zu_uL5-Y?|?!q=9>y&7ytsx<@t%y zJ!crJAd1dcI>j|I@@HP8PW#3)(XjW(H7L3VrVgQqCQfJ{tj}|YF%H?0Lm~2oRs~46 zm0CQ)-%;NSq>87S#-?zKQKdt9OxzQ(Bn`;c_#;v1&z-4~Z3Y;KxIHxjZgkTIz(*`p zrUf-#V}ewLu>hDL#iOCY(PnR$E^@E|Spj4XqQ*YnxKQ$46dxcflulwgb}~%Gd{0`RdB{{UEp5S-Sg8k4cHFiq|wYwhdnf=`fZOc0`?i`}3F zAREY=nHRiz&L)v?24E$ny2kxIFN|@N{8Tg`d4-`+Jh0<|F2)!EKxRk_Wk z($pcyaoJ!J2mPRz|0LGYY0MM`8-%T+Ua-#Vmr6ty(iECe`!+w}_3%&@T z&Y{?>Iw=AQ!0M-SBc=No#Jr@rsrily!CRTo3mxQJpuiHPsjG!bYXzc3rX&uqJ8pVm ztw^mlE+v(j(iDKplu7lqz>c$g05DO7D^to;>zL+@w~zj(Fp;lG!)q0(n1V@VFbT+{ z3A~beb?NDatEN#fR47@bWSh;&)#-&Rqp1|yn+7GyQn~GGNRa|#&8`9#wgSC2 zuBMV3tVwGUOz36|<=gt=UZE;cDgwy4Vb=Lz+SVY*KeLRc%DgipA*fgY#aNIQ;@XKM zTU=Nbd8HZIQHgz8z`+){fhH~g03obl!1OJvm8cQbU-?BtH#fI<5vNG)jO9`RVF4wC zkf%})%dx%n{V|kW(oRn-({?b{L)DuoH1Nb@&FJI`64wjfrFiXrLJV0`1K^BJG~OxRwDgGyg}4Xk<$eg$A(B5E>8S<*q)!4N`#3K$I&1ZC^L zrXocOPV{ipj%S2wODmZla${4h8=NYY6ncottg3=JZb^^{g&Ifcp~ri~{v20cAU6ii zwIGAd1`7ZT5QYfwvbQrS ziGV;8B=4kc`r)rkFANQS91?&?6*7`70wZ6V@dpLXC`u8P)n}N{tf0x)UdQyoQC6e? zGI@EUD`X;KM{|9>v^cJNM6%Zf$J49AQ#@!zt4TR^5W^oRxoE$8YcqJl{5D_2_?}w| ziqu1SrqFk9S)Zh1QCEup0Mq!A^;8NRN@Y3_j~b4ofpffz<6Xk|_wf8%H413}KoOc( z?G`umoMC5*i)U0YN@=*Bl(kh!ej-6Aumfc?b2)E&^^1~DhX&Od6x6Fq1m`B~`bl62 zwAfnz08Dca@eK+JBCk1>B?6O|C*7e=p^DGF&#n2eysftzcfkVzQg zD)w_*XjdEY3h+D)MdBqS6{gB$kUo$)=}p2(*j< zVpOXD2=h5<00_AN{WY{7Ty7i|8Y0sdq(wKeR&8TVcIj=l#w9ZL%o$67jLQns&}w!* zhfx?cHCzgBoGCMuyv?;1)&TYxRYqh)6hIGmhB>4VVCfSPAVl8)oQ58&Q%iwS>XYPR zNIFQJMW+C)l`2h8^%_evfWAu|Bx@vf`(j8y^;KFR?6OH38T9FiG}4_il*UJ6@<9`? zQ|YOj+AzofhZPe)F#!JnfwkxV04-$Cv~|I^4p`EnY8I-=on0GI8(L%zu@G&Hs1wSy zerPN+N1A(sCL(0(9k46~S7#uWs7cCf2;A%IZnnWeFos}9FDWb*(sHbIH}4VC45LzL zQ!FzT7m`5D(r?g5d_@HfkxG?p@UD=+LkK(n0L%Psg&JW3(xyoB25BUT+>xYDq56zV zB@Cxc>#~Is_ER+ghMzQhjX~I8Qj)!3Xd*DpBRR2C+`x@*tlI{(){s(+(xyd-B4*@m zZMvK9i=GeQJV%Up*A3yE9}QluekQLesf8vK+_XrIG}_Q`u1PClj@={OKLNfKq2N9f z;vXISN~pXq2(A1zO2ApcGVnL`BT{KZZUQ@b7~B3ZUii^w4oi7^z|;!HdL=ZvLlR3o9C7_rE)ZWKIlAa!bNdOhYXqPWl|)QAo>t2d*gB8+(#MXoIv1w9ZfV}%&)`{ zLeW;#AN-(o*g@-|@y-UniTq&PH;2-9b5596&1GG4lP60Pk6ieF!s+-Q151P8sq-F> znchq@iIOcQNz=I&#!Q~eb4oFUeQ4NtCxP(31;V8oLz!3o%C(%uN~T~*+d*t>_|7q@ zG75860aPtuPEsPq+H~7{<6Z*Vm=MIu0Od_Z%1-kmPc`=Khpu8+kLMsTe<(0aX7wOX zsM`2cjvKKxxQxwUV6Y?;mS%Ohi1)GYjc*^twJHd;>6NC8C5z~6Riu_e;@l8Q$)GJ7bU^Qk9pn^u$F?-{$20r&drrE3U9xwQw zCZ$9Ro||P0D`mMdqj@^|`rsEMzx#^70DgI~BYi>hZ{HfWA?b{%E0SOx&E$WM__7h1 zvmCMk3JVp?!&`!5Q|vuw&__y!?V;*WxDWo-NR@I3W8Or}kKM56sFguuQ3G6sU;!pi zn(?4I={VNrsgOHLfdZH($~W#o{`%m>Mdh$?TAhhvE~3XYK#jKUaKxb8m>yN9Nz`1a z)OmF2Bc=fuQ$V3bH3so2B$zhTNCVdRWdTgpq_t%(Lp&A)3+dMTd-TK#?NI3y9KqjFpkTm(GOaZXJ*4V_$ znyx|@FbivT5Dwt(cOIA}a)@c>T44cDpsLt)>wV6*#!5FhB`JnpO;Vy3FKna{B4g9{ z7$g*!0J&V3{LSn|#2Y}5ta@T8p{EGO6sCB}No!kiXaN26#u{-<6$mpy8AJxZ%0{2d zhycLK`76q>K4nlgSkgY1-`5jJ)2ywUoi;8DFo2cl2{nI z009@04D=)da4S_&T@{L|*f~;kX$NEJeZ~#>De@IjETA!)#K|)~G`CzhmLtnfm^B@W zg#^ReZb2XdHc@S);hdn%?^Db`3ak)`C#wte6X|R<-6~Yhj9s04zGL}dkCfgoAFeBq zUZSw9jLJq(HzbWuYku{JmRa!bH28UQ{5KE8JxV5lO3GW7Ncq4J0}YM$#Bj}1ho-`t zx;@raqw>oeZv>ELdW~?ZbvaJbS*p0qt(cf2a~j^j8(iRpL6KOJhMXu^3=gb)y$AQh zAzCt<@Lz6^3JE6bzJ*UUo^BT3do*hcf9z`6k|RcO^ILsIYsI+LF+owgc(*i#DcHA1ql zl}rM_D(M5(!f;%mt`>=x1eM7Eu;1@{4F=o6CYPF41ea0(kT!^jIbu6ulK?d6q^&B( zr9C6eZ6|GDohN;9FbnE464R8KYZ%ZNxIK06h~Z|Fu&8rEmnOxD8x=m{_BX`S4Ni?p zjG!jvNNlDp2IAm|(|s^PHl0d_y)>uAx;aRa*|Iq>79!{At{^Z)d8XmnN-75B#;|YO zzR}+VN}^qks3k%pBGGq`EY0gy&?0@+QjZML~rWzM5ETB5n2P%+1nh6t_T4p_t8Av#! z8JQoN93v0`l5``jglVK+Fg!L~^pc!%5Cc#&-ujp_O|PUz4U1tYa-6eYl}!A~=P915 zV*7nC{tt*+6@_YbOB*Wu#YiGSAnDg#$nT2P0x4t+xt^I-rc7ibef9p=!B+;N4rL|_ zIhI%fd+XE?eLk21(dhmW#wUn1D+mMOjB!g>iFa!& zg@w4ewXAK|uGGyt(2>%1dfIq*55`hY;e|MotRxArz5OjB^V=2ppNHPHFkgpcY07fB zkTsLjP%Rqz;;)5xSitjeoqVA)LDLjoY5UfS-D#5IVj^ogZWWz>ZwMzCUT zbvkTEd@5}L--C|vPs8dQX+h#V1venD6%l;am9qh31Ah48IPbynAb4jU{LIAi_=u?l zZI}RJM*jfZW7}x>rxld70ywu-Wit|c0jyk4&|<|tHL8ei9VraHX-ha3y}rk+-xev~ zBH8l)0E_+={7O7FttRl!Cyt~NO->m_K#gc}up6-e69XPMTZON{@ijPpBArS+LKvw{ z))-h3Vki7YKSH=_d@WN8&n=i1G_(pt&A($FP59^dJU%P%(eVev2!qCWIwV)537#sR zz)$li)2K1i96eu7vPZrgqqn8%7CClHhJ2Y$tw9+a05k`*>)z+@hQA$Fv%N>F3{);q zvNFUG>HTq6C`Tz$Ln($*41;+W(l^8@4WhyMT*_#YWokBoQ+h^1AzB9}O8Z!*X_ zlV}=anycYFR|JUsSBG&tKMSIBxOWPDPUPkF`r}i%dYN?n3W%!$sHu}OLaJDRWP&Uw zN&R|YR!|_LRn!s~>_)%JM0#m$v0;$BQ)8DZm?kH($7qN#2N=|f&O+5P(;j(@-okrd z62-AgRYxn#ssRN`EatpSk=%5-7QwA0EamLB1#?`q$u}J}8%6sxE=o1R)XIVa=UWnW z*KLnU^~N3@RJAqY2@dfDOc8E`#@>^x#wCP8kftitVp}t22qb{rwde-$F_kHE4MMVH zmT*K#JD>QIXuiYK4M5ZukUKAz%wb6VVs-7N8nhH3nSDTZrgG^T&ZafgYl&pCqEkt= zM}P>-h#PS)F&}-#vyA@$dzYO-QboB$lQxJR-$~aDP7R@wl`vTsI+e=P9qtaN5lV_8 zqghg&^5p?s<}e5s)^I{iMQV=oofOzC1Fx4X0VDzs>|^M^!k>fb`~mRIe~UgMrJuyB z(#ye7I#L9D#2x){r~C~3Ctnh%zZCpc!lHOr2MxngWed)zNtOeqpmynu{ABz>r{b0B z@Eko)BK)YaXdnn0jjtb3g9#*@-wThM9sdB0Zdkg8(h@t_)s z8uS?1@N`p>>rH9YVp&Ku{#Kp$xwzlh<6Xe;bm;SVg2`EVdGln;yj;cP&9xA3jp{8h zo^~}tBSsb<(G7=obA{=7l!cMKZx;OBSC8C;!`b0)T#|k+}sWNcZ_Z+ z%IA`44G4edlRqz}{{Z!hYQl)-9F+W}meZQz2CxAWb1{5W{yhsCbn9k7KqRh`O^j=y z_Jh3Rk?dD&-K|znK13AQiB%+%&}t{z_r$jnsZTI}I|4~8NhAyPBVcC7zB%f?D@Kwy z75RApDoN%7G$uZ}O@^mjRH@?&N{I8K4B1XvW(mN(!_}*eR^Zh+OP+oR0OQ@#4G`v`&w_mQ@%HE;$w~B>#7@sXq1(9CTvc+8^H!* zZH*mAP!)3slHpx52suOnq}yC-^tw#8D!B%N@+s3+42uUV!CAJG9pHg+A4zF?l?6gG z=L$w{{mMwLob=+dODV7OB~ zgdHY!>4D6}o~0CG7=Z<#8yf&DP3AN>HXudHuPTx?H9#GgHo)pmr}YF_U{yjf$x)mu zDFjZPWZprx`|XC)Duo7OD-x^?{!ub|Tlc;cKv1glmE$GCvo2^SYZD*2l9&!hGL$SV z5rNF0fCcSuSe~Z^6P;TiUzagbEw#I!yx^Mj*_A~=fJB>Kcbn`m{vMJi7N?5lB_hNZ zTNRyP6FNw~GLtr&&;lPSn`ThKnsfjQUN-gGZGsKTLZl4223BPTO}Ycz>9F@@4DO9A zRu;w3`AmZ>J$H>r#x%0Ir%fP`f7>Qv@BtoguolFz08-T#Gmw;v0F1zeo#2sp2TgDk zmpUlng4PNPlaz=6T)^q94bBfID~P0wDiBV18WML=eTRK9Ii<5y0+lBKvl{|n-Zt1y z{@*fYlYP8MKQ=ruX{dImu3|Q2?y6voTT$ ziv^yVdfxgRVpLR>ti;HJmB0XQ)<1vihXIQJ0GwPEv>JkBL}`6J_Q5kJFdAsQvNL5? zfXyGu28KHIwlE{*2>jM_n=Vx_#^O7WNIga+Sjl6U7|)f!Dm(A2Oncy>3NKMrYMPFy zLyTDk?`F|}!^GFclJv_6m=Hl@e;FWW+yNQT*F8<_3wt36sXivPctJBNFc)9NmHN(PwRzz0+1$|$WebV6(5?uY@m%T zZ3%)M48c2{J{JPrR0m4;elt4v5>e-x?S@T{j2HNTN!GvbW^#LJ{g#67q zjgFSdYHM>?Skf1rVG0+Y5A2x$8YO-I%%#Ty9kmi z)kF$NFfKyG0HiP1rSJ>OAc<5;cgT!O3mw3;$NkMmh<6I14h*5cdT9Xp&go(%=0us|XS8D0)z ztWJc3rt^Jq0Sz{)Q_L*GDrOQdmS)@xQeR0EljBNjWzk8A3stx{Rgz* zfI?kr5YAR}ffCSWL|AF;dts3@Hj}+&VMtLGXO^oaa`m>OSl3cyeDRzY)D|ED6boImd4mG$M)cBH#P|v7)&@Xr;+8p5X+;??RYaKsv<$%)&b^xxblG)XTf*VVXw5rooF zTB!>wNq{48dy#(oVzou$D?3$HEl)J%f0)N!*ZZ7#&%>TE!&gKUxXPlYL6|fGZ6+l8 zX{X;EzXjv0!P2ckSwVtYK^t6~clW`%E0j+m{8Ri5;XW)id{@9S_;-$v_k)sY@do1k z8&5Eqyp1vQ4~+N+ihMi8zX{{K4SoiwY_U;bAO5Ta9kj>jmk(Ej;=GMbcz4SL7$9{6 zeFoZKc%KR3c+knjQlrFDIZj&C^8#-kx_$A%44sER)Q=y>4`=Va>u}aN+&Nq7>^pnh z$qZ*7l2wt)-g|XcndfXWLXwqvBqxMOp^%hO=&RrF{(;Zu@p(KxkI#6&U$5u0v^EQU zPZ9Bg)A8D^@7>w_{{xslW@}CUPwn$9jnO+bzy3)(-05_xpf2ri=ZvO`@Ltu+t~&E& zHNGEjS}daPlfB>e!Y1o(EA@<<^Uqj}Aeb+5AS9zV9kF9=voqj*?Z2P@K&ZSxPSoLU zi#F_wLq%1Zig%>X&TO$}gVF$={Z>^ee;e(;a(KX*lb8wHe>bk8u5h)L1op{+U>r&YXpZowde(c<37N+Y%o zy01kPwz&M+Irih)+tmL7to{dJpbws`w;4^iOQOcB_XR2b;_Xe1|4Ob4e+ko7lFi=K zO5hS``IG5e=i2_gpaJG{Es^RpmIO1cUHt3Oz82&PxieVE?WumSv>)GB@yAUzh4Mdu z#Vr84-p$M}0h+v4$3Z&Zr5^r7|10??hP!(9n#=JV8{o~WD|PW@t^OA_50?W230jXd z&sP8SsDJC7iwcz5$^Uy9BL4{1I&($r_3rp4Tx<7NG|HX1WDDJ$d$ld(#pYv5@-Uyn zuZT0#ME->OmMxgL*Ru_x?(2k~UvX6=vG)5cw|x&02^s`*?^QMy$ME!XJ#>=88j@$i4*n`WC=_^k>mwZgyI((*HOZ&)o|Ri}K`e8&An z;a7xNzRjd`!c+_@J?hGrK;JjFbl;qP&A9pH{#5GC6l-=>7KGfZY-Di7NWY?Q@=Yf0 z9TY%LG)JSitBQGCCi-&k38Pr8_dk&mFR+4+Co(u-a?~woSrRc(xHdYLF@bKFfiyox7#Q_ ztlvnSbe;|;vb1x9PrD8t>cXqe;+`agq}p7&o<;)>qrOwf$QX;H7<|OYu==;>5XG9Q zna>O_uU?a@B*ay=FzL`$GCI;Kr~UW%>OEu9DFRNf*UMXTP#ZIroKZb`-$h%|(!xlp zWV5S3&WHJLKxR}(*8+m_&=GwEU>1LLmjA~UVJWVSUt)CJETpcb{;M&*=Q0RqM^wZ< z>RWyIb9j)lmE>&;HNe*_TZLTep04x1c`CIdH%l8csz-ZUGAiPm%&*K=D7VGy)w(<^ zL2+~tDv7haoK@|6oHQ%e*d18ZWTYYS2H|-0-(F}Qlxgm&oce-^3pZ_b&IeP5QbQV$ zMdxKid7F9JR5gMY+F+7H%4ZlGck4PCeiuJqGm+6m#o_0wKmvHRSH&j_jxy}4PS&h( z4fD|>Mm>TX0(PY~`?fV8OdVnT7@32PGo%rD>w2f%;Tv9T$it<%hIOVHz7)B>bv23a z!|rxylLz~?S|p-Za4uL=fKCRhB1$oyWjzM6o<}X03STvs1NFUxUL_xq_Sey&Esbp!!WB zandoNhRM9a7a9XxHI!+`L4-Ab5ZGJ$ZReHso+y^8oSNgC1U`Kp)LPf?*r4`;;?B8~ z%7QK}HO;h`YSYnnUWT0|9+S&YI8!MWba4Wl9IAeSmwIeTXeo@1!P64w_5Z62IX$2d zq3=F3)uWNdb!bbYPVYELib(0-Pm)9e>+n}^I(c)l@E5uKwbT9GL~nx;lKF~44rbY( z;Uf|Om+gi|HZ%bKIpAir0(I6MoZf{Rbq$8_-PG^zI%;!o!#JR6Wsb#lVc$})gvK<}XMgHY?R9r0$SVzKSll=gil+TM=zqgu(3%(zkGMy|sr1X~p0=0jt+AQO zD|6Jq=)>U8v!-qbhy62#noHPK8a67b3wr^;IqJaNh^3Yu{5~#jx|Lj546P(UR`{CgG+hefF+JdOf*#FjQ(J~ zQnR8R5N)q$;oqjw>+h#P`(=4FHyQSs4rA?oyj&kM2i&047?$y2Oyd0AdwP{`Q)8}Kwx0n^Y|F@J zc9COO?u6HQY#Ic=0!ztqfha=KMGsE$wkw2H>X^9bZ7<@f;yjkexn)i9&0}AeC@$ayY8Wp1pLZ__7(<`% zAd}NfOhutlLWoawlUSiTfg4p#Wt?+f{yipM?lrG+uuZXL{3HHiv_Tro(nTY@l@WKF zy>FE18x;JRmZXSkpP5!v6C$zSp%KllbI#x%*=b{AedK37@5QB>qncmaEOc#XkAcjG zO+=1QF?S_>wR+V#2!Z4vP4IV>&Ch4&^(cQtJnD{+UXVt{q8eJGt{D1@%ZNe#xe;uA zGWNEoXq&%}p92eOg{G@Z$hHsj$kl|^qA+RGKxwO(AbTM!Fq$R(M9b4+fyY5{nvVPW zXHUui+(j~3I=WR6R3HB^7^a*;;9=4L)25xevNg*8qY4EWJs$iSv3|vNn%7f@@j0iH z1Gf~{g>m~0@RwWh+g*36h*y+S8yi+f_@9n4yFvNyPuP;l9E)5&G^bAq0n*~i3DM}A zBTr+#psP+MT|Rh;LnZ%aQL-)09)FqQ_Xjp(xy^Do0()ET4QzB|bJNdgr&XB|R3~FT z1&V-!9^M_1)2c1|+2YS|=LR&F^+i+hiw*v+2LgE?POXy9F0Ux!yF}7hH&7W-RwK{S;!~oc zkICLwbcc6J5w4V>s#nFpP2e?RBF<}j?5H+F-<1SLnakCQ65s};2qXr91i z&BzboIB%mBw8_!T0$YuNaKPB>S9i#RN;Xb3TG1o=5r4*rb-cEzWK;m_o7G3%tIYqj z#2GbUyfA@5*4V$_9`581mq zwO8y=S`L-93Q6zm*=1C8&p=Npsc!6FbunbEt|t}>bS^d;19J2-4|tJ6-)alKF5gtW9R)D@ANP`)mV-P1{-s3T-OQOh~2n=2Bs4uLj%r=;78FFL>M+z{T3w)zY?U9aPr8t~asuhXYlb7uMVTCCYDodm&z z7{>n(FsZQO`G8scZ8ZM=YjLUp#j9KYL*ny};kC&Wfy{8(ZiTW~t` zW?%nC(s!1&Szo_BiIqWbepU3b+18Ew##tpP_=V^5q+Z(dv<2xGJ&1=)2Lg*Hnm?4| zKIMvz9$}g`q#-6VqWJ>7xh+~NkHDI;GCBW^#Y%LP)$mrtlm1@J=CyL$zg)a##)_rNe7{!Kt)TnFyOZ`){; zf9*c|NKeXu*r*|t3BVA5>ZDEo-~DJs|1dF@1c^zo=>#?EokH1Y{%L{Qg7VqirB4My z*LN=HuAl9XUzzw_oeuuH{c%qtvElw*JBvhhoR40ntcA?RgNWhYTw|oqbq5Bt3R2h5 zA-m?&%uU?v2eJ6=<00>UE42DyhWij?i?vXXx+1Ir*lYZY2~KaSW$1iTbnV>Ivyh+~ z;PKD%VZ?}SX^1tkM1>$MGHW=N12jzeVR>f9NWv>RWjh8Hu*4z!G?wvJ=2zSe)bUun z??h-EtK|#byHCqui~0sfyZs5mMpN;7Ox`&dhPkSWGykT*rA5Am~QvfL&p!m#- z6ixLOb|H6B2>nbE(&oPnw~xOh@Hz51VU79dp}eTOSLG2&l!`{%EGIQH$}FQ|Gl7m+ zZ5`ATALx5ueWI=~^ktv)^PCA9H~C)bi|+cFws+{xG=ZDu`C7R<-Q4K7Gqpb3%pu+Y z;q#y;0MMO(FD`I$6k~~=x&|z{Q(jS&IrD#jIwGjk`CE3m6pWZ_{vD9d6KaHLH<7_$MC2*$XaP!=#qjjHF%qSd3CtJ9y9mK@}VG zKkpcRa%w1$o=nu@7e*kp*BmmdZGzgw)HHUwFw$bVVk=(7e>W`u93s=-((!At3`c$zE?NKDGYYXU_aw+@7Gb8+63`q|Z z!{7Q~r+A?KG{1$(Zii^va*i&v7tlq~IcOZZtB#5ka(L^z~2QL6KFs7)U8(%$oF=yrQfjms`CPTQDKg+s{8 zgoN~!#)~Bq4`j(fiLp<+42cOsAbx2gvv3!~qxRpUfT@gyN+W8mSb@vWH^ zk}Eaj{Vf1G?P}J{xgt@XDD_`$hdhJ(pMh6x1_rDK9gz*sC2qj{*DmN}OrixMOj{Nl zEkrC>=Dl)M$m~XS4#)12RjP@6v+k@se7v4vx`uzs)H9<=-x|WcvIG=%$m*;0U*6@8 z-LmAWNSj{}g2`QXwEbGKY6rfAU0`BO>y2uAL+j+R)J4$c9}0_Ua!P}>jsOTLPe2RA zDbHW5>pIyHCP?=d%mAF|o+XP4k2&#lExcg7R;||$&kNzjadY3I5|X{s9sL)jJ5(!> z^pOo zX)#r73B?0j&6LlAj8XRlVg<-Jamx`jepwk}yxY z0H6qhiL1sT=lu8dmRO9_`991zlx+(;%g!kB@~Q*ftQ-cXX;n%ZoR9WomE6;dyH3i- zJJ}5E@Zt95$abU8ReVy=)I8rg-sTshuS`6w>B#nE+P=d4ioIab)kkMG_hpJrGb|uA zizGA%3AVJpHm(o6TYhg;f#gC>YR#gh{<$qUKk5;{XM8}2jld_bV0kOGgZ>ERwFsA# zhB5P)#_qh&Z~?H_7%%R|dx@Lv*x!xvVrCncll)Cqd!Ip#*ue&Hqd?J_XqG^&~e5)OdTy$}^xP|1dsU-i?;}rI7KH+<7*2 z`YzW@r5z;BMEAPMGsphAUAa4Xr#va zq1}2kGDHp4ok3hd}a7v%ub*dLmR;pyXsa|95+;m7hgT$Je|D}&cVcolK ziGZH3(9nkd4-nLxq-z>!2AALFERQmbUl0GSK0Y(RcvkP6+~OY+G%63D{(8lkNia24 z(o$!Z_m^x^lpnrrcAm&oT>jD_IIczt^X){t?0zL#av!|@KR~o~a4J3R2*Dl+6WT6M z&3Z>vW&VOW>+{YzcSv#vkUN@Amh95jLEnaU8+ZJqRE2l~Wr_3JY$~NLY*kLbtkPYJ zCrML!TIlm3R>=$h%U>h+$KM3yEIjfr|5Pk^-DA})R3jr$^DQT7D7}K#G|wSN51gap zjM~ri{7?60YE%-dskeiJHdj#dcNF6T+&zs6zJU0oUsgPy`;A}7=^7E=82gxabP6B1 zbDHCg@SPpUdmLEfClDVssi_-9Tf&60sBPs0uDN8F6hpa*=s~@?U*Bqojp`4vyaP z;jG+`+uYkaFC}n2uj{nYe`eMMJ&c6Z8ZC~q3B z;KSburxltF-{li@9&NlX&XsnO>?V`8uS$_;E+obvI3>*_(;R*xkT%#a&zmuwV0uG@*a+ z^l3o7UyLO&YG_UT?g-1=uP1p|33OFVN(~X`=ycvkzYe?`s(NP2+V4<@of*afR#y8l zRC_L=UrXkrL2%c}Mfsgi6l<+In_~UOrvLI~q&zNv+9!TWv#|{m@enB=hjKBg^H^j( z`#dfrWQ%XeB-d{nV^?mJlHz0;G}9*dO?_&t3O(Ua&VtjJhXZviQLIy{`|WHX2h#*N z!(bsT+eLr&rR?=-&}io5t!YH2=-Jz?MP_lB^;JYJfu zu^Pc8Gb|gjwkmAd2%R%+0(t{7DqohCuAUsm)?4=#_{KkzXSXy*#Wp$U9j?;zpTosJ zy6#qIjHnqiu_VF)oO-Q+BE`hl1^Wd365OJc#ha9i&s`eCR+={jEXC;l(%;&%ObWKd zyhuMo%_+W2!wpYKN;jV(!>L@}3m@hZj9khzXyWAh(L*C9#$$wU3eH)c%)Gz&@fFN` z!Ldl`|$`3PPl!Go$T!)q~%ww|fB1?6vlJF=b=C9isC7^Y_wc z+o*y?eqn48iMc*UW={QdiAcZVpE3JJ%Rm7L0r2|CKI(qa!dBwf^kLb6q$aXysCP+y zb~$sY!h2Gysru{Z^>L%cpbLDMxr-&g(MshGV9cI*hS2clDBt5@)g8yJ7t(v!5c7H3 zf3{@f{Jo%6+Li#!c0zuz{==~XrV8}EIyCQK9W6G|r= zs(<0I;lj=%P#P;Cv{NX82bQ1ew#!Y)$M<-1f3yi${^L{Ki$K^^!|+b?2?)xp<=QWy*O z2jr_nIXqp|ROJNz!)hnoIj_~l~4vKWg(#=M9gBr6gq(( z3j!GSy{=^?D9w*#&5VV{j6+k3{D9>Q|GxI9%VYSav=`_=(uE1!?FbQZU0pcKR;o?L)n(O)0`~XJT~E%|Fm%Nm4?nnpHP5x(30c2$$koH;!6?2W+M7~lG&BM4V)CQ z2QBtqEv(Sw+@~VJdyOH}^K=Mk{~i3+Hvi>9rX#Byn147Q9dStd;x(sHd?cS+*JQf(-nR*E`zKVWFCygW{wfIB@ z2&FEEe_s7c=T9MGifpk7=SWE?@^W_B2~v`EUK~AvmI$i-yDr-;R&UXv;18~ekv6ze z5*3`boWX%R+T)b)Pa@ISixvYS0F&9@tqdVBZ1z?S%S7IFhjP7(@F75YuESSmwgxUe z@XY9U#g?AI1}L$@YeMvzKuEwL0~2Vr8h}wKH_g3I_KytJ;xebxiO3fadX97oIf4hn zB)yxZGot5wJPjyJwYKH&m`z9n?ogJL?!L9`Xh+i@^-q%#DM{q$>KQJzD;4gEako;5 z3(H|F?S^3A={<|gx~{}_W~XvN)wAfYlBJ`OL%JEf2+EwN$oI+FFl>TQFT>Kz>w%sk z5?{X7eJ?WKF$2zW%Um=yekodyZWf~HRO#sD8`#GDOt~|bip;WWG0i!$rnBxR!H^6) zzcm)YDTlYxrH$CKI+yJruJ7H^+7WQZwao>`-D=-B4AS14E5f<^%dO)?dSRnb_t z5=_pLws#=Fn0hn6Gg?@(&?In3I90v8uK$`anCCO^Yk}?_{d;p8WBTkbhs2&-G_lCu z28?1s&X2f7t8Kvfrn#QKp5I$RYi2`_6!FnQHBGa#L~7GUgU8EHnRkvZ+vw*; zhPeOFHEF%PQfLwbI07NCL=iA?NuOM{`T1$>I;MtcduIwgMV;|4e)$pd_4U=W`*o(J z@+O|{pyHU|SDzlcw(tKZC}@>dTh1~RD}CzM+rHF)Z#RqgixR^#-Vv-s{I)%m){s+u z70qZ_{wvys{5zZW7l%LJNslvD6M#JA<6>&vVXK)?qx0}AT ztm2vC;gxv$#4f1w^gBGZq(p^nGYl%=?&Wk_CPH+@@?BE>%}Ps%CXtNxagUwsM6doW z)05#AA`nP#5|~5{$yqPjx(Qw&$gHT=j8$QQu!B|?RQZ7+IjHH=lmhX#Ov-Jy*|iSI z#lH`wC|p++walC5XlMx{DRhfpgU$J)dT)_Pd+%*qcW4n0n+!R3E`pPh0uVc80r&l*n-Au}=Sg{}OT>RyUZ~q}Jk_W2JJS6HD zRpfix^g#?c%%DA{HL5x0Tatm!xiz1&D=Hs2^ZWM@lUKML){G0w3Zez-eN#QreAzN>Yo#N|?;W@jw#wNi+r-hU!V@dTf_#t;dSWx9N)s1`?*8TE(9eavHY3|X zq%eS9e~;#R+{42d>u)XZ8~Ezck5}yl;zvW;si8=emu+&>wGk|6RJXok13OU+EG$YZM| z8p7+Z@)M4QB}cB4h$|ztHJ>2@WCt3;sQy^MAYncNe0S8a%7DLNtdZ6wQlD$ItOIb8 z!dP?hsa{o!Wdi(sT4j4zs%2i8$dUI7*;^bJOPgbcdY{_1FUxIVMwuX=gYv%W!6Kwq zzFch1wZw-`8B9?*NJB9mz+kF;@phdMpTbrh*^9%G>VaYaqgG@$hg$=?SM0cmi@>MlxZ5Gjm|8;< z{{A=)8?aDsT*T4%<8BzKic!%rkgRqr%EMNg$$ok=?8xx+rlyEH40~-DsiLx0zv1Su z$?aThfydNi>Sf+Y?#OV4+&|^cnBo`RX7QbMN#FN_*IfE?8ykk6HzZG(eK%ZPvfOA9 zr^CR@6A>2W(=;BT<_63RN-}>@qBu_8l3G2<{O&GVDu!wqz>EEs_%IPXV0uQ&*xth{J|NCw=6`^e zcd>=0vCEJmnuG~KnemnD1i1q7FtiIqi`YaHy>6RfXukgE_b8+hYXG26Vr~}!SfNGD zT{hDa>x!OtMpt|-TY5>;bGe%+sHW90^OcM#%F&9WFgpKf6Ut!HzCE1oOP*5op}iT# zxEJLt$TM(DRJ)4gD^seO-#k|0e@WhCs&`FvS-*pl#wPGS^Z~3~Um9N6YM7cez9YoN zED;O3G8+8&8{C<{X1ojALhX9yCG@I{vA5jSzDw0v3bG7!h!lGps457>SG2WV_|G9E zUj=3uNx_Rd_@(~&di3wf(wi3ahNcasN?6XBC;b+P@uXp5QsdhOZEwd+g9=%9pmlx# zx9&ef5;P6ECiajdm1o6-b&hc={cNy*zJZ3rn<*!d{`2U`?{qdJZ3+LKhOj2Gm4Pso za2ycyCq-%x!!La`#ix?s(_i-aoep7LDv+xcovE+CP)M>gnsUf4h*{hZ(T*6kGi`Fz zBe_pJ%Z<@sP^@U@4P?cVEHqjmBGOJmbTY>+FT*ziVezliRF`j39}J->5~I}0?1S4; zo3q6qZA)t*i3J%`YAV4YcW4&awZ{|`Fm>nSgoPQzc}8^Z4e|qFLeCfncqC6em$95; z$2ess>Jl$HMgUaIElB5C7|U!Dmh(QeK5Edt_|$+QVLvvss}h}P^OTrC+}GpI&=v0+ zu0Ab!50bEU_hH06`aH^U=G4!CZRuhY@JW^VB{;A(cyPew*Y=+7e*lg(JuQB32NEnn zh#PlTV>$g)&kaN~{9JQ3#x-LUru_gp{};!MZ7j^~O>yjhZt(bvRMS3pk{aBE>;}U! z#idT^0n<~KD7X+Dh_>0px4{k;I@L%!$m25{{3vETTGOsX%tS4wb{YVa0mpdv`9bfB zx7wENL?yWnUJvCYAY**Ph@}8(u;$trPJV=!R?!ZwK2r~LcnI@T+j_YfAyST2x_}il;u{ehe$Oc=gr44F8|W z`2Dx+6@~JP4Q!fr;8bn>ZyF~V2t3Pjs+P9KGr_YbEd2&&4<#&Xu`}dwE|iFyT^M{r ztk5#T(i2)l^i(0W@7_+*{$?yV{9bLol^^@Q;TMN+*)4Myx;7qNOO_f_NCPRPBu~J7 zkX~bh#n87cLu9F5}y{9m7p!6c@wL&oV z_#~*4haQ8`#n^>^5FDyiLyacmYD?$`3F@Gf*AK~?#^-F!PQ~7yGejVj9m4Tky+4Q) zo1wq(+`B#>q@|L>G%(Wq`j9KdJ$;>O2pBC09!LLw) z?Qjedj!@zALFs8%uLt{*5#XQ%BHq*h6EP9D8C_vC?rJ`C3fhgMeFMpeYs2@_vGpw% z%UtgKtETO;t%WmXaAjJ@+-&YM94B6U@)-HKmGk|3j;RnCost&>r|fGM`84P+1b!>z zoP92yKu7x_Mlj`ckUmmt$UvJ!Zekx%SSuUl71=pDyx3FgfL*I%cBHqa^~gTX&4r+Ow9$Lg;9)tPe*?X8R_>5p0gDMj=!4J`N6p1;(MmfpN5rElk%tKcQHCV zU3}n9s&}U~O$b#!F z^h#IV4IjAY)#Gi@BaJ+75WK9lV@q@o@33IgC&fti-oh;mMDTg*pA0@g3eomTJsYzy zD#mCcj_q;zod{7x&mA+aFg0AZ7F zOQ1euN0Q2iJtGcUoRZQa3-hU*IWgiWnplzbQI1!}!cKWJ2=sAY+S{DSf_#77I$Vfr z?jGrpi#JS|8RiwN^Jgt6&R>IXkFo=ss`5x@Rr~=oaY0(IC4Q5F86$F4Qmh#&QjVhz z0vRX;3=n5m^4{u-q_&uq3emX!R&{sKwNd6Jq#Dqqxs6{QTWKyKQ66I(cNeTDD3WdQ zGcZ*kAme?2v~6EQ%p}0L+LlH}?VI)&6#*qvX{=M-(Xlx|ZGl@`JiMFF@oD20;QhY` zc#h*&U55uLVTF5Bc?r}l7B;1QF1u%c(V^bY+f7ZwDRP1R+OWkT(%j)sV3vlEL3JxaL=WeN0r%6#rks^r|9Xtp}g?bt^?8WK!m)LYOL1U z@G}Xn>Y2-zZ~8WwP!09Z@*Lvj?E(F)hdi8NvVpkjqZm1EHUf@~z3L-ze1qM+qT%Nc z3kQ2P4);FQOr{%TkX2nsJYV)snw<5qu=ueREE@*z8Z2G8Uh$_zblb;s%bE6_l!qti z-&bH+H$S%u$&~@uhV1H&?^*aPV@2aT5hhs)8L(}s`Q~NON_>$;m?Ar&A}j zLa|PT7%Ul^vZe zAX=qEQOye!e?6SD&80it=w~-l>=8Q0-lJ@Rhy8~;>!_&3VX`eTs1S>3h_zChXY${_ zu^J62Wl);TE%508DG0RZ3wFQQPoA@P>hIFu9F@ZXKn`uX^p|5iqftn{S-v~{-S=>| zTLs|Vrp$YUfiG-{ac?bz6ac0*w1yFa>Cfs{h09{z+Th`ea$uiZJ35CRpifjXXJR9! z%h(-*D1=8Yth24|rx4VcQ4MM5OmXLNAG?+VDwaGFswn*EaJ~Pwt)sgM@xi1GSJ;Kp zS4kDM>r^e#R!WQv=+Q|Ai*=)QPvusgK?j#<|I9d=4*j&my~1J2V;?3{#eY}NyfQB# zeg`PD@~9__K1vPZeNSnveJjUjEAwl`?h=#BWO11wNX@)*)bh_7p_pOAh1(8p<3w#D zcMcZeB5Z13P#)W*;xfa-L*;Fl(xxn}g$$Q1OPNKa?C>@1RA)Q@7e z182@Gab>jYW`%mAi83w z&f_U($z5%SfZwB>Gz+%Ksg}+?WoR2YU(RQCwe+5W)3^nDd-GUvPJz(OLDMdi2qkzh2_r{{ZeOKzY$gI{jA%-$Lg8(-;!j ze~W=NVI3VTJ)T(EpN@>?&5IhuMu}ZhNOMH`xQw#(p;DK#`!`R&6|%|IE0jX3m}%Lo zQ8`dHn)wmdK9+zd&qL$;o@3D|g>qmw2pZU&~ehOpc8?-8@O>!PA~s2tqZr z{lg(rD`lk<^By=!5X^n`iM@R`1Q=3=CRP-(Lw{Ur!43QT49ZLv|IF)9Wp`Zc=kyfA z@MrFX()PykN}}bJOcMvN&$TfaQ+%j8(COnZOUL!xcl0Yw{@yGf-m%aWmq#~I9&GEz ztae|iE$Fa;yf3abob)OEofW^q>K>b)U(VGAN-5w?&VwBA_>j33)ZGI%w=4K>(Hen?*JU`*SQ#{VVXjiB z9iAzL>Ujo5!z1H{kCcL?EPQEG$#=Kx@R_CB=Zj=cvf)S+s|))te#|S?Y3p9^l28;h z9L6xVc)^>m0Xx;u2I%!+rU54-6Qk1Xp& zNANa(_gO6`Z&v+Qj*Yku*aV8BQrkOlKO&ASS+-WE zR?*Rt!ff>}eY3Xc4zR=e;L0LZersGSgBP=L^2uYH3uD$TDaS2v6mKr$-|v|ieERT9E3!UNP@!@?6$eygwYyXxX)g8 zpYA6SaYNLlg)NC`Q-3m#Irs60;SmJGc?m$JfuWS9ZJ?ZOaHth(*N9HdG2jigAUEX( z9qbQia<`2i4PvlFGRd^42iX0I&iy%TDqN&Mq}kD$4r)IXNRvs^b&&y&?)8-Hp!dO0 z{Z)el#{of!4QcxN=Q1iqlE}_|L4*edP_?`WO;(@)S#QY2RiN_JIy3*g@vXU!@tl0C zZ-P`^2aXO=4LDgG&moPp!vs1>x%1*+*?ExY}h5?n)7r-zE%^KaSv6s%> z?DpJy!rMtxh?$vBkq`2FN2t&b)EhhkZ~^{9mbfbTrMU$(g6i9lUMGnUtM5~X!|4h)sFEDP|s)qr-B0Q1YtdvEl#l_?z((N-C7bABdatCN4zj=cGkK>f_8N5$?u= zDSxw;Q;TX*t)(!sj8H7lA^g}sP@7)hokNFur{I)nQ;f{R&~3Qx&moJv+*ZqCi4j;zm62>-rzSF2!lee=*6QWGMcCDx!1y z8A2y#GVN~co7M#6VF=i#SRJMe)AoqnkbkR|To6x%R!x>`h&MNRWF#&ei7Jdvw@YWx z6(dg=sWr>U2tJa5MW}?ea28HwPckS-b=2m@)Aw5Mq0GV!f#Kkw*X>IzW=FhQimvqP zH8SjA8kAcR;Ay*VaQh&l`Py(*=MxB&e<4nh$J5|;9fi(2bbISss$=Q`tn?e_!e(m0 zoOLh#wcRIg1KMA2tag6N8LKU+B&JoU=-c@~En*lLU%eiaR?tbFN;AST4KaO3=Xz+G z!k8^$ImXGZePs&DD)}#!kQpj5fe%<$qMp{VVH}-? zvb^QmpYDQ(WKhq7#<;)PEbMvLbdkzhto!1SIS#vf^rzpIlf5JEIu#6cMz#iTgTxIZ zD3*0hrl~H)3>DOnghIpk*MDyFF_bi<|ME+HPCWFw4knBZofwx0@;Zc$rdT5xw{ zzOOW1$a)8vD%c%w(2p9C;jenjj!}e+=e>2kw$Pg_$7lr;P_g(L$l*;As(*)~X`lr! zZ|k6FgW-v#h>pHI(Y;0C&gEP3G9~XF|}7!3*(%G{5$Dd{swX=R5PkAW2$ZZbx{8CqH*fkZp}Xp zW6|PeN88vkuE6m2SFHh;Kbgc5?rJ&Omr?B)L+wCTUKPoa$l;azoB?Y;Ml%1v9p=nS zU-ml79FXml(8nQR$7Y1!!DZJ-0|yQ>X=H=HQEU{ivOKX7)HTH4C#R;04@Vo}rrGfF z9p_0)DLVIb+Zc)qQPH31jvFk0uLQMRhWPJ>?v`NQJ==jIq3!`eofH~FX~)@mZ5RFpsIeS<)*gZwvb2r2N2tRV+L8eg{>Alx$Br0C%H-v*jSGu3s(q{+mMYnIxZZ zu=GIAy?i&v-Vl}7Arp&Pji8V038nG`+h9yo0SN+R9lRPdOLVZzbN zR1rGB<=a(Zn}%i`yY9glaDD~6CI?43h$nuNU*P076gwbNaiQ>lxCmL>J8Bk!(q@n@ zgD?v{3W~02c3FT^qD#i9DP1o;dkTU+63szUY?`PBJx+-|;(a6O6!3Ou`HOYNMFvFD zF-D!=ffQ3yC}}z|FsJwTv;P||0q&>8paMsvQR=`89U76RKh^XKBa#hmrxL2th3%x) zX!`dzc+GoicBiAKt=BS@NxGB!uLEi8aa>%D8p6QXdXUi}<68KT8J5+u)b1;SZSVEO zV5Ix_z>5J|fnsQt%LEY!bQI^mIKwUw z7k!={?tJw2-Q1QDXIy~xS7TqcE+Jv?WV}eJxQy58L)b5Ye*WEN>n@dLts(^d$_4lS zJbN9dWVM|{WYz*9msV(qR!=1t}_;yE;QxYhy zM`r`?-onidm;tz{^tk|uUJjP$%R}jwE6&UqZ+s922E5%JkV3ZHk+JwQytiGoa6ZP3 zW-So=t}>`HvbuVI#NW0^b+}o{V;V(ELl;fynq89Ra$-%or-;cVpl~8GQs@;FILf`4 zG3O?md_0Z>Qc9A2P@H)^-_>6pcY3RYKK_}KXThGAOZ)?mlm)_McwK>|`33b$`~H=x z-)~6Cs#^Z$Mfy|nFK?8FNL2VoUNtvj=^wKBwh%HsHP{#D6(=L3%D8`+G3Kcj8ZaQr zu32Cx*E@ApRqZ6k{PZ>DFi^A3l^V863sMB+0o@ik_d*C{xM9(oj#iGYb8r#AKrXJz z(jUIdDulfmRnQQISJ{qbUR1ySY@j$}RL{k2uArr01Ln(f?g9X|WnG}DbHJFqPh|&c z%^>=Lij~Fq7v??)F83r8(?Gk4=yP;2814`?HYgL40_o(NRi z=D+v$_OReD38L1d=E5n_J_rEnh(CfZ$@3^tP_I(E^soP)5lDNreG$$`S}9bq8j^Qg zsDTgONK53nxxu4p(SkJ>)&i%8Ta@II7N0f-GvT#|=! zwior+_b7Ev9Mhvz+23%tn?&IeKDBK6kL+8&qhC*=p57~$y|o<=OX8}qW!d+h^7^4ts=f$ z#Y_?=06(ey@0iRwB>`ELD>WKZPxCUw0t0AHnnoK;RIZOz8Y##J%?9Ajq9XAf4l@~r zU@TGMVV0s7N68tM#>5c@@qKXAp-+fv#+tg;r%RgdYMX#pPpC;qG3`0=Mn0D1jA|$~& z>9z`xJXr{}YUf`t%+LS;w%??C<1v_YRyT))s>sVL59N?XWjfqiX9;d3Ej6kQK?oUv zY}vH~Ur%YaGZ}(P4}#)pspNpmPMb>Qu_P&JKKcpV;_W&G+MP_sTxB4VLEbw+++XR8 z#$Xl8LU?*BSW-$w*Ygwvath`$b%~2rYAW_{*^9-0I7KXVN)(82>lLiR6u@*KO z_16W%Q&y?VrDx@HCB%+|M&4U>?~KM^F|R_ndW%yj0Gf>6Z{?pPi;W-=pw@6y>L>&? zHP1x_LjVC8v=OGb%w_@$AzLq%7^YP<7blkFk^ME-5(1?@Blu-mPzf%#CsU!)KkC@b zW*Gr(jH&|FFUt*?QnZ?k4pLeLx3TS}5*U;v$Y*s5EIT(jBU@e!{{YrA8HPZJNmVLw4ydpEsxvSohXjC3eQiFtT5%$u37!imLsL>DW+O?l zkUz#V8H+p-Eq#Xqlv=QcKf{cUGn=evFW39)fdGoMY1JjUgcLU1=+?hU)-jmOG8DwD vrmE9$R;wbinrA3T1`V}0m?N$6B(j{eWF +*/ + +#define CLAY_IMPLEMENTATION +#include "../../clay.h" +#include "../../renderers/termbox2/clay_renderer_termbox2.c" + +#define TB_IMPL +#include "termbox2.h" + +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" + +#define STB_IMAGE_RESIZE_IMPLEMENTATION +#include "stb_image_resize2.h" + + +// ------------------------------------------------------------------------------------------------- +// -- Data structures + +struct img_group { + clay_tb_image thumbnail; + clay_tb_image image; + clay_tb_image image_1; + clay_tb_image image_2; + int width; + int height; +}; +typedef struct img_group img_group; + + +// ------------------------------------------------------------------------------------------------- +// -- Internal state + +// If the program should exit the main render/interaction loop +bool end_loop = false; + +// If the debug tools should be displayed +bool debugMode = false; + + +// ------------------------------------------------------------------------------------------------- +// -- Internal utility functions + +img_group img_group_load(const char *filename) +{ + img_group rv; + rv.thumbnail = Clay_Termbox_Image_Load_File(filename); + rv.image = Clay_Termbox_Image_Load_File(filename); + rv.image_1 = Clay_Termbox_Image_Load_File(filename); + rv.image_2 = Clay_Termbox_Image_Load_File(filename); + if (NULL == rv.thumbnail.pixel_data + || NULL == rv.image.pixel_data + || NULL == rv.image_1.pixel_data + || NULL == rv.image_2.pixel_data) { + exit(1); + } + rv.width = rv.image.pixel_width; + rv.height = rv.image.pixel_height; + return rv; +} +void img_group_free(img_group *img) +{ + Clay_Termbox_Image_Free(&img->thumbnail); + Clay_Termbox_Image_Free(&img->image); + Clay_Termbox_Image_Free(&img->image_1); + Clay_Termbox_Image_Free(&img->image_2); +} + + +// ------------------------------------------------------------------------------------------------- +// -- Clay components + +void component_text_pair(const char *key, const char *value) +{ + size_t keylen = strlen(key); + size_t vallen = strlen(value); + Clay_String keytext = (Clay_String) { + .length = keylen, + .chars = key, + }; + Clay_String valtext = (Clay_String) { + .length = vallen, + .chars = value, + }; + Clay_TextElementConfig *textconfig = + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff } }); + CLAY({ + .layout = { + .sizing = { + .width = { + .size.minMax = { + .min = strlen("Border chars CLAY_TB_IMAGE_MODE_UNICODE_FAST") * Clay_Termbox_Cell_Width(), + } + }, + } + }, + }) { + CLAY_TEXT(keytext, textconfig); + CLAY({ .layout = { .sizing = CLAY_SIZING_GROW(1) } }) { } + CLAY_TEXT(valtext, textconfig); + } + +} + +void component_termbox_settings(void) +{ + CLAY({ + .layout = { + .sizing = CLAY_SIZING_FIT(), + .padding = { + 6 * Clay_Termbox_Cell_Width(), + 6 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Height(), + 2 * Clay_Termbox_Cell_Height(), + } + }, + .border = { + .width = CLAY_BORDER_ALL(1), + .color = { 0x00, 0x00, 0x00, 0xff } + }, + .backgroundColor = { 0x7f, 0x00, 0x00, 0x7f } + }) { + const char *color_mode = NULL; + switch (clay_tb_color_mode) { + case TB_OUTPUT_NORMAL: { + color_mode = "TB_OUTPUT_NORMAL"; + break; + } + case TB_OUTPUT_256: { + color_mode = "TB_OUTPUT_256"; + break; + } + case TB_OUTPUT_216: { + color_mode = "TB_OUTPUT_216"; + break; + } + case TB_OUTPUT_GRAYSCALE: { + color_mode = "TB_OUTPUT_GRAYSCALE"; + break; + } + case TB_OUTPUT_TRUECOLOR: { + color_mode = "TB_OUTPUT_TRUECOLOR"; + break; + } + case CLAY_TB_OUTPUT_NOCOLOR: { + color_mode = "CLAY_TB_OUTPUT_NOCOLOR"; + break; + } + default: { + color_mode = "INVALID"; + break; + } + } + const char *border_mode = NULL; + switch (clay_tb_border_mode) { + case CLAY_TB_BORDER_MODE_ROUND: { + border_mode = "CLAY_TB_BORDER_MODE_ROUND"; + break; + } + case CLAY_TB_BORDER_MODE_MINIMUM: { + border_mode = "CLAY_TB_BORDER_MODE_MINIMUM"; + break; + } + default: { + border_mode = "INVALID"; + break; + } + } + const char *border_chars = NULL; + switch (clay_tb_border_chars) { + case CLAY_TB_BORDER_CHARS_ASCII: { + border_chars = "CLAY_TB_BORDER_CHARS_ASCII"; + break; + } + case CLAY_TB_BORDER_CHARS_UNICODE: { + border_chars = "CLAY_TB_BORDER_CHARS_UNICODE"; + break; + } + case CLAY_TB_BORDER_CHARS_BLANK: { + border_chars = "CLAY_TB_BORDER_CHARS_BLANK"; + break; + } + case CLAY_TB_BORDER_CHARS_NONE: { + border_chars = "CLAY_TB_BORDER_CHARS_NONE"; + break; + } + default: { + border_chars = "INVALID"; + break; + } + } + const char *image_mode = NULL; + switch (clay_tb_image_mode) { + case CLAY_TB_IMAGE_MODE_PLACEHOLDER: { + image_mode = "CLAY_TB_IMAGE_MODE_PLACEHOLDER"; + break; + } + case CLAY_TB_IMAGE_MODE_BG: { + image_mode = "CLAY_TB_IMAGE_MODE_BG"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FG: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII_FG"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FG_FAST: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII_FG_FAST"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII"; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FAST: { + image_mode = "CLAY_TB_IMAGE_MODE_ASCII_FAST"; + break; + } + case CLAY_TB_IMAGE_MODE_UNICODE: { + image_mode = "CLAY_TB_IMAGE_MODE_UNICODE"; + break; + } + case CLAY_TB_IMAGE_MODE_UNICODE_FAST: { + image_mode = "CLAY_TB_IMAGE_MODE_UNICODE_FAST"; + break; + } + default: { + image_mode = "INVALID"; + break; + } + } + const char *transparency = NULL; + if (clay_tb_transparency) { + transparency = "true"; + } else { + transparency = "false"; + } + + CLAY({ + .layout = { .layoutDirection = CLAY_TOP_TO_BOTTOM }, + }) { + component_text_pair("Color mode", color_mode); + component_text_pair("Border mode", border_mode); + component_text_pair("Border chars", border_chars); + component_text_pair("Image mode", image_mode); + component_text_pair("Transparency", transparency); + } + } +} + +void component_keybinds(void) +{ + CLAY({ + .layout = { + .sizing = CLAY_SIZING_FIT(), + .padding = { + 4 * Clay_Termbox_Cell_Width(), + 4 * Clay_Termbox_Cell_Width(), + 2 * Clay_Termbox_Cell_Height(), + 2 * Clay_Termbox_Cell_Height(), + } + }, + .backgroundColor = { 0x00, 0x7f, 0x7f, 0xff } + }) { + CLAY_TEXT( + CLAY_STRING( + "Termbox2 renderer test\n" + "\n" + "Keybinds:\n" + " up/down arrows - Change selected image\n" + " c/C - Cycle through color modes\n" + " b/B - Cycle through border modes\n" + " h/H - Cycle through border characters\n" + " i/I - Cycle through image modes\n" + " t/T - Toggle transparency\n" + " d/D - Toggle debug mode\n" + " q/Q - Quit\n" + ), + CLAY_TEXT_CONFIG({ .textColor = { 0xff, 0xff, 0xff, 0xff }}) + ); + } +} + +void component_image(img_group *img_pair) +{ + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + .height = CLAY_SIZING_GROW() + }, + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .childAlignment = { + .x = CLAY_ALIGN_X_CENTER, + .y = CLAY_ALIGN_Y_CENTER + }, + .childGap = 1 * Clay_Termbox_Cell_Height() + }, + .backgroundColor = { 0x24, 0x24, 0x24, 0xff } + }) { + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + }, + }, + .image = { + .imageData = &img_pair->image, + }, + .aspectRatio = { (float)img_pair->width / img_pair->height } + }) { } + component_keybinds(); + } +} + +void component_image_small(img_group **img_pairs, int count, int selected_index) +{ + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.25), + }, + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .childGap = 20, + .childAlignment = { + .x = CLAY_ALIGN_X_CENTER, + .y = CLAY_ALIGN_Y_CENTER + }, + }, + }) { + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.7), + }, + }, + .image = { + .imageData = &img_pairs[selected_index]->image_1, + }, + .aspectRatio = { (float)img_pairs[selected_index]->width / img_pairs[selected_index]->height } + }) { } + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + }, + }, + .image = { + .imageData = &img_pairs[selected_index]->image_2, + }, + .aspectRatio = { (float)img_pairs[selected_index]->width / img_pairs[selected_index]->height } + }) { } + component_termbox_settings(); + } +} + +void component_thumbnails(img_group **img_pairs, int count, int selected_index) +{ + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.1), + .height = CLAY_SIZING_GROW() + }, + .layoutDirection = CLAY_TOP_TO_BOTTOM, + .childGap = 20 + }, + .backgroundColor = { 0x42, 0x42, 0x42, 0xff } + }) { + for (int i = 0; i < count; ++i) { + Clay_BorderElementConfig border; + if (i == selected_index) { + border = (Clay_BorderElementConfig) { + .width =CLAY_BORDER_OUTSIDE(10), + .color = { 0x00, 0x30, 0xc0, 0x8f } + }; + } else { + border = (Clay_BorderElementConfig) { + .width = CLAY_BORDER_OUTSIDE(0), + }; + } + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + }, + }, + .border = border, + .image = { + .imageData = &img_pairs[i]->thumbnail, + }, + .aspectRatio = { (float)img_pairs[i]->width / img_pairs[i]->height } + }) { } + } + } +} + +int selected_thumbnail = 0; +const int thumbnail_count = 5; +Clay_RenderCommandArray CreateLayout(struct img_group **imgs) +{ + Clay_BeginLayout(); + CLAY({ + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + .height = CLAY_SIZING_GROW() + }, + .childAlignment = { + .x = CLAY_ALIGN_X_LEFT, + .y = CLAY_ALIGN_Y_CENTER + }, + .childGap = 64 + }, + .backgroundColor = { 0x24, 0x24, 0x24, 0xff } + }) { + component_thumbnails(imgs, thumbnail_count, selected_thumbnail); + component_image_small(imgs, thumbnail_count, selected_thumbnail); + component_image(imgs[selected_thumbnail]); + } + return Clay_EndLayout(); +} + + +// ------------------------------------------------------------------------------------------------- +// -- Interactive functions + +void handle_clay_errors(Clay_ErrorData errorData) +{ + Clay_Termbox_Close(); + fprintf(stderr, "%s", errorData.errorText.chars); + exit(1); +} + +/** + Process events received from termbox2 and handle interaction + */ +void handle_termbox_events(void) +{ + // Wait up to 100ms for an event (key/mouse press, terminal resize) before continuing + // If an event is already available, this doesn't wait. Will not wait due to the previous call + // to termbox_waitfor_event. Increasing the wait time reduces load without reducing + // responsiveness (but will of course prevent other code from running on this thread while it's + // waiting) + struct tb_event evt; + int ms_to_wait = 0; + int err = tb_peek_event(&evt, ms_to_wait); + + switch (err) { + default: + case TB_ERR_NO_EVENT: { + break; + } + case TB_ERR_POLL: { + if (EINTR != tb_last_errno()) { + Clay_Termbox_Close(); + fprintf(stderr, "Failed to read event from TTY\n"); + exit(1); + } + break; + } + case TB_OK: { + switch (evt.type) { + case TB_EVENT_RESIZE: { + Clay_SetLayoutDimensions((Clay_Dimensions) { + Clay_Termbox_Width(), + Clay_Termbox_Height() + }); + break; + } + case TB_EVENT_KEY: { + if (TB_KEY_CTRL_C == evt.key) { + end_loop = true; + break; + } + if (0 != evt.ch) { + switch (evt.ch) { + case 'q': + case 'Q': { + end_loop = true; + break; + } + case 'd': + case 'D': { + debugMode = !debugMode; + Clay_SetDebugModeEnabled(debugMode); + break; + } + case 'c': { + int new_mode = clay_tb_color_mode - 1; + new_mode = (0 <= new_mode) ? new_mode : TB_OUTPUT_TRUECOLOR; + Clay_Termbox_Set_Color_Mode(new_mode); + break; + } + case 'C': { + int new_mode = (clay_tb_color_mode + 1) % (TB_OUTPUT_TRUECOLOR + 1); + Clay_Termbox_Set_Color_Mode(new_mode); + break; + } + case 'b': { + enum border_mode new_mode = clay_tb_border_mode - 1; + new_mode = (CLAY_TB_BORDER_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_BORDER_MODE_MINIMUM; + Clay_Termbox_Set_Border_Mode(new_mode); + break; + } + case 'B': { + enum border_mode new_mode = (clay_tb_border_mode + 1) + % (CLAY_TB_BORDER_MODE_MINIMUM + 1); + new_mode = (CLAY_TB_BORDER_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_BORDER_MODE_ROUND; + Clay_Termbox_Set_Border_Mode(new_mode); + break; + } + case 'h': { + enum border_chars new_chars = clay_tb_border_chars - 1; + new_chars = (CLAY_TB_BORDER_CHARS_DEFAULT < new_chars) + ? new_chars + : CLAY_TB_BORDER_CHARS_NONE; + Clay_Termbox_Set_Border_Chars(new_chars); + break; + } + case 'H': { + enum border_chars new_chars + = (clay_tb_border_chars + 1) % (CLAY_TB_BORDER_CHARS_NONE + 1); + new_chars = (CLAY_TB_BORDER_CHARS_DEFAULT < new_chars) + ? new_chars + : CLAY_TB_BORDER_CHARS_ASCII; + Clay_Termbox_Set_Border_Chars(new_chars); + break; + } + case 'i': { + enum image_mode new_mode = clay_tb_image_mode - 1; + new_mode = (CLAY_TB_IMAGE_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_IMAGE_MODE_UNICODE_FAST; + Clay_Termbox_Set_Image_Mode(new_mode); + break; + } + case 'I': { + enum image_mode new_mode = (clay_tb_image_mode + 1) + % (CLAY_TB_IMAGE_MODE_UNICODE_FAST + 1); + new_mode = (CLAY_TB_IMAGE_MODE_DEFAULT < new_mode) + ? new_mode + : CLAY_TB_IMAGE_MODE_PLACEHOLDER; + Clay_Termbox_Set_Image_Mode(new_mode); + break; + } + case 't': + case 'T': { + Clay_Termbox_Set_Transparency(!clay_tb_transparency); + } + } + } else if (0 != evt.key) { + switch (evt.key) { + case TB_KEY_ARROW_UP: { + selected_thumbnail = (selected_thumbnail > 0) ? selected_thumbnail - 1 : 0; + break; + } + case TB_KEY_ARROW_DOWN: { + selected_thumbnail = (selected_thumbnail < thumbnail_count - 1) ? selected_thumbnail + 1 : thumbnail_count - 1; + break; + } + } + } + break; + } + case TB_EVENT_MOUSE: { + Clay_Vector2 mousePosition = { + (float)evt.x * Clay_Termbox_Cell_Width(), + (float)evt.y * Clay_Termbox_Cell_Height() + }; + + // Mouse release events may not be produced by all terminals, and will + // be sent during hover, so can't be used to detect when the mouse has + // been released + + switch (evt.key) { + case TB_KEY_MOUSE_LEFT: { + Clay_SetPointerState(mousePosition, true); + break; + } + case TB_KEY_MOUSE_RIGHT: { + Clay_SetPointerState(mousePosition, false); + break; + } + case TB_KEY_MOUSE_MIDDLE: { + Clay_SetPointerState(mousePosition, false); + break; + } + case TB_KEY_MOUSE_RELEASE: { + Clay_SetPointerState(mousePosition, false); + break; + } + case TB_KEY_MOUSE_WHEEL_UP: { + Clay_Vector2 scrollDelta = { 0, 1 * Clay_Termbox_Cell_Height() }; + Clay_UpdateScrollContainers(false, scrollDelta, 1); + break; + } + case TB_KEY_MOUSE_WHEEL_DOWN: { + Clay_Vector2 scrollDelta = { 0, -1 * Clay_Termbox_Cell_Height() }; + Clay_UpdateScrollContainers(false, scrollDelta, 1); + break; + } + default: { + break; + } + } + break; + } + default: { + break; + } + } + break; + } + } +} + +int main(void) +{ + img_group *imgs[thumbnail_count]; + img_group img_shark = img_group_load("resources/512px-Shark_antwerp_zoo.jpeg"); + img_group img_castle = img_group_load("resources/512px-Balmoral_Castle_30_July_2011.jpeg"); + img_group img_dog = img_group_load("resources/512px-German_Shepherd_(aka_Alsatian_and_Alsatian_Wolf_Dog),_Deutscher_Schäferhund_(Folder_(IV)_22.jpeg"); + img_group img_rosa = img_group_load("resources/512px-Rosa_Cubana_2018-09-21_1610.jpeg"); + img_group img_vorderer = img_group_load("resources/512px-Vorderer_Graben_10_Bamberg_20190830_001.jpeg"); + imgs[0] = &img_shark; + imgs[1] = &img_castle; + imgs[2] = &img_dog; + imgs[3] = &img_rosa; + imgs[4] = &img_vorderer; + + int num_elements = 3 * 8192; + Clay_SetMaxElementCount(num_elements); + + uint64_t size = Clay_MinMemorySize(); + void *memory = malloc(size); + if (NULL == memory) { exit(1); } + + Clay_Arena clay_arena = Clay_CreateArenaWithCapacityAndMemory(size, memory); + + Clay_Termbox_Initialize( + TB_OUTPUT_256, CLAY_TB_BORDER_MODE_DEFAULT, CLAY_TB_BORDER_CHARS_DEFAULT, CLAY_TB_IMAGE_MODE_DEFAULT, false); + + Clay_Initialize(clay_arena, (Clay_Dimensions) { Clay_Termbox_Width(), Clay_Termbox_Height() }, + (Clay_ErrorHandler) { handle_clay_errors, NULL }); + + Clay_SetMeasureTextFunction(Clay_Termbox_MeasureText, NULL); + + // Initial render before waiting for events + Clay_RenderCommandArray commands = CreateLayout(imgs); + Clay_Termbox_Render(commands); + tb_present(); + + while (!end_loop) { + // Block until event is available. Optional, but reduces load since this demo is purely + // synchronous to user input. + Clay_Termbox_Waitfor_Event(); + + handle_termbox_events(); + + commands = CreateLayout(imgs); + + Clay_Termbox_Render(commands); + tb_present(); + } + + Clay_Termbox_Close(); + img_group_free(&img_shark); + img_group_free(&img_castle); + img_group_free(&img_dog); + img_group_free(&img_rosa); + img_group_free(&img_vorderer); + free(memory); + return 0; +} diff --git a/examples/termbox2-image-demo/readme.md b/examples/termbox2-image-demo/readme.md new file mode 100644 index 0000000..6241a40 --- /dev/null +++ b/examples/termbox2-image-demo/readme.md @@ -0,0 +1,88 @@ +# Termbox2 renderer demo + +Terminal-based renderer using [termbox2](https://github.com/termbox/termbox2) + +This demo shows a color palette and a few different components. It allows +changing configuration settings for colors, border size rounding mode, +characters used for borders, and transparency. + +``` +Keybinds: +c/C - Cycle through color modes +b/B - Cycle through border modes +h/H - Cycle through border characters +i/I - Cycle through image modes +t/T - Toggle transparency +d/D - Toggle debug mode +q/Q - Quit +``` + +Configuration can be also be overriden by environment variables: +- `CLAY_TB_COLOR_MODE` + - `NORMAL` + - `256` + - `216` + - `GRAYSCALE` + - `TRUECOLOR` + - `NOCOLOR` +- `CLAY_TB_BORDER_CHARS` + - `DEFAULT` + - `ASCII` + - `UNICODE` + - `NONE` +- `CLAY_TB_IMAGE_MODE` + - `DEFAULT` + - `PLACEHOLDER` + - `BG` + - `ASCII_FG` + - `ASCII` + - `UNICODE` + - `ASCII_FG_FAST` + - `ASCII_FAST` + - `UNICODE_FAST` +- `CLAY_TB_TRANSPARENCY` + - `1` + - `0` +- `CLAY_TB_CELL_PIXELS` + - `widthxheight` + +## Building + +Build the binary with cmake + +```sh +mkdir build +cd build +cmake .. +make +``` + +Then run the executable: + +```sh +./clay_examples_termbox2_demo +``` + +## Attributions + +Resources used: +- `512px-Shark_antwerp_zoo.jpeg` + - Retrieved from + - License: [Creative Commons Attribution 3.0 Unported](https://creativecommons.org/licenses/by/3.0/) + - No changes made +- `512px-Balmoral_Castle_30_July_2011.jpg` + - Retrieved from + - License: [Creative Commons Attribution-ShareAlike 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/) + - No changes made +- `512px-German_Shepherd_(aka_Alsatian_and_Alsatian_Wolf_Dog),_Deutscher_Schäferhund_(Folder_(IV)_22.jpeg` + - Retrieved from + - License: [Creative Commons Attribution-ShareAlike 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/) + - No changes made +- `512px-Rosa_Cubana_2018-09-21_1610.jpeg` + - Retrieved from + - License: [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/) + - No changes made +- `512px-Vorderer_Graben_10_Bamberg_20190830_001.jpeg` + - Retrieved from + - License: [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/) + - No changes made diff --git a/examples/termbox2-image-demo/resources/512px-Balmoral_Castle_30_July_2011.jpeg b/examples/termbox2-image-demo/resources/512px-Balmoral_Castle_30_July_2011.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..051a604b1b696b5222c3a512e1fb85c4b3ee79b8 GIT binary patch literal 41919 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 literal 0 HcmV?d00001 diff --git a/examples/termbox2-image-demo/resources/512px-German_Shepherd_(aka_Alsatian_and_Alsatian_Wolf_Dog),_Deutscher_Schäferhund_(Folder_(IV)_22.jpeg b/examples/termbox2-image-demo/resources/512px-German_Shepherd_(aka_Alsatian_and_Alsatian_Wolf_Dog),_Deutscher_Schäferhund_(Folder_(IV)_22.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2c79f5eb68640d86213eacb450e32ef77c1dfe2e GIT binary patch literal 40341 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 literal 0 HcmV?d00001 diff --git a/examples/termbox2-image-demo/resources/512px-Rosa_Cubana_2018-09-21_1610.jpeg b/examples/termbox2-image-demo/resources/512px-Rosa_Cubana_2018-09-21_1610.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..82c79fe6dbea77ade5c78139623406084a8ee38b GIT binary patch literal 50809 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%0Aqumxa5$Y0FQ{Evi;Bi4 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 Ro({oIE0Q^e7LYlg|Jfd343q!> literal 0 HcmV?d00001 diff --git a/examples/termbox2-image-demo/resources/512px-Shark_antwerp_zoo.jpeg b/examples/termbox2-image-demo/resources/512px-Shark_antwerp_zoo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a487d8e8d2e6e2dd86fcec75c6a2513386f5da5f GIT binary patch literal 67516 zcmb@tcT^O?^DjCq%aU`>IW3tbgTRs`EP2UD&N(U|Ip-XfoMFkJNKhmP1q3AvNCpK& zK|lc!AAZ00o!|ZMy?f5>vpe(Y>YA#WneLhD>YBeRe|JEN8p_JndIq{`8VFSY0|Nj+ z!f+KORS*dPczOl+89Y>CF*P%1!JY*m04DICVr%d31J~0-{Hu6*dpZ7>`oC{~E&=zF z0AOC=pRE7A<^Ko9v-j}}xaYgQ|BE^}`r88lhVVUhe-hwxPsb>^#}sz%|H1A5upiPu z`JO&{kBOZBix>W3yZ_?7f7tK-B<^`G{_#8i2ZM0_VY~lghJQG~G3cLOK-t?T*w5A3 zC4falT3VU~?%-|b$YL1mAK>We&!XXF@9pQ~?PnX{=y1>bU;F+Y1(5!i@!u8Wxj#^f z_dnGCi<^J<;lJX}_5X8yF{q~hhxR{;>;wHC|F0Sb2nGQEU-kcyQ9=U%y0riRzWpDX zSQ-FS@B;vG-v7|JL;!$92mty^{;mPa02mYV-w%ul#sY(}Ab8l2`$C9|hl58Ae9U3``7c@IB9eSpK6z1WX3kCubA2_02lP zimL2j|8TG1?C&Z-aL;vb11X>YT(u7fVhQIFd2GsBN3?gYAt*JUjTiIORr;0W902fl zuCU&dZ;EVljq7t5#+-TSu940gfl+HD+sMqqT%PQ>w@{Vhp^F>ZiDx2W4=fF5+zwbB zK)l5p<3Cfv5;_gwQ+gzLIp-*WOq!g{-?n__ez4?srHIHmO3jJR;?+Q@&SpQuaGPc= zK7xgB(H@dt*qdz<7s1(m&nljiV6XtqT8!TB%a$=o-k*pyvO6~90t&f9B-j?E1Fcl5 zirePTIkE*mRzFfXuKmT0rLm{E)vF4sA}-kq1uaFfw)UTNLD&dpkajwRh<)Jc+Q=!O(l} z=5B`Meshh=TCi9s4%t$E11#dadz>Lm2*ba;7(G48MQckyOkj>35Dk{X&6~AWhFpnS zb5$bqtxhLsxEZ}poo5#vEyW%Itf6F9Z-h4q^SEUfcN)o3H{EgoMdZKUWBdzP7&I)J9yaj zOW!{$;8#RGG6q`*{Wz?-u^qh@ea;dR+m?^ST5%-j;yyW!^_6qR9E7!zkKswnyCEC> zO%H9kAZPLkl;t}EM78GGS5Fd5c9Kc(jr{PN{{o|`cR3>I9;IshUd8Vb*pZGp4o>s$$yP z)g@96u#&>`~F!;O1cQ;I+@ZM7-6!evTj8QFH$u=v|%1)Qr7(F|= z(*z*rs5uHnbxs8iWp)M_cgl&cS}44vNug8)x0!ZWTWkGY^OgbQuGdiCjE3r_tB5m6 zVvWfwNmAqj*+HD9krs)Qn!(dw%XD7c!$F%wX!4}fJIOfX+hM69)zH!Je}SYv+QVh) zrqh1H?H7$f<-|J-*2LQZ&{~;WNy1SIKMRQrjyRFxBNb5k4zpa#`_KbC&Llm-fE}_g!J{T>ABkieEpR-Gg%7+;~=YBj_j^ zrtlgv1)Z?A1jmv(Gd8X+!>M;7;`^LaDz(O>ym7B$Mw+<7>C<#Dugp7cFPds$`{=qo z9@e;<$QizEg^>ZuZu}i4?$b*H4Ws7rQ9XjSk;vt*PV7|Yod##m-(IJgK9_N#q_xE) z_rvO1U7cCm9%@+hvU?tF!iV(b?~dt1xILX{3)^9iv63E~7r!M=J^jwKoqSCn)t22P zXi;V{-u1q$6leQtgFN{vA_;fblGB=a7mzl1Em7zE7hvjlkKsn}X;bvPA~i_yN6bUd za|u2ob6A)@g^k(_#ybQUnDxED9Mp%Qm*KE^-0cX#rWfXzi9aBYL~?`Xc1})VvUapZ zC?s5mjvJPOk0P)6<~&eC(b*e~=hKu+X6b^wPW=nO+g5BQpf7Vq7V0zr4aJs))c{z9 zWIsu=i!XtGeyfo&(I`Rp0!jF)P2uEwxY@HNK+yn9o9%46G>XUxRl$gMm&~F7?d23t zdf6b#x#DckJJQcb_Lm4WlV&t9sLW8zhO!kk)U^mgs^e9~$(n*69{06cG`MDtjhqNML zh9)46H`BAZr4Cu07Wg6>X)Fu`HI!(7#}`{SUqftjIH|BHCs~gbCN&?mk&?hk1Or#1 z;!hXz%;O%K)MuSL*AXNz#$9G0un86^pZna_;(eB|bI4YVblMn~F|{WqiLNHWK_^$n z44`NeH*O|cPGW4UCa6dM0^~++GLGhBm{XZrmRfG`lKH>D8jW!+RZH=kv4l)HG5mc| z8E@I07j(1Qe6`%XC}q%Iu+w40-ODxKWq?vz0kw!JRT8TCIWqGKw-t<3bY z6fmx}s_-|8oTTWmaZ{m96A)?JxEgb8?sN-{YT+tP0%O|xSBU&MBWJZW3QBh$;AJ&U zR>OT)GajuyQ!uO_Lv2R+42=dy8(?%E1LTR5>j_U8CNcEX>E8Aa`velO)gosadsT!j z3S&t3lU9mTw(39=q^c$;ipaR(gBc5HQZ9^nC2y`zXI#&P@XGX*l;_n^hLX!7FK1mJ z_!_c4b|gz2d^-&ZJGh(Bb`BaLSfJRbsRC$JvWaYiQ^t0ju6W|=f*-f&uN5HS&g`-% zNpAm!jFV^;9r}22H*V5fMdtkd6IkcE>5+FGq>9S?1@Ai*RZ`12T+kqijOkBU7X_{9 z%e^);Wa^RJ9M_#^t3-xvVpp^!g)XsLhI|3E)Od#F8s*e3tbHEh_S8lXi5~c!;O3^| z7pJil$aa&I22N!wYBEG$j6qegf9vW>*fLA}2rJoF~u+#wFN=k05 zO0bB~<-TJkvx$W%~sfid2K9PCEoyvz2g^pi7R7XgnY5k{QL6w7g_kwc4q zZ*$&C19;w7oHMrEl!Gy#zn*AH^CeTD8WzL}W#`#7{xdUx8$m}k&IE1LTx^9_>V4E) z!9`_riGAnpB2H|?+(XZ*KjXu3&*6+rxqgUPo9WTyY0}PpNmZY>=$aU*rRB(N%`J`slngcSzF<*8U{-7hvHeWhdHr}Awzxy6!V>G`F}iU^tuF$M4qXoI zm9X?=5O2>Xnr*w{xnsf%@llxw+O@U*vshx#>3ALGm8NBvWut3HM~@+GDO{vZh6t3z zRp`9WmT8PJrMD3lIG{mq4_!c05YY^&ykm)GqLWoG<@)WO9vl!RR<_kY)-hWsl=Nqo zKV&A4G|P|3j0K62fwKJ0cK7mfP_|^d6B)#@0Q(E9{1OfCp=;QuIA#|%l$OhWi70;j z`-?Np6bcT+Wuek=CCmo2zp~TvY}62!Hl!{bAf2|PU4#ktCY?t%yslYlmr$w z%h{4q#~uP&(tvDaIm$M+>wLg~C9GYuMY}{p#KpIgO})J^YfalbI*xzA&2rA&&>-9v zoFyEr4=PTXy}9@O~TCu7E+&!T=v!utmwzaHq4=#(;|(5ojhdpKDVKG>Ok?;{2l-XL`ge8<&h&*V3yeoKcnd ztz1<_q#}z@Zg5g!F}(lh8r4LC=zcT_&6|@~ylf-dxW`Lsg8Ew<`b@4=!dsb)mPyo- z?>)gf-4hh_i2bRBCw`;sbPTc(B~nwrk4e$+FFJKgN4TAz7MgnO1iyZU#c=7A9sGD; zck1i#!3b?CWk&-y2faJO?>EnY5jDk|^_{IV4HIKhmgFI(HZss(I2M#QAWP?_A7{&KDE zSBc(EkV(_D7t@Ongv0Hs2+L6M$wqk38lMmuABguyWd4j6-s5XX7Nf&)A7-SvS|gVk z8hH>O`oRwC=X+hPfRW~mg{%Uv8JT*l9kGZ+&FgDQ`tzzXPddM(2Sdyr0#d6RIC*YY z+|-6KyA8F%i##wxbc>y4F{y8-cb6>Yus=@&k7#VZl^0^Fvi%zbJNfj8LCtt4$jaXz z=BycRknGo)dOVhA#UXMBVXdF#lo>XL<)|++# z)}&)@rs~tbzz(@2mO8TGR+S)DYrVZM?J47ceum&~D0xDwYKT~`G`lDcl(X6@fByY< zDS4)D{Owj!2Ezs&e;T%fp_e&rhT#>d?g4)g+gy7mB3#>2^+fs?k}*NAA(Uj%FQ8so zMJfB7HKQs?m-IegEieWvjhv8Uft$sCUJUX_8pPc=H&H1p7Zi1{gt^5bC^iCgh0LfE{o5)g)&w#78;BhHnc{0E0@{i zZme(Mj}75cVRX7f!St|fTJ+*9D@jivADUAXfv{@&^5lNJtDG&(l!rUB;N4It?%r~U zq3U><2_`$C*z1e&Y!pQ!RaFfi!Jr|Np1rmQ%g&>!B-IgZy(Nqoy77u0$2!Ywwdc+5 z1&0qh@ZK5M7dBFf@W-FKMC%>2IcCG_<@){0h%>9#>B=T_M(9>ZzM_q_E6P8h{0 z7-2$5)AS+@DzE0DCNrKZr8uyDRBMXaTvY;^)xX~cNxJ;S?#di`y?%hkakQ2w&Z#RX zuVb?bUHR2?J-TfCn82Uck0V+=YYuqPeScFcdM$?vu~M>CHoU2p6#O53*<*E7H)a{m z`C=~ORD51tuFDr3Isyl6zYOd?j&J8+q$0wS*(;9BgfA3(x7vqSlRavrq@_SMBJ&+{ z*ydQ$=kJ8S6Q3scb5Hn$Gj8>9dMTu~Zu1&cehx{E$i-KgdFdWru5l}UmmV5YAGdJE zoZK^mAK$vp=ZhU*^;v-1BH0u4lbU6aJ*+X`!zcVAd%)l}Ode6fe&DFaN081dXxH>Q zBY$&Jq4U>h1%@T8Q3S8Bw@@^tyczTIySG=vmCw4XF2$iVLN zO!{XEBYn;z@@%D39T*TSfaXF^ z^4z2+Rrd-P9S9E|oF=wq-73~B9A++pz>x^hJBR?|MR#2SDW0}krDdF2JjE(eEX};v z%A}EbPSGvj188csfT(}4h75T_?^2jA5wt~LzY*g1rE%NV6xS>T-n~YIqS;avZF%&z zMq^IdR6XlOeM4qI=UbeG0v@C3xHL68u3zVjHuMu7&@`pRCV$JK$l^%<6Fe6Bwd15} z{oW=$acEuYvv<-2f=)uE;{8;n1pahtVOr9DjF}txPW7$G|BHtL~?GLP9eF^#)4>$yqG5(=XMuocd;@#kS|1n=4jjdPym*CVQH zhQ;!-b(ciHcQX254tAaoqDgT*-6lZ}(=#t|*MdeSL|-ebL~f@Du+Tt&)TPqIl+p+7 z6%};0xQG-~CzXwwosLye;3k$zn`HUu%c^Jjf=$I@rK%OU4_dm7DM^%zD3kS6E0NdG zX!gru+HCRPHqcs41Wd1V`WYpWuij_AbTAX=nTk>-0=4^u$9TmF@uUtT>5v(TaGVW!4)y}c)K zsK5j#=(Vt_qJ_VWOu*)?O%pf&^9qANy=FBF^WTNk)9MyupK z%P2Y5O$h2FUeVp)T)3TZ8XEhr@4N8 z1n@)UD~qM&-AQyLX-)e#rY5|&6uL%&A#Afbotr=H@{a}GP0&b&UT79oq=yqwwwj9N zs~g`!pl!LW@xe2nOHh4Pg!9LXCxTxE*stqMt`j+|0+$Jr;7#HWX`e@1kvPrR`@_1P z{~WbyhkQq}(we1OAV%FI+{;j-SeUFnZ^mI%)UelY=`cL2v9$HQ5t;3BZ)jD>1Cw$f zG8W4OEMqn`y%;(+7ZV(LkiWo>1(kHnzAv$Txl5u?A)XKXM%0OgRuPD4m!+Avr+Gf&^HyJ}F5D9pZ(#ltjB_0e z;FK>@^=b~A#;al}2cz~5TlOy5Lv3F_PdB3{<8?GvS`;O1XrayjtS>6yvhr&L;25*( z#o?pPD6B9IU@4XPH5R3YW~grgNLlwo0Ep=$HT2UFgZG;@}>b1dc}zJ~Hn2mVS! zb()hou;BK&fVE{XshLJdbTupRLXki;D_9nITufTqz5(WC!Y(n-gYx8=M%z)S?rC&B ze(^oF1yB9mTeba{=YS2iI#gnL?!!Di93dwl#-}TSS6zEo=l#0b&L^)P2g#0vG;vbbW|N@D|;f1s8>fK8wobWpbGk`R3WxGfqjGr_F_zI^Fz(?JpqV4u258t5xzS z1hL3g%l5-Y7%R~T^z+4Z`mb@mIB_Or!`eb+Qard!)XF!09lGH{vq-_OP*`=zP&C%N zK+y0Fd@fMRLVvGb+;vP1vK1Nb`2?atcR|x(o*>x!mKSoOw;!0tZ4mK;y`l@Vz#uWS zv7NvPx2mhh~|&@rx%9vZSI$-@c#ll)S~=>t1HK;@u{mJ(l=I= zw=xCQ#*Ia3z-YXS1unZ)NAHC4KMy%1^Z+YUIN8-tG#iV2V`C> zD3&yDs?^6!%x9&><^fZ=j@ANj1BqkVoTKooAIX7w(e8WrIg(ka>7`r~-(+{bC!8L| zqie_TkVlA>%yy?wcP~?2c8+RL%Z>7Br$WiRz9f8S40DQcXw~$XX+goj%ZZv$*_{n$ z?M6d}u^n~M!rbIo526HRkI+x2i$pa0Ze=X02KZ!%s26X(h$$>H6>KHx@1!`j_8O~` zjjj)-;U1IP!s^5pjEy=LR-NbiDR-@ycW@1d`xMjpVw-EknK-Fhut|N4UOk@RJbQAZ zb*pgotZ=7~JT@XBXfj6OFEFx#r~SI&w&Rdy`4)G3YJA>`vq6C@+XiJMY~NYRF*g37 zdZ?i-z7cSns}jfCkEFYO{o9_n$>6Z|j@R%)%x89Wysm|rd-VNT zIxRiYvU%W7!F0t-MkJNc-pL2%X3XK>E3fUwH0!iB}Ty+ZMx8a)!erXk| zu(}2=~t{#-Y>%8*3+i52VhZ=c{qNr#D-6PqyAL2qwWFw z{%`Ni{s%dy7F(;q%)3JLHPF)wcRG3Uk%gB_J6P}h6bfCB!%S0XhCE#Czd6793)C}@ z^b>E@GDM^s)*J4GOQ7Vm7MQ$n2`7lEo!IcpRgW{8t{m%4;`U$0s~NPuBJog@ce;9* zAt(Mszyx*4P|yJ54|LtoJ8P%>eu$osg>V}eDBA4BrPxls@04H=2;0+Qhv58%!9Zd z5m#Yx(3-Lb`zLl37P4fKUleao=NiFTlzTZxT)2)NJbr(NV&Y4l$<1$)Y2n;Az{^x5 zgkcX1G}|D11axB@%X!TVNt}iWR1XMG52O2tP24PnO|~ak*Tv!@iKmKGf6jM@l4V(x z)x_1cGrF?cRceT`O$sq$C>U|dxSAI&*ew*{eO_ng_jLDif>0W_zze0@@>|%NQ+#s^ z$yDE5d-tY_Qf444frY7sRvq< z)@c=w=1E5VdVMBa%_yPZP&S9l`$I0hDi@9(*8tDNhQ7KXKaPKebVMf(QlMyxdqK7YQ1nONh@iymvZei7+xU>An7>XU~~{c3hQ z8JzjN$mvPxS47DJ%maL6ol~My!;j(>TFHfSOH%#)=@({6TA;B~e3Y;ReU$sJ(P-ub zb*}7B1+%n8V)J(3W82H|s_EPYp4n@MXT=+)uKnX!7o&nt>dX@Dx+eG9{X#C@lW~Uz z*MyWQo0m*4n!$Ng#6S=2!&oet@|R8-kvxuMp!S?#`kSM$*-&y4UIESKakPPGMH~qN zlkV_=&;#Ej9n2ziUQvFGcLX>b7KU68R2WQSamaX)#%eam;F?A>%>O>3E#%ogmSogq zpv_A#sTJSOy0!B2OW+y^Om@A&!Ar%+`J#RPr!XGxf`fruBfp?4*;CZXVHb^+GS~oV z>?k*q`@GfkBBtdM_T4{b`$GdAvT?EYq3F>nybpCk_xO9F+yhNbq%bjtDYei(O8$ey z-3rKBz#vUS8P0#a4{!c`So_j8Q<~qe@pRp%q6Hz$3e@X_o zhQgES5e2`iLf#TycP^=)MhecCFdw40hE{8l7X8AJO7MP48ZO7XpQ!?F&oR$sc*^-_ zESDtSulWwBk6eQq`FsgnwRKGG8(e>nb*55r6FcM!C^b0RUyEK-OQ_mz46YFU@tqGc z0a=VlDc1Cg?V^bETgIPDcDt7NQ=Dj&r{vY8HX7w$3RT3oEd3;1V|+MVVz9Vf99tK; zP%o}W)q!0*dhttQ+}eWbY!zA*R(r(22%3I?LnZu37;+uqeqJoBBL$Va<53M}SP&jEIBC6h|B%793Db zWVv_rWw%qC>m`Lm^t14C1cGv0U&odoraG|5`(ZJhR&+p6E2UMEuTMfr;c8;@KlJm_ z`ufk?3EBMuMO+@Jp_Gucq)4POlLfDIf|i#$yT!B)9>Zr`_1?mK_lbNig@~nc`W-py z1fGToUz}vi=w`?C@uk-G?HiwtkRIFgf*?Rad0uBwaPXmqa}&r__mQ%SFp4)yG_eOp%y>sCp%;wg1R?T9J@~HCW83% z0w!Ex%!)p+M!5+h3Ohq~R<8oxu*E6;fM^4_;a@-?WNl8w&hJ8c-KHm^+`ocP-)7(A zT8TS%m^q9_B_b<%CnkEQ3DF|lz#;-zhDl0xjG0pgt?H0Moz)sp290smkDPu-vHN!k z2$417wyD*MvaW(NkK8b|7$R!shOwsB* z^1=~e`aHMNer=}xsUaS(O}JtdL=+e1MZ_}4(tf~e(9V0nfk6rh5JeCjd}hQm$0UwD zlerZ!x6Sjn1cS*Qh>3i+O`qMKO}|Pf%$sVr98y`~0eK!NAbgGyoj@Wo(qs~2pe{2a z41>270!i_6U;I#*P z5%519)wDK8f7VM1_@7Voz%I*BI=LR$ybsg5(4ZrN{Dckj5a zx_5}KOM{A z> zK|~E0(*54eIkQfdQy7yo*%qQdm1mV|CG69>GXL5t7kAiB4p|1C22NPID&X%LeVMBl zld3G~dW$3s8|x^}C)3jmeSLR0{}*s}a4P*!&kVUzNIOlL2zo*wMb#>#UGSDQk)<_8 z**6_?XJBwPPM*W5@=PdJzuIzED0vDxdeP8$!w~X$#7J9*=mi&Cx4@_f1*TQwjOq>@ zS)(01TkM%7*$wg%aHZ4SHz?Gm2$Y@a$vX1i&COf2F3*=J=N>O7i>S8Zj@m^poeGh+ zS&V2KQGVH@gccbdywN>Zjd!JUO)E%0UDqZO&A@s%a&+}D-bXB$ftui);t)5AYwQ=d zF-J*QOEF8ld&ksSTA{6)C!h9bmoX?p z|D0!YzP$SenoqI(s``K!Qg0%9z-kbY`!pp?{_2-PRH$~te!XdG)q6-ef_p3i`zi$C zeyd=S|1w!Tbn5Hl;XbxfYfOLTu?9&jeE@Ivhh+8PiAR9ryOhT91;$)8vI#!tmJfkV zI;sn4X9t@kcf>xS&UClV(LI&Z{Ier3a>-vZz7|=(dSvIy@l7bLeV!?TTEDouIH;5k zN;*ZCb^Y{e^D4sde)Z^#eoT%pS>RT{PwE?OE?||Xk=0IXt{SVt5WLR;YKN=9!ANOt z-4kH<`}a%lE953^D3v_-siu(OL^xC3*i!a^+bucsJ4H!8XU4pQbNj7TD@yA`w3|<7 zoFgDA;ZYHBjk)w-26b5~WW-dB_hxhX`12psBNLr7hnnPf;wG?#8oZu3C0lrLG~&|p z^hVCeX{)D5yysc+QLC$gt9dgW#Gj3A&%zWW=yMYeIYt>b48Mo^=RFZOBS_gdJM0~Q z%X5m9ieBhR7i=Syu8SdJRC#d;9+XIxd)ci2!;jzZxteARK?3x(>JOx7rTS+5yoc#l zkCp6b6Z$lqIc3-NGxBjgVvp7CI<H@;I$UCTT>!YF!9p#3xVCe*rrwkYn_n#)(h= zRRrz$S&2Q{Qk!{$viCHT;)mP1PlDjx0`4Q>jFFB%2~A>ex06QBbd~RiNqpUcvNjZ1 zp45!-`dSe!0s1OJHmh7DCz)|Z<$fNjoMJ@^!jP}0qVdWkJ_Bc~!N;k3AwvW`A=U#?aYwg*^=!o-?h&Nk{>FUe1%J7hZPF|E>6-Ts6CgH0uBB>3ThLuz1 zX*iQA+I`J~8v(G+n_bQ6Rk^w1WKaI}F+ogCFK5F}qEg@7)VUgW@ltgY0|5w4S*9ep z%oYdC(ea4^82A|LNha$}HR6h0i|AW$FeFk+F&)+Id5|u*^FWI`0l=%}ou_<;$u%Mt z$)XY{c^D1MQ-WWZBO}37=Q`Qk3t_Lecp!kF?~hpHsXq1gY!95jK(pqI8ix|2Uvmnh z{L2d|2fjUMMxmCupqg6&pbHQCPQTq4+-cn9H*HzP%aQdUygFE7@Pi|ohD1+#8dSVQY_9DvP?&Vl${>f5g9i8nZe}#OsawREZCHX z1^*kz^^4>94@LMK=hi$1FQp8065!3p_7{Uilfz|B4TYRq2QsBL8O%PbBBjJg1tjX>o$6gEXV)zKRV!^N#ihHDx#E z_>_6WsD!X;k-;`@5* zNRm-yp$&H$5EYAJ{t@F_0SooH!#%_D#z&6|H^En}a?}~8({=>0J)SUNg;@Ftkq_z$ zygMxEYR_ZW=qz_HvALviOgAx?=BB0+ea#VqhNA60^BGQoak+(R@DZNmQDUg)dHmPN z&RH01PYh!PhKI#71IOUHiD^abx7@;I6@-_l;ZGm+HSb@^o_HVAmmyE)HyIoS;~aDt zagBdG#|3M@{>E*UMZOTL{m7|Bmj~xMIT|Oav_A`QjhDf@Gk0}MrG;s%&$zrtNs_Xt zaq1;Qd3v~E4mck@g#{lz8ujkNke1F!3^fgkAgW5lwVWr=TCX6q_4Y;G?9LSBMbPYE zJw%hb5sbIEPE}^|bFAOHRx;j*CsyO8x?vTNEz&wA6{AgRqXQFA|vjlE^EnDq@-X{aOhL z8+t?AWoz9>ZRxm1y>KYAG!8yJCK!I7T17h&C*uOfOG6-y@r%B3Tg{+NhJy77l7oz?ru*#gE9!7LOgdtR9Yqh40_ z_CviA7boczTZpx(qEhE)zY{r_8wtg&!xRcs+Ul;!8rDtyrZ8BNPy zpl|KB?RUiq1`U&BApP`HtJ-msNX-R?W)uI}&|zCm?d4i$vm zBBwR_fyh?{f;(a4)-7?;X*z!d{m>bP@`vW$C>Tp*z~wR%vmSENT!XBdPo#7j_uoTR zmJ`v4zhQg7u6s} zgP+3e!++HO+NTpO`uZ)kM|M)qNM`rPCyS>fJ{~DXn$O}5(QNREx3>{DQCEgrjSC7F z<%tTHcMM#%TG16>Tt|b6Y^ZSFzumBBC?DNCcHR*b_Uk7+CBh!okM+Mg@PgKC5D+91 zdrR<6-8`KT&@h?RJ()daJF49Kt>Pmt6)exR|L`v`>0WF@onIt_*m=xZyHxE31{;$WKVQgUeY zXQBMTJZkB_|}2>Nf5>vmdfUcXJgcmLifU#VW(3)g*kRdDwCjC*HN9DP+V zX6Z;oRl#!+gy%ZkL^xXUj&!kYlgUTw$qrQ2d=biq;^@c7&`8=`wM{~P>m)8rO|9|rH|I}P?~SLVS}`@C7#;1!$dk4&#Fmz-_{KF2 z{OHiCpI_CAllprE8H_02E1T}w7w|J}n)TCFND|?F-rvj0|G*Wn=Dpm{>+hW}rpFWC zFjKKFd~zTu0zCe`9bFE)15;g(4oB73htdsZi5r;~A3^ee-=W$&B^)J6t_6f0To8v5 zp~yXPob4WaaUytLl|?>AJJn_SN|=~RK7VC?rGWzok|Vo1c$2=;i7pvdSVwzIem3yn zw!IT_9bIh9&9Bu=(=4j`^eJACy8(>h=bhZrzKFBqlB_))21+?#hyMix^Ka~DS$BkQv`_^bwxo~-`Lnp@5YwR2zIkyF^NT7UG=rp20*qCL(XS*26e< zLyau5f2eY@`j5xGxyD`}nrD0sMM{O!e(~uXs)>0!#exF~ef=H$J?wPG59#DRec(i^ zS4bFCtU^ooWQ}Ha(#k%sv3bn4YzfoCy>oZz;**4YkvP_XHUI4Fg2NG~UqpAs{aHyL z=1e<8!14*@R?kaKD zr@)cok{7%Y@}>-9eusj;_)tBW`)-Z8L(c zj9G>p`4CS=2kS>KOSI+Qz=6r@mD=Y{i39zV`nqB*iZhqE)5Er@ZZbm`?W0r~ z;`{k-wOLwb$X>31sO2t(Me4+YR)2BWy^F51m#O{vS12cxhx%G2=NwR!0DtXq(#wmJ zaKM5?D#4KeDyBhHfK23b*5Ridcv4Lh0(3fzOZyx|yfE~0z(W`ndViVq66Az*rG z;c^)3*b!%Jj0LJ*dz4;t_q~pWWWT717LN0#%9NA^k$x9r$qbs~bZym4(p#{r7REq! zbj0{c{#qs!ix#aXN6ZIeLRbARJk^F}FP2F}7Y(l6#9@ZhgOC+6T(%RC4~3<=iZ6yb zR$_F`bn*HV8r#Q|GL5xnXtb3D6w$bfOTDynA83@o)kHa|P1lRCHor^)kVsPBY?T(gQKrj1%GQg`=}leg&!4ZO1zannL*Y)wO%K`f$XX2H0A}ag znBYya7f2+emtu*ZoxetPi&TcV6;wU1Irv&dsRhL@K0j%Lc|p3i35Gs`S%HFL@ zVv6xV_AnXQh+%@tbVbh;9;Rt!>wrQF%&auBw)(Q!(ySpKc;%R`| zxLtfW3MbtO6-xTRp75krpZ$S^6Bf&c#uA6ciNyGjak1gE%t_7cX#`p_szw9s-mq@} zrU%-mOK6eMGSbbLWO(g)AL>smTvJaCVUD>~9l09X^OY-OPHdkNHU0S)m}>chb(XXc z(8m0lvF*!Fnf#}gYKM#Aasie_3+Mv(G|jBHz5k{qv;y5rLJFnHa~9y@SbZQ43w>0J z2sg}pL1oP@nU6L0*^u0pX-%-65a-m)HKst&vr0_H^;o1IHu+)v{pm&RuACv-%^}$< zQEpklPJ>OmRn{|Q4+|?-z&scO@y0ZfLmk^9O*hoMLF+FNhFqvFhY<``cI03;P)RP} ztLO+6@oDHE6D%ab$N*M{91e6&jTGhMZ1izDG`oviI2%VE%>ky7tPoFEcM1-BZ%Y4d$Wl1FuOJn6BqxB18v`36%oBogMNOcW}=Go z%ph_hGNAZ={?TD`x`(92;`9-k%*M&G?d@L;^TBc|>xsGn)cdm(ngOhK^?XN{pBG>r>WS&f**qWdwG z3%@`Qe+|vo@-!MD8apHfT*>`g?pAFY@a;yTX%ZOPaR>)2X2`JTl z=H)*r2T;_qw2}TNM#hKcFg!)GyXDk)O`WEjB3xv;^m4#QmPoi`f zu-WC%rtXPR+@}5QkRtjWE*ZPB3^#bG@m^tuA)4{=&%r!2m#g3t+JSX8jpMb$E~cZ@ zL4v$^8+E8sXVSdilkR0qecDpXR>SHJQ!xGd_xhkz8QW(sRNp>?y=FI9))kKu;W!Sf zf9f75&gxn0_YMDx6!+q8}Q0 zg13jHFxKVGLJ!)0mh5vp@qF;R1Qxq1RYsX|x@d}POh8jI{P?a1rm|#XDvcE@60@K} z_}Yh-7Rk>7#lc1`0bdlC?W60K36Qs?1u@}VLCdipD*6;iq;q>x-O70G3DXD{YyzkRWOjUP0toUkF9-dWQENBjze zcK%z7Xa@7YYhn3w0>z7S4*qNCBd+-4vR=k5BJ|kERgt3`4^LyJ4uS%}q?XHg6PMdw z`eOw+Zf!Ko6oKb54{qY;PMDA)n=ve@F__kEroHg$Ymn4d$_=zz{JWidY43z(k!A{E z;j)T_8dQ;RW+pY)*HCcf0f)+}5X33JL2kaia0&vYhy(}#9Z#g~7_g{0brFGxBPy<2 zW+y?c<(yR6bV;U!smcImLz?|=Z#J+S&#oL8JOb3|nDS*J1X|?B->xNTvCScK8M8FS zr}ycLbdxm8D;FaxE#mf{O?|pzyDyALprktFB}KvRd&R$Vhf?9uoI`+rl;#(o@%8Jj z2EP--cwY+KUx`-~=}{6{fQHvjr=TD8!}#yTTz`urQ1JRs;k*-x6$$?U+|?UL{{YJb z4zt@A;OVk;GN>X+s4Hhl;{N~__&xx;?OXOjmNy;Rf9eYXNzARHUQki;>UYKi)(*)cQNsX<(xYbD{a=Uk9 zYJP7Hrlm*z%>t7qmqnqxD3tfU(Wogl#OKA^drQEGLM}ff58> zKob@_nA;6xLwUf2N>y3ZDzFW-10ZJD+QX>V0Zmwihs{SqG$2L()7IlmWmh1O+4BO$ zOvxQL*g=yv!ZR&kGEGDV$2X7?ZzrsY9dHpjI06^SB|;SjQ$i=@%eaxRz6z}|NEfKa zi!qXOl4C8jJ#c_IYb_@tsbv6zl-_jyv(RoDX*Ui7(a5j9@JQ>@CwRx7Tpp2=L6$0( zLTQBag>fLyTfy&a8WLd`C?sVdHe$lp(oFkmJ?qg&$xW#;GZM@Sh%up?i%9;seFbXn za;xPoRU`mOnKPi)eaF$z8VPEmhf3VCgl2k5@BkkA^!wu!)~8D-*#f3V4U~Avjz+wW1WmINHVP^?XI*`Nx z8Uwj80yM;B;ufzlLuF_N<1y5Wo`6pFwlI(4In@UaMKtpj4oE>DN!ld;0Q$X71w=AZ z^K!w;q%KJR0G3)`!qmw5^3!B0z+NUu zfdI!@_9FxjLMW&x9+p`J6!kYFsJC02_9def%Qu~X3*}Oz zT+2{2HKAO4X|o}L8e)1F_5uf zW=I74{{Z^C;%TE)b5A`&7MKkLX%o1$$+zi@%Jo8WL8KVuW40;f+Szl7HUy+rpcP46=88ud4y~?x2LWFXe9&7dVrS9 z6$1@Gf!f^;_=qX7Jf+0&C{4PVH}^NV!w|HpGBBuf z5Lgga_kkn`v|M}QX)vhevr>jo08(Ogzd`y=DKjd=xO%J>($@_WF%fCgcsOS<6_rk9 zLuQ)@n4QSdb&WK_P&VQ% zr$wnNPmmL75+rZ?>U}VD)tHtfI|#TCNfW2(?~98>k|X9@W{88hiP!h8IWElw8W%>9 z5Q=kNbUVz>nA!MOgYkYR;yf>hct;0UkMTY^`FuYK!>P|uf@GbQ03@@U0B&>`-25x> zUyFQQ<6J+4_zw(~xb7r*d6UbdOc*s>i;7?oCsJ~OB;)Kagg*&%#bakNyQFS?B)%m9PH*5TZstR{UoC67iqHZxMR#kK#WK*J89d$P$FllBgfe(CBBb zKK-HMZ^IHsU_pqV-$RXui11z+@qdMJ9v$M`JuWkcuTLdPRX}BMbr{&emVGOyxc>k{ zWycKht`Eu<2C!1uRA;iAoY4XXqd|;O&7{>`(LDJ{yZ}%0cJ;sOk6-+F`~~B`3HbKo z{4Hv6zYFm-GSR5ulfp6o0OP2C;%3Z!4m@fNI)xZDI=Q5RCJ(3Xap<8XD5n>r4<Xk0=shvog1s5ttivn{n2jysqJt8#4h^Qk^mr5F@Wi>L=wZsGV{q2G-r-@AC!Q6$4;>ki#!O>!BvrkDKAQ% zY|Azib9;5auY4PE2BvydE0F4*eaIgxy=mFb%yPO z`;&~O?EY{m86f$=5OtXbg3Zgu=z`G z-b8DF4hdidAnfLtH48$t1LimHawlsXHXgNGkctQ*X^0CjE%YBwrdG@qiH1~1WRRd< z;8^wR8{wQfRCNZb9L@^O(TbHIncZYZ*A9x`06MiwF4We4m8#}}et>QvwZBNgqSLKZ zu&N1fG9WjxH`+9q(mimToXok{Mp8rraTXwxU_W!N2$>92yNakpxtpC}A4?r=hC~?7 z7`xV7%U5PhDMko z$jSL?&gFnKoq!7QpgX~jt_T9pPJvM9Y0KWGcu)+BPhZ^I0P3~4aOm>u`DzhoHIBP> zjYr=S;i*!mQ_ag(BJr3s5@dALPwW*sF;=6XfJ~C&;bWzw7`4By2)rv8^;L68N{a!I zk@AU{+87IOU~wfvs+NGkSd#$Qbkv2kU#xNX}*tH@lpvw74m{4_{EI-U*8zDI} zhEtTo5`?MN-F4FtOQ<4=V^1k0m|&tVAoQN&-q<8T({wC}Qkv9yz!(js<5CUhQ)^=c zlzB6h#Z0E^K<#~uVtkaI7VAx0D1mb(3|N!;Vt7cThLt5ORT#Sg0h4=li9X**BjU@P zCl_0UuTl6%MR#l2fLH(;OQ= zCY>dy)n(a>`R_Uw0&ZZRzL-E%cmYBKSysCUXqSlIqE!fOfL)rUCd`e8M<+1hgT4QeYoL2No%si=9|K zP{Jm_ubK&+1cANvGlny&sHjN|O;k#PwlWKEuj|tQQ%_rlT+qP}5F8VkGTfme4A|wq zQ>UciO-ZT)A=a6L3rGutI!KMrYh!K@sAYl6=7t$J5dwY4xWa0ndSF!nmF(koAi=S} z)^xTaB1V&lLZF6Z6pEQ4NHM+SZ*Qz(vvBUnYLN*yB+gJw7PX+;zBj+YhNv9KS4k+c zGi`Z0TYi|VXt@kog0Pmz56^udOwZVTaLJRj)4Cw#%}k6$(+UIvL`8v{PO*UsoW_Jq zgL2I6g1u#)b zP_RdE#Hl49`9hxCY7BS!!AhL57O{)S zm~C|$Ylu7=trE(jm}Q7iV09Mj-%?`t#9RsBtxtz%3bdb?rD9q@vH75Se_}6)^Fy|* zl)TKqk~f~`PNF^WZlx8R-V-fM1DbChtyQ#8K5*3XlYOSlhfz`X1Qoyeg2WrlV%6ssRX~vs}OcMdX;i=e|6z zgyWiv(^k!!Hl%7u(5(7&$8X?&5z_GfFT;w|4Ak44>PDaO`|AdIcJ zlQW?DY<95F#^8rFpkb{^xH`SzSX8kpZ!m2u|mgX7xPElf{#9#H)TL6f1o|v8=HB_g=Q52s#<{-d5;!k6*QHZZdnpu!}K+m2R&Tb+#B6L2p zfoft$FwHQ-Dg`!hBc+U=wg^u@mLv*QS%8RkO)PFFO$OQ>I?WYt;nb8XNW7y3(E4gD zNwB#Y8V$v4M(I@meeKCNM=`0ZJsYokkLFWGe zWC%L+xxmw=YPii_(xAc0ut+-} zr+fufNkI-Ws2PWp&rnaf_ZW&`qJp%U-zg+A=n2!*>8R3h>L!tTY#cdY7^z|l0tAQ$ zUY8gm@Ga=H!1ll_Rb8gsZ2$dSM!Wa?xU=eUH8gKsqQGi79)TmU1SS(qI z*4d11a_epS&Lx5|YLqH5Kma7oi$=a~7X3BL*y1AjXn<#Obaiu&lXh zs;SDQrOL$Z-)orL7+1{st8$GPBnh0XV1xevmw4W0b-*ezDPCoZC{tEcGyq7GsXg{O zYlaqxSE*6esJMdOP)Q|3%tR0P-u-XBGc7cvh}2w4&oL#7X=Ab1Z*B38P?BmlIH@FD zC~U?g{Y+n7&KX8UD5h5}HYDbl-YhN+g{MiuKzcB*Ca)khK#}Df&nOy#PP?0W;Hgq! zP_AFik`$K876tPe(A40I(3~LsoGZIPFMBRzncN+a?5Fi@Gv!cMt*??oL3!hu} z!=Y#(f|CH1T`97FwL0GY2J=3cI<+#rNU)eWTonKg-!Ugi(*|?%6*zRcrW#Z(iy*Nk z;K9_-rLLl?OCseuWdJDF1=Q$tJ>%*H9ZaxlW}=Y5Wu}2c0B%V=fb^St8C7?tXxFIf z!9dh8H){zKdHYT)(hR6kpEIn;rlr)z{)5b5ZHE*g0XcIfV(J4Kw84qL>E94WfuuqL zuT(=X$(V(S8uYk=Juo!n)fE`$EtKYIb_Og=ks{b?rA{1F6$872b6+H3wv+5 z!D{&f;O@K^<8-f*kBQSMR1l)AG|f$|GFCOd*EZ{pYGOq9 z+orhi)Cn(8vPof1DoJWYFp^>>dd|^{UKQe;XM_`5fUj1VNDPxXj2%Xo@1*Z+X65Lk zEyG{Y&n$jX?&zrNMC3}LS2+xVMq@c+bN#)rHAB;4Ly-Mc>;C{K7PY#aG~XO2g?xUZ zprPYjHDvObt3-^dz(KdZxb1jf65)8>82v*u&RSKMs*GpkP?|${#Y02dL2En zYPB+!Vzk176x#w;5S+Ok$R&l&lOJ*? zrWr6QDbuG?kw;gmJjz>R2TLEJn9~YUPb#fU%aoOt6V^h^`rg+#*qUNOfm1P(L`f~7 zvD8k#QP&AtEmG(&lg*mvQQJ?gtvlja$r__cGA%cPL_l!gC>ou6M@#9Z1?ZBiQ#r~Q z31YH#FhJ}Ft~MbSm~t77Or#cimopG9I_)E;s@j7*tvNXrV89EYJrDgGb;F=hr)p>v z$!G+5SIee{+5nGHfvdw3T?k}MpsMGQEI=AZPk6@8w=Sc$M4n@2N@`3PX^x#Oy!+vA zP1%{bDp^)CD2Wqt0M}dCo%-O5My$~$v=B2he=3q6GJyc-C#K(QR~#r&QtXOORwR&C zBTxyQ2>4J2_pX3h?PZtV$se~l~7+IfU;xm49suS75G-F73)l~@}zl83xGtcaV#p4e(|j@UWq${$ohm&)FeVIwY)@Uk zV;@HR0r;n%l$Bky$^!#(JNi%4Tzrzqs>hO3F_@77;y2z;Ol|xl#_RZXRccP^1Sp$F zP;cAT{@B^+y2l0ClW{JN{zvII!ygsW;^?8LT2+81P4VAwd}476V|eM0gZ}^x{{R!) zgso1O7h5Q7poTFvJ8AEHeN*s<#gw?}YAMzgGKo2Q?~3})hBJ?}#CBoK-@86elj5I+ zY4OyXir|2!T|C49A%{$PmjU9OPs3g$DhFT#0QB2cJ$8UCk8$BR#o`uJiwoZzcgKGT zjyr~_#_$Nd_47K%&5llwsi*96@Xm?F^0_&G#$Us32l3nR`IEz1l6dz9IsPA5kCvz( zAw3&Rer|Cb6o5c!LosNLZ-+603G)`;K*(rSmw*i z3PgY+L`3w7u6euJ~z3=T9)J)818Z`4&%4r&9^GMZ{4dicew)n7&YYLR< zQY_L6vk<1!Z~>SAo$sy}%R+!=YD9@u6+)0f*8c!0>1|A4g+-=Hy3-CoVNs3NTE<5G zcD@bRD1wwK0z#aqa}_d4T+lD3^*(aq4K!%&#P|btDh~h|uZj zdwPs6nlrPi6;f4dRe2yVGX$Bozt;jPa@E<9LNQei#48KPkY;^vV~7uu9g%6Ws=#$( zpfIr5d5OG@t^F`OwM5Fw!!cFKAZ9B7iP#bAF^T4drBP8sQwHFcT*mi-+!8-rFc#s^ z)TX&xDY~o*PymkiCf(-+3PPmhq8+KCmm(T6!i(Ek9k1wa$~m}$%R(E<5H00I*jn>5 zZA9%D2CJ5`DtRgi%m6IaHTio0I^Poi0Fz6SRInuFW+n_s4YUm-xjknNfXFP3Nlis% zDo$dya76Flsp%MHMPMoNnvHj53;R zOquJZ1X+n?T8$-;qgvqH@6%bB9=K{tUxozLkCRZqfnfysj3rRCAv2wBBRQ)2wI@Tr^hYS7ykRlBz^H45mPU6liWdzuOLgtieK?=E|x8flQAq zn_LM!btnAFs+vVY@|jB#tVBSz{cSsvH`p_;@hM1@rT~LXsf?r>OzZ7BYm8PD(ZO7~ zOB!H+VsD}SW@Kn^#HPs<(fGAD zVnL?EDhYBn1Zp+gw|olFm7}fjuf!h`;mD=pLZ25-OO?9R0$>>$*qySD*z9~W;$IK( zL`A1r=+$N_sZtS(X3LNsy8|Qdk0Z+T=?teWLv{=;*lYg)R@V($w4H2oHDXoDvlRku z0&Xk^uo~lwFG-4gD*6>TE>Z4f(ye9yxfK^OfMiYg26Q@h!UZLMTltFe_NF6IC$OJk zk2mn2jJW;=%i%}(oFk0l1xA*OgY`7_?_qR{34vtdr!iQ5U(^-M5?yQY4J63<&eB$WkGRC-wj_hj8^vlyJn1vJ6>CjUau8 z_ZT;XT(3#Wv5zP+E-xRb8v}|7MPoxfMOG7;ODPruSvL|UOmz?jAdJcta@0owgo9x= z%ESKvta@)avq%?JQbVo5H;CE~OX@xJ#Hu|;rlrHHtSvmGGM=%e_tQ*3QAKG>k_uUf z`2f!o9>D28*8r&Hxn+svgVBM5XpWPiy}Cv=O-M84d4@~o7u3e)BiDRadSaU9DQ3-; zN0tdPCP<%4eX#_hlOQy01wfPLAb=*|XfOJE;v0v~pt%v4Ug-iLf;!y$pG;q+L9(?q zIf-}76o3rHhg~P?G|^_82v5w)z=c)UTSWY$d=ty+OxmTab?ERuo=p5*(Vwi?A~)>WZR*E_2z5MJ?hf@UUm)_t(5rFm^l zkg8mjA12@sPi?1J#>w48tsntV7UM9rjBWOjAY!qm)so3I94*NZ3EY5YOo4gR5ilC^ zCz@ClQ8fz*5DDlso9V1y0;JM_T&rIwWSA3UHUi(N#nZ#0Qc9~-!PhOI7|;&mO)Z6| z3>oRdIH#PbWYFai0{!|zPjAI&>YA2ZriwwERQ!#RS zXnOU3o7b^+1>|<|F(-m5g3Wb4CM37HQ z+IIC5i=!gtqIfPorw>pyH)c|xjXwDHzrzp33ced&jSe!i1%Ls|0Q&SgU)FKqwG%6b zEEh7E&v*du`}FC8;rO56$*oEvNh}(~{i6Q9*wE?vnPGmYJo0{*d>!$9K0k*>R?I*E z>m>B=k3`|Ps&(o7!L57a^Uv_(@l%NKs?_Q66)f;UB%YeVwm!S~Bjdgs#khKHLZXl& z25-NoOdhMFj%fRAJRP`mzlR}T@k8L#MNf%v6xr5)FaabRpQPhI5ByVs_{ZVT5cosl zfV@`=#n65o(X?bTAawrY9-z%f#Q0XFPzOg?yk2+5fqYfryhp%)5>w*%L6Va`dQ81% zLN~R(_&qjH`B5Yf+Q5T2=H8De)>7F(D>OPp&!;{)UJ|Ca2pU+A&^Fc;h;fpVo z(!g2_X3PlG{)eDAB9&2<J+FHKv3E!xwhB-fX)G_H!aGL z;-HX%SO6yHdH3mtRcgFVRpKkLWT*0md!)emb{3t!@q=K|=j?e*fma|O$n7HAExo(n z*BFWl)F771Jn&3kKy9pn^f%iE3sS2bvrGY)kYJH$GS|Jj{V^45BEDKjJ0U0zL7*n* zt&iIH!$+YpNnj8$uS^DY2E^?VsXuSN8_oeL)I_8y)s<3IF^L9L#iYQSX@!&oj$=4n zu*sM(U< z5akym0@VPpp0O}Zx6on*N2)oX1DgE1c|q0)7uTfQOcIzQB`U2_q>RT#G6+5Y0CvF# z)XcQ9)TY^)YLFPC0Bq+?qILE9;2Cnan35zg5DxbwL|p#>Yv8I?FG%E46#}hJU@{2Y zZLsfQfdMiqx;av^bpR3n0C8y4_Q68^Kx$%>N~6 zwf4~cP4K`(I#qO9DQJKK+*owmNVvuV)akP2YDLr)OJxN5%oEUP2*aRQWjRSq)ldMJ zCn*7>k_71!I(y#$bMjTiQBZ`MgCHeT5ht+IzuN@-x+2t#Dy~;5hRFhCtQ!+?Zup9I z8j65vmUJ=|i9gG52AYBE(*}iJqiHi&%xN%i8de%eU}sJG4KWnZs3fB%R$xxhL_-sM zpX_kTF6@l7vt%IV3JhG%(nbFOz5q~FQ&i^#SQV%ea)WD)t^x0YgfUAyQH4%f@`xnn z*Ih5!x=tnhqD@w-O+JbKkz0hRI8s zYtu&s8bX2s$h?8H{wt;e%*UKMY@i=mD??Cf8Ys}1E zn1ahvZ9Cdz&X$}q6|o|tla{GklT0WK%^3(+=12H7&q<}$< z{+LUx66JoDNbO_NF<2)f3L1oUp<44T|CH>HWwgX!t;GF`c*kpnDV6*d390% zk1;#PLDu`=_!npqNku%$6%~eK=MW?r&DLb=(`-7GMG0PoRBZDqs-X%tqhp}gsKs$S z*+d}(7CgZ|V0Pb5p1pA1V$({6%CN}N7zhwx2${CC2k(H;jW$Xya$qGUSqegx0?~7< zMeVGOryJjds@A2&an->lol1c@VBCcO%FgB|TS@7S0yqltsKS&iijp$}0gu;v{c+Lw zMGxS3BwXP@Ku<781Nv*X+gxV#j-f?z)LGi_{w6{aYMRWTg4raIFvjKy+WQT+*ihp) zM&%-c6<7fP`E@!*n|<-iQYsXxBMO;8Xl$TFl_V2${r&N5@r8j5$I8;gn}OWKo&C-6 zk4HLZL~8RH^Eq~Lp*NU+0d%>JNc(M6`(ld}i07wunC(oh*=9k zFh)|ul0aMDWAD=qrNw0~0hJWR^fN0GP(8@iCH)NDMwvC4_@xy}S15fPN;A6tdX>0%_9@2CxBM@(G={ z*Aujc+(R;EWmd~&4>LE=_SD;M_yT~`C>dBN%%n7v2c!dO7xc!NxMN8Ra9mY-T*VBi z7{-D|@-7D3>`o8=08-;PcW!b1F#sPS%J2aK+BTPh0riY8Z=k8yCeevVsLbn0*d)MX z7tl`dHrz&-NmoY*U1|bYlH`B+Zf-w%NRA7Rp~NssM=It8mNLJ2S&$F7vA!JDLjd&- zbOS9+mXo|6z50_oVMb2TMd`UmQp~7{m>6q+jkVZ%;dN_E3W`HPP^b(~K-QVlzAvy1 zQB{~_q--KU6Qu7qAKwe9!sQ`p0z^PiVs39X);GLqh83FjV2D*J2vZ=ahCb)e3zLO% zloGWQmMWl4^_`~Y<*_rp#6~YFjaA3XloJm*NVMumJ^SEka6GnC%M`zuu>{%6?4T(EOJ!i9kn+ zcGzhq*q`CxfPqTD<^}{QQY^>su)(q##h^KW)FRdr&`ijWQ8BknEx2;3NDN3wBpliu z=EnBYewW!(rWc4-2Q^FO$b{+->jZD@H^WU5kC1~*E&R458|mvEZ|{Pb(KP0P4O{ql zOubAK7Q9ZM)^LiHk~wQmnFcZpqH~SN7B;-&X4F+#fjh9S*xHaT|RQx#nOReBsRT>p)IHP2O#AVk10Bm`6S}fVO{{Y2UnS&xbM%W5fo|(Ir$iOks zh1LL`lkc`V@MV@MS_*0DpQIlFd~?J2z4SBI_ujL%KTB&of?2XB~T?q9^d1-=aU)5H9GfJ~e}6Ioi*8TXj$`;2%8`m*pk zejWIa!~8+PtA7dcPlrAC>Y%>WY+TP@L!@t_3rIa;08jk^1K-)mDO0B?l3|IqQ|9%V#IrgX zM{7cYSQ!AxA8mhJVk6Lb2AIkfYRju6ktfUv>Neg4?QA}uoKr!T8I%C?Lm(lR*DRzgoY$cfg}$?WBXw_nN@@kjdkW7N0bl%HUJBC{VgCBYWYE9 zH8NzUXv{!u)6b^|Z_WU4fhS$7whHn*l73&I5zskoyBX@Ux-V=PFq z()z?7?}(-ysZ;@8q8qR!x?aco?b{RiOH!Gvg6tTT6PbYRDn+&R#OGsGyvwm5-aJ*eU85k`!CJ8FS3r=C0PpRvQRKn4!VZccR%a16I;^NnV*JwD*%BrgMR3pR; z*=$IgSnJnpMWVKo4Jf16G|fe2L6poK#7(sNeK1kYsJVe+x6ZAWX7FU*2qb!7Gd5?Z zSC+!}G~rtD1Wtq4V6z2eaKLJ;4YU&?e|ld@B-t#bpDz(iWDIhdzmv4Cgg$DZ#Dx`Jy%WBD9+5omPuyvg&>ds zlM^u{+=1zb5*sBo){^Cr2?1^|Z7sQ*>4Gg#w&9BepsuP|1+zdm21zHN>@i_Dl_;W< zp;rvVK$!keS6Q77x56rM4@Q$ysLG(q&To)|8*LJ2c{ssNm=zV>;bE6DLjV+$18YUS zaP|tdvGge@lF0P{AbC!=Hq&3dj2OXIMJ%OFF-@V=WrZVsz%3*g(+EWrUCm~QAc|tc zVR0J4{dK|9CYqjLC27@Q2!om~1dRkQd7W%A5UmBxRz6x+1g%0v?o6F0uDW_-9M!95 z1gjg0ppwLxkVdmJAFd%h*CvNz`zW|ToJc#z6{W&f{Rjdo#}$nBPHMr)&#`K z+epDo6ifxmVQI4*!R!q+3wZ)3YwbPf02+cbtz>1SNM;NHwz{4Db;B1eUSJGr0{{k0 zz#tZYPg58BVQDNOVB?YE(wrbQv2E4qv1CSypM z1l}OV1Xps(5U3!443m^~iJk6yi{Mzr+Pp?(s#GYZ{z9=~bE%D>-aeY*spAb4I@2Op zXbJ1B&fQ{0E7#)!ikaJ*gi0oc2-FGcO|`Ynu~M_OO4XD!D3Y-tC>A!G9M&gz!BQBr zSH)g}9GO%xf<;0aa*$58Sd;I$#L@A$Mo=L{u)7FQNsp;h7TC@;RVcMc$ugrXMri^` z^%mFmYn6FeYk}ou2E=MFrK~&m#I_1d=#Ps~;z>&Msn5&^FlJ<286c80n6ZI&-xZBeEW06X+;Yx`fc5ze6OhB|rZMMeBnlQ~xsfJ?t;2gq6gzaeco8yl7 z8^?HJEAW0P#10rJ29GsZMdg-FiQHSf+TM%E4uGygk}{~PDoNAUBhw1>!`jy+CtQst zl&*>wL$}STA5)}ZO-)vLl?y3y*+H-;(|dh}=NmQQRcbC<6_Qd&1F!>KgiqH{wc)^3 z1XKo{GO+hB0m~;qe*5i(A*QQDd7WGuVO6vlfV}IekPmV&6*y)thL}dHP!pKb4L;i5 z4f>n)#?iQ7{Ln!vm&(TC^90&7&`7or^g|@p4NNgC*jesH-iR5ZtGed8 zys2q`E=`R8083#d8kh$$0cA&*EP!X`KAkl<*i@j-nP>)N%Af}T+@6!9YHoe-x|FJB zUS4wM8g^C&WKQ=Umo~#76e}Tia#XWB0N|XvTIX;Mx?dE}3@R2uIiz_?>(q3Zzo;E? zvNVW5fmvc@*<=O+W+zDOC+mQEC3t-7GXlhcBv@b4#suC(*k2YVPUBZsg=7`YWd*Gy zDLJk#0km9n_rfZp48(WNNa*xom$Sq@vOzt+ z%G_VWUM472D|SjXS1eA~2!6QrPxSfm>ikRL4Z?ARHCldF1j#XL_Ka~K75EqMUk`pR z{3H~P7;wMG@RZfIN9GT>Ao}A^r;3f^UK(rY^#1^}vQqDgZ_b(WXk)`VI@CsdtCR@l z0yHrZ6aN5R5L7uKQk`1F{#p|TNSk)rZGZ$7&T7&D#%KVOJr1^lY&vzpR4nz4K5Jzp zDAb$WOzG+Cj)R2Cij`ed({?lfmK86cJ+Fy7G^vKPDbz>;HzfYJ zK%ALU33ebdtP(E~JtJ;o`5X|5%RTPVvmjn{P0im5IeQmZThZ9omPddylY?|6E zeJ?S-C0wE&bw#Fg2j%65CghNM3!B>boT@WYN{LdOD^nLx%rv>zX#xhPrX{L? z?9~Wh#tAZDNsuR9jk<4#NFfATe6b6e8$e7EEv>r$0B*R0NvWf&2F`+VhLI#(lWX?r zIBOK3d2}4nqg+N+Xk}A-u-5tvM=2=ObQJaS83I}i7?Wx55jZp@kQ`F6L75HZ*sE!v z0tnw2m5ODuu|pvgW|_E;akTnibCpSUH0kA>t*a5X;Ak!Wa9|!qQ#{IgKvFjJxSYSK z5r|3;lxl-dI4r8F2wyIw+VT9x$9!WNWs4M28QK{LASl$8pI@#Pa#jq)gU)|5KwEk$A|sH4jLQb>s)jM2YalYmMaO1S)yP^m%ySX1RUi%ID--w=hCm;wtD8c-6f zV8Joc0FM6nieRhA8AGu7#f*sVMx*v{N?BElol+ ziG?THHah8uRt)UqhRpGOi5^k~=HflaY+u+(;t0QM7!<_2=@kh}&G za-82Owt~^t;|wo@DZ8m(>QNl{YI-J3$450z|7=h}@s*FNjSJQ~6}2CMvfnbj&T&_9q3y zxiwOiJdc>DCCn`K8xTZ`i+W*vAa&*ht#$!fLHWdxK?l}jsouu|rWhKP5{Y1Pt1*HG zpum78b-l-~2(%beQc!a%B~=QFyNLNjZN8W`sO?&+mZYyltkeS3+DNn!qyudy3n5FB zmWq}GC`P+3h8Sor41I7^z+}jQ0vHSfz(X(yz3c|Nf!7QV0aI>WWM{}ic?Btu2mExn z*9>>a;8h^jU;=D%Mz3qC=KQkSjZMIJ*U$SMhL6RV0d=QVOdCHd+A~a zo3*`>h}Oo`R1{Q$NGN5Dw7RxfB-s0dj)9$$nPnM?VgVW2(<%mn;28Z5IfYsxk|26Z zRi1fyOKL^Owe8#6rCMcN42a~5u`xHX1OBu)#_JZ*&yXcju~etZmTZPX$*`Hdy)H2E zR+J@Lg+rkNtkd%mIw;MgOpRomR$t5ta{|SPIYa{>L7hkabvUrHX%cD~EKv%avLF+b ztn@ZMhkR!wBv40+rndr`gJM~(4^1r)57cdpCEmS49D|$6N=lHV=0DYqywuQl*d4H18a?MGw+8wS(%qMWCfck1e=lH zdwnrpwM8n#v=+=rc@WwtlNK?y;6&oct00QB$`^`(gl1ODH_Z%gCv7#fde^I2si^{+ zx`L%uTmw--)1b8Jd?$?Y6ycRACSg{m`(Z|BVGw3|01TTBrwLvKs?$c}ss$mfO`uR)qkqmn|`6W*|XeAV9UxZD$2uqOz?@!5J75M97a#cGDX;v85VlMw2^V z5Bx~+E)VkjN|z7Brl60@acv}SZ}l^dyTiW_JRgo)hOw)`RAkHzdSfKS$d0V7_C~1s)A{@VyzI2HMIK1{@pPD015bu!hCs&n7Y&#J4{k%%P1No193jEOmxQ!i-V~u14fRo4ytl8G#iK!m;zuE7Swv+Gr_9$ z4=At@WJ?LLkY-@-={CmJwI<~iaJ4D1LIDRXmVzMl)7KO@o&}Vux&ZFPWj8Sd3y)s2 zd>bqJ6>}(OD9k1Us*I)#8MW*H?03@&S};UZ3lirk5pZ?(-`9LHvV%$U1T##S32e96 z>U}k~0f}Jr%c~+F4h(}N0tr=;GTTW#{{T!n(P}yRoIF)p zNTEox88FwFwf_K=gV^GgK#0RCv$r4N=RVlQpIh(mwU(m z0F+}_Uxtj+Ob9vvE)C3!fwj*}bizPqpns>|A3g*4fx>XrDv?WxAqfD(TH5*nKc@cQ z@qIH-@l(aP4ke2J03G3VDS3b)sl6iysn_j~k^DP}tKdE(!*SFL7vSm&p>`z>w!O?- zq~q&fjl5ou#npZa`1isO4tRbqgFFX_a@aQ}uq2>8jJOA^1C5T0C;1c~oqzB9`;QId zYtZ3)wLm`HB%W`hr48a|z4z2l|RceZ9WTjQC ziM#OruA+d+U?AM-y}fWEw=n@L&0tisHB72>i+1hb0F0?2)E-zR*h2`| zNC#_2^u8xJ1m>!>S1GwB0G)T=_c+5xp`!wX6v1>kTQZeNS^ogaH~zy6pxK2|i3Ncr za{R+J;F34n*IYn;RYzt7y9*Lbf*?;=u@h~&V5!s5XLBq$R%pK~6V zDu9&8o?#(K26d5X5qo{{5C+yX+MI@V&c~M!CgRur+gfnUsuMEPsZt3gQ3)#$Y+^5I ziT?Rn%~H>wEC3N&1PyZBezUI8gQPM5u1cy9jA^4dQ6>enGHusfJ(c(-qLu~Nin)s_ zvaHVGZ~p+>SlDlgb5#{{y0bEzrzj$A8W|QOe!F5;LWLPhsAUAKU8I%owz2fZdXLLO za;YpxfU&3>4xW>SPLQcv3BN6%7O65wEH4s%#$e+qBUJ#?UT#f@4ZKWm+~U1jYfTv} znH*;pm!6lkh%tGCd>BeKS*r?pl@4Y+umcRybD$R2zg!OHTiTHB9a_CaN;H$1lmVH* zGqEJtXnvdFO6*rL9#JM>T6FGze)5Glnl4?`sYO`>EZQW2vAOlZs=ZaDiq&$k%82cu zgP{5iH3Qw0g|AVlg;>Lkj6)EkJb|yZ$L{!p!_7d+@`oeO1d}(PU*B9qA!1cqFa=9J zPbmNpNa%WhPOahGDK6oeT)Cj@w6nTjtL@$t*k*90VZrG&hmZ=D7(+oib31tg!ENx&U+}{LP z?~%z(e~4;C4dnV zq5UFb30m1vgaWG#1u_$27D$78+x5e#)TZ?cL$D?q_KvF{Y&8%~&IptRBFv+c<{5Km zS0Br{y}IicwhjYTEk)f{3d;g>jG|!cte@+FrWY%kV22_UsS?(>i5*UxZG$yvr3}ke z?n6=%Mq)gqup?c5-nfMN6Gc#$NT?ey0DQ>xR-$4MwC3KmnK%5bDH`WPmjwVk#)DRYP$B7!1LHfL1JTsk}y_cfnN|!lFnj zY%)YGvk99U>3uO^1E9n)MSPA!1$tXDbAmA_%?AY1?gZ3oyw= zxrVC+kkWOF0c(IF@$apWGt^aeETsPc@+l`-VH%H`Km38)6|%M^X__lgw1!w^0Wwrj zM8g@d-f_`+UZAE}m2qV-3u@LPOk7@Vag7k9hlPC4=7Lx_&uv7Lb2gKuj7b>XQmdFN zHAZ@jptva|`VvG;Thw*NM_J&iTNtX2?2b^>E>k-LB%4?cns2vEI+DB9MpzXpCy_-> zFQaW8J9oe%Ei%;Jd4z}*j%5r1w@viWV-e6%%_gd_W?aCDHQpkD8oi^1+?Xqh9{l8cN7B za@Uyy%1jY6W4C>J<8vN06h_2>6^VjQ!`g4t z5CuAgsI5f^4rb+oS%|WU9lqFF5X#vRNdq(~GFYDX)N31J@oM&4rko>x?%#-I;uxr_ zK>#xX(bNqz-uSIWxnbI^C2b((D=c6FEzs+2jx&c!bX_V_BA#Ts1vy^k;Ee^b9JhPb zsmnP5n-Ktl1+@T2O)v;Bw6QMXzm!xlZ;MNb_{nT(F(m^xom6M5^7HRLIW3>3COx&Hu>xYMqLV6%j%<*!T( z(&XwO1HQAqDxNrG)Rl_kXS#Stj_^MaD>ngIYE@Wjl-cssH@J&Po%Gh&u~W*9!BA5Z zP!Qlq5C|k4_ZFK*k~~YoczX5t)lLo8j}^|fMQD%(-=tdIeX;CxxP;*RGL>FG#A)%Y zS!vgCN)!VHOdUk}TYH>i=INFv?y!40MS8q4gbJwn5aeJ%07Zme2d1VX_^DAC8m!~Y z6qY3=Nn4ofV>TbAH;hGON{F&Sm{(z;w*6zE?}|J}4yd42$Y?&fgo17?0q!mL$0922 zHFVvl@`7eXVVP8Q0_SVTZDXb^fYOL_oT^v|B*Z~kCs0SY>w%~W0t}+%lCzQw+Dv3M0a(gC%M#KrO7S3kqiszpEIxJSw>aE`zX zx`O~nVR8@F#~eo&!&BjEQ9LbIslruk%T<8Rr$Vftm|v0OI`s6!1!V&{2PCRHAj_}KB*f|Mf~rL?B@%MoRb5PE7xwS#v|(@* z63sOhA1oI}2e!vS_tzbES4ScvA!>}wVsonIxddt6E==v#aJE*bPv;8FdsB%3KqmLs z+XYN>9x5uiXF0A3h}UucFnmFWrb5X1KqdqEjC)&OL5xFx%^5*?6zS(v$&r{4NRl8i z_L~#mX~ZQxVcFRlZ)~SiroAvK9u=~j(g2en2+*7Bw%BJijeN9Uk_VYGHNXev7uQp+ z834dSQzJR^45TeGcg+IwRs`BLJ+O2twIYQGHBgYM$s;M#a%9KVyWmi{EFUdTIV2Gf zNg{n``d|{HRHx=-dWQaI=n0PTZ|#Oa8BLvy1xCmen2WIPNijDO>4ws*N{&p1aTLL* ze5Pcrt_0t04_qN>HAJYj6_~35VIYf;eawBaluL?_Z9!rKWn9t$0BBFIQ-k1IvEjy6 zd0?b2X$A@UY2W%`Y|d&EDM%0rf><3ye|fNh>3~eGVx1(Wq-JXvj*w4V;6*pCPE_)! z4N!?CW2yc9aW2CYtU7T`vT)NNh*klVMERm%>TG(P6e`ne!_+E3Bg)Y`9WHHrEhy6t z$2BJejJ{%Wh@I~f*Sz4;oKkZIxr>=p!%UsVr_2Y}aB&dKG@7CjLnr}>kp#?y$m=3Z4GH?fm1kx1QR-`YLK@6Z7?>#$5t`4g+QVmj_oRh? zM=eeA<|R>5n=BbEG5-ML6W?4#Ri=PFR7q=-u3Ks7U}#P;9HOT&7nlTP{#d@_OcK+| z7^wWTIhvZ1OdCzi@31;_7=rmE6g7&h*yd#iC<1Osw%eY)q{$U2Fpz{KjNlR#WXRLd z^^LJG3-YO{%rb>YwKJ{8!%s-U(w=IlhKVHRP>XE0xV%K)(-0hzYOAqoWIF;wGOfrU z4G0$Yo8W=x0?AdZ(4c{61_r))Bjik4cm>9QQHIRgn2vwg|f+!4M3Oe&6DGW5=4 zlTij_TX8sKFVJAAONvocI?xLDEYd`RND~u##8~tg8kt|1X;nfrB)^%A$(cUAVmc$b}^b?QDxVz*PJDh=~hZ2lhZ^31W3wsiLs8I_l!iyWh!LTbTthw zVSwt{g0@|BumBUSyWxeK=A`E>LRU6>usfYh-01{+VgV_ZofJq4q!qa8Z@rGf#Cu?= zAZ06;macwM(k5(5_JbM?E@Ka3u+dtYhHUiyR$g$^U}isG*9)wGOLLKhM^ykD7CVI^ zOc|eP!|K*EQI!=;4AD=Q0>(AhNf8ry#3HfcWt%twjhF&I{Is^dm%`J02BKcwvDU!nG_6&WkrW?bfE?z|?BQR+M z5)2&-`u@yg9_Xx+&B>^#TRk^_kO2y9tbJzMVXE0sIWUOfR22yz%;mlA#t+}DFokNB zmZPDim9pg#Cq|M+=Jxwy#X3KlEIk zl`0IV)Z7U36O=%REw%kb9Yzu1)K3k;(+m*tgtJyGOFL9IAkLN|{bv1a)S}H?XH#CC zG0Uc<&zizbu6Ekuap<~yY7j%pueZRI0Qsvb)Txz-Boim~vv3 zt{ll55@T(_Ab(6mB_g5K@*>$ogWO&LH$4U$U7LueX)Pcs3S_IH2E^O~Zgjbk2ks3G zRYwm`T7$~RK@lK9w$md_HIWb))M|@S+sKnmeptTy4ySxa5l%RDG>BA@PdGPW1cFR^ zTTL-5RfRH25VD|xk;MLwxdh|l@HZ39- zKm-G}q9AmgL|Spa@ID0bDg{7Xa#^1`!$6xIfY)2jIJ0tClBzmtUN^c`ctJBHLq=3n&6!}VvPF;to7sg!C&ox^*(ZqtKg9Rrs5GODyMf+>^>4>cG zxq~iyYBOdxG8fxV(-k;S6cSVv0Dw`60{bk%n-l6aj9XMHwIyAdgpg7%BpIC|52hw2KDwF5TS0|9!AKNx=2BP?!r})10KGIg<9te& zKZ2^YC<)D(ms6&e+J8-P(0Df(YSCIXKw8ulPn!9B#t4BkZ@$*RU|MG3R-uAOXkd)Q zkU;|O1?ES8OjE1Dmu4$aD`*Id0~aGrPqd$Hh+xz~rmRc?%!*W8=r41m;!g~$%}tTH zdGe9cPJnI)Q{Mv1qG;=QYE`J>qMcSRp)@xc65;Z^)0n~vdCs?n%bc%V#X z01_BPm1}FZy>aWW;mpv~#%iDj3p0`dH|uVjUu<%IKgV!X=~dypNx-D*37ABvJ9j$u z#n^L764uV8Qd>N$iQ(x59GB)&t2qE;=14h#BEkqVJNLwwW@cq)r%a5VWAh6@HX6s! z#wd!*;hc3|2}E!;onD#D7nIXut(HVvw!7L|c|l6W(GkvPEg?vOZloJq>5oT>eepRb z9@CEGu?$qfE}-XZxqq2No%`Y`xQcrua=nX%bF)?R6(o6zjbmHer%m^mN^%NRAXJeCLzVvkCtauOh+Ik| z7YM`>ZU_c$4TOofoHI2=L~zcf*yqgP3D6Vw{^Hmof*G4IiioC4%w;x!1><5qm=-Qe zC@c|(2KHbkBpq=pMa?2IfZ<5YMxqVoHow$H2}7EWjzKQ~gLxO9@qx(`p;TN1=2T^b zCBOke>PMu-wu~C&IUPYI$qkyFqVc!QAJYvqnwq03(`sabTrOq}d&RnI+iWf3oi=)( zl;md4ilV{(1|c~bX^I|NpYJM=bGA}0Bx+{RH9F%Gqz0($wCYY`7+9gog_tsy0Yr*sWC_^V`yQkWS6snD`AZ7}062pqsMbE4V1k-;Uz|dy z1xj24?K+R_aOn%lo<+?J%tC;sOh7sTr1i!{B2)^Jt1_WZRTDP9_1xn*l0rh}%PdIL zkVW_PJ4Ons(?B`&)|?+GAnC9>j_g!2L8WX1PgXL zjWup~L~vA^rf(oI(M`3@>9+U|QnFKIc5Y-ss~B(_yiKtRtb`$RO+ymI!75Dq9e~z5 zVz_Ys05Qu@fF4+D5X;+RXq*rv*=6dAsZ2Q(!!$5kfC(_sxx8s&ey#J+iWN`r+36D~pr7T73qU<|#DZ!XN`Eyo5tJYTOs(MF+u)&Dl$8|~vV{X; zNxt%Qo#)Wb7K=|SoZ>u?rNpTgp50@i)-b{whfTo>$OF^L48SmKH`Ar}!xF0iRIC1G zV8Qxn}%|w$8 zmB*9;(?Udh&e-#^MRZ+I8AU?tQP4psxh4RKXqkY0jvlC*?p%4VHuq5Wa^t6$LEJ$*yWI_VdNiex?-hlk0 zzWd)CSH{)9i{p3?3Zz~MH7g+Vc{RD;d6Tqbv{!UT%_x$k**vo_AhzZY@`xDoI$THb ze-n6@5k;Ljd8tuVya~Kb=EU`!bl{JC(l5rU<>5de)y0wBiU_Y8|D^PLoP8znt63lK=qnGx35kgv_Cljd5YoRT2lQr~F? zEv)0wrK6Y{ZfT;eR#sOB=1X7gruyD+B9V6{L#Y6TSu8IWh$hq1O>oLIK*Mqy1*BSJKqift`vb4YbgxHw;89dhIiI|@h-xzG2OX}g8AH> z(bg{(9>dZ_l+}ugbOss@q>DD=f458rJXYb(V5;n=^9egeqeE*9LL@mESy>XJWf7R_ zT)`xXHt!!yVxfBOlfCZKJz=*mFS#!jabRYDd-=j5om zh(VZwAanqUziAjK18Tb06xNpyPL^5oDfz^LPfdD8gB8sxYf>qRVoWMLsnkw_*8O?| zh6yf)oj{dVn9R%pB!L&X0LSTpTDjFtCo~uW(UdXL<_?7JMi`uMVo^t^BBj}aubM1k zCQr9aADWnDOzO-$xy){EKnJ3OZM4+jQI+b`W@+9)pHKlBUf#Z#K2fYQjLFPm#I{up z7VCYq6K`AsFPK4*>XArg4B-w|1&Q0B-)~%YTm=^J{{V)(bB;7toiRuFYFXD;Zu-u# zf2KK)2jF<05%E3`hT%b}UbR(Fiy48mk^qxBcZ_-;;@<~L;jaPke}=earnTyxXA~Ky zF(zQe%zAB(X|7x0FXw{9tn+UWGw`)aK(U(1Opr2z4*++t*IfoW9u}ENidjOiNDY}q z&Bk4BAbs)A@pZXWyeEgNmD%{g3J8EeF|ELp+I!=s;aZv_(+^WCpha1ROY0YqHuatH zk2kS$FL8c;aBgVSdTSyJ5?V7r`LqIWHuUed(u-88Km~}(LYT}!7a~uwAP%#RdXFDT z9cgg+>(w?|bg7ndH6{;xNxl1HprOO@P6bd049d#}L1C%O15bYQ7_8(#apCCGRpG!j zGZ@T-K;1^O2kb^AEB^ouSznmvmPSxp%NLRcrKESzTdkL(Y6n``t0SlxReZHCW0YB7 z4P&phdbHVj%qbp@#AYo90`}VR(9Rkv!$#4(bBCtXnypbY<{3=MjkdH-*BIDwe;D{5 zgHURfd_gM`jZ>FH&zQt{r%T48rZ_){_?6*lGShY~P&$t&k*K#)Op6S0DZ&(|nbyjI zGPK>MJxCKheQ}|OqmD@TNsSjrS;zh&c=r`lHwRje4NoS>PnSo)4n;66!AY8 z_<*3V#!wjz;Iy^ONm~tlz2^ksoDzjeE`$>yrY2-=e_U+o=V}yMvoALwEF$Hi^C0U7 zPuCZ!)N~b=L%9|)A%^!BgY}U!fU8+qN^^^vBo*Z`AkL=NfM6XgbnA9JOCJH2Nn}Yg zi>dj+)VXIKZ?Cl9GrMOvklO(Bvq03Zu_uL5-Y?|?!q=9>y&7ytsx<@t%y zJ!crJAd1dcI>j|I@@HP8PW#3)(XjW(H7L3VrVgQqCQfJ{tj}|YF%H?0Lm~2oRs~46 zm0CQ)-%;NSq>87S#-?zKQKdt9OxzQ(Bn`;c_#;v1&z-4~Z3Y;KxIHxjZgkTIz(*`p zrUf-#V}ewLu>hDL#iOCY(PnR$E^@E|Spj4XqQ*YnxKQ$46dxcflulwgb}~%Gd{0`RdB{{UEp5S-Sg8k4cHFiq|wYwhdnf=`fZOc0`?i`}3F zAREY=nHRiz&L)v?24E$ny2kxIFN|@N{8Tg`d4-`+Jh0<|F2)!EKxRk_Wk z($pcyaoJ!J2mPRz|0LGYY0MM`8-%T+Ua-#Vmr6ty(iECe`!+w}_3%&@T z&Y{?>Iw=AQ!0M-SBc=No#Jr@rsrily!CRTo3mxQJpuiHPsjG!bYXzc3rX&uqJ8pVm ztw^mlE+v(j(iDKplu7lqz>c$g05DO7D^to;>zL+@w~zj(Fp;lG!)q0(n1V@VFbT+{ z3A~beb?NDatEN#fR47@bWSh;&)#-&Rqp1|yn+7GyQn~GGNRa|#&8`9#wgSC2 zuBMV3tVwGUOz36|<=gt=UZE;cDgwy4Vb=Lz+SVY*KeLRc%DgipA*fgY#aNIQ;@XKM zTU=Nbd8HZIQHgz8z`+){fhH~g03obl!1OJvm8cQbU-?BtH#fI<5vNG)jO9`RVF4wC zkf%})%dx%n{V|kW(oRn-({?b{L)DuoH1Nb@&FJI`64wjfrFiXrLJV0`1K^BJG~OxRwDgGyg}4Xk<$eg$A(B5E>8S<*q)!4N`#3K$I&1ZC^L zrXocOPV{ipj%S2wODmZla${4h8=NYY6ncottg3=JZb^^{g&Ifcp~ri~{v20cAU6ii zwIGAd1`7ZT5QYfwvbQrS ziGV;8B=4kc`r)rkFANQS91?&?6*7`70wZ6V@dpLXC`u8P)n}N{tf0x)UdQyoQC6e? zGI@EUD`X;KM{|9>v^cJNM6%Zf$J49AQ#@!zt4TR^5W^oRxoE$8YcqJl{5D_2_?}w| ziqu1SrqFk9S)Zh1QCEup0Mq!A^;8NRN@Y3_j~b4ofpffz<6Xk|_wf8%H413}KoOc( z?G`umoMC5*i)U0YN@=*Bl(kh!ej-6Aumfc?b2)E&^^1~DhX&Od6x6Fq1m`B~`bl62 zwAfnz08Dca@eK+JBCk1>B?6O|C*7e=p^DGF&#n2eysftzcfkVzQg zD)w_*XjdEY3h+D)MdBqS6{gB$kUo$)=}p2(*j< zVpOXD2=h5<00_AN{WY{7Ty7i|8Y0sdq(wKeR&8TVcIj=l#w9ZL%o$67jLQns&}w!* zhfx?cHCzgBoGCMuyv?;1)&TYxRYqh)6hIGmhB>4VVCfSPAVl8)oQ58&Q%iwS>XYPR zNIFQJMW+C)l`2h8^%_evfWAu|Bx@vf`(j8y^;KFR?6OH38T9FiG}4_il*UJ6@<9`? zQ|YOj+AzofhZPe)F#!JnfwkxV04-$Cv~|I^4p`EnY8I-=on0GI8(L%zu@G&Hs1wSy zerPN+N1A(sCL(0(9k46~S7#uWs7cCf2;A%IZnnWeFos}9FDWb*(sHbIH}4VC45LzL zQ!FzT7m`5D(r?g5d_@HfkxG?p@UD=+LkK(n0L%Psg&JW3(xyoB25BUT+>xYDq56zV zB@Cxc>#~Is_ER+ghMzQhjX~I8Qj)!3Xd*DpBRR2C+`x@*tlI{(){s(+(xyd-B4*@m zZMvK9i=GeQJV%Up*A3yE9}QluekQLesf8vK+_XrIG}_Q`u1PClj@={OKLNfKq2N9f z;vXISN~pXq2(A1zO2ApcGVnL`BT{KZZUQ@b7~B3ZUii^w4oi7^z|;!HdL=ZvLlR3o9C7_rE)ZWKIlAa!bNdOhYXqPWl|)QAo>t2d*gB8+(#MXoIv1w9ZfV}%&)`{ zLeW;#AN-(o*g@-|@y-UniTq&PH;2-9b5596&1GG4lP60Pk6ieF!s+-Q151P8sq-F> znchq@iIOcQNz=I&#!Q~eb4oFUeQ4NtCxP(31;V8oLz!3o%C(%uN~T~*+d*t>_|7q@ zG75860aPtuPEsPq+H~7{<6Z*Vm=MIu0Od_Z%1-kmPc`=Khpu8+kLMsTe<(0aX7wOX zsM`2cjvKKxxQxwUV6Y?;mS%Ohi1)GYjc*^twJHd;>6NC8C5z~6Riu_e;@l8Q$)GJ7bU^Qk9pn^u$F?-{$20r&drrE3U9xwQw zCZ$9Ro||P0D`mMdqj@^|`rsEMzx#^70DgI~BYi>hZ{HfWA?b{%E0SOx&E$WM__7h1 zvmCMk3JVp?!&`!5Q|vuw&__y!?V;*WxDWo-NR@I3W8Or}kKM56sFguuQ3G6sU;!pi zn(?4I={VNrsgOHLfdZH($~W#o{`%m>Mdh$?TAhhvE~3XYK#jKUaKxb8m>yN9Nz`1a z)OmF2Bc=fuQ$V3bH3so2B$zhTNCVdRWdTgpq_t%(Lp&A)3+dMTd-TK#?NI3y9KqjFpkTm(GOaZXJ*4V_$ znyx|@FbivT5Dwt(cOIA}a)@c>T44cDpsLt)>wV6*#!5FhB`JnpO;Vy3FKna{B4g9{ z7$g*!0J&V3{LSn|#2Y}5ta@T8p{EGO6sCB}No!kiXaN26#u{-<6$mpy8AJxZ%0{2d zhycLK`76q>K4nlgSkgY1-`5jJ)2ywUoi;8DFo2cl2{nI z009@04D=)da4S_&T@{L|*f~;kX$NEJeZ~#>De@IjETA!)#K|)~G`CzhmLtnfm^B@W zg#^ReZb2XdHc@S);hdn%?^Db`3ak)`C#wte6X|R<-6~Yhj9s04zGL}dkCfgoAFeBq zUZSw9jLJq(HzbWuYku{JmRa!bH28UQ{5KE8JxV5lO3GW7Ncq4J0}YM$#Bj}1ho-`t zx;@raqw>oeZv>ELdW~?ZbvaJbS*p0qt(cf2a~j^j8(iRpL6KOJhMXu^3=gb)y$AQh zAzCt<@Lz6^3JE6bzJ*UUo^BT3do*hcf9z`6k|RcO^ILsIYsI+LF+owgc(*i#DcHA1ql zl}rM_D(M5(!f;%mt`>=x1eM7Eu;1@{4F=o6CYPF41ea0(kT!^jIbu6ulK?d6q^&B( zr9C6eZ6|GDohN;9FbnE464R8KYZ%ZNxIK06h~Z|Fu&8rEmnOxD8x=m{_BX`S4Ni?p zjG!jvNNlDp2IAm|(|s^PHl0d_y)>uAx;aRa*|Iq>79!{At{^Z)d8XmnN-75B#;|YO zzR}+VN}^qks3k%pBGGq`EY0gy&?0@+QjZML~rWzM5ETB5n2P%+1nh6t_T4p_t8Av#! z8JQoN93v0`l5``jglVK+Fg!L~^pc!%5Cc#&-ujp_O|PUz4U1tYa-6eYl}!A~=P915 zV*7nC{tt*+6@_YbOB*Wu#YiGSAnDg#$nT2P0x4t+xt^I-rc7ibef9p=!B+;N4rL|_ zIhI%fd+XE?eLk21(dhmW#wUn1D+mMOjB!g>iFa!& zg@w4ewXAK|uGGyt(2>%1dfIq*55`hY;e|MotRxArz5OjB^V=2ppNHPHFkgpcY07fB zkTsLjP%Rqz;;)5xSitjeoqVA)LDLjoY5UfS-D#5IVj^ogZWWz>ZwMzCUT zbvkTEd@5}L--C|vPs8dQX+h#V1venD6%l;am9qh31Ah48IPbynAb4jU{LIAi_=u?l zZI}RJM*jfZW7}x>rxld70ywu-Wit|c0jyk4&|<|tHL8ei9VraHX-ha3y}rk+-xev~ zBH8l)0E_+={7O7FttRl!Cyt~NO->m_K#gc}up6-e69XPMTZON{@ijPpBArS+LKvw{ z))-h3Vki7YKSH=_d@WN8&n=i1G_(pt&A($FP59^dJU%P%(eVev2!qCWIwV)537#sR zz)$li)2K1i96eu7vPZrgqqn8%7CClHhJ2Y$tw9+a05k`*>)z+@hQA$Fv%N>F3{);q zvNFUG>HTq6C`Tz$Ln($*41;+W(l^8@4WhyMT*_#YWokBoQ+h^1AzB9}O8Z!*X_ zlV}=anycYFR|JUsSBG&tKMSIBxOWPDPUPkF`r}i%dYN?n3W%!$sHu}OLaJDRWP&Uw zN&R|YR!|_LRn!s~>_)%JM0#m$v0;$BQ)8DZm?kH($7qN#2N=|f&O+5P(;j(@-okrd z62-AgRYxn#ssRN`EatpSk=%5-7QwA0EamLB1#?`q$u}J}8%6sxE=o1R)XIVa=UWnW z*KLnU^~N3@RJAqY2@dfDOc8E`#@>^x#wCP8kftitVp}t22qb{rwde-$F_kHE4MMVH zmT*K#JD>QIXuiYK4M5ZukUKAz%wb6VVs-7N8nhH3nSDTZrgG^T&ZafgYl&pCqEkt= zM}P>-h#PS)F&}-#vyA@$dzYO-QboB$lQxJR-$~aDP7R@wl`vTsI+e=P9qtaN5lV_8 zqghg&^5p?s<}e5s)^I{iMQV=oofOzC1Fx4X0VDzs>|^M^!k>fb`~mRIe~UgMrJuyB z(#ye7I#L9D#2x){r~C~3Ctnh%zZCpc!lHOr2MxngWed)zNtOeqpmynu{ABz>r{b0B z@Eko)BK)YaXdnn0jjtb3g9#*@-wThM9sdB0Zdkg8(h@t_)s z8uS?1@N`p>>rH9YVp&Ku{#Kp$xwzlh<6Xe;bm;SVg2`EVdGln;yj;cP&9xA3jp{8h zo^~}tBSsb<(G7=obA{=7l!cMKZx;OBSC8C;!`b0)T#|k+}sWNcZ_Z+ z%IA`44G4edlRqz}{{Z!hYQl)-9F+W}meZQz2CxAWb1{5W{yhsCbn9k7KqRh`O^j=y z_Jh3Rk?dD&-K|znK13AQiB%+%&}t{z_r$jnsZTI}I|4~8NhAyPBVcC7zB%f?D@Kwy z75RApDoN%7G$uZ}O@^mjRH@?&N{I8K4B1XvW(mN(!_}*eR^Zh+OP+oR0OQ@#4G`v`&w_mQ@%HE;$w~B>#7@sXq1(9CTvc+8^H!* zZH*mAP!)3slHpx52suOnq}yC-^tw#8D!B%N@+s3+42uUV!CAJG9pHg+A4zF?l?6gG z=L$w{{mMwLob=+dODV7OB~ zgdHY!>4D6}o~0CG7=Z<#8yf&DP3AN>HXudHuPTx?H9#GgHo)pmr}YF_U{yjf$x)mu zDFjZPWZprx`|XC)Duo7OD-x^?{!ub|Tlc;cKv1glmE$GCvo2^SYZD*2l9&!hGL$SV z5rNF0fCcSuSe~Z^6P;TiUzagbEw#I!yx^Mj*_A~=fJB>Kcbn`m{vMJi7N?5lB_hNZ zTNRyP6FNw~GLtr&&;lPSn`ThKnsfjQUN-gGZGsKTLZl4223BPTO}Ycz>9F@@4DO9A zRu;w3`AmZ>J$H>r#x%0Ir%fP`f7>Qv@BtoguolFz08-T#Gmw;v0F1zeo#2sp2TgDk zmpUlng4PNPlaz=6T)^q94bBfID~P0wDiBV18WML=eTRK9Ii<5y0+lBKvl{|n-Zt1y z{@*fYlYP8MKQ=ruX{dImu3|Q2?y6voTT$ ziv^yVdfxgRVpLR>ti;HJmB0XQ)<1vihXIQJ0GwPEv>JkBL}`6J_Q5kJFdAsQvNL5? zfXyGu28KHIwlE{*2>jM_n=Vx_#^O7WNIga+Sjl6U7|)f!Dm(A2Oncy>3NKMrYMPFy zLyTDk?`F|}!^GFclJv_6m=Hl@e;FWW+yNQT*F8<_3wt36sXivPctJBNFc)9NmHN(PwRzz0+1$|$WebV6(5?uY@m%T zZ3%)M48c2{J{JPrR0m4;elt4v5>e-x?S@T{j2HNTN!GvbW^#LJ{g#67q zjgFSdYHM>?Skf1rVG0+Y5A2x$8YO-I%%#Ty9kmi z)kF$NFfKyG0HiP1rSJ>OAc<5;cgT!O3mw3;$NkMmh<6I14h*5cdT9Xp&go(%=0us|XS8D0)z ztWJc3rt^Jq0Sz{)Q_L*GDrOQdmS)@xQeR0EljBNjWzk8A3stx{Rgz* zfI?kr5YAR}ffCSWL|AF;dts3@Hj}+&VMtLGXO^oaa`m>OSl3cyeDRzY)D|ED6boImd4mG$M)cBH#P|v7)&@Xr;+8p5X+;??RYaKsv<$%)&b^xxblG)XTf*VVXw5rooF zTB!>wNq{48dy#(oVzou$D?3$HEl)J%f0)N!*ZZ7#&%>TE!&gKUxXPlYL6|fGZ6+l8 zX{X;EzXjv0!P2ckSwVtYK^t6~clW`%E0j+m{8Ri5;XW)id{@9S_;-$v_k)sY@do1k z8&5Eqyp1vQ4~+N+ihMi8zX{{K4SoiwY_U;bAO5Ta9kj>jmk(Ej;=GMbcz4SL7$9{6 zeFoZKc%KR3c+knjQlrFDIZj&C^8#-kx_$A%44sER)Q=y>4`=Va>u}aN+&Nq7>^pnh z$qZ*7l2wt)-g|XcndfXWLXwqvBqxMOp^%hO=&RrF{(;Zu@p(KxkI#6&U$5u0v^EQU zPZ9Bg)A8D^@7>w_{{xslW@}CUPwn$9jnO+bzy3)(-05_xpf2ri=ZvO`@Ltu+t~&E& zHNGEjS}daPlfB>e!Y1o(EA@<<^Uqj}Aeb+5AS9zV9kF9=voqj*?Z2P@K&ZSxPSoLU zi#F_wLq%1Zig%>X&TO$}gVF$={Z>^ee;e(;a(KX*lb8wHe>bk8u5h)L1op{+U>r&YXpZowde(c<37N+Y%o zy01kPwz&M+Irih)+tmL7to{dJpbws`w;4^iOQOcB_XR2b;_Xe1|4Ob4e+ko7lFi=K zO5hS``IG5e=i2_gpaJG{Es^RpmIO1cUHt3Oz82&PxieVE?WumSv>)GB@yAUzh4Mdu z#Vr84-p$M}0h+v4$3Z&Zr5^r7|10??hP!(9n#=JV8{o~WD|PW@t^OA_50?W230jXd z&sP8SsDJC7iwcz5$^Uy9BL4{1I&($r_3rp4Tx<7NG|HX1WDDJ$d$ld(#pYv5@-Uyn zuZT0#ME->OmMxgL*Ru_x?(2k~UvX6=vG)5cw|x&02^s`*?^QMy$ME!XJ#>=88j@$i4*n`WC=_^k>mwZgyI((*HOZ&)o|Ri}K`e8&An z;a7xNzRjd`!c+_@J?hGrK;JjFbl;qP&A9pH{#5GC6l-=>7KGfZY-Di7NWY?Q@=Yf0 z9TY%LG)JSitBQGCCi-&k38Pr8_dk&mFR+4+Co(u-a?~woSrRc(xHdYLF@bKFfiyox7#Q_ ztlvnSbe;|;vb1x9PrD8t>cXqe;+`agq}p7&o<;)>qrOwf$QX;H7<|OYu==;>5XG9Q zna>O_uU?a@B*ay=FzL`$GCI;Kr~UW%>OEu9DFRNf*UMXTP#ZIroKZb`-$h%|(!xlp zWV5S3&WHJLKxR}(*8+m_&=GwEU>1LLmjA~UVJWVSUt)CJETpcb{;M&*=Q0RqM^wZ< z>RWyIb9j)lmE>&;HNe*_TZLTep04x1c`CIdH%l8csz-ZUGAiPm%&*K=D7VGy)w(<^ zL2+~tDv7haoK@|6oHQ%e*d18ZWTYYS2H|-0-(F}Qlxgm&oce-^3pZ_b&IeP5QbQV$ zMdxKid7F9JR5gMY+F+7H%4ZlGck4PCeiuJqGm+6m#o_0wKmvHRSH&j_jxy}4PS&h( z4fD|>Mm>TX0(PY~`?fV8OdVnT7@32PGo%rD>w2f%;Tv9T$it<%hIOVHz7)B>bv23a z!|rxylLz~?S|p-Za4uL=fKCRhB1$oyWjzM6o<}X03STvs1NFUxUL_xq_Sey&Esbp!!WB zandoNhRM9a7a9XxHI!+`L4-Ab5ZGJ$ZReHso+y^8oSNgC1U`Kp)LPf?*r4`;;?B8~ z%7QK}HO;h`YSYnnUWT0|9+S&YI8!MWba4Wl9IAeSmwIeTXeo@1!P64w_5Z62IX$2d zq3=F3)uWNdb!bbYPVYELib(0-Pm)9e>+n}^I(c)l@E5uKwbT9GL~nx;lKF~44rbY( z;Uf|Om+gi|HZ%bKIpAir0(I6MoZf{Rbq$8_-PG^zI%;!o!#JR6Wsb#lVc$})gvK<}XMgHY?R9r0$SVzKSll=gil+TM=zqgu(3%(zkGMy|sr1X~p0=0jt+AQO zD|6Jq=)>U8v!-qbhy62#noHPK8a67b3wr^;IqJaNh^3Yu{5~#jx|Lj546P(UR`{CgG+hefF+JdOf*#FjQ(J~ zQnR8R5N)q$;oqjw>+h#P`(=4FHyQSs4rA?oyj&kM2i&047?$y2Oyd0AdwP{`Q)8}Kwx0n^Y|F@J zc9COO?u6HQY#Ic=0!ztqfha=KMGsE$wkw2H>X^9bZ7<@f;yjkexn)i9&0}AeC@$ayY8Wp1pLZ__7(<`% zAd}NfOhutlLWoawlUSiTfg4p#Wt?+f{yipM?lrG+uuZXL{3HHiv_Tro(nTY@l@WKF zy>FE18x;JRmZXSkpP5!v6C$zSp%KllbI#x%*=b{AedK37@5QB>qncmaEOc#XkAcjG zO+=1QF?S_>wR+V#2!Z4vP4IV>&Ch4&^(cQtJnD{+UXVt{q8eJGt{D1@%ZNe#xe;uA zGWNEoXq&%}p92eOg{G@Z$hHsj$kl|^qA+RGKxwO(AbTM!Fq$R(M9b4+fyY5{nvVPW zXHUui+(j~3I=WR6R3HB^7^a*;;9=4L)25xevNg*8qY4EWJs$iSv3|vNn%7f@@j0iH z1Gf~{g>m~0@RwWh+g*36h*y+S8yi+f_@9n4yFvNyPuP;l9E)5&G^bAq0n*~i3DM}A zBTr+#psP+MT|Rh;LnZ%aQL-)09)FqQ_Xjp(xy^Do0()ET4QzB|bJNdgr&XB|R3~FT z1&V-!9^M_1)2c1|+2YS|=LR&F^+i+hiw*v+2LgE?POXy9F0Ux!yF}7hH&7W-RwK{S;!~oc zkICLwbcc6J5w4V>s#nFpP2e?RBF<}j?5H+F-<1SLnakCQ65s};2qXr91i z&BzboIB%mBw8_!T0$YuNaKPB>S9i#RN;Xb3TG1o=5r4*rb-cEzWK;m_o7G3%tIYqj z#2GbUyfA@5*4V$_9`581mq zwO8y=S`L-93Q6zm*=1C8&p=Npsc!6FbunbEt|t}>bS^d;19J2-4|tJ6-)alKF5gtW9R)D@ANP`)mV-P1{-s3T-OQOh~2n=2Bs4uLj%r=;78FFL>M+z{T3w)zY?U9aPr8t~asuhXYlb7uMVTCCYDodm&z z7{>n(FsZQO`G8scZ8ZM=YjLUp#j9KYL*ny};kC&Wfy{8(ZiTW~t` zW?%nC(s!1&Szo_BiIqWbepU3b+18Ew##tpP_=V^5q+Z(dv<2xGJ&1=)2Lg*Hnm?4| zKIMvz9$}g`q#-6VqWJ>7xh+~NkHDI;GCBW^#Y%LP)$mrtlm1@J=CyL$zg)a##)_rNe7{!Kt)TnFyOZ`){; zf9*c|NKeXu*r*|t3BVA5>ZDEo-~DJs|1dF@1c^zo=>#?EokH1Y{%L{Qg7VqirB4My z*LN=HuAl9XUzzw_oeuuH{c%qtvElw*JBvhhoR40ntcA?RgNWhYTw|oqbq5Bt3R2h5 zA-m?&%uU?v2eJ6=<00>UE42DyhWij?i?vXXx+1Ir*lYZY2~KaSW$1iTbnV>Ivyh+~ z;PKD%VZ?}SX^1tkM1>$MGHW=N12jzeVR>f9NWv>RWjh8Hu*4z!G?wvJ=2zSe)bUun z??h-EtK|#byHCqui~0sfyZs5mMpN;7Ox`&dhPkSWGykT*rA5Am~QvfL&p!m#- z6ixLOb|H6B2>nbE(&oPnw~xOh@Hz51VU79dp}eTOSLG2&l!`{%EGIQH$}FQ|Gl7m+ zZ5`ATALx5ueWI=~^ktv)^PCA9H~C)bi|+cFws+{xG=ZDu`C7R<-Q4K7Gqpb3%pu+Y z;q#y;0MMO(FD`I$6k~~=x&|z{Q(jS&IrD#jIwGjk`CE3m6pWZ_{vD9d6KaHLH<7_$MC2*$XaP!=#qjjHF%qSd3CtJ9y9mK@}VG zKkpcRa%w1$o=nu@7e*kp*BmmdZGzgw)HHUwFw$bVVk=(7e>W`u93s=-((!At3`c$zE?NKDGYYXU_aw+@7Gb8+63`q|Z z!{7Q~r+A?KG{1$(Zii^va*i&v7tlq~IcOZZtB#5ka(L^z~2QL6KFs7)U8(%$oF=yrQfjms`CPTQDKg+s{8 zgoN~!#)~Bq4`j(fiLp<+42cOsAbx2gvv3!~qxRpUfT@gyN+W8mSb@vWH^ zk}Eaj{Vf1G?P}J{xgt@XDD_`$hdhJ(pMh6x1_rDK9gz*sC2qj{*DmN}OrixMOj{Nl zEkrC>=Dl)M$m~XS4#)12RjP@6v+k@se7v4vx`uzs)H9<=-x|WcvIG=%$m*;0U*6@8 z-LmAWNSj{}g2`QXwEbGKY6rfAU0`BO>y2uAL+j+R)J4$c9}0_Ua!P}>jsOTLPe2RA zDbHW5>pIyHCP?=d%mAF|o+XP4k2&#lExcg7R;||$&kNzjadY3I5|X{s9sL)jJ5(!> z^pOo zX)#r73B?0j&6LlAj8XRlVg<-Jamx`jepwk}yxY z0H6qhiL1sT=lu8dmRO9_`991zlx+(;%g!kB@~Q*ftQ-cXX;n%ZoR9WomE6;dyH3i- zJJ}5E@Zt95$abU8ReVy=)I8rg-sTshuS`6w>B#nE+P=d4ioIab)kkMG_hpJrGb|uA zizGA%3AVJpHm(o6TYhg;f#gC>YR#gh{<$qUKk5;{XM8}2jld_bV0kOGgZ>ERwFsA# zhB5P)#_qh&Z~?H_7%%R|dx@Lv*x!xvVrCncll)Cqd!Ip#*ue&Hqd?J_XqG^&~e5)OdTy$}^xP|1dsU-i?;}rI7KH+<7*2 z`YzW@r5z;BMEAPMGsphAUAa4Xr#va zq1}2kGDHp4ok3hd}a7v%ub*dLmR;pyXsa|95+;m7hgT$Je|D}&cVcolK ziGZH3(9nkd4-nLxq-z>!2AALFERQmbUl0GSK0Y(RcvkP6+~OY+G%63D{(8lkNia24 z(o$!Z_m^x^lpnrrcAm&oT>jD_IIczt^X){t?0zL#av!|@KR~o~a4J3R2*Dl+6WT6M z&3Z>vW&VOW>+{YzcSv#vkUN@Amh95jLEnaU8+ZJqRE2l~Wr_3JY$~NLY*kLbtkPYJ zCrML!TIlm3R>=$h%U>h+$KM3yEIjfr|5Pk^-DA})R3jr$^DQT7D7}K#G|wSN51gap zjM~ri{7?60YE%-dskeiJHdj#dcNF6T+&zs6zJU0oUsgPy`;A}7=^7E=82gxabP6B1 zbDHCg@SPpUdmLEfClDVssi_-9Tf&60sBPs0uDN8F6hpa*=s~@?U*Bqojp`4vyaP z;jG+`+uYkaFC}n2uj{nYe`eMMJ&c6Z8ZC~q3B z;KSburxltF-{li@9&NlX&XsnO>?V`8uS$_;E+obvI3>*_(;R*xkT%#a&zmuwV0uG@*a+ z^l3o7UyLO&YG_UT?g-1=uP1p|33OFVN(~X`=ycvkzYe?`s(NP2+V4<@of*afR#y8l zRC_L=UrXkrL2%c}Mfsgi6l<+In_~UOrvLI~q&zNv+9!TWv#|{m@enB=hjKBg^H^j( z`#dfrWQ%XeB-d{nV^?mJlHz0;G}9*dO?_&t3O(Ua&VtjJhXZviQLIy{`|WHX2h#*N z!(bsT+eLr&rR?=-&}io5t!YH2=-Jz?MP_lB^;JYJfu zu^Pc8Gb|gjwkmAd2%R%+0(t{7DqohCuAUsm)?4=#_{KkzXSXy*#Wp$U9j?;zpTosJ zy6#qIjHnqiu_VF)oO-Q+BE`hl1^Wd365OJc#ha9i&s`eCR+={jEXC;l(%;&%ObWKd zyhuMo%_+W2!wpYKN;jV(!>L@}3m@hZj9khzXyWAh(L*C9#$$wU3eH)c%)Gz&@fFN` z!Ldl`|$`3PPl!Go$T!)q~%ww|fB1?6vlJF=b=C9isC7^Y_wc z+o*y?eqn48iMc*UW={QdiAcZVpE3JJ%Rm7L0r2|CKI(qa!dBwf^kLb6q$aXysCP+y zb~$sY!h2Gysru{Z^>L%cpbLDMxr-&g(MshGV9cI*hS2clDBt5@)g8yJ7t(v!5c7H3 zf3{@f{Jo%6+Li#!c0zuz{==~XrV8}EIyCQK9W6G|r= zs(<0I;lj=%P#P;Cv{NX82bQ1ew#!Y)$M<-1f3yi${^L{Ki$K^^!|+b?2?)xp<=QWy*O z2jr_nIXqp|ROJNz!)hnoIj_~l~4vKWg(#=M9gBr6gq(( z3j!GSy{=^?D9w*#&5VV{j6+k3{D9>Q|GxI9%VYSav=`_=(uE1!?FbQZU0pcKR;o?L)n(O)0`~XJT~E%|Fm%Nm4?nnpHP5x(30c2$$koH;!6?2W+M7~lG&BM4V)CQ z2QBtqEv(Sw+@~VJdyOH}^K=Mk{~i3+Hvi>9rX#Byn147Q9dStd;x(sHd?cS+*JQf(-nR*E`zKVWFCygW{wfIB@ z2&FEEe_s7c=T9MGifpk7=SWE?@^W_B2~v`EUK~AvmI$i-yDr-;R&UXv;18~ekv6ze z5*3`boWX%R+T)b)Pa@ISixvYS0F&9@tqdVBZ1z?S%S7IFhjP7(@F75YuESSmwgxUe z@XY9U#g?AI1}L$@YeMvzKuEwL0~2Vr8h}wKH_g3I_KytJ;xebxiO3fadX97oIf4hn zB)yxZGot5wJPjyJwYKH&m`z9n?ogJL?!L9`Xh+i@^-q%#DM{q$>KQJzD;4gEako;5 z3(H|F?S^3A={<|gx~{}_W~XvN)wAfYlBJ`OL%JEf2+EwN$oI+FFl>TQFT>Kz>w%sk z5?{X7eJ?WKF$2zW%Um=yekodyZWf~HRO#sD8`#GDOt~|bip;WWG0i!$rnBxR!H^6) zzcm)YDTlYxrH$CKI+yJruJ7H^+7WQZwao>`-D=-B4AS14E5f<^%dO)?dSRnb_t z5=_pLws#=Fn0hn6Gg?@(&?In3I90v8uK$`anCCO^Yk}?_{d;p8WBTkbhs2&-G_lCu z28?1s&X2f7t8Kvfrn#QKp5I$RYi2`_6!FnQHBGa#L~7GUgU8EHnRkvZ+vw*; zhPeOFHEF%PQfLwbI07NCL=iA?NuOM{`T1$>I;MtcduIwgMV;|4e)$pd_4U=W`*o(J z@+O|{pyHU|SDzlcw(tKZC}@>dTh1~RD}CzM+rHF)Z#RqgixR^#-Vv-s{I)%m){s+u z70qZ_{wvys{5zZW7l%LJNslvD6M#JA<6>&vVXK)?qx0}AT ztm2vC;gxv$#4f1w^gBGZq(p^nGYl%=?&Wk_CPH+@@?BE>%}Ps%CXtNxagUwsM6doW z)05#AA`nP#5|~5{$yqPjx(Qw&$gHT=j8$QQu!B|?RQZ7+IjHH=lmhX#Ov-Jy*|iSI z#lH`wC|p++walC5XlMx{DRhfpgU$J)dT)_Pd+%*qcW4n0n+!R3E`pPh0uVc80r&l*n-Au}=Sg{}OT>RyUZ~q}Jk_W2JJS6HD zRpfix^g#?c%%DA{HL5x0Tatm!xiz1&D=Hs2^ZWM@lUKML){G0w3Zez-eN#QreAzN>Yo#N|?;W@jw#wNi+r-hU!V@dTf_#t;dSWx9N)s1`?*8TE(9eavHY3|X zq%eS9e~;#R+{42d>u)XZ8~Ezck5}yl;zvW;si8=emu+&>wGk|6RJXok13OU+EG$YZM| z8p7+Z@)M4QB}cB4h$|ztHJ>2@WCt3;sQy^MAYncNe0S8a%7DLNtdZ6wQlD$ItOIb8 z!dP?hsa{o!Wdi(sT4j4zs%2i8$dUI7*;^bJOPgbcdY{_1FUxIVMwuX=gYv%W!6Kwq zzFch1wZw-`8B9?*NJB9mz+kF;@phdMpTbrh*^9%G>VaYaqgG@$hg$=?SM0cmi@>MlxZ5Gjm|8;< z{{A=)8?aDsT*T4%<8BzKic!%rkgRqr%EMNg$$ok=?8xx+rlyEH40~-DsiLx0zv1Su z$?aThfydNi>Sf+Y?#OV4+&|^cnBo`RX7QbMN#FN_*IfE?8ykk6HzZG(eK%ZPvfOA9 zr^CR@6A>2W(=;BT<_63RN-}>@qBu_8l3G2<{O&GVDu!wqz>EEs_%IPXV0uQ&*xth{J|NCw=6`^e zcd>=0vCEJmnuG~KnemnD1i1q7FtiIqi`YaHy>6RfXukgE_b8+hYXG26Vr~}!SfNGD zT{hDa>x!OtMpt|-TY5>;bGe%+sHW90^OcM#%F&9WFgpKf6Ut!HzCE1oOP*5op}iT# zxEJLt$TM(DRJ)4gD^seO-#k|0e@WhCs&`FvS-*pl#wPGS^Z~3~Um9N6YM7cez9YoN zED;O3G8+8&8{C<{X1ojALhX9yCG@I{vA5jSzDw0v3bG7!h!lGps457>SG2WV_|G9E zUj=3uNx_Rd_@(~&di3wf(wi3ahNcasN?6XBC;b+P@uXp5QsdhOZEwd+g9=%9pmlx# zx9&ef5;P6ECiajdm1o6-b&hc={cNy*zJZ3rn<*!d{`2U`?{qdJZ3+LKhOj2Gm4Pso za2ycyCq-%x!!La`#ix?s(_i-aoep7LDv+xcovE+CP)M>gnsUf4h*{hZ(T*6kGi`Fz zBe_pJ%Z<@sP^@U@4P?cVEHqjmBGOJmbTY>+FT*ziVezliRF`j39}J->5~I}0?1S4; zo3q6qZA)t*i3J%`YAV4YcW4&awZ{|`Fm>nSgoPQzc}8^Z4e|qFLeCfncqC6em$95; z$2ess>Jl$HMgUaIElB5C7|U!Dmh(QeK5Edt_|$+QVLvvss}h}P^OTrC+}GpI&=v0+ zu0Ab!50bEU_hH06`aH^U=G4!CZRuhY@JW^VB{;A(cyPew*Y=+7e*lg(JuQB32NEnn zh#PlTV>$g)&kaN~{9JQ3#x-LUru_gp{};!MZ7j^~O>yjhZt(bvRMS3pk{aBE>;}U! z#idT^0n<~KD7X+Dh_>0px4{k;I@L%!$m25{{3vETTGOsX%tS4wb{YVa0mpdv`9bfB zx7wENL?yWnUJvCYAY**Ph@}8(u;$trPJV=!R?!ZwK2r~LcnI@T+j_YfAyST2x_}il;u{ehe$Oc=gr44F8|W z`2Dx+6@~JP4Q!fr;8bn>ZyF~V2t3Pjs+P9KGr_YbEd2&&4<#&Xu`}dwE|iFyT^M{r ztk5#T(i2)l^i(0W@7_+*{$?yV{9bLol^^@Q;TMN+*)4Myx;7qNOO_f_NCPRPBu~J7 zkX~bh#n87cLu9F5}y{9m7p!6c@wL&oV z_#~*4haQ8`#n^>^5FDyiLyacmYD?$`3F@Gf*AK~?#^-F!PQ~7yGejVj9m4Tky+4Q) zo1wq(+`B#>q@|L>G%(Wq`j9KdJ$;>O2pBC09!LLw) z?Qjedj!@zALFs8%uLt{*5#XQ%BHq*h6EP9D8C_vC?rJ`C3fhgMeFMpeYs2@_vGpw% z%UtgKtETO;t%WmXaAjJ@+-&YM94B6U@)-HKmGk|3j;RnCost&>r|fGM`84P+1b!>z zoP92yKu7x_Mlj`ckUmmt$UvJ!Zekx%SSuUl71=pDyx3FgfL*I%cBHqa^~gTX&4r+Ow9$Lg;9)tPe*?X8R_>5p0gDMj=!4J`N6p1;(MmfpN5rElk%tKcQHCV zU3}n9s&}U~O$b#!F z^h#IV4IjAY)#Gi@BaJ+75WK9lV@q@o@33IgC&fti-oh;mMDTg*pA0@g3eomTJsYzy zD#mCcj_q;zod{7x&mA+aFg0AZ7F zOQ1euN0Q2iJtGcUoRZQa3-hU*IWgiWnplzbQI1!}!cKWJ2=sAY+S{DSf_#77I$Vfr z?jGrpi#JS|8RiwN^Jgt6&R>IXkFo=ss`5x@Rr~=oaY0(IC4Q5F86$F4Qmh#&QjVhz z0vRX;3=n5m^4{u-q_&uq3emX!R&{sKwNd6Jq#Dqqxs6{QTWKyKQ66I(cNeTDD3WdQ zGcZ*kAme?2v~6EQ%p}0L+LlH}?VI)&6#*qvX{=M-(Xlx|ZGl@`JiMFF@oD20;QhY` zc#h*&U55uLVTF5Bc?r}l7B;1QF1u%c(V^bY+f7ZwDRP1R+OWkT(%j)sV3vlEL3JxaL=WeN0r%6#rks^r|9Xtp}g?bt^?8WK!m)LYOL1U z@G}Xn>Y2-zZ~8WwP!09Z@*Lvj?E(F)hdi8NvVpkjqZm1EHUf@~z3L-ze1qM+qT%Nc z3kQ2P4);FQOr{%TkX2nsJYV)snw<5qu=ueREE@*z8Z2G8Uh$_zblb;s%bE6_l!qti z-&bH+H$S%u$&~@uhV1H&?^*aPV@2aT5hhs)8L(}s`Q~NON_>$;m?Ar&A}j zLa|PT7%Ul^vZe zAX=qEQOye!e?6SD&80it=w~-l>=8Q0-lJ@Rhy8~;>!_&3VX`eTs1S>3h_zChXY${_ zu^J62Wl);TE%508DG0RZ3wFQQPoA@P>hIFu9F@ZXKn`uX^p|5iqftn{S-v~{-S=>| zTLs|Vrp$YUfiG-{ac?bz6ac0*w1yFa>Cfs{h09{z+Th`ea$uiZJ35CRpifjXXJR9! z%h(-*D1=8Yth24|rx4VcQ4MM5OmXLNAG?+VDwaGFswn*EaJ~Pwt)sgM@xi1GSJ;Kp zS4kDM>r^e#R!WQv=+Q|Ai*=)QPvusgK?j#<|I9d=4*j&my~1J2V;?3{#eY}NyfQB# zeg`PD@~9__K1vPZeNSnveJjUjEAwl`?h=#BWO11wNX@)*)bh_7p_pOAh1(8p<3w#D zcMcZeB5Z13P#)W*;xfa-L*;Fl(xxn}g$$Q1OPNKa?C>@1RA)Q@7e z182@Gab>jYW`%mAi83w z&f_U($z5%SfZwB>Gz+%Ksg}+?WoR2YU(RQCwe+5W)3^nDd-GUvPJz(OLDMdi2qkzh2_r{{ZeOKzY$gI{jA%-$Lg8(-;!j ze~W=NVI3VTJ)T(EpN@>?&5IhuMu}ZhNOMH`xQw#(p;DK#`!`R&6|%|IE0jX3m}%Lo zQ8`dHn)wmdK9+zd&qL$;o@3D|g>qmw2pZU&~ehOpc8?-8@O>!PA~s2tqZr z{lg(rD`lk<^By=!5X^n`iM@R`1Q=3=CRP-(Lw{Ur!43QT49ZLv|IF)9Wp`Zc=kyfA z@MrFX()PykN}}bJOcMvN&$TfaQ+%j8(COnZOUL!xcl0Yw{@yGf-m%aWmq#~I9&GEz ztae|iE$Fa;yf3abob)OEofW^q>K>b)U(VGAN-5w?&VwBA_>j33)ZGI%w=4K>(Hen?*JU`*SQ#{VVXjiB z9iAzL>Ujo5!z1H{kCcL?EPQEG$#=Kx@R_CB=Zj=cvf)S+s|))te#|S?Y3p9^l28;h z9L6xVc)^>m0Xx;u2I%!+rU54-6Qk1Xp& zNANa(_gO6`Z&v+Qj*Yku*aV8BQrkOlKO&ASS+-WE zR?*Rt!ff>}eY3Xc4zR=e;L0LZersGSgBP=L^2uYH3uD$TDaS2v6mKr$-|v|ieERT9E3!UNP@!@?6$eygwYyXxX)g8 zpYA6SaYNLlg)NC`Q-3m#Irs60;SmJGc?m$JfuWS9ZJ?ZOaHth(*N9HdG2jigAUEX( z9qbQia<`2i4PvlFGRd^42iX0I&iy%TDqN&Mq}kD$4r)IXNRvs^b&&y&?)8-Hp!dO0 z{Z)el#{of!4QcxN=Q1iqlE}_|L4*edP_?`WO;(@)S#QY2RiN_JIy3*g@vXU!@tl0C zZ-P`^2aXO=4LDgG&moPp!vs1>x%1*+*?ExY}h5?n)7r-zE%^KaSv6s%> z?DpJy!rMtxh?$vBkq`2FN2t&b)EhhkZ~^{9mbfbTrMU$(g6i9lUMGnUtM5~X!|4h)sFEDP|s)qr-B0Q1YtdvEl#l_?z((N-C7bABdatCN4zj=cGkK>f_8N5$?u= zDSxw;Q;TX*t)(!sj8H7lA^g}sP@7)hokNFur{I)nQ;f{R&~3Qx&moJv+*ZqCi4j;zm62>-rzSF2!lee=*6QWGMcCDx!1y z8A2y#GVN~co7M#6VF=i#SRJMe)AoqnkbkR|To6x%R!x>`h&MNRWF#&ei7Jdvw@YWx z6(dg=sWr>U2tJa5MW}?ea28HwPckS-b=2m@)Aw5Mq0GV!f#Kkw*X>IzW=FhQimvqP zH8SjA8kAcR;Ay*VaQh&l`Py(*=MxB&e<4nh$J5|;9fi(2bbISss$=Q`tn?e_!e(m0 zoOLh#wcRIg1KMA2tag6N8LKU+B&JoU=-c@~En*lLU%eiaR?tbFN;AST4KaO3=Xz+G z!k8^$ImXGZePs&DD)}#!kQpj5fe%<$qMp{VVH}-? zvb^QmpYDQ(WKhq7#<;)PEbMvLbdkzhto!1SIS#vf^rzpIlf5JEIu#6cMz#iTgTxIZ zD3*0hrl~H)3>DOnghIpk*MDyFF_bi<|ME+HPCWFw4knBZofwx0@;Zc$rdT5xw{ zzOOW1$a)8vD%c%w(2p9C;jenjj!}e+=e>2kw$Pg_$7lr;P_g(L$l*;As(*)~X`lr! zZ|k6FgW-v#h>pHI(Y;0C&gEP3G9~XF|}7!3*(%G{5$Dd{swX=R5PkAW2$ZZbx{8CqH*fkZp}Xp zW6|PeN88vkuE6m2SFHh;Kbgc5?rJ&Omr?B)L+wCTUKPoa$l;azoB?Y;Ml%1v9p=nS zU-ml79FXml(8nQR$7Y1!!DZJ-0|yQ>X=H=HQEU{ivOKX7)HTH4C#R;04@Vo}rrGfF z9p_0)DLVIb+Zc)qQPH31jvFk0uLQMRhWPJ>?v`NQJ==jIq3!`eofH~FX~)@mZ5RFpsIeS<)*gZwvb2r2N2tRV+L8eg{>Alx$Br0C%H-v*jSGu3s(q{+mMYnIxZZ zu=GIAy?i&v-Vl}7Arp&Pji8V038nG`+h9yo0SN+R9lRPdOLVZzbN zR1rGB<=a(Zn}%i`yY9glaDD~6CI?43h$nuNU*P076gwbNaiQ>lxCmL>J8Bk!(q@n@ zgD?v{3W~02c3FT^qD#i9DP1o;dkTU+63szUY?`PBJx+-|;(a6O6!3Ou`HOYNMFvFD zF-D!=ffQ3yC}}z|FsJwTv;P||0q&>8paMsvQR=`89U76RKh^XKBa#hmrxL2th3%x) zX!`dzc+GoicBiAKt=BS@NxGB!uLEi8aa>%D8p6QXdXUi}<68KT8J5+u)b1;SZSVEO zV5Ix_z>5J|fnsQt%LEY!bQI^mIKwUw z7k!={?tJw2-Q1QDXIy~xS7TqcE+Jv?WV}eJxQy58L)b5Ye*WEN>n@dLts(^d$_4lS zJbN9dWVM|{WYz*9msV(qR!=1t}_;yE;QxYhy zM`r`?-onidm;tz{^tk|uUJjP$%R}jwE6&UqZ+s922E5%JkV3ZHk+JwQytiGoa6ZP3 zW-So=t}>`HvbuVI#NW0^b+}o{V;V(ELl;fynq89Ra$-%or-;cVpl~8GQs@;FILf`4 zG3O?md_0Z>Qc9A2P@H)^-_>6pcY3RYKK_}KXThGAOZ)?mlm)_McwK>|`33b$`~H=x z-)~6Cs#^Z$Mfy|nFK?8FNL2VoUNtvj=^wKBwh%HsHP{#D6(=L3%D8`+G3Kcj8ZaQr zu32Cx*E@ApRqZ6k{PZ>DFi^A3l^V863sMB+0o@ik_d*C{xM9(oj#iGYb8r#AKrXJz z(jUIdDulfmRnQQISJ{qbUR1ySY@j$}RL{k2uArr01Ln(f?g9X|WnG}DbHJFqPh|&c z%^>=Lij~Fq7v??)F83r8(?Gk4=yP;2814`?HYgL40_o(NRi z=D+v$_OReD38L1d=E5n_J_rEnh(CfZ$@3^tP_I(E^soP)5lDNreG$$`S}9bq8j^Qg zsDTgONK53nxxu4p(SkJ>)&i%8Ta@II7N0f-GvT#|=! zwior+_b7Ev9Mhvz+23%tn?&IeKDBK6kL+8&qhC*=p57~$y|o<=OX8}qW!d+h^7^4ts=f$ z#Y_?=06(ey@0iRwB>`ELD>WKZPxCUw0t0AHnnoK;RIZOz8Y##J%?9Ajq9XAf4l@~r zU@TGMVV0s7N68tM#>5c@@qKXAp-+fv#+tg;r%RgdYMX#pPpC;qG3`0=Mn0D1jA|$~& z>9z`xJXr{}YUf`t%+LS;w%??C<1v_YRyT))s>sVL59N?XWjfqiX9;d3Ej6kQK?oUv zY}vH~Ur%YaGZ}(P4}#)pspNpmPMb>Qu_P&JKKcpV;_W&G+MP_sTxB4VLEbw+++XR8 z#$Xl8LU?*BSW-$w*Ygwvath`$b%~2rYAW_{*^9-0I7KXVN)(82>lLiR6u@*KO z_16W%Q&y?VrDx@HCB%+|M&4U>?~KM^F|R_ndW%yj0Gf>6Z{?pPi;W-=pw@6y>L>&? zHP1x_LjVC8v=OGb%w_@$AzLq%7^YP<7blkFk^ME-5(1?@Blu-mPzf%#CsU!)KkC@b zW*Gr(jH&|FFUt*?QnZ?k4pLeLx3TS}5*U;v$Y*s5EIT(jBU@e!{{YrA8HPZJNmVLw4ydpEsxvSohXjC3eQiFtT5%$u37!imLsL>DW+O?l zkUz#V8H+p-Eq#Xqlv=QcKf{cUGn=evFW39)fdGoMY1JjUgcLU1=+?hU)-jmOG8DwD vrmE9$R;wbinrA3T1`V}0m?N$6B(j{eWF-95PT0KpxCy9aj&5ZqZ7T`U2zEE+rzATQ7N zd++(Z=broianHGRX3o@9*L2l%Pgiw+rvI-0{qcrENmkZeQ(FV1q$&?UKmY*VV7XYk zdcVN~09@UCytEZ$s11#bsZqB82mmqwB7g-TY-#Q7A+4#Y3ivSNU%vZ4I=b4juR61@yp;X_##{Yw{QqV5RRw@(&HL}=|6lU4{rKuX005E!0RC;$ z|JMFLZS_Ag#J8_5@V)j$#sA3M%K!kO+gEw&|H!QJ0D!I-0DyG!e`NF}003?@0MNN$ z?d#?DUmF16>vaZU3eg%l9nBf@4o{L;i=3b4k|mXwR5TrgtmSWZ=IjxO9N&^3+~D{% zWceGM`|sbsP=G7|2@&z%0|^lc83_p)1p^i3m9Wt<&@gbZ@$hi5adGeoNr~_YNCroTe~d^808HvmKg zTEH881VnsZtD7jO05tU1VtqWo8w5neH?OXvA|at;Aff)J z7#~1DgTjMKNGnaGWr@b?89_`ZlUCX?{FYC9iQdZV7YPHutao}@`FBPp0UhhejMkA$ z()TuP%z|=J(G}p=ddU$0ZxH_SM;N5Q3K^!fJ`OgtoLW_^C=JnvQHK$l+x|PI#HdP@Aui@tg9# zoaF?NS)bZqSDr1R(sOvpgCCyNg5_BC_%|2DxP3`%;ZhpFR;o;|E1_a5;8g3YKoIi@5;!_ z(v6C4I65okJG*2;*)ExVdb%#)S-+!ezk}eh>05kgDRevwvlRV$soUi}w2b)q(MJbS zDeIyvw+95}*UtCslA}xFwc>xzl7!_T%mh_-1w($tR~imOQQv15sK6Y zPwg)vy)ii#cm}X_hs1>F@m$h#&v_rR^*#l<9!WF(Guq!f^ttZg49dR%4n|PHB&vvfYzJM@V#GV1Cd~0nXd#!1vVAIR zVlrRR`Xl_al36@yk0=dsWzGyifJ+O7<>bxFGonIAUZ?`Fc|~7HH-D@d^=tqcT>@)Y>ol|dIf6oCRFxl@*Fm6-O3vd;_zfJmX;)C_( z#|Nce&CrXjJF3Y$7e{&hnt_Y1D*?q-`XNLmKAS)L8i`UFsr*=Ju0sIIfLl7SVG2Gh z``o8$5d|gFPZI~Qte=T>U2XiS8BR*gq&R07088S@Z)X-eW^6i;>6}+@h2itC@6T8e+_GjNMR}@^(-U=Mx(*}EfcXEQ79b8g+=6Z0Pr7rH1)M$d3B%fzn6HD zeZAJ_7c)I$gS~4N@vRsDBg`|!MY$#88iR$hG*UZ%+B5p7vdY9hA~h#t@IH2vF6>w9 z_af3y-gI-2VNVV{@z1fMSt#vm>yj`f=x&Z8TaJql2F{2bb54LVstyX0Vuy*Gk!&WR z&3tJoGy3vhl0c&tp5v|4>LnZ);fApkiFZ%F9K?_L37K;tzj*+mVk<|?fSWQEE^r+57L7a*eVGkqB@ zP?rq+De}8N;WWUfkBpBU#?AsJbDzPt}Z>9s$& zF+d2C;zY&SQFQu5rsrNh7VAqw+De`Q-Rzt`Bf4p0a(B z4q|?4X|Ro>H&h9~T3%Hy2`^a)eBckZ@n5Fxq)W*TPoii#f7v{>SEo)+n5j(Izh1&P zDg_-l@Qi1%>?Zl`JUKQoL@O>S?ki_qjE8e3jWx%cp=`lJ^3Mt!w%+1FOLf6N#7PqTi@O?7Eic2)1kTE{Z7bR!d|l81EPMKxqobS(uj z0o^OC34Q`}{E1m^dP>fZKW9P$a5rW+gB&}4o2Q!f0{C0ZNZdojr%&k(2IISc=D;@t zH&dT1d(2RF_y@O1>=LXD-AG`i&<97eUhH1yPnHDzj=ZAqDf8Wm4WFsF#aO_6y6=1e z@oN*U#5Ir3R5JVc~?R=sv6}@`ok#O>ah8Br4@Va;ez3{vsi*<`vFS+E+hNC9FCOI{w|pCxg|i;g&;}#Atx3Pn#XBF_-~99k@w*4Uwal zC2YIO`%<9XH$o3bXb%pj{G`h?NO4Pk`^sr0&~i@~x-PRe33y4tl}9453P{FFvuVqr4f*VG^3DBd185o*4z#GDsdA;ggh2&qxB~ z1`4S^;`N#&r>ebvO}d=_xW$YsDso11q0$3Tl$ZejCP?t-kMyYkq;z!vVh__{!>9V* z-?vz6#yF`xV0q`(W%Ls#SYp4xE%}-&ZMdwMg*W4lu%MSQnuz=)E=%UmSfR@vPh_6 zJ23(4(!@`>6?_$JZ8wYLByxhJ4iIIQ^f=n^K5N2vChgto z^ENgZcoq}KEm{7ib=pVK71QW$PJS}~SXAA%)3`0G!l9O3>0}k_SDlM6%g2oT!`=0y z+vbgD(PL1XA(PbaELZra5S4gWetjp}T0L2LgP#hC2tP+EiC3of9Zg$?=nJ@aj-1N7 zp*1IPuuWtuQjtKuB&SpZFCwSzB5VNO~{_> zc$8ZX%dR}MDc_!Ugq+{3*RxB0qe@k^j2u-2yL-7XpG8ezZ2CQ08PR+}))L13G9#O; zcCTu6h=}cySpV_pbUs<`ADA4=)$%fxcUge3FKt7)RIwVlJj^rMp(WpLMg7Bi%8mIVAV zy&eYg8^iPYKQ{NhdRf$Q3QiYXN$f&+V;yQU_Lfy9j2QAP&BLd$j^_#ggRP~`O-Z~DZi zgtg%#(?craHMOhs+NPQOf^3N}IcD_&-e-PQr`J~`-zQu0yr@R@E^}QrZ5k1pPcQ(Q zyN3`pC0I1aA}kVv$9$naZXD4vM>25De7s%~4CyyV!>?0;Cr7DXlWclC&S=I=^m1gd zX$y^jnco~MiENvSXFB0)9QLs_qu|VH0TW`DLa$y&f=J@=ho-h0SN-h>T`0>tsQl`j~qS9bZN0c%+$|9tnc)mBG|Ob>Jpx9ikfUSl4b z6D$35H%XEB>>K}a;Rkq8L2Fr@#Y~)I%t_1X1YSWE9_2k=@kW9AO~_^P1hzUIu?DV& z=vq!dC?Tp2u|ZpM!7gVH+V7qph1U8iOV9We%WEssnTP#;qD+g>uFieVerF$4@RCZg>tBF>+X80DW`TqRPSRYA1vBr^elm49^$z}w) znB}go&@+xJa+$@pfUgCqc|4bhQozOHU{Frqt^Z1}CjW_&fdReyvn;(6lWtL4b!AP4 z@WI^UKXg6cy^Ad?fpmnSsZG@z>|4Wn2F{zK1Rf)U(2Vq;Y|@FY!6Ho!7*~dC=9rvE zF{*7hI;MT61Do|$zrUVK@s|*g3O|v768T(Z=@(I%VPe&6jMIYePkA={;0!2Y)b-t} z*}cFo%E>j1-*DT?ypuU{_8DEes$--S$4QGn*^MZBk~Yl~lpU^c+_&H1$4+?{#H){W z?tB7*e*$Oex5o60(W>+^f_R2aU72?KFx2Kjr6FsRp}?(u=;X z9$=a%bMOxJD@^Y;RpC0w;l9{sRs5H2ysrZ9J z4UMIi2GUVOt(X#P?6{O=0R;gsUsNPW8U}(k;FbmJJ0pwnuVCbaiBx=J=#BUwn3SxT zr62MIjhf*5I9LId=|j|rkU^we5ea#Dw%}Ge%jtB;@LJdKzU8Nw)g-sxz2Ixg@FI-L zqT18PA2e<98`b2#P>H}J)1QX!ZSri@qOb9U<&$Nt8eUUj=7S?|zR&a~FmuVzaV@9p z^x<`WJ1w|zGaqMtktDiNvN4{=V+sn@@3UV}?;jws`^?=VC+JzSQ7tO8Bx4WN;x51mPI`{~w7a9MVnJ;(<#HSKHw!?^n$cc}q99~wx5%*Aqd*hT_ z%{1Ljt~nq)oFFU#3J$PQghT}UfHutAIfH4o6C!>FNwhP&`i$C(>vu4@tLq!^;cLqN zH%^?5f9ewPG3XItTnuu|AY_KRFPn9#WIj0bdHyGio~sRCfDz(1O&e3%EWSu2p@}Hk*Y*OC9l!wkt3OVaH)?dUuE|cI`Ty+W~GdC zr=uIMT#A~>k6!bdqhsB6?HnxBCDN21D0LEITB8HOkXr$K9jN1@Q(^TrBzGxz&FtWh z1(r3bnA4xdZuO>4!s}Gr(ed?F^1JSWttXv|j&064E4UM;IEUKR9v#xC*am2n@-Qy~ z0WXn7v?ZM^_-lvFUw~%6xY6-*ikf<2)7h6Y-n=ii9R44wy3`Dm)O-jxT|H7;#4Y{e z=GZ3DZRM|&=n>knOAe=qB{G@?bO$X8Rz~L7tBkC8`OC4)CbhBwZ=@)S0``tSoPBib z8kmq*aWoN#-FC;DP`2d-0zEv5$YY6SWpcdd$(|>Fy!~3IJtZLO^OUaKUMhA-U_}Sy zW-K5e7Y*MuK?;t5nJP^UGS!u1sRq4zy`Jc~p`2}kw)wBflHA(VO& z9W{CHxSFk=2K>oiV6*Z)a7oSdXPqJmi<)OV+q+{qU!GyZ53DRd`R1RrMVW~V=qM62f=5r$?nSB=KUOL+w6cYmYmBrfY)v>dVdCJ1w0E%3TNHcsl;Uafy%f@Uu`9mc-=RH3K?Pv&aRf`p>UEP`$PK zx^HaYJ0)?U`c$~PC_2|FxsE|!J{{=|qp7WQe1*}!}Ry}~boYm;F zaFvkNv|mz<`%L7V%I4)fkhxIvrPu~4ZuW|UotNI$XAxf|>Kii|=i*|A%Ywp2jstXl zzZg-RY*@7X8XJcydE6>QPW<8hNM`}q>;XjtK1qK*ju&F-{pv*rCM`Su!?aN)=+|MkjTB}xYYGu!P zqzo1Y1YU3{aQA?QMUP~HZ}t>QuWtB|>%fkwn}=ARrVQ_R|AxphHM0jTI@HMvCoS$e0-`L?rA#LT%eE|$KjETqc>I=Eg=ZKGV=97 zH<7sHIh1X#Hlu}v4~*ZIe85oltA;`adI<~adJNKsHwvh90ngENkf6&t*0mT?;kkTf zOITcf^xKAj6)NuK-<}XWO(-q#fRuxiz3Rc3O5A713^zskH=a=`>Y=~ZvfMhlIKK{Z zxGq+X{{#m_R%x}fZ@m0s`JVNjva+w>WpX^c|27R0+GNOj&Ytq&igHCj-J~sJJ6=*O z=&5s7%|vaf^Q)i~tD9b&wVV>p$`DmLUkv8B=Rz|g(+5d>qaUmy>Ed^o*c1W`prZcW z_p9GROZ%9Vmxf)sqO%7TRn+)P_^Q;AqQepSY*KkriYF&-d}GaNIC)8ujjS0r0k;Zg zm!_Ag(pN7o@9*?x?bUAn?6Oug^<5OjGeD`Wq#KF>4^n>t;cqaTPb-)YV+BR!JHj2S zZ|7m`>qBP|;i9joI?n5{IdLgU=SJH*@{K-}(Kh3^uz?1t6XqhTy5EY7x|i2zYmvqe z0Yt4uGihg;_8WBl_&+}0C<`yJioXEFhm)nh0Dv(&@qBqzIU1(xI1Wxl&DOpGF+KkPB(||7hK0bsw)B3qIs_xJ~ z_Wl?YtO;Ii(x@x)CJg=g3dNzaZ~*zo`)xtN$;J;O8}0Nc3K|6B zInl*Z)0v+{kC)Zf3Izj1K(;_@( z;V)oumgMlh_Ql9dti>1EU3I(moJCKIRa1>_hG2`v+8`ZZ9OGM^Iv(8ysPj@}SKo4; z8(-5=;hl^d^eU*2=AOjus+C;OSC+&N?1ifQYV>WWE$7HU4)!!HbMunA){8^kMb!uC zJ81@%78#9=n}{z2toM#UgQb#p%ble$Ah(n}siEL>ZXq`XVDZN82aL|&Em(Rt zS>88iWh_T_#&zaPvp12fnMm{_jP6`sutY4xNmyYZNwvgs2oHzki;nJsMyL3WOC|?W z-d_MZAh!T^m$fGO9eC3%>11c*eDv_^2j7?wwA+4c+wP<I&o=2U?Y(K5HnTRB=rxyzV^d+!AAWLfbn$;eIM~=} zR4c;G2*cGeDX{jN=TS5$j$-92ay58m#hNQJI7CGeIy^gaQ~ujzs-U41E>H`Mw%H|=&cr(hR)h2-!3#+fsmx)Fh6sMUVZVr9Ft0#)k=O$o~8f)$?HQLVRX9NL@7lS6X8In34m?^pUq| zThYlP%NgI?c|0z7lx*)Wpz*B0aZTAL3~spDd(0RcPwFBinAfr^@jaybV!r8Wa#7V3 zg?zvyh*C-3G=r7dR#mJm}aoXSd zQh4&wsf9#-o0Sn$J*^+de5NoLFy!~T;5|O1*D_e39SUa=(psWQ&^kS8_pDeAWzO*2N7>FVOPLB90b!i; ztzFSEP#~xzQQJrw!E$)b-`y#)hsU#HMsjZ)hWTq!fZS#r<68LW%_kMm{yu!)U#6N-GmWSLMY$Z($(5Vp!-bGJ(h`0t-H4NY?uw#S!<$ASbUZO zO#-a(0})NWU4aDfWBfrR#C*)1NJA098eSD!UdO6=Wuw`S0dVJ)+QL;@pttbe^87jQ zv$siURT)<2lvkPGWaM#sE``m5*nE)M-~mEI6w${(ulyZH9gxrbA&qYl!;$ z`mb-E2VSJ91DWtAqDzz_C-_c!Y%!G&Sa7lA;7k4bK^FBJ4-a9HtCf=ld@(RI@*qf+ z@hz#LP4bhuL^n-;7_wDWGR%h=vV?nM?5nAo7zWeCvW#C~LL_^*RI7^YYvl5p(&Gaq zyob!Ad{@J_j@DXlIjukU(g39XfO~cO4qP!a?<;;s9weX@>)ucFx>gPf2TU43*nq#7VC!rpXEYc)A7S^u=qg@0}Bro1Oi(C%v$Y0dP=yjJ;P6BD_ZR`G@u zS)8BeLHAdrViK=9-?7W zUdzOIi^AL&bP)QiAb_;QhRVWJlUAHvC6lU)ikLj1sLQ5%S}ge& zKxsn&4)oSPL8D7cnhis!+tPWzoRCSp1UKe-8)(%J7+ww&s;-SK2~{?tm%J6=kyKfC zhh*MGSGF7Py$u84-t`}i%u!^f4Ezrbdo9q}0Xy@M|c^;JBZoacdXdNJYD7 zMvPJL`6TU0pi2z1nMIRtl5AO_f=tZ9sY}}9tx#U0vgZiGRb|7~I(YX58g(3Uznu+g z{{_$Ceci0aj~v-f)`#)c>1FSY16HgOUr~Z;G|(+(B0?8EenhQF%qEB=K|}OAM|-lS zK4h#}ryF^H6MZ=NP}s#%B{;TLckQHZmqYhVh9h%aLr~a0zK98{Wb%QIU8i|oYUZoU zNxc35%Su9s*z{k3b-8+>;&2DJrBqrtXq&8&wRH{{rKKLTYHzzqYzshg_ev^AR~)tTrsalyn=$~XC+OI<2ytC7(5>qa(49< zM_zN}u5;R1-sfLzTe{u3DlctR`XeNZBfGUJS9ghaT3RB@gTi_jRn-r!Sd~wJ;i@H0AtVbqFDh@f{lWMNA6A*Hq z?`(#0*3)40oLy9PK(LYqd5$RXM2`hpqr=feFnEee=U4*?_!d$R*Fz+FBO2=bvJ!2x z!YIX+ppID5Pd*wvZ{_{uJXek|7*(&rROje2%>7DC(t*Y|V%gPiI z`RNHsg?DhfpCo!aU&@>v6HzPeo-Y* zUF3MWYW5`3aUvUm+6!UtNH7X&#y;_mIW9%EEo#E;$X!1|Em zZP`aX%kr$ZN;7?Ob;HBj6}BO!D83R8t1ci~p}>Fx*WtZ7Yo|Ni`?fI7#-EPE{GtLd zOw{CUuf^GpOh58y&n%u9@A$JUf@IjA)?Zy#J;HGzk~eGlvg1OaNUEs>?7Ge5 z2tF!*kt7cCb3b7Du@HB%g0UC}yh-`j&Zh)31yrIWVl(Js$9ckK)_BdRUO9Ie=Iq6My;xB_$qEZhq zp&_(wx9gp$($WN57{bUWyAgl-Khijg;?~e?n$$3Us&4R9&Wr(_?V4 z;`U=RQ&fb$OWSHI(OVX(qn*m&f1Bv26M^r1R`JmQ^)c3FMwyFHP9Li46G>c_9;Dsx zu59QS%h#>agac4Q1MThF+3{-tIN}{vn1>(~WmrT+RW-TOf_U5))@3itauyZ1A0Vxe zO@mgYz{4vvUp`e)A-Ctr$5Nx2C2_ylvJq`uTqm1+cz;)Eit2}^7s3;NMSvcX&5O|z zNkD4R_KiIL)kZjy1w63@k=&X(qrl1J+}@K(wJwv}wHo!X4Dod}=a5)`GpMA^>`Y4W z=b`q+c)Ye&wWtayYJqOB>)ktx>uUJb#!#oeMbuS3*Y&EUysB7-<~Qo#8==qeJ{`F) zDq74f+p+-3WjN1o3hcmyO^spM?l;rdHukTb_;~HFCO6~M?fx!wUk>$qVW56yfbMS? ztr95Ie$JKGm`Fd6dQ2~#0tF~1Robi@QFP$wTVU~)jwv2A~=#FEih z)t2UA@!^mGL`zfO>DUw!q4c_Y=_O2;#yXAM*#_}Q1t8g9J441LL_`3o=> zcz`$iiefZ<-Y5iK8uoLBo&N((Ik<)R>S@uX#mJBUQ208?Uyy@tcax&Iu;-)XxM&fO zC-La3qWq;W;h(<%|Fow2-mFuPY`?3mlmb2pn5I{M7B&29cF8_F>R`j0#nW6~*Qvh% zTvrB$)EdbKoRC(Ysw4*vPPWqbjd9x1D1gh~_e+AH&?}0k>smsWEF~ly@!|P6*K5S^ z9!bv47Tpxy9Cg#!cUX;uO$ZZq`$`Wgi4?Ifz|b2$rX5Ym``ElyH8uCwG`O#Y%^>!1 zmmQ3xx8RadrK3ME>a$BD>B#AR|Mw7`mfQMq3l$E2YVd zeZZeD)R3kSrb)>vxl%gi^_hPN{!o<7*lm3N#nr)BsY&-{$At*$okp$G@4=T^VQn<$ zpO_^3L)^9#n9m2k@sy{?V8>)z;N$#7lPa`zj-Z)4azNk>Use8nEEJY>`L8J@XlH%i*97iP=Fqg3Tow*xv+G)H(9xWd zRkqJ671DQ#=)tZR304@=L4bxB7y>gidRq}&T?4S4t;%PtdB|-XnSXaAx+#{~^_J?Rz7d@-+FZM2MLJ(vM7Wpt(7f=f4hK@-nXhj1 zG>dj8AyY<-qHf|vT3e;d8h-*IV8Xe*O5{-hQ{BVB%QGvCsn)lCw+7xAG>^K zuv<}C`Nf`HlKa(`%M~I`QC34aFWJwjU7$vbfFZ zRo}>9qa8&tM-ZUdG$zEV0x(H6#LAeYNBrq2u*xv*ssFTH$f~twvZ#4Een8k;peK`Wsvo=GICfa2MES98T9%g;g@*izx4psroSFBOGR zVS{i5;gI$+pL6f$xp{Qv5O#8@r9{JsX7!$z#D32nl3X-jaevA`wRX5`M%q`f!S;r< z2|a^RbOQWuIkQdhzE_|>392WQM*0LHtU)&41naxVpHm*-{nQoC&oF0o; zbVL_2o92m%O6O6pZPB*i%3#VJWvx>jZD9f+%&UjApH#pd1MRwZV4cHW4qIqDWz|mK zjyIKEb+S<-VT%K?Cg(?5y#cDX2G;hBZX`~9Tq@cMYBF%-^ldDkB~mHr9d_xb!SIv4(_n#lS4_c#! z#GfR6NeaBL&(*(dzhCa)_X~^2)}EpNM1KGxnWH$G5M8D>t7D)2E2(o#OgyDE28FSFqcq z!fE%y%+$cc?cQ6@0yLOT^Eh<)BH;eqp9y$%Jmcc+6-_`@i==+6^#^I(T`XHF+ya&{2A%mlql|iI-?PSpR6| zAA^?^!Oj?9c6J$e6AF4-Dy(~m%6#%(WVXIv+XO!wweTai2x!cqv~_t-&9Ndj z5}khcaOg7$y_e@16m$e7=Go@dwKaA$J`;t+Po^~6umNyo&j zpU6mE=@)q4th<8fux}fre0g3-7=(-TwIA!n`a^gsE6kH=*QhxDtzB4bFKrtG4G$zn zXqzzT*{>)pw5INBkH>q9<2zsWJNtey@ng)eI7&kMV`qIUl?p1G#YB9pp|gCtmzmgi zsVkkV1Ssp7u0s?6frED~VWtT<6}>muJEqH9?+u_4V!^6TVvu)dqi`wyO1`L$V%Hc}3v3EDH?^MFt?{{!K$W}6K-Uw4YuU+6WZi}h* z+|G^Q#9XRzR4FS~XCETVrz;c{S(3-uNT`mJSRU)^j|Na*ar+i^GBJ@8A1J*gIT`Fd zE+%lz+-B~o=MdE$mNip!{Shb{pjhGfGhY)ZO#G=vL%UO#>KhRJXi(xVF3Qlt_9XN5 z7I|0Y&6 zHS=7$+pMqFxXoXi15N-}OWQTrQG^vx=QL476Kf~kP=!|RN0S>$f6bI~ZtDe=)ppBD zC8+X`MjgABWDjrl(6N66&NRKQL0AQ=w5TpbsTz*kvAS#~HzhYaZ0wV74_u5*$r zm`@YFC4SbqVCl&FB!~kLT5uPC>>_KgxVm>d=&oFt>}%DB6r5n-lpi(K_85stH}z~c z8W^X$cl9(fd`PBhLI3 z8xl#(10W+Lb^%as?tqWIKxZPjQ#Z7Un5bk<*RWT4nVy$F8R;KZLp&K|)LWa#Ap#}q zXX>(EmIe}{Bm&kTGlr00r)#+u{www2Zy*~{DGUHrYqyJFo3c~I1##Klu4*s;c0=Jr z8brn8*Ijuzhqjs;llB%;7BR7Ae}@1*xV7Dfq1>FA;=-H7HCG66uyJj^s$pP&L;Sf( z=O(H32jqrtf@DO2uGyU}NU|~aZ5rAKDFBLCX9oN{KWNP6?!ldS(X4S1z3y#nuc1Y( zR$)u}lN^!ad$b|IuRgy5R83>Y3gRsJW6Qum#e(j!X}jx#-eO<}YP5nANA3yggs zdDN=I!1qgazi^TARHbotHE%%p_sm|=vb2rGvv(3ZkDtm)s2-Tb4wXmgdR_1_s zdx|(l|QctsO}BgVq1(hriT!DOM1omd>MzCI_p_Z1&iDX^7{-T7Bqzd zkYC*A)VjJB8$9L5_^B<$f@I@qCu3IT6|g}pQyJd-{KHLN={<^4n#g}7E+)0gS+iJ` zZz-qi>YV&4+V}LhAk7MhOA5MeV;JMtq6AeM(%!6si&Cf*UK1RV9s*q8XK}NSrE~H= zJkSH4If_5QXV=2|Bjdtp@w)U>y!{#7N$Q5DB;;}uzLdTEjg``rd}=)D+1bMCy9|}? zvfVI0gdwJGMEqT7c3t}K18#yA6)*t!;9nmRc z@xb8i6xql-Ij_3zzAu+A{#VK`6kLK-DP=9o+#PIbU2xC;^8 zFri}3@aCF|U~Qj*_duej8w7qhjU%}eRw3!qe9tU_2X6>dXVZLwmxSC`2l0=|6|M{!^YAI*(1yf({MGTZOG=95k%pE>S+*G2K4ivph4NGmbvLDf3K>VRyE(g z`~9_z|9iPcSGDUkSFhOAYIXt}uAHH(;QA(p;g^hP)odF5T!fy1c_m@->xShTIJ`eI zP)5y|h21d5EGpe7ek5YobBGFN?EZ;ZLN8$)tbEjJ&WV0c_K90pUQdtAPIyQwJuHB% z{Z~8x7q4#h&fof)nTnRgY78>P%Ip?@0Tl~H+_+gd-r1hr0Wt3a+O`!4F@$Wo+^^`Y z;J-_D^?YKSs<|IVvW>7s9!OvAO6Re~1tmUaYmMXM09h}>l55>C?R}Dqy6rm8n=$b<`4e@SHB+x*F7oz45eIHWwoCIT0<{s1|p7X;K z$h}EW5hCcQzQC&!=XwUCwjAT6W=ZREKCIJ+VGA4BA%{=j&FAkmW7CNcUM&)!!y=L} zn<=cxVDghpsHqAeyhI8TsR~z+xvD}tYZ%JaWkU4|W@-AKquV}R;A2DEgnEn7&b0woNQB3qxSo>r9LbG(AE>daG)|8A^=fI-q5`o`DN~q< z;$7N!uJjww-1-fyIE2i4wrDu$MTC!Q8>1pzynDWH#!YcA0xI zSlk_%6Ff{&Qx*o%reja7xm7_w41dTP-;<NEA;;FFG+63h9?-EO zUE#WFI)j3J!olJj_DJ>GAj7QywDD*EEuvxcoiB^DkzK8~MwYG@G*1>k%d24mEKSFj z>L^*M#-zRuF3Ue?ueJWz=#_7X&7WFbl&(JYlkTO}F1+4$&4MmV%zMRv}eX3>mZ|~IJsl^>u-7(FO6_qn(%E`uN-Ip*IrXv-(vVE6yZ^Y8nK7hL% z^r-w`dcBFcT}NO%MVlbWD<^e4ff4Ye*tGe zn7_BXeftA*AM1XZzuB(W>ji33rOJ+T4X8yT#WO^z9!bD#GsbWLQ^>~B3FOoN087+N*&RwW&31%g_Z3bMtQZ&51h zH@-bcyT_@Hx%ug~?Y9F=s3f$#{J%PJ(d(e+qIyd4MOz(ZU9!_}s(1|*B()HkDsWXW z?5e0n%0TWz5J&BA0ONKAFT=_T z>kmf=I?kS#;yybO8Y$wDBuOGE8|E@&T<2n_!5k7jBR4yB!SD4JxhMyhM--K*B}P2M zQd@5J^3kx3=M^M542m#7;A&2qY00oDC_iz1dh3ZT(RZnOS#HATc6!KRkkolWQb`nt zf7Gf4+DQtka&UHF@-k}oy3dccM?oy~?=-MU3!od3SjO8ME00JLE){v;WbutMvrilK z1?Ja1TvF9QhFGd3hdWD_19t;(-bQnS$l3@eP_w7RS5rf3N~?u0#7i^LQ%kt4p;cHf z?J9yjVX)qkLlAN%TU-*UIjF~e0cestWq(gqHOVnwMHCetd}^?!0y_s3Z<|Z*dWhD)MBU*z~Xfi@1BWx7(k@=`m7bJSOZX~$? z=SWM?mbwL~zIE4DTiAB zEUz+r+ifc^6!(0Um)tk@QpM2p)%VV|u9C8qsJx2%o!!<+B}`;e#Hu!g;{p^MpJU%l zY`uBm??zL#B{#zKt=6Y&RNGd~Bo)Z+0|?p};v|p?jxr82liybF53QaWP*Br#oljBQ z?{&Z4L3O`h)~Z@0{g9?+9#j6&8&$nPdue;mj+PsWOZqOV;A};I^(IE(cLMMf$W_{O4nYWX9PkC z64E&2Ndp23l{p{+2=1hII{yGhc&{%_)6(1gO1q`f!#jxWJ!a$uWhV&*#{dZB2hu7C z3jBGSTXEJR(J0{OBm#Z$rEOPfY_drT#}#F|;Ohl#4MJ~*p&W%dQ<0n=_~dYMHS2Kr zr%mO19#0#9jb!Bw{{H~U?R}3;F%G3&4zZ|%QJUEt~Nn6ceD z%b?@^LJ231DQtiq78;413E@ybxpEx=O{_-;)6vt>+tFLefXIMl)j1@4>$5tswyRUi zQ>7&IdJ*tjrK_sVQmh6hR`WPwNIkec^y=YAjM>|qw;=Y^RYh5jW|E&FN$f^{ew9n= zyiBvkT!FzFMyA?mwKyxLMbxB7%oiYz-z@^ts6gR~C-!mM^U(u`XEG1H*lUtPh*y#| zsb0oiFLA)1%T0u2eNK{)MzNi{l#$r;ohHkWn!D;+Y_-6j;2?JhM%2nx7Lz zA(6u?@W^90Baf&$wkqXPmQmF0mgD8`+-WbKp|4#}OJUxUPNlvp%T~66`Mv57dX(M8#u*js5jC1niP1-^WS7NnBtw-*~yYkeM z16f~z_(*10{vH4hC6(KRLf9ESmvQ9nS1(`q+e^~-L22nJ zE!{_QuA!!=rG9=M-eg8%Y6_p$GXNPN1zdra+J|<$wRh^74eDy2(iImDps$?GTXp?h z%~IpDs_iSrFrJ?-5I;+wLvYH;L+M>Z-b#e@I@! zuoMMkrh=L&iEjL~Ffil=%|!U;VBl0__`8){bD8QY>MA1gA(X?qNg`3iH1TH%5E<-t z@=G)F1Lz@owSO`>3Ougs=Hb<{eNy0(W@cf`jCP!5i*bqTRi?K4Uk$FsYpK0mY8PtL zQmabxu6xM->OQzZkI!CqRUDb#j1*Pb8)vsuQPQl91s%q}f_&L`(o>)DN=N*rLH-5( zSjTcTdg!kWI-|u)m&J7L6qj<1vTOCo`BZfHINF2_yl4Bkl;htW^}YCM_EMv#crP9- zO1FCD<|{2cn4^Q_BxS*shsa@ly;}5@H5@dw(Nohy6*Vj?wkTpii5mQsM*wO@jrEYS zt!*NCYpK4^oipLLhSw{V#$W9(RL@aM3Rl%a7C1{xrGzl#h4h1#ZO!!^wMMvCNlidy zrwit8iX<`&j#w!;J^l6Q&$L5EofB$-n-WWTiIjZ8$00w@UTnE3dqS#mR(Oa9-_|v+ zE=o?_<{Zv-l9zYf==zd$EUifdn@=TOke|c2(xa(RoK0?#aC@ZcN$2E1)q3$$4W7$e zbf}Hq8aj8HO_2maZUq%PeiT_da#bRjV)bbzT;O;q^6v)O2x= zTy;tb{it(~%}LSH{cLA&waFG+fhsx=;x(Va*Zn6}3dMDfHaW?XCtu_aovrrKJGaB# z=p;RWX|{3o$Qpmu&2lUK1va;Rc^W)5w34E-RzoVd;H;{1{B+?WMgWqfMleUe=c+Vf zj;aJOnmJo&?K(OB2RdsdBgRz?D2yxRTrb`Ok;v_vi|^!9O)?} z&QzwwC+`8ME|fAF`sm(S9wk&E8QFrdCnud)X9SWI3SvB)omQ7+Hx@Kb2sz#t zzdB7ew7@1twRYPAy+uRkY>~Ji<90zJ2-9fTHkwu1MU9`N+4l$nD&#~5#Y3fS2+R-(Ru3Ku*2Q~hETx?QSEwjl<00Ykh!YlV;w0rk6QM1|Ut@6~hn#m|di{WAwayOdP;R2wEBxMA7YwH*r6-XqK z!&IA%J9x^!)u`z2|ZxM?Jg&q;5BIBS7t zPd~^-F3QfV7A6^Dss;cU#YzuU<96Pib>3u?O=$KXUoW>#lC#`xmukzseQhA4lB#)W z))?ccR8)F!6|pFl{`P%J$b;`>YBKp#OZ}ed^t@bME=@F&wH+xci8DdCtD#nDVht2v zj9@Xy_tVOHkn~U*`g(f}H9bsoR7ZYAXw)Av6sBU{sHZ^-u#HAZJa*K5@}|plxS*tX zTDH+M&r+3?@Rf;4D@t6 z1`!5a5OSOS#-r^$MbnZ{(a%$Ho(j{pcA%!HiKd=ngvPjKJKHUcmLzT9gOjIsuC$B$ zD%Wn2t%jl+7L6gJHuiZODGbjex_dbIqbJwe@Ab!%Z!1IIMWTQ6)^Z z7Wm$dM3pwkiyFlm43%Xg*2g=Th2uJShPcq$l9_7i>kph7j!3ph(iIBRKb7bX7y@`X z+md_dH>Pi?SN^%4`P)w69<{$vP0(rn0w|IZz&4%gI zqQT8t+q}(b* zO;cSuG>g+Tk2a8KbgAQyj68ov$r)zFI;- z4VK9xCmV>>IYlo-U)n2wN6Rl)8hG4jebMHz4p*GDs&YmZ$1 z_B|#a1%$#$O)J}rySK@2@+_T4)V(!Vwu;Zyl{Y)pM33cB^px<{S4vp&p@3-NPjc^! z4Elzm?6ua;j=4&DQ^W4EzI9ZPvKs5WC1iC3f*Q7=w#63WMq^wyJ@mgy+%FZ>^_Gth zrs%RMUO&>cuv+V3m08r4FGc0X6y#x4xfooZkqY`-w@cjUtagsNd3v*{E8>XLTU|p@~*o zH%{Fv>!oLDpu5RS3W1^>8nhm7HYA&6WTHp;T)_lkDAiY0XT2B;6&w8gUf2LvA8fIR%!TBbg(D7AmC2 zwTU1WV}XRaf9%RADkQsg7g}EHuCkU-jh=>;-YAYn#gegSbOaIzQlRAU2O39C&qkM* z=YdD-skE<|_`k)j{QS(;>C@dcYx1r>EOnaS>*>&ZH^o)QM;$zvCw(m?H>l0e4mZC8 zZy+5&6VbG_kx$gW+G^UU9LYyZ)bU(yGDbPsBEzxc1&1Io-nkhHb#%Jg`gg#Kf=MN! zPNFsH??ZC3+ii69I{*Qpedvfst`)0M?X=-{`qE@z?-6Qyx zYMQ0-LaMKROVvayU{5?z&>D}jJUrr_~*YwXid^o=9Xx*`*Cm;N$_mMq|b z1qYj#1F}4kfx&JF2W08{w}m|sF5ZRcORZgANcfsgm702oCnwcYI{A!o^KDOBI_|%1 zOZ2~lcj!#Avj&nXDi1K8OEE8;pTjzmof)e&du^}#>w%SGu`zAMTKnv;_Unn|Rdeb+ z&X8l8npO8TQGff3r2}!>^UjGD4P_7@lkqT*`^DE@JC#djdkez}{EnZv5Pe4LKex8j z)xqi>bt)Se9_JdN_;{O?g;kRrIeu!WbAlY!mUfFMZ0n}IA?hgwm4-y@$IC^^?PLMgVWwE zbcMlcOkcw!h}f(II(z4hlx+2EwA7uq|GJzZopifAe# zsAQ5x+NG2@Av27S4n4*+(WywUpGRRXh6b*)*6c4^I zj7}7sXG>DODlu}KEyLj};-;ZaH~W0e7A0Z}k?9B9P35{!)78?@RMk>LaJY$Djwz~D z9%YGlNKpv|wu6(7!|>Jv)*VxP>W;kVO6zs3d&7SenZA%5ArqX=r1PqEwNn z<7ZzfvP(%5jn2w);He~FV6BSGwV%l9(85ZJ{)@Nyer%q-*6<|e>kB7WQP$c1IWf9fD_wbEViok_m*Q0b60t=Dgd30!S=-#>(kYWuN_n$eU^?@PbmJVC z-=4mE467@?E{<9&QECekvq>b?3z;W7vc!z$LQg)Ta&f$z40XPiIS-XZO+7_LNdhv! z%QWQs?E@$1Fcfjach;%lZ`sSMyi1lVl*&4O$j6HM$cbi5{{YNGpKjSC0rU3PvAizu zqoaI3w!>A?(8qD8sZHkfJgZYZKsogZM+&Fpm>NuymgYS1g7tL7-DiGACF%an$@kZv{?(`&)6)KAamh|9>V&G}JBN}zKY6r>%A3h_0#KCrDqQ#BwuGx}bH+WRM2$n*9Em)aVj%F&yYlHzN*q9QtHa#z1dkb?&K1o1}VzHkqMcgE6$K!AyIdM&M6uch0ldN{fYk zCAR+nJKK7yl0*6??@pmUAdU_fuyQzfPYwwy&j*aS*7}xY?zsFwGkulQAJk?g<-M4lr^w#_8d89gY~OYwi_OU#dUk_RDDV zS+m>kbF_1pI3FR#rTV|9ul8=Hp{tgLj*jUaHi(MPP*S&l$J-e=9Q=R-RtXOy z8jP{$;wv&RN+-5G&ZOqgJA3PW9UyUWEB9ZQ*l+tMJ^q>+I8oAeeC<(^0q=vLlPRB; zq;0AenqiC<1Y~#p{{Wt}UqdB{aU6`%tWm5;V^Udt`|Mg|GvjW(7=azgG@2tDz}f3B1aYg0V9FC?c1O`rq^Kfg}odRs?NRb1|AQB@gJ z3{g?RElpCs<^5ttfS%+i9ORMM0(65tAVq4aWr~>?yq;Wa@3*L(J+95>SB?dyuDYx%kXNryPrS_B)=*!FKgKS*yi; zU*U1`L;GcA&U=LwRmRCBvL{&((cCL(;}WU$I>Q>Xd5(bQM=YQaRA)KWF68xh2dKF8 zJa!rz8}62tp14gVO;8*OF&i(Eu0vr+VgiCd$pQQ#%VUCisE3C%5v>}C)n=OHJhXg` z&46~P$pJxW* zEh)+sGpnw=&tqDYE7Qw6HQ&-HllXxxwFH-*nYz={oC8$^&`k#H42|J{9s4l{>8B8Q ziDRBDy4>l(z*6)@$M21sR~r70>FFw?o2V;dqO6*oqn5rHe5j_}cKWyoc7+56B#e$Z z);o9b7L%u7N~;yt?Rt)PLr+mgV%sW{>Q+f+h=#`?u0idtpvDyLy6!PG2}Yj{N)UJ$BS{Cu9u4 zv0^8x(#)9XOB6D#!k(~GT&XMS&B`iThK?!1L>I|2Q=%NdEJCZ`k_iVG5VG|xIlaNv zJzn*-Rg_hAP{Q!1l5O#g!Z9E$8KvHL6%4F4ugnonyCZa!>Xz9w-9vA>%8F|$V<}M` zXPp~FOFP zh@u`;`y^*|i0o;b%R8iLBw*mM!S!$e#-2+<2gFHFOwdu5j47pxy;3MhE9J_~w5&|T z5PyiTH~j=*27E$Q=MqftYBOop#jF5Qc zhT*M0!@im7j}fl-TaB^k`U-`DMO8JrFFv}Z9!7H-u_0q6#^O~|)XH$$mVTbJSu3HC zRn|uLNuY|Ut|D0r`LdN}@=;bI?BA;MKI(w17X%aUIPH{_GMZXCYI-OlW?0~+gw7*bGrX13^7`(1lczq;_9_a7xH@Wmpi)$9xf;W^Pk{_PHf~Mgmr_7b>1dQcUW1YlC$bCQ&$Q%KUQ|#4Q)K&^EsHf>W z3-uj!T}?er%HwmonmoSNRZ_)WnBWtSVfc-DMyI0scB;V@g0jy-_DEQHR9;Rajj~89 zjze;NKViowfAsxh?h@7%kLD#g-@+0I}}J+>`S;Ix921pV-Sf*^*LM@xSE3 zyk_X$yzAbWsh0O+=}4rYQ&SnX*Ht~jO`(fKlk8tf86|riqv@|Xcy-eCl-*Hoeut%k zp8o(nOlFRyXL;ofobUBy06AtPV*ux0MPrK%xk=9$_Qsk~S?F!^)YMT>(bCUSNtSAQ zREgxt&!~V2{Phx*tlJS(OJt0qZv^j`NgVYLi=Ay&4gpF!m8C=T;Xv>FKDs48*@wgT zJFc|%d)upIy~gb{yU*1@0F7-5xc1-;a&~Y(#mrJ}D zaHgBjq?S0$Xy*hpauw%m1K*qw4?3!NdG>Isw_fQkJz|#hq@s{b9UK#x+G!N!cQyc2 z1Z07da0dfA^ou9Yop8X&#xzuHPS#CsCm3L)ZX-O9ynihcH2q}1Hg0~r4KIO?**ZiL zC4XV5WQ9)mK7E3?IpgP`r@^^U5B~sH2XFdC(STfI2M6V%(I7WFegWpT5B~slb<~dL z`TQ*2W;NHS4@J{Tv{u{QbN-U6L~}CIs+lK5BY;{sSZ4(Dk8z`Yr7aye^j#fsrHSn@ z#v!JbNTAD$bcpVY6d;1n8%CfG0tqs6q%HSroflqHL1v@3)K48PM9{Tsw$088Fl8Oa z-rtGiOu9g^ zF5Kkf+<}3R4l*^*9CZNZABp+?sK4|&=TomLcWZw0($>L3wW9P(g5%dUj@KiHpt168li_3v|V5~qJ+aXuqEuPAC=-GN6x2ff~5D_{; zmN+H1(NkLMD{j6mp()rRLj;g z#anfO#fCG!-)yRn{!)Fasv~chKdXs{q#evRkP**HbnU7Nj>@ zU`RL}`(Wc)9FW_i@#CfX7p}?cS*WcO)mW=5U{5lQpK&5}1POB;I{_e4Hw<7Loo@EY zuD_~^=|T`JSeB>FUt8d0>;&T{CmG{dmr>iQ&)Vy!s%>(Xl3tUK;=^nnToKht_emM` z7dZg`01b3xna{d+9DS-pU+_?t*{Y_dTb0h5oAolZWt0bUzLGsSUdNB7uHFXFnhyrL z29=mOhQUW3;4z#=Io5Udxg>ONPeuSay7`&;Vm2TBTGM(ER&*Pi~>AiWPss5s4CQ6nA4l)vYtdoiQ9 zui3uyMbq9B-K%ahEHvNRIa70-a$|@MZ@`9BWjR(*K_1}i##V}mAHW*=XdXAuS=8bvXa>X zC?D%IjDM!Gn}kZ#C<|Z-kmvsZdsqJe7ivvUiXB41w+KuSugC?3NguqOP%eZEdjJ8< zvEx7Of8ncZFWT~EN;=kFEABvbbg+(wy|rLjDUBv-2?y>6P5rs-4{mjwPf1H{qlS~H zoLzcGsZ>$jHDvFS>*RE;U6D^W$3!idXvk8^D?x2Xvqo7L$n zcSr$0SHLNusj2hmx@MS~ljni71{`_Pa6U-B=UOFIN|J{k1;2+sp;Rci)pOzE{^V`) zSt>eEj+eK`Zs}NLiZz;4D%F{pN9vX=bD^7F7WAf)x?-^wPd-5@+T`zBYl$Ea>vC}SMKpk1K>|c&Ej@|UU zH;1NznnPo+s!0`zk}0Xi3cDe~yny2>aCrPR(4%EdH`b>fyd^5lCDnnFna8NENA=XL z98&x`i14MG)ZXXt(>QvHnxw-Q=v&+`JgFRQEi7#qEO0k6NFKDhDM+)$9t^b;;Q5ORWfgK%Jd76vbEq2rIg#Sb$~DD5H*?C|LamG2k*R;sBQ7tEL1e#qh_9>joLpk>ExLH zv60^_rLYGFumjsvDsKEb`5IreB-OS0eEvyorYuUm&E`|? z5k^s#KiObgJBK45U0+I@*Sk|Ru~L+me|tQiKZn+8PHfG6vaFI3Ce$*Gqu3D4G7bnm z#x-r|UYUt{k=E1Im)MO&Qb{~ezm&yQ0;`bG6eKp^Q3pB3n%JrjNM9@I;)0oNH8pcZ zQ7rW@0i~#pS6AI0!bt^4;B%h*YTrMM9Rt#-URgf%nW>n zx>R9WQ@d`*GZi>Sn~YW4`Wh1OaB_GVIq#-jN#w1DsMJ$QSexQe3U14>ZK@8^8yO=w zBad)0Mq4l19@Qfc(Y-BssoxorJ<~@Xp}PS=AO$#6qnA1qM$V1Y_y(B!nFBPO`p%o`Xi5q?l#wHbI!xi3IadnMfr07_-0t9U zqjcH0+@iM8bni^{J<0D>Qi>>=At9-wU9BM-%BhSo2Yxb19O^=z$#v^~qO#a5Hc#z6 zT|FG13MQ>cR-Obz-tE7M4kQcnIM)`Q5=pr>l3o7*@4VaC&h{x@8eA@&PhCMY^^(U$ zYNnEEnWuz#URsoJgzY45l_Fq!sb*o{2F1}e*9xjiXx8OdQ&n>6Iy!5b&Wzs#U?tHV zAsBWn#)f~o|d#(?Q~sZahBh065Ly4-dLA=N~)x&{Z9j&XBvHU z=+3UC=?=T zlkbD7Y~CCd@M7iG$Ea>`)c%=!Wj!2GM3F@w=?{kt2pfw9QgibN?A8)+*bKrLILKl0h=W zGRQvYOpr00vFBP(*^-VcRqL#6bV}a~M+7vNF1KrYM*rRU!d&O zQ_|hK&cjPp1dSZfwQ`q<#|2qNN}r+ApAdS|m!LXUw)0r)@d13g7<;tSlY~$``6Kub zeOJ0y!Ty?~w9`LSblr~W)N?7C>0MDklF2nglFyeTkO|s8i==XDSy5zR9J!@_>wQ3* z?FHd|HuEQ2+T_@9L|$Zv{>q%{E~o85;amd?)eTT{&yj7Yf8(%fHMYHpgb!o&8Xwn9JpbQ_;=S7m(@`hE=>dp0mPBXf zfG_gWd;G>upZ@@#sUOpQMQ`ffp0?ktl1TIy7zELIi?!E06m|A>U{!~)1ZqrvJZhcP zb$5=Nt~dKs6&IUfj~9DP3%;XhJXKRK?MR~`;_o7WSJt~;Z>D;l%hon{uKg){Ackqr|rEJ(OnnTT_PTi*=$JC zhK}@Ja|rT+mXV`fn~XT)abc1%jd}`HJ4@t--R4@jsnSu;RV(na{2rH20B)kaDxa+B zqpAu*$pwZqlW({MrEWWDls*&KY(bHHMxNZJMUq6LG!%+tP8G-zpHS=%ar4)YJTURk zr93X{DjUB>cvh6Pmk5OipFdNxDx~rz3lRem$_~JsXHloDdTXn?y6gHw!N~8IH>{Eu zmL8!+P0_a2RbvvXa@on`=igS!gqE&4`2PSUP_3F-V^dD#{>fbSeWtYNx zuS8Vzoc##tR4OUqudbz*mZNn-NJLX4hj#-!s)OuKILN3vOTrrkvW5%mbW}GO;*3=J zw`keC&7*#B_y;-GX=R1I&!M)JI@NP#s?uHUT=gB(p}Zxx^voSadbmqHf^|oV;WtuN z%>;_$D#3)sNF&^FtwW^^p}Jno-76wXV`>;$-034awK+gzA()auQZP?C^M(7bdIGz^ zn@3Ib*H`q!)pV4Q!n9QPh&L%%ThJ7~PCi=SyfdYai^GnPrhyhXpt4a$h`p2u5CA`R zuZ6FovCgX*<-DZbosU0NbnU|N)ICH|DTEMQu!c&PjhoGqLVF{2+w=F-RNe^Ngw^$b z2}=!D=^dtq;a05gySds|zICKg6&D_-#&T=vh{w+|>QbZu9cUhqU4}lT#;TQiw|1A? z@L38JY_A``s0Xj!`p4ot7NXc$R+rB zC8mTlj>Vr0RhzaKo=&151>lWToyKCv>FFA4;*>sjg>;I;8*2-3^b+bqq}}fCpeIfW z$|~BO;n&(vr2JIBQ`tIl-+qRodS|Igt0-0|f*?{sZRF&J7~@gbLKp36)8Hd|x-LM? zo;awGkHfM3<59iJ zzsR4Yo~Bq0OBgnv|XF5PXT!JjRZhCxWOBbIx_O>~o^GW!D)Q z)&cgRqo|%PllW+4mPL}c(h#2Lo%O%Q2pJ~_Is7%|?-V>Hw^sF?bdAtGVb#=?*0dm6pRAMJhrQaQQ4Do4Wu2}$?Pg?LfBgRnf*OYB?pEObj&prOLCyDleLAaW>gXa>x!S6a>gyvP_S-1saxzDAW$R1*zH3$b%^O_d ztBNXfEloWHtdzl}jg`!Ufs7n;++)70E}y1rX>FZPP`0kEryH!-st^QKfQ;omvUBT% z_sQGe8sOz=YuDv-<+1GKXT|fNcjm`mGppzRN$VNs$AR5&h*HTMt=qylLBXVcEkatSM?=&U8`*3qJ z@IPlCds6MIUr(pcityF#z-^pDNxniB)fGFnGmm$sm9uPw}ObH zvB`C;l!Xn6CyZ9szo=A5Wl@;e zf@E#j%!lN5{Pn1KEi`cS^leZQIAgZLGEV@8Zgr*UPs6VxC-<7SN=-a973LLr6(@zy zmr=0g3;IYZat?l-w4z=t^oq3A_evUR>6Mab=BQLLvrQufIqYyj{PbRznj`u}Ad)6= zv7ARLz5y+QaDIP1b;8XBSgTiw8LB|sNc+SbjQ;IeP07%=TbQa(CMC<4;R9JMuBw_@ z?X~v#>l4Z=B{fWMC;~+|8&2$Ts|~8YTdSocfnKjXGcNBjN7Lu?$K$FkqowHSszmY9 z#~h;|FhB_W^z*7|u8`PnH9ay}FHlpwlm%O969qePeU5c)1(jKu@fCYXCRzIG(^o%D zP}^ymGgB?V)H0}Is}xA!VSAP>E;z^-IU`kiZkemHtVZ2fm$a%1B#s(pj8n^zk`>qz zK*mTIKRz?6O_#*UYps1fEnK}fZJw%Wp{t(ZS3dh?JOBabQlxvl$(%kCB1U%P<%?>_ zooL0ZG1d5m($;0Et7)%H)=K7@mYXWj#ZSI4vWH$Bh+J;SBy+5lD&j8VPS*1NPQ?ly z&Wu#6JGI>Z04uI%qC5zOc&zu)SQ%s$(E=UQetd-_l~O|Y?UVEQYe~A?V6$7Q>+1KI zY2)5i04(RSqJnv5ViXUV8q2=UQqoJ%mq}>vbp1;s-evf!ojeZ=RWk^q+{%nH00l?L zV*`LSajmAh-@3jC>M7EfrmT*YA&jceajn~w8$rs)4(;Bo7JaxFT%3}Wt?xZZ<4M$g znzTIx4^?$h{_DfriX3*D_dtLjm!?M4rHbj)b+vAn?wzExQTb%7sd`$e3*=!;YZ8Dl zo_BGM$2xySc1qi=!iJijW{!yvJ!VIg@{-%4UvkI*E$j<{-#8@&)h=%``A-4@O)+=c z^$`pMD2#x}yYir(_{iXmS&~VAufbM$y)3@Jl1SiZ<&AiA#9E;L0BZ}w#AIExP8(s` zf4PM4c>HzknlFormQiz-8i^7{*(6aI_ec9Xmn3fXByf9xGlAhgtg86mwH@kcm=rW~ zV2*j&3hLS#xqsFA0jpW}uTrzpw7oG?)pS+Y>opBrmA))q1y97lCNfj4K2j##_mn)D z=iKL2{*jgn+h2zAd=)HDEuX30SrP>eA@d|5n1RUv014~{lIeDmPPeiR+m!f&b#)uP z_6(okIr?d@L`bRA-Wu*BaIkeL?~X~A8rcXdUG=$^b9d{wl<9?y6Qs$ENxQ>~ha4V# zLpoEZRYhM%#2Eho`E63pcYlj_8gF4GCFy@GV;&k+L2CLnlY)FUotS?8 z7Li(Iv%)^Bmd}6if>{`{({zo+5a%QY!N=jp8g2GY>X>HnYMJJfm9o~MQV#=cI6sGe z-z`LRQ|KyE>NZRvgbXQRt5k zC2#CM*`UXetJPJ$pnb`!rz}b-bRXIT$TTo;~%Me13oWW`wlsk*`TIMfRqnc1H-k z7UUxg9Db3A4&D3ydc&(KO8u2DH0~5Cb$pm78RG6vKaO*)g1%2T?KJ?KFTbH>7(8%p z5spvgonp5L!TTv*B>*TLSu&IO-G&F#vDIc{1j5}PU$l%K zJ~SNT^3%Vw)DXkfJ$=0hs%eP_W3{ zkQBC1!o(>fBYWfO3ESJ;jcP;WH3w^gHNJHXK#e{j>Z6II3Imi8f)uxXxyi?FPO#0j zWVo8?r0(ReW$R-#=^qTQy+_ovoonMAQqOgzlg+kRqHy%q=Fg>=fou{PdFXlaAVjx^-1Os^>*-sDgKzxVV9r%2Z}ikr*;arQ~c7sG*M;I2`KQG_Rs7 zt5LmJdcLf;P+nTmS}N%33MZFYQ$s3Hv$?{?DoFB-gpdMm1e1Z2#-N?w(xodkkqv?{smsbSXKkmV~NR7>SeNa-p#y z1f13g?C|Q;kK+~Ox>1QPw%C-VSNgS7=k;|9^&l|zZD^#2P{RlF(Kd$9I_I@#bZm^QiU&+} zS6e4iQuO}-Ty%VXT#&mCrn6M?S=PZio5oN&|AL>#GBiIB3c?2{lo z0!Yrh&(;@k{ZV*(mB;kM{98oz9&g4;BPrQ{Sy7mJJs^NU&b>p`{ufVhwN$T4+$N*0 z0-{8MreRe}RV1Vt7G1;4!(-Wq1n{`XI0AS**OAWk6@3#@p9-O%j-0_f)kTUcD@_p_ zaH2vO^M=3#^RHhDjyAEwa&n7}^nG=y9pS~IPO<8gTYMKAbQXG3Ut29RtsH}E0TRb9 zUu&5N3f`P$kG6H{o}1}t?0pS#o(l}KSm;zTOHETnwn^Ck0Cgd7tj(4Oa4yGoag&3R z^nI_Xx>E67a=7$oQCuzN0If$YPry`6+sl5fqG>QoF=s7|?Eqw+A}-!D#A?>jbgJr_ zE4oZ${To>#Oo&*iPDTM?oNgq0MyfkZ< z9W^CuEV13bIw&TSi{c?Jj}-PEx>_XK?~IMW+fLDuy6W79oHaGRZI0$spf;eUS%gW7IuusvK(G~aLWwg}Cd9D@pG{2*PjJl}|f-Uwx()5+H zuY4P~bO8%J^upcrOD(GFVWy|3@@MswF)wEx{{UZoUxuxTsdZb2b&hU6h6<8T4QsvZ z+x2B4-ZoeD8!+!(NPqeN0MAlW4bW9!k5rO#_)2vXLoi3Y6NOV(LaX!wHXqARW06Wu z754)q?Z?(u)^_y_SGq{s7(8(IJ6*Gn_D+f7Dc|9JF+BeOq{;jiZ8x{d1v$waNORB7 zX>Ph;{uWT2=XBB^`?>V=-u?x36`JwDC*D z?t`6i&N!%J{dHyVKp*VwpVW58Yo| z>c4iy(%o-UB`?|QrXY;%TDWboIQghwGx?y?U$p7}07vOhpPN~a`iL}#iFE-y8t~$n zHX22yeZMfYkI(O6`}L+fBP_ltco`fn3ju+TeMa3EeKj&U;MGQcS>d$uR}}QpI5=Vm zU-qzZsOyZaH8limV-vKf?d9^h*!jkNv!%p*56o;TeWLM2Gp&-9tQ}2LaFb;-)58rw z8^62rBhGP?@9nC!#8J@LDJ>ma<=nbvq~eC92~nCJV{W1VX==IL?^cB(JpF;g_c=qv|f3sF4~PR&cUW zN>1f5vjTjgagax+KQMAN6*5uPC09|hT{@mnR)&THg{DKsP#lQY=PPB8woampPTYFg zaD3j&bQ|BVUMrH{nGw}9R#n+jN|J2$^r(Sp?V*PGM*i~SfWUGiA9QkZMs=llS4j=e zqD>XT80Lzi(E>=1*r{m&&%bSDU0qF2Pi~Fx6|q%cq>>X1P;(tTUSQp{bF>^_yBxXq zKH8^+ueYb6WdTrG>BDX~{{WnC>782irFGZm#G&g_-G3eh!o$$8Qc}%7O2KTfbsfE8 zdOE17Ryd~wFlZ_Q0Az+h0Au%*g>~d$+-$dax{`_K5J_*Ur;yXv&`!Y1M>rX1*p3Ln z%DCawh94lElq=74DUiRZ1Dx@-h}C}WNp)_&skrp9^DZ=9KSt8qoq|PljMY?w3%Bgb z6-SjP?6BH>EODlvz?WN`y4uy3ToHbX4><`@`oJ>Z>jCfh>By#5i?%`F>4k#vOMACd zT&+^O(@UMZ(4>*NoIGy5)zz{YPhvkkPXHP=kp=<#%kn=z!%eY;mv6J88eWRMBtDQj zimN;i@I|d}&X{KswzD4rBH7WmVn63E)ouH>FZ9-$!yUBGa_D?0PG>H|%sah5)aimT ziEa`^3%bti08QB;6akEk`+JYXY3#pzXXXBSV;U^c*Q>7ZDrEHI+-?2(nf ziPSul()l8*2lkg4Dl@|FBh+;vYf*`ckOYJfi<|?Fe?Oi0I^W$ z!X)b+nvqV}->z=V0p#P$`The;x-KxiKjGVCanl_}+z+gy`slqD`MY#%@v$NL(&Xw7 zB(A~SYq~cp(|#Xd}Y>%JisXmH*w@(S1ZwIEUm4M?QDATX8)F1iE zwZ2oEEnx(Vjusw2j+*wRKDe;OUTD-jKOl4$*}aJ`o~y4Qb|Vd0{(4KRFun_Yp_)CR zM_JAX9N;x4AAmY_;p?dApR;-s&-SLcsO`u4XF2?IrShF+@O$kC9Y6*(>pJ4VfJQ*1 zDt~|R)?3*Z%+t zsP29obtg;P`ZK9*)KbA&SxS>!RpT|MbgJYREzGHqJ7*u_*CIa9q@W10t$Oe-6=FL!j>C0jK^mpf+|u>qzeHVW z(b_AAMAp^9tTwjE9yb7toE#h;PddDK9|A$wU2s4vEXcA+gPgFclpOtd8tBvbB)gZ~ zrhgLg^fv%74x()1{xs??{8z?5?pIRXvNaoOUAG>fIL7Mu&*S=p)+uivA4Y0}_hsSg ziA?QD7=qXw1sNyljX@7OTCqFSR8rGN8z+{v7=dIgcM`buIPKqPIUr{mol(0WkVnf= z6_cz}#AXImSw{82z!)cXFmgsXA3k-uh4nI2E1h8l-uopdPTOLKWmJLcYFUFvK?oe3 zq=PJt>FF%}6@9yOYgEqi+-qnAPc^{01ami-q;A?cDYtG;1`aiG zu-io?V@T2bEb_$iRK$(uE6T+|c9f0G*iZ*Ohi(R^_J9tBS1jW}q_i`I@a`^(x3oSQ zQpZhhmE(@8%`IfGQxwh~SXw_+GUEi}&~Q%B#I~m5xvf2QD$@q6HD%deNlcBgNK$v> zj!Lc@86bjls|CbHZPmVF%+Z>81Fb%M(h875W1Zabk9=yN_XBIW!c7ZPQ`OW%Z-PkS zc_d~?$O3Yp`D$2|S2<8esExx?ma%D)TimzBAS<45{D6JFngVigKbD$M#PF6$CG(5s zOzi_3j{_f0+4s}7^tr(AtdoveG--pnxxP2L>c_Flfr3K}M>x-%?mux|Aty&e zaEz^O1)i-K`h`WgTp!0Mb>}!blc=D8Bpp$7i5CG#uANj5-=#-X^#;~s)OQJ(j!3!9 zll#t-vV6mxayQ8QDCzZZQ>MCEFn4+^@Q#1@dL;f2bi=WdUXtm#pE)ILG=!h7Onm-& zz+vlK`EwAy-BG~Y6{}<INaK!1nTl;(1Lz7dkT}7>KRjUhA^NuK zCo^4c3|owv*-8E_qP5=RI3=!Cxcb#e{{a1Jb}yJaMac9Ob!}Zxo8XpO0VMEDR-%qc zIgLu~-5YWaLC)W8BNcVxoVlK^*y_r_GkjDd)a=~moPqbT`D@P7!(TIguIX5(KCSY} zCVzWrDC53c>Q;Mw#%N|7hgye;{=Lal`Rb3-#L%%)JuOdpyr7miXl?b&D~CQs?wMOT zT!6C}jxZ1K)%xodRolZm6}{jPTL{1H*{h$qk*I?^G840w!NWckw=Gcuyr{EHFIPC0F(IZGVtfc z3k{M=|1_(^ON6qa3MdHCejyb8MXJ*CWM$3i8t3L=6)TGuemJ+ef>2;bWo< zC}66re2}{$ARk6S$@=lBmRnd3QCv!|+GR`9^q$aj=T(pU38+64Y8ARG!un3^mV+xF zkP$?`=lit{;s=P6_3T#Vs<-?Ip?6`I1d_<0{^Aa*7yJEPR5Val&Si>{o8jryca1(n z_iId3NnFa_X*9TywRaSDi#S|@6no=Q_47Oinb!q{LaqtpZpYCUm1ULc3my(Y_8LO< zQ363u^$H|GKI4z}8yce%e$DtBu*oT<-ir5K!z1)<-6)c3s>+F}x^vM;LM`Kby4Y_0}KT;+hs2U`6wn)Ge;R836`DN_|g zr9{#!ffVP`7B(CI028MdHmXjp=`gcI+gjuTi5P{&GV#h}e;s3?Nx~MI;&duhQlGl` zeoV3%F4mE)<$s&~+%sda;YNF4V_NO#)X943IO-NDU~8P}$X$xCG*f~OSB^8MmIS^~TIuNP z>QK#0WQ}~O_kOHMe6hH%_%@IC#;M++l~y+gBH!?CQ-dtg3J~ zM<=#@^0+!mc`j8VEHcWgFEPzhaf}hzA?GB1S=Cjk=BCm^QmK}AWxuCn-YaDs7ihub znRA*iO7I*NHvJaQvtB|$zPzWU{u_Tcxam4{TS#qSDe& zWxC&J>EjXDT12U!0l^W?A&}HWi=3(k3cwM7T!F`HRBmRIS#QVv9+~i_y3K3pF%2ca zN@lB`ra>kFjpTfk`r{bSzOJu+wv2|Vj34%fyjKq8+|bDJ7dbl|ujj^u{7ICts+{M( zWpDGAf9gJyiw5bdg>oQ$HeIpy9EN-q|Dg z>&G=7c#<|16NZjFFY8;^=FzE@%0$0MMbj^m^+>_&Zy%0JIeI%Rg> zx>Xe5uT);S8PD8pGwF#>=su7H@|_cU0DdnfwDtEeKE8y#hXHzUAKCEEt+V)(rFwh@ zuIUBaoOo+FJpE5PLe2^P&Tcth_%W*B9{u?IbiYn|Yx-L_BmNAh>^~g>3UqXNx_C}E z5W}VG7=Ad_kL;GX@e058F)+n=VbpJ$|( zruz4%uT`|Qf1~SU{Q(5A#5Nkbm=vP!Bn$(POAILwjpJy*M zf|1pgs#Ko&YPJ6WFZb@BP*m;km+chK-Y%}Ga-l&StuN0>bc`VQbM|%;umQU2q-C43 znX12cZggI-^!QcwnT@bQ^;4BO?ntNppTAk{dF#*r08G()E3ULP&bIM3)oSZHUY|Z0 z-8#zYHMMKfY6+qY(IE?+tibw703P|qHCU(d`=qTld&S;|!v3$f&`|tUJw?thE=VGg z6sv;GHaBIl$jM>{eN0rsAMG#FSOBQ#i5s^WH7Gyu)C zUx5YW>yHqNsM6{qQIsZMZMebM;;0O6}QffX^1 zv+*ruWmgqZ@D6)aRD=9=rk}$n{wx0gp=Y{X{)Xj_PBkBFB;2p6PXekefAB`0iIDEY z4mBNTZPz>dE^un&IX?dYsvqU7k9hd{GfY!amHB$2Sb7zl@)TzSRU5qGS*?_GVpO=e znd7Ntl*3NqGqlaLjmlk-LK1gp+ZolaLQOoOP7c$Lry7Ha99C0H6x$kkLNIpR8A6kU z1n@{)+qOl#Mk0W}11z2a&!&#koQFy~^ zmRRmx6CM69L{zV0xWH3(329_$cFDAyVRj9mcPEo0R-Hv@?jFife(N=xh4PhZUf%Um z!6D8(jEN)*_wngF6aq5jkD<=9UYWmjPgM1tRYek6&qUkvPLt8h=~61Q!IVn4APfT< zo(lp=&k&Pz7m1!DB=GgM<}Qe{O0mZ+uGu)RdX(G?24?icKnDyr9Gv3-Yge}P^{=HY z6c(#ZF{HFx*%m5Dl*zjUo^zIWX5_IsCzGXBW0^)A$8_3@ZH}qX!E-T3B8XvtDMbfy zV~iI+K&JqA$vTrfH_uSCZBDmJN_Kbn@ES>#-!cMMo&54UW7~m^PPp|AS6zGK(thoP z(B@I{!O*4yNC&adrwl##I!-K^CHl6qmvcT{`PHqRvJeUOas3xV6?IAz8`U%<9$B!X z=iH8e9XArQp&~_b{?;^Pnk=2-7UT~~f=}CpIql3mW{z--8C!I5=`aUzyvTOjOQ2! z15P2iGUX|X%KU&MVsd_2?fdl~6zF{t!waG8%(*%L04;Si$!v>rLf%0+VyIXH^Tv4N zzaHFZ+!icRRMhPS+DO41g1I_z9Fn=pg+Ef5I**2`IRcf3D!>(Ba0oq*;ibfH_snsC zJ+N5l+*=Y0EUG|}v(5tm2k+-fZ(MqpC+1E;ABLjD=sgOo579G^-KP=D<$x8yKESSj zuAv9*7?}?77Tk8nwxVh+(;+WIA#vYf!2R6+01Z7^osX!y9QFtYAHPNw1zQ1R1a>Wq z{y5UGkWp9Vhz>Un;I=S+qf!(%SEqc_$kdO|su>whe-$H3R?|gtP_jPP8QSPM2kZ0H z46)Qwk}5H`JV>L1{$HMun-g_))pZg}Ep=S?DIGvBIV{8u%1(I$+d4uy;%Ox@k}(6Z z7}`M{i5>f$M@3M{+Gi{BI2tsS6!QbT1}EGc9Tbr+N!Y5OsF=qxeb}}V!yukGA2FRj zv|MWFUP$OG=76cej6UTc9@`ruAC{`{%xR}tARb`c3CZLSo_+rSJq-=Psq5r0$dV8- z>%e6{LH%@7u&ycWXfSo<$~jsZ>IypOha6@n$8O^z_zgU)zS^$FH5D&wkPq(aVkHUx z0HjR+01!1mis0*4A*fKHm;gsRvE2R|UP_gYNJ_fMtCuBD`p5cdu9%88cQhDnm30)Q z=}{}7WyhOGD4lVR52T!adZ%?{H7P|1{e3C(BizOYJ;59kjCa#YqSO;ny*!OiBaNn5 zSgQ^XxaZ$YYAWTcxl_k2RPrM2C(M{y*EJH zFWomX8p!Zwq@Ez@EM=IMKBX$iGuZMnK3cIs(^U5x#jd{RT~kRlI>|JGnvywER+bQ_ zX=hTt_|9{xTy)UUPFm{6muP9tNPh8_E>(Ta{$Xij$yI~m4!(qcM(3tX}R?eIS25&r$tVU*3{y5T8cV|_KapXS0Be3uu*j-rm042Jd%B; zjgudrBlzns^PoGPMp6LC$G<#j@T!6~NZ1(Uz&Quo=f@C?p!26M<6)T*R~WGbX7b|WDC{r+0vSN^2DPf3PW zqaOqrV+9$MtMGVKdXYL}v9XVEpy+%e>Pf#&^fjK*QE<6D zeMtpawMQ`#y)<;p(n*&hB-+oD$R}_gT}5-smPmun@ee*J?Tx%}`KQ!8+rT)!j6Ni?5Z9*OBHh$ZmT?CXarTdn0_*#pvLsyX@` z=^nGFiM%ZPNw_@C)oi&uWMZ58>nP~HrmUvuF9hTJ$w}0+I&6r7 z&Q7vR&z9e1F1reNUZl8W6VLvWPUHRk^p!7OR1dTjs;XFWf3d~_6|fHK-2VXdfvnoQ ztKGiL{bxc!5>I}df<}JzY)*d;`l=9;aq*9+?xbw|&r$UhOaB1kGogzsvp-E;0~3so zSpNX+#Jflr&H`ilYaXawyN)x?q1re7At5`L4o3&*HI`IY4GxTF zbkwyyOx_^SFQunkFu=z=p4z4Kr-`d{yxZ2I2$iB&j!A)5+37h0+ztT#8pEYop9Q3o zgU6`qtz)*{t(UiHDnr{~mF0p+Kv#Xl`XmRC6dvR6U>-Ya`cTUmsXf+)YN<+5aa?sh zwf(W8bAdAF@zKAu^kIEYGxN^8oYxxVkh;}Mt&ek~%hVTH5UW)bBaStZ(Vh1-r%u}* zw594gNrnWgl{n)}dW)&)=;#EiSd`mmKwR=Y_{X?CwdMLgs=LxUkx*H4gPlZm-&EGi zW0Fgxr{L-3S)?l?F3`CIl0C3>Wg1gcSA0sU_IVpif$A=r>mzZvQwNeNi06(;43Mx1 z7*L=LA5&*J&$r>LgWai*c@%zn@pnn}w3L@w;kDJtHrjAn0vbOgF$eAt3g;ipYTBM5 zT_SAD$j)#NZCi<_QB-LaVY@j~O`e;my;IV|=9vZyh41sun$vYXBfOui95yxPtG|d< zw_0SRg{6tr#H`r%0E7JX7e&-pNFGuuS@OV)ldOuBMvZT>S{`ReY8$vX1Kf|~2AxA0 zk0ISj#x{|R56e;NvNLZ1K>q+*Fi-Q-#919kj%1dbrDMy~?^*fo5Jm)_@mX=!YT z!y0qzRo;^foB%d~k@7kA{{THiy~InMz(z-X!#FzXLpwCB3(U?=OP0d%+fW3Z6tx!0 zt-z0fbi+i$`?)jsl;@0&3ij>!&6oI(TvBIu-P?>2`0BeHQ#Ru)o}B0JkOAknI_N7_ z-8z8olybJ+rcJ?QC%@A^{@N%~#;6rZl2ZBO+n#?751SG;<`K_riE zbD<|`0yI4PVE54g=_KEi7+}Em(u-8fg_VzP2J924xndF~O3I_?_#eAL6J+gmWpAL) z@675DllZvTfxV9aC& z)A7`>2!-;uW{EO`#Q-aYYJ1MPYDf$Q2zjRlrBdjJ-O8nqV5Z6rL@ybjRK`orv6?wCw2jU z**t-U$F`(qzSYrL=9f7ze@EBD-J-n(kX0@e7>r-+az6MKTKTi zH(DzNW_j3)fJixLx_!=mWM#h%Bl-)aqQsBXcd0_J-b)l<{W)g(>3%`^fbsOrKI)G*sHJ6A zlMQg9Mm+O_<)5Ez3fFY9LPOJD1}B7&3<7 zj1s;5wV(B8O?1t&mU^z3TYyNKGw|0LBahm!`Z=s;aqD+Nj!<;GU&nTo4&^C$3P# z?%;mQa6r$#wKlgxml}yF+M<@Av3U$L5Cb0MsmK}El&Yz#WvI8oA^|%-S^TpSMii2} zNI2W`W*yjoI44>~FJ8$<)2THWT6c~H@|EK&ow**S;~ve)=RaL?-8ZXmQ&k%IBWWv} zd5*DIm8vc`4@B^SG5*r?p^~PynF1^WoDflijQ$)QQ7t|sO*I`f^28*C<5tQ^xv)l5 zobYpkdyWox)v}+h=+!n{B9a*i!UBPdeL)Ae`D(XLUMBe0gW}O?w0Y9e8EOzh@;fm> zk;h<8dmc5F!$y_fJ@qvt$7M zrnugb*bD+zHW|VEGc2fc7RfCy&og zElfq0z+)qE=u4RSW7hh&j=gHkMBScTw@>k$cxzIl9{!SXr0h~3jIe=+E8(oe1CN=~ z7HLoXS+Me+8&sT*<1394(itYRkO)8UaUtM$%MqopZcOxagY>6`YT4ta>o*MhZ5q$~ z19IJWLU(De|Xa+ z`*ZO8gZq(U=?C4=z7nng+0=6PKRG1QokJcxKJkDl$X=(Dj@)_h`+n^w(u!i}&k2G1 zt<*9<{kb%I?o*(=UsLbYa%5va^RZ}cFF#PNy5w8~5#x=em}5OMr-PjT0HmE~)lNU) zBdZi}P3lfF{{ZS?)%|}}<299^f;w4AY5!ANnSw4m)!ur#uEwYkK-jWWCZJeuK})^VN3r$Nm+19la!*Wk@+5-o078 z2tYr!&bc0C#up%rVE(%!_M}%YB6E>}^X_zjT#|nA_8qv>@|&_0U}M|gOxaj51#!kf$Met`0kEJTatQVvv`wir za=}!Am6WMo;De>JxE;zf?~XJ;Ha{E@?mk*1Bdnc2MbpV5QHcUGWOJX3OF86?K%QqNG+(^#bAmv~1L`xSIFbDeCPyHN4s^MX)H4zvPu>mN z=b%8NaoLvLo!G%1-@{&n^P#CJg<;Fbg>FMEp#K10ZAn39q$o=)(l9y8R5l0GQ1A(< z92ll&jo9Tt!vmj}Y-#jYD4B_QWMRJ^v$rIEJ-xJ5fJrT;nJ_$<6_>W}QSbHqbke4r zYz+jZn0?sMf@d6L<3<-K6NC*XJ(TA+ohEh^(^Wl~FHJP)7Hf4@3}7Pnko z8DXt`lE_ZT*$Nf|yJxm@>AQS4QF@T3}x4txRTW1k$Ba%~9&sw{H5a2Y{3tm>fNJsiKss>ewWFwrmPbzus&YW%B1~If8;EdpC zhB5cK3_Xa*I$ao5(PZhav1o2~y9ISDO-q3tJ!}(_Ra6!}VqpB61y9S;b+1u)Yj)}i z4~n!_*{Z2s3dJOMQz8tGcP`B5p2q}h&sKUGTV2g7>7rpGv1V6uv=Rs;eQ-}5wRorM zs(4}&unMT^ZOQ9|W`hN*;v=U}XtT7nKDDqrM7#KM| zk8E-O0FIl~_JXN0Vf1sa%!7*a^qW>8#k#S+UWps+u=Khs>#BNdBMi^3zjIP<<^t zlLGsWW^A#?8EoWmG}e59bz!k6LD zAqbh`UB~uu&(k>XrLOnzC%6k`$~xzkibtW_HvFFV04Nj&&JoTIgmni+#?Tof*^5i8rnY3K=nw?Vd2a4&&cg{{V6g-Dp(j zHNxb#hpt)tJ4nD{KTI4B`SP3ke=SN`l?{%?$yYrKbp(&2IT~p}WvuAiZ%1CLDyeGe zDW1E`qoLg`RT-H!?U_gb4o4uI9QV{svi%e^_L?zM0h)`aZdUo#n6Akr^ERhF&RAm_ zHoLm(b7HeamWH8WY9--E{2NFB9Aut!=FuwrWwBfKJU3y0K6pRZP|HyquWLujFz7iT zaDHkD$I#?{T3XRiqPEiFOo=)YNVq+Usn78m4%Q+qeHh_x-Wi-IC#EXKPrsxO>8$?% zz{!k#e`HV;fk9F^`i9PRXXy&EZay9|F=D+rS^&m*0l5DFvJR>q37;p#J4hs`6fK+|(E=wY}i}oyY{{WLgNdqAM zzdz@y6>$yVw^@uFi|oC-f68Ii-_!p93mrNTl@HTw3on1~h~rc`gP#TZ+m9Cj6R@1r?t=iZ z{{U2u`f8z>nOv)F$8-HOl&N`EZzAC{9p83kj%6e3kPq?FQOkK`W|oSAsmJW3tpPuQ zA&2tR%D|+M<1DO058dygl@c)|k)QX@n?1sK_X^7`#t<{=g;sSx^;`ZZ3A!9kIPNk`|+qj zsDPrX#wT!cNh|>W0LMnBr3xH_F8=^>3CHi#=;#zNJD&vL5_$gs!;ft%@K^zM0He7* zzK83m0VGyXb0PHS7&$%v0N;&1NWltOy?8y&JNuLAQ9@vzJGtWzK90$Ph4gmMI|8wWpg7rQak*)(^GS= zhE`UUVs$>GNYwNAoc{nlPQ?<0SqQIhI6ZT;GWu@KU{ zk0g^1Q@JFL27fLFhXAi)pp4+16t2QR01!xE4tW|8l?Si~{alg$`P2Y$jzBr**yzA# zg*;qw z(}yNS3dbYc2l?t)iHwnISiUwQp8Jk}kkY?H?jM=cw1;w%0pMq8_SYBk{=82$Rx6!)pR_&kn;v^l-Rv(J5BPa(|w5vUV#XF!vuV2>@qqU2%+k4}Cz0 zd@L+U5JX%a`*p@R;zGLuu5+|@?aBIf8eH#C2~2`VA+QFD6>dtiI&L`51d6AChM>C$gXyIAKfjN=57f1axBVP=+>6C`#;I^Slr)Yh^o zy7b&{2m{L9A_r~?Fn$;xd^ZH+1aqg=9UXnPtaIBdZTEoQkqAJHwGxQp0Sdo{~36Oo4=ex75AOcilU0EHH>Nee|<3<4Cr=nNK9DcDm%FW^Q&uZw*jB)vmTIKNO&tCp_PFyFYkp9dP z3Yf>&)I*N{06jq5JUG8oq_M)(w+eZNWC;c2X;dPI^f#aPGA21DSC z{RzRy)G)hKr%T_h=5`eowGTW|d1nlz(1EyQ0yY!R@6{@kO?eNSLsGcbEl-I(2n#4w zqo`7Izy>xv>hItMG|_au;_s;N*&NnPb)xgRj30mrvF(nbzZa9o$%c+Em; zPpu6xROhw^5AV^!w$r!|pUYH{)z?Z`WtP4boB&&x&^lv|c7+6c=Nacmq47T7JF-+# z6&M_*;78&JAb$RJnbD~p2K8Q?xR&R5l;O_Yk~z{sSlc@pNFQA?qw1?YQ*Bvfgq}!v z@;~b-BT@?Vm25;aQ_MigP{CM!N1Y>!j_9^BjJ9D?Zs2kG=R+(((1t+3_Xn}pOG>Jx zyt26WIXWQ1f(FulS;mxYh^o5{9a9%bk_mtSI;aE;^V?D1q3Y5H{{W1uHx2ttatvcR z95zAr8nH8O&f%UtxzNO+RFFXA`cEIvM&v6o)7~LgZ;OJXYi-$4OSGS^_{jcRbMY4l z(3vehf3|5VH*Ofoz+gX)rX)@I0E}atG0_u;Zg3AIP+U*h! zVUQ|}E(@tS-O19*>LA>z0%sV<%Q^l>U9Qw16$i^1a2N=~eQ;0yIzmb0jTO`*0~vlt z-p2zt_t$H+2qiID<;WgeDF}9sHtxst{{VkyRPhQpBxG_?K`a0OoDul<&bwWrLHts? z%F0qa%0bWLq-KF!s)bTE5(5s{I_-9%0TEkHw8Z&JyHgx|hJTOn({NdR_+x{PKi}J3 zuF*heDd6Xx$45x_6$2dn{{Wxy*K4%^f&-tsfIg!-GLm?}#=Bjj072t|PJVyCLJ7%U z3GdIpeRjJ-k-+h8ezKc>4~pbHWQY-P6Y z8%XSZ^RDvOBz6bfaC6SPU8n%7BW?h(EL-?%m4lC89l*f<0DeDyyIrUdENHEJKIXENBBOfk7$o?Abc7X%NDkF)cEfnQXs1+%b+dO1{4RswtS8p%}MvaO% zZp4B9{{Ss^yFe&XIg3IiDisH}bMK{t?O?v-5!*er+U-Gw5wnm-IT-q9P7)&c*|kHQ zoR0qh<*wIi0Bs>fJ4oj|k@#m^A|7rLj^ocgyJual(I8@y2N)xe2st`OeBuW}@OupXIOAQe)F4ud8H!{vQgQn@$839c(v_C?rkF!g;r6OC1U{AwftNgUjo-iL zuGeUgBhy9#m)uI7py!eG&YVGXx>}`EM{u0v;72P7Bf%YtFeA6|*K4#0NK<%&Bw>wp z8nE=P_#`oqeZ40ufuOq4bjMKBEnN1fq*($JzLio%%Mrt?1MRNYX=L;R(P&X?x-!9R zsT0t_JGk>18d(pds+I>C=#AxfC6_<7t zm0zY%mLC4vmyfM(NVP_IX{yaTdewnUjk(}}dB@XTuGLPQCAuwDXC0WeyRT?&ml_Hx zdP(D!vW2SA&Hz 0 + - 0x2f -> 1 + - 0x85 -> 2 + - 0xff -> 5 + + \param color 8-bit intensity of one RGB component +*/ +static int clay_tb_rgb_intensity_to_index(int color) +{ + clay_tb_assert(0x00 <= color && color <= 0xff, "Invalid intensity (allowed range 0x00-0xff)"); + return (color < 0x2f) ? 0 + : (color < 0x73) ? 1 + : 2 + ((color - 0x73) / 0x28); +} + +/** + Convert an RGB color from Clay's representation to the nearest representable color in the current + termbox2 output mode + + \param color Color to convert + */ +static uintattr_t clay_tb_color_convert(Clay_Color color) +{ + clay_tb_assert(clay_tb_valid_color(color), "Invalid Clay color: (%f, %f, %f, %f)", color.r, + color.g, color.b, color.a); + + uintattr_t tb_color = TB_DEFAULT; + + switch (clay_tb_color_mode) { + default: { + clay_tb_assert(false, "Invalid or unimplemented Termbox color output mode (%d)", + clay_tb_color_mode); + break; + } + case TB_OUTPUT_NORMAL: { + const int color_lut_count = 16; + const uintattr_t color_lut[][4] = { + { TB_BLACK, 0x00, 0x00, 0x00 }, + { TB_RED, 0xaa, 0x00, 0x00 }, + { TB_GREEN, 0x00, 0xaa, 0x00 }, + { TB_YELLOW, 0xaa, 0x55, 0x00 }, + { TB_BLUE, 0x00, 0x00, 0xaa }, + { TB_MAGENTA, 0xaa, 0x00, 0xaa }, + { TB_CYAN, 0x00, 0xaa, 0xaa }, + { TB_WHITE, 0xaa, 0xaa, 0xaa }, + { TB_BLACK | TB_BRIGHT, 0x55, 0x55, 0x55 }, + { TB_RED | TB_BRIGHT, 0xff, 0x55, 0x55 }, + { TB_GREEN | TB_BRIGHT, 0x55, 0xff, 0x55 }, + { TB_YELLOW | TB_BRIGHT, 0xff, 0xff, 0x55 }, + { TB_BLUE | TB_BRIGHT, 0x55, 0x55, 0xff }, + { TB_MAGENTA | TB_BRIGHT, 0xff, 0x55, 0xff }, + { TB_CYAN | TB_BRIGHT, 0x55, 0xff, 0xff }, + { TB_WHITE | TB_BRIGHT, 0xff, 0xff, 0xff } + }; + + // Find nearest color on the lookup table + int color_index = 0; + float min_distance_squared = 0xff * 0xff * 3; + for (int i = 0; i < color_lut_count; ++i) { + float r_distance = color.r - (float)color_lut[i][1]; + float g_distance = color.g - (float)color_lut[i][2]; + float b_distance = color.b - (float)color_lut[i][3]; + + float distance_squared = + (r_distance * r_distance) + + (g_distance * g_distance) + + (b_distance * b_distance); + + // Penalize pure black and white to display faded colors more often + if (TB_BLACK == color_lut[i][0] || TB_WHITE == color_lut[i][0] + || (TB_BLACK | TB_BRIGHT) == color_lut[i][0] + || (TB_WHITE | TB_BRIGHT) == color_lut[i][0]) { + distance_squared *= 2; + } + + if (distance_squared < min_distance_squared) { + min_distance_squared = distance_squared; + color_index = i; + } + } + tb_color = color_lut[color_index][0]; + break; + } + case TB_OUTPUT_216: { + int r_index = clay_tb_rgb_intensity_to_index((int)color.r); + int g_index = clay_tb_rgb_intensity_to_index((int)color.g); + int b_index = clay_tb_rgb_intensity_to_index((int)color.b); + + tb_color = 0x01 + (36 * r_index) + (6 * g_index) + (b_index); + break; + } + case TB_OUTPUT_256: { + const int index_lut_count = 6; + const uintattr_t index_lut[] = { 0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff }; + + int r_index = clay_tb_rgb_intensity_to_index((int)color.r); + int g_index = clay_tb_rgb_intensity_to_index((int)color.g); + int b_index = clay_tb_rgb_intensity_to_index((int)color.b); + + int rgb_color = 0x10 + (36 * r_index) + (6 * g_index) + (b_index); + + float rgb_r_distance = color.r - (float)index_lut[r_index]; + float rgb_g_distance = color.g - (float)index_lut[g_index]; + float rgb_b_distance = color.b - (float)index_lut[b_index]; + + float rgb_distance_squared = + (rgb_r_distance * rgb_r_distance) + + (rgb_g_distance * rgb_g_distance) + + (rgb_b_distance * rgb_b_distance); + + int avg_color = (int)((color.r + color.g + color.b) / 3); + int gray_avg_color = (avg_color * 24 / 0x100); + int gray_color = 0xe8 + gray_avg_color; + + float gray_r_distance = color.r - (float)gray_avg_color; + float gray_g_distance = color.g - (float)gray_avg_color; + float gray_b_distance = color.b - (float)gray_avg_color; + + float gray_distance_squared = + (gray_r_distance * gray_r_distance) + + (gray_g_distance * gray_g_distance) + + (gray_b_distance * gray_b_distance); + + tb_color = (rgb_distance_squared < gray_distance_squared) ? rgb_color : gray_color; + + break; + } + case TB_OUTPUT_GRAYSCALE: { + // 24 shades of gray + float avg_color = ((color.r + color.g + color.b) / 3); + tb_color = 0x01 + (int)(avg_color * 24 / 0x100); + break; + } + case TB_OUTPUT_TRUECOLOR: { + clay_tb_assert(32 <= TB_OPT_ATTR_W, "Truecolor requires TB_OPT_ATTR_W to be 32 or 64"); + tb_color = ((uintattr_t)color.r << 4 * 4) + ((uintattr_t)color.g << 2 * 4) + + ((uintattr_t)color.b); + if (0x000000 == tb_color) { + tb_color = TB_HI_BLACK; + } + break; + } + case CLAY_TB_OUTPUT_NOCOLOR: { + // Uses default terminal colors + tb_color = TB_DEFAULT; + break; + } + } + return tb_color; +} + +/** + Round float to nearest integer value + + Used instead of roundf() so math.h doesn't need to be linked + + \param f Float to round + */ +static inline int clay_tb_roundf(float f) +{ + int i = f; + return (f - i > 0.5f) ? i + 1 : i; +} + +/** + Snap pixel values from Clay to nearest cell values + + Width/height accounts for offset from x/y, so a box at x=(1.2 * cell_width) and + width=(1.4 * cell_width) is snapped to x=1 and width=2. + + \param box Bounding box with pixel measurements to convert + */ +static inline clay_tb_cell_bounding_box cell_snap_bounding_box(Clay_BoundingBox box) +{ + return (clay_tb_cell_bounding_box) { + .x = clay_tb_roundf(box.x / clay_tb_cell_size.width), + .y = clay_tb_roundf(box.y / clay_tb_cell_size.height), + .width = clay_tb_roundf((box.x + box.width) / clay_tb_cell_size.width) + - clay_tb_roundf(box.x / clay_tb_cell_size.width), + .height = clay_tb_roundf((box.y + box.height) / clay_tb_cell_size.height) + - clay_tb_roundf(box.y / clay_tb_cell_size.height), + }; +} + +/** + Snap pixel values from Clay to nearest cell values without considering x and y position when + calculating width/height. + + Width/height ignores offset from x/y, so a box at x=(1.2 * cell_width) and + width=(1.4 * cell_width) is snapped to x=1 and width=1. + + \param box Bounding box with pixel measurements to convert + */ +static inline clay_tb_cell_bounding_box cell_snap_pos_ind_bounding_box(Clay_BoundingBox box) +{ + return (clay_tb_cell_bounding_box) { + .x = clay_tb_roundf(box.x / clay_tb_cell_size.width), + .y = clay_tb_roundf(box.y / clay_tb_cell_size.height), + .width = clay_tb_roundf(box.width / clay_tb_cell_size.width), + .height = clay_tb_roundf(box.height / clay_tb_cell_size.height), + }; +} + +/** + Get stored clay color for a position from the internal color buffer + + \param x X position of cell + \param y Y position of cell + */ +static inline Clay_Color clay_tb_color_buffer_clay_get(int x, int y) +{ + clay_tb_assert(0 <= x && x < clay_tb_color_buffer_dimensions.width, + "Cell buffer x position (%d) offscreen (range 0-%d)", x, + clay_tb_color_buffer_dimensions.width); + clay_tb_assert(0 <= y && y < clay_tb_color_buffer_dimensions.height, + "Cell buffer y position (%d) offscreen (range 0-%d)", y, + clay_tb_color_buffer_dimensions.height); + return clay_tb_color_buffer_clay[x + (y * clay_tb_color_buffer_dimensions.width)]; +} + +/** + Set stored clay color for a position in the internal color buffer + + \param x X position of cell + \param y Y position of cell + \param color Color to store + */ +static inline void clay_tb_color_buffer_clay_set(int x, int y, Clay_Color color) +{ + clay_tb_assert(0 <= x && x < clay_tb_color_buffer_dimensions.width, + "Cell buffer x position (%d) offscreen (range 0-%d)", x, + clay_tb_color_buffer_dimensions.width); + clay_tb_assert(0 <= y && y < clay_tb_color_buffer_dimensions.height, + "Cell buffer y position (%d) offscreen (range 0-%d)", y, + clay_tb_color_buffer_dimensions.height); + clay_tb_color_buffer_clay[x + (y * clay_tb_color_buffer_dimensions.width)] = color; +} + +/** + Resize internal color buffer to the current terminal size + */ +static void clay_tb_resize_buffer(void) +{ + int current_width = tb_width(); + int current_height = tb_height(); + + // Reallocate if the new size is larger than the maximum size of the buffer + size_t max_size = (size_t)clay_tb_color_buffer_max_dimensions.width + * clay_tb_color_buffer_max_dimensions.height; + size_t new_size = (size_t)current_width * current_height; + if (max_size < new_size) { + Clay_Color *tmp_clay = tb_realloc(clay_tb_color_buffer_clay, sizeof(Clay_Color) * new_size); + if (NULL == tmp_clay) { + clay_tb_assert(false, "Reallocation failure for internal clay color buffer"); + } + clay_tb_color_buffer_clay = tmp_clay; + for (size_t i = max_size; i < new_size; ++i) { + clay_tb_color_buffer_clay[i] = (Clay_Color) { 0 }; + } + + clay_tb_color_buffer_max_dimensions.width = current_width; + clay_tb_color_buffer_max_dimensions.height = current_height; + } + clay_tb_color_buffer_dimensions.width = current_width; + clay_tb_color_buffer_dimensions.height = current_height; +} + +/** + Calculate color at a given position after emulating transparency. + + This isn't true transparency, just the background colors changing to emulate it + + \param color Pair of termbox and clay color representations to overlay with the background color + \param x X position of cell + \param y Y position of cell + */ +static inline clay_tb_color_pair clay_tb_get_transparency_color( + int x, int y, clay_tb_color_pair color) +{ + if (!clay_tb_transparency) { + return color; + } + + Clay_Color color_bg = clay_tb_color_buffer_clay_get(x, y); + Clay_Color new_color = { + .r = color_bg.r + (color.clay.a / 255) * (color.clay.r - color_bg.r), + .g = color_bg.g + (color.clay.a / 255) * (color.clay.g - color_bg.g), + .b = color_bg.b + (color.clay.a / 255) * (color.clay.b - color_bg.b), + .a = 255 + }; + + return (clay_tb_color_pair) { + .clay = new_color, + .termbox = clay_tb_color_convert(new_color) + }; +} + +/** + Draw a character cell at a position on screen. + + Accounts for scissor mode and stores the cell to the internal color buffer for transparency and + text backgrounds. + + \param x X position of cell + \param y Y position of cell + \param ch Utf32 representation of character to draw + \param tb_fg Foreground color in termbox representation + \param tb_bg Background color in termbox representation + \param fg Foreground color in clay representation + \param bg Background color in clay representation + */ +static int clay_tb_set_cell( + int x, int y, uint32_t ch, uintattr_t tb_fg, uintattr_t tb_bg, Clay_Color bg) +{ + clay_tb_assert(0 <= x && x < tb_width(), "Cell buffer x position (%d) offscreen (range 0-%d)", + x, tb_width()); + clay_tb_assert(0 <= y && y < tb_height(), "Cell buffer y position (%d) offscreen (range 0-%d)", + y, tb_height()); + + if (!clay_tb_scissor_enabled + || (clay_tb_scissor_enabled + && (clay_tb_scissor_box.x <= x + && x < clay_tb_scissor_box.x + clay_tb_scissor_box.width) + && (clay_tb_scissor_box.y <= y + && y < clay_tb_scissor_box.y + clay_tb_scissor_box.height))) { + int codepoint_width = tb_wcwidth(ch); + if (-1 == codepoint_width) { + // Nonprintable character, use REPLACEMENT CHARACTER (U+FFFD) + ch = U'\ufffd'; + codepoint_width = tb_wcwidth(ch); + } + + int err; + int max_x = CLAY__MIN(x + codepoint_width, tb_width()); + for (int i = x; i < max_x; ++i) { + clay_tb_color_buffer_clay_set(i, y, bg); + err = tb_set_cell(i, y, ch, tb_fg, tb_bg); + if (TB_OK != err) { + break; + } + } + + return err; + } + return -1; +} + +/** + Convert a pixel-based image to a cell-based image of the specified width and height. Stores the + converted/resized result in the cache of the input image. + + If the image has not changed size or image mode since the last convert it is returned unchanged + + \param image Image to convert/resize + \param width Target width in cells for the converted image + \param height Target height in cells for the converted image + */ +bool clay_tb_image_convert(clay_tb_image *image, int width, int height) +{ + clay_tb_assert(NULL != image->pixel_data, "Image must be loaded"); + + bool image_unchanged = (width == image->internal.width && height == image->internal.height + && (clay_tb_image_mode == image->internal.last_image_mode)); + + if (image_unchanged && !image->internal.partial_render.in_progress) { + return true; + } + if (!image_unchanged) { + free(image->internal.partial_render.resized_pixel_data); + image->internal.partial_render = (struct clay_tb_partial_render) { + .in_progress = false, + .resized_pixel_data = NULL, + .cursor_x = 0, + .cursor_y = 0, + .cursor_mask = 0, + .min_difference_squared_sum = INT_MAX, + .best_mask = 0, + .best_foreground = { 0, 0, 0, 0 }, + .best_background = { 0, 0, 0, 0 } + }; + } + + const size_t size = (size_t)width * height; + + // Allocate/resize internal cache data + if (size > image->internal.size_max) { + uint32_t *tmp_characters = realloc(image->internal.characters, size * sizeof(uint32_t)); + Clay_Color *tmp_foreground = realloc(image->internal.foreground, size * sizeof(Clay_Color)); + Clay_Color *tmp_background = realloc(image->internal.background, size * sizeof(Clay_Color)); + + if (NULL == tmp_characters || NULL == tmp_foreground || NULL == tmp_background) { + image->internal.size_max = 0; + free(tmp_characters); + free(tmp_foreground); + free(tmp_background); + image->internal.characters = NULL; + image->internal.foreground = NULL; + image->internal.background = NULL; + return false; + } + image->internal.characters = tmp_characters; + image->internal.foreground = tmp_foreground; + image->internal.background = tmp_background; + image->internal.size_max = size; + } + + image->internal.width = width; + image->internal.height = height; + + // Resize image using the same width/height in cells, but with the pixel sizes of the character + // masks instead of the cell size. The pixel data for each character mask will be compared to + // the pixel data of a small section of the image under the mask. The closest mask to the image + // data is chosen as the character to draw. + const int character_mask_pixel_width = 6; + const int character_mask_pixel_height = 12; + const int pixel_width = width * character_mask_pixel_width; + const int pixel_height = height * character_mask_pixel_height; + + unsigned char *resized_pixel_data; + if (image->internal.partial_render.in_progress) { + resized_pixel_data = image->internal.partial_render.resized_pixel_data; + } else { + resized_pixel_data = stbir_resize_uint8_linear(image->pixel_data, image->pixel_width, + image->pixel_height, 0, NULL, pixel_width, pixel_height, 0, STBIR_RGB); + image->internal.partial_render.resized_pixel_data = resized_pixel_data; + } + + int num_character_masks = 1; + const clay_tb_character_mask *character_masks = NULL; + switch (clay_tb_image_mode) { + case CLAY_TB_IMAGE_MODE_BG: { + num_character_masks = 1; + character_masks = &clay_tb_image_shapes_ascii_fast[0]; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII: + case CLAY_TB_IMAGE_MODE_ASCII_FG: { + num_character_masks = CLAY_TB_IMAGE_SHAPES_ASCII_BEST_COUNT; + character_masks = &clay_tb_image_shapes_ascii_best[0]; + break; + } + case CLAY_TB_IMAGE_MODE_UNICODE: { + num_character_masks = CLAY_TB_IMAGE_SHAPES_UNICODE_BEST_COUNT; + character_masks = &clay_tb_image_shapes_unicode_best[0]; + break; + } + case CLAY_TB_IMAGE_MODE_ASCII_FAST: + case CLAY_TB_IMAGE_MODE_ASCII_FG_FAST: { + num_character_masks = CLAY_TB_IMAGE_SHAPES_ASCII_FAST_COUNT; + character_masks = &clay_tb_image_shapes_ascii_fast[0]; + break; + } + case CLAY_TB_IMAGE_MODE_UNICODE_FAST: { + num_character_masks = CLAY_TB_IMAGE_SHAPES_UNICODE_FAST_COUNT; + character_masks = &clay_tb_image_shapes_unicode_fast[0]; + break; + } + }; + + // The number of character masks to check before exiting the render for this step + // Used to improve responsiveness by splitting renders across multiple frames + const int fuel_amount_initial + = CLAY__MIN(clay_tb_image_fuel_per_image, clay_tb_image_fuel_max - clay_tb_image_fuel_used); + int fuel_remaining = fuel_amount_initial; + bool partial_character_render = false; + + // Do a quick initial render to set the background + if (!image->internal.partial_render.in_progress) { + image->internal.last_image_mode = clay_tb_image_mode; + for (int y = image->internal.partial_render.cursor_y; y < height; ++y) { + for (int x = image->internal.partial_render.cursor_x; x < width; ++x) { + const int cell_top_left_pixel_x = x * character_mask_pixel_width; + const int cell_top_left_pixel_y = y * character_mask_pixel_height; + const int image_index = 3 + * (((cell_top_left_pixel_y + character_mask_pixel_height / 2) * pixel_width) + + (cell_top_left_pixel_x + character_mask_pixel_width / 2)); + Clay_Color pixel_color = { + (float)resized_pixel_data[image_index], + (float)resized_pixel_data[image_index + 1], + (float)resized_pixel_data[image_index + 2], + }; + + const int cell_index = y * width + x; + image->internal.characters[cell_index] = '.'; + image->internal.foreground[cell_index] = pixel_color; + image->internal.background[cell_index] = pixel_color; + + fuel_remaining = CLAY__MAX(0, fuel_remaining - 1); + } + } + } + + if (0 == fuel_remaining) { + image->internal.partial_render.in_progress = true; + clay_tb_partial_image_drawn = true; + goto done; + } + + for (int y = image->internal.partial_render.cursor_y; y < height; ++y) { + for (int x = image->internal.partial_render.cursor_x; x < width; ++x) { + const int cell_top_left_pixel_x = x * character_mask_pixel_width; + const int cell_top_left_pixel_y = y * character_mask_pixel_height; + + // For each possible cell character, use the mask to find the average color for the + // foreground ('1's) and background ('0's). + int min_difference_squared_sum + = image->internal.partial_render.min_difference_squared_sum; + int best_mask = image->internal.partial_render.best_mask; + Clay_Color best_foreground = image->internal.partial_render.best_foreground; + Clay_Color best_background = image->internal.partial_render.best_background; + + for (int i = image->internal.partial_render.cursor_mask; i < num_character_masks; ++i) { + int color_avg_background_r = 0; + int color_avg_background_g = 0; + int color_avg_background_b = 0; + int color_avg_foreground_r = 0; + int color_avg_foreground_g = 0; + int color_avg_foreground_b = 0; + int foreground_count = 0; + int background_count = 0; + + for (int cell_pixel_y = 0; cell_pixel_y < character_mask_pixel_height; + ++cell_pixel_y) { + for (int cell_pixel_x = 0; cell_pixel_x < character_mask_pixel_width; + ++cell_pixel_x) { + const int index = 3 + * (((cell_top_left_pixel_y + cell_pixel_y) * pixel_width) + + (cell_top_left_pixel_x + cell_pixel_x)); + + const int mask_index + = (cell_pixel_y * character_mask_pixel_width) + cell_pixel_x; + if (0 == character_masks[i].data[mask_index]) { + if (CLAY_TB_IMAGE_MODE_ASCII_FG != clay_tb_image_mode + && CLAY_TB_IMAGE_MODE_ASCII_FG_FAST != clay_tb_image_mode) { + color_avg_background_r += resized_pixel_data[index]; + color_avg_background_g += resized_pixel_data[index + 1]; + color_avg_background_b += resized_pixel_data[index + 2]; + background_count += 1; + } + } else { + color_avg_foreground_r += resized_pixel_data[index]; + color_avg_foreground_g += resized_pixel_data[index + 1]; + color_avg_foreground_b += resized_pixel_data[index + 2]; + foreground_count += 1; + } + } + } + + if (CLAY_TB_IMAGE_MODE_ASCII_FG != clay_tb_image_mode + && CLAY_TB_IMAGE_MODE_ASCII_FG_FAST != clay_tb_image_mode) { + color_avg_background_r /= CLAY__MAX(1, background_count); + color_avg_background_g /= CLAY__MAX(1, background_count); + color_avg_background_b /= CLAY__MAX(1, background_count); + } else { + color_avg_background_r = 0; + color_avg_background_g = 0; + color_avg_background_b = 0; + } + + color_avg_foreground_r /= CLAY__MAX(1, foreground_count); + color_avg_foreground_g /= CLAY__MAX(1, foreground_count); + color_avg_foreground_b /= CLAY__MAX(1, foreground_count); + + // Determine the difference between the mask with colors and the actual pixel data + int difference_squared_sum = 0; + for (int cell_pixel_y = 0; cell_pixel_y < character_mask_pixel_height; + ++cell_pixel_y) { + for (int cell_pixel_x = 0; cell_pixel_x < character_mask_pixel_width; + ++cell_pixel_x) { + const int index = 3 + * (((cell_top_left_pixel_y + cell_pixel_y) * pixel_width) + + (cell_top_left_pixel_x + cell_pixel_x)); + int rdiff, gdiff, bdiff, adiff; + + const int mask_index + = (cell_pixel_y * character_mask_pixel_width) + cell_pixel_x; + if (0 == character_masks[i].data[mask_index]) { + rdiff = (color_avg_background_r - resized_pixel_data[index]); + gdiff = (color_avg_background_g - resized_pixel_data[index + 1]); + bdiff = (color_avg_background_b - resized_pixel_data[index + 2]); + } else { + rdiff = (color_avg_foreground_r - resized_pixel_data[index]); + gdiff = (color_avg_foreground_g - resized_pixel_data[index + 1]); + bdiff = (color_avg_foreground_b - resized_pixel_data[index + 2]); + } + + difference_squared_sum += ( + (rdiff * rdiff) + + (gdiff * gdiff) + + (bdiff * bdiff)); + } + } + + // Choose the closest character mask to the image data + if (difference_squared_sum < min_difference_squared_sum) { + min_difference_squared_sum = difference_squared_sum; + best_mask = i; + best_background = (Clay_Color) { + .r = (float)color_avg_background_r, + .g = (float)color_avg_background_g, + .b = (float)color_avg_background_b, + .a = 255 + }; + best_foreground = (Clay_Color) { + .r = (float)color_avg_foreground_r, + .g = (float)color_avg_foreground_g, + .b = (float)color_avg_foreground_b, + .a = 255 + }; + } + + fuel_remaining -= 1; + if (0 == fuel_remaining) { + // Set progress for partial render + image->internal.partial_render = (struct clay_tb_partial_render) { + .in_progress = true, + .resized_pixel_data = resized_pixel_data, + .cursor_x = x, + .cursor_y = y, + .cursor_mask = i + 1, + .min_difference_squared_sum = min_difference_squared_sum, + .best_mask = best_mask, + .best_foreground = best_foreground, + .best_background = best_background + }; + partial_character_render = true; + clay_tb_partial_image_drawn = true; + goto done; + } + } + image->internal.partial_render.cursor_mask = 0; + + // Set data in cache for this character + const int index = y * width + x; + image->internal.characters[index] = character_masks[best_mask].character; + image->internal.foreground[index] = best_foreground; + image->internal.background[index] = best_background; + + image->internal.partial_render = (struct clay_tb_partial_render) { + .in_progress = true, + .resized_pixel_data = resized_pixel_data, + .cursor_x = x + 1, + .cursor_y = y, + .cursor_mask = 0, + .min_difference_squared_sum = INT_MAX, + .best_mask = 0, + .best_foreground = { 0, 0, 0, 0 }, + .best_background = { 0, 0, 0, 0 }, + }; + if (0 == fuel_remaining) { + clay_tb_partial_image_drawn = true; + goto done; + } + } + image->internal.partial_render.cursor_x = 0; + } + image->internal.partial_render.cursor_y = 0; + image->internal.partial_render.in_progress = false; + free(resized_pixel_data); + image->internal.partial_render.resized_pixel_data = NULL; + +done: + clay_tb_image_fuel_used += fuel_amount_initial - fuel_remaining; + return true; +} + + +// ------------------------------------------------------------------------------------------------- +// -- Public API implementation + +void Clay_Termbox_Set_Cell_Pixel_Size(float width, float height) +{ + clay_tb_assert(0 <= width, "Cell pixel width must be > 0"); + clay_tb_assert(0 <= height, "Cell pixel height must be > 0"); + clay_tb_cell_size = (clay_tb_pixel_dimensions) { .width = width, .height = height }; +} + +void Clay_Termbox_Set_Color_Mode(int color_mode) +{ + clay_tb_assert(clay_tb_initialized, "Clay_Termbox_Initialize must be run first"); + clay_tb_assert(CLAY_TB_OUTPUT_NOCOLOR <= color_mode && color_mode <= TB_OUTPUT_TRUECOLOR, + "Color mode invalid (%d)", color_mode); + + if (CLAY_TB_OUTPUT_NOCOLOR == color_mode) { + tb_set_output_mode(TB_OUTPUT_NORMAL); + } else { + tb_set_output_mode(color_mode); + } + + // Force complete re-render to ensure all colors are redrawn + tb_invalidate(); + + clay_tb_color_mode = color_mode; + + // Re-set transparency value. It will be toggled off if the new output mode doesn't support it + Clay_Termbox_Set_Transparency(clay_tb_transparency); +} + +void Clay_Termbox_Set_Border_Mode(enum border_mode border_mode) +{ + clay_tb_assert(CLAY_TB_BORDER_MODE_DEFAULT <= border_mode + && border_mode <= CLAY_TB_BORDER_MODE_MINIMUM, + "Border mode invalid (%d)", border_mode); + if (CLAY_TB_BORDER_MODE_DEFAULT == border_mode) { + clay_tb_border_mode = CLAY_TB_BORDER_MODE_MINIMUM; + } else { + clay_tb_border_mode = border_mode; + } +} + +void Clay_Termbox_Set_Border_Chars(enum border_chars border_chars) +{ + clay_tb_assert( + CLAY_TB_BORDER_CHARS_DEFAULT <= border_chars && border_chars <= CLAY_TB_BORDER_CHARS_NONE, + "Border mode invalid (%d)", border_chars); + if (CLAY_TB_BORDER_CHARS_DEFAULT == border_chars) { + clay_tb_border_chars = CLAY_TB_BORDER_CHARS_UNICODE; + } else { + clay_tb_border_chars = border_chars; + } +} + +void Clay_Termbox_Set_Image_Mode(enum image_mode image_mode) +{ + clay_tb_assert(CLAY_TB_IMAGE_MODE_DEFAULT <= image_mode + && image_mode <= CLAY_TB_IMAGE_MODE_UNICODE_FAST, + "Image mode invalid (%d)", image_mode); + if (CLAY_TB_IMAGE_MODE_DEFAULT == image_mode) { + clay_tb_image_mode = CLAY_TB_IMAGE_MODE_UNICODE; + } else { + clay_tb_image_mode = image_mode; + } +} + +void Clay_Termbox_Set_Image_Fuel(int fuel_max, int fuel_per_image) +{ + clay_tb_assert(0 < fuel_max && 0 < fuel_per_image, + "Fuel must be positive (%d, %d)", fuel_max, fuel_per_image); + clay_tb_image_fuel_max = fuel_max; + clay_tb_image_fuel_per_image = fuel_per_image; +} + +void Clay_Termbox_Set_Transparency(bool transparency) +{ + clay_tb_transparency = transparency; + if (TB_OUTPUT_NORMAL == clay_tb_color_mode || CLAY_TB_OUTPUT_NOCOLOR == clay_tb_color_mode) { + clay_tb_transparency = false; + } +} + +float Clay_Termbox_Width(void) +{ + clay_tb_assert(clay_tb_initialized, "Clay_Termbox_Initialize must be run first"); + + return (float)tb_width() * clay_tb_cell_size.width; +} + +float Clay_Termbox_Height(void) +{ + clay_tb_assert(clay_tb_initialized, "Clay_Termbox_Initialize must be run first"); + + return (float)tb_height() * clay_tb_cell_size.height; +} + +float Clay_Termbox_Cell_Width(void) +{ + return clay_tb_cell_size.width; +} + +float Clay_Termbox_Cell_Height(void) +{ + return clay_tb_cell_size.height; +} + +static inline Clay_Dimensions Clay_Termbox_MeasureText( + Clay_StringSlice text, Clay_TextElementConfig *config, void *userData) +{ + clay_tb_assert(clay_tb_initialized, "Clay_Termbox_Initialize must be run first"); + + int width = 0; + int height = 1; + + // Convert to utf32 so termbox2's internal wcwidth function can get the printed width of each + // codepoint + for (int32_t i = 0; i < text.length;) { + uint32_t ch; + int codepoint_bytes = tb_utf8_char_to_unicode(&ch, text.chars + i); + if (0 > codepoint_bytes) { + clay_tb_assert(false, "Invalid utf8"); + } + i += codepoint_bytes; + + int codepoint_width = tb_wcwidth(ch); + if (-1 == codepoint_width) { + // Nonprintable character, use width of REPLACEMENT CHARACTER (U+FFFD) + codepoint_width = tb_wcwidth(0xfffd); + } + width += codepoint_width; + } + return (Clay_Dimensions) { + (float)width * clay_tb_cell_size.width, + (float)height * clay_tb_cell_size.height + }; +} + +clay_tb_image Clay_Termbox_Image_Load_File(const char *filename) +{ + clay_tb_assert(NULL != filename, "Filename cannot be null"); + + clay_tb_image rv = { 0 }; + + FILE *image_file = NULL; + + image_file = fopen(filename, "r"); + if (NULL == image_file) { + fprintf(stderr, "Failed to open image %s: %s\n", filename, strerror(errno)); + return rv; + } + + int channels_in_file; + const int desired_color_channels = 3; + rv.pixel_data = stbi_load_from_file( + image_file, &rv.pixel_width, &rv.pixel_height, &channels_in_file, desired_color_channels); + + fclose(image_file); + + return rv; +} + +clay_tb_image Clay_Termbox_Image_Load_Memory(const void *image, int size) +{ + clay_tb_assert(NULL != image, "Image cannot be null"); + clay_tb_assert(0 < size, "Image size must be > 0"); + + clay_tb_image rv = { 0 }; + + int channels_in_file; + const int desired_color_channels = 3; + rv.pixel_data = stbi_load_from_memory( + image, size, &rv.pixel_width, &rv.pixel_height, &channels_in_file, desired_color_channels); + + return rv; +} + +void Clay_Termbox_Image_Free(clay_tb_image *image) +{ + free(image->pixel_data); + free(image->internal.partial_render.resized_pixel_data); + free(image->internal.characters); + free(image->internal.foreground); + free(image->internal.background); + *image = (clay_tb_image) { 0 }; +} + +void Clay_Termbox_Initialize(int color_mode, enum border_mode border_mode, + enum border_chars border_chars, enum image_mode image_mode, bool transparency) +{ + int new_color_mode = color_mode; + int new_border_mode = border_mode; + int new_border_chars = border_chars; + int new_image_mode = image_mode; + int new_transparency = transparency; + clay_tb_pixel_dimensions new_pixel_size = clay_tb_cell_size; + + // Check for environment variables that override settings + + const char *env_color_mode = getenv("CLAY_TB_COLOR_MODE"); + if (NULL != env_color_mode) { + if (0 == strcmp("NORMAL", env_color_mode)) { + new_color_mode = TB_OUTPUT_NORMAL; + } else if (0 == strcmp("256", env_color_mode)) { + new_color_mode = TB_OUTPUT_256; + } else if (0 == strcmp("216", env_color_mode)) { + new_color_mode = TB_OUTPUT_216; + } else if (0 == strcmp("GRAYSCALE", env_color_mode)) { + new_color_mode = TB_OUTPUT_GRAYSCALE; + } else if (0 == strcmp("TRUECOLOR", env_color_mode)) { + new_color_mode = TB_OUTPUT_TRUECOLOR; + } else if (0 == strcmp("NOCOLOR", env_color_mode)) { + new_color_mode = CLAY_TB_OUTPUT_NOCOLOR; + } + } + + const char *env_border_chars = getenv("CLAY_TB_BORDER_CHARS"); + if (NULL != env_border_chars) { + if (0 == strcmp("DEFAULT", env_border_chars)) { + new_border_chars = CLAY_TB_BORDER_CHARS_DEFAULT; + } else if (0 == strcmp("ASCII", env_border_chars)) { + new_border_chars = CLAY_TB_BORDER_CHARS_ASCII; + } else if (0 == strcmp("UNICODE", env_border_chars)) { + new_border_chars = CLAY_TB_BORDER_CHARS_UNICODE; + } else if (0 == strcmp("BLANK", env_border_chars)) { + new_border_chars = CLAY_TB_BORDER_CHARS_BLANK; + } else if (0 == strcmp("NONE", env_border_chars)) { + new_border_chars = CLAY_TB_BORDER_CHARS_NONE; + } + } + + const char *env_image_mode = getenv("CLAY_TB_IMAGE_MODE"); + if (NULL != env_image_mode) { + if (0 == strcmp("DEFAULT", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_DEFAULT; + } else if (0 == strcmp("PLACEHOLDER", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_PLACEHOLDER; + } else if (0 == strcmp("BG", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_BG; + } else if (0 == strcmp("ASCII_FG", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_ASCII_FG; + } else if (0 == strcmp("ASCII", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_ASCII; + } else if (0 == strcmp("UNICODE", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_UNICODE; + } else if (0 == strcmp("ASCII_FG_FAST", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_ASCII_FG_FAST; + } else if (0 == strcmp("ASCII_FAST", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_ASCII_FAST; + } else if (0 == strcmp("UNICODE_FAST", env_image_mode)) { + new_image_mode = CLAY_TB_IMAGE_MODE_UNICODE_FAST; + } + } + + const char *env_transparency = getenv("CLAY_TB_TRANSPARENCY"); + if (NULL != env_transparency) { + if (0 == strcmp("1", env_transparency)) { + new_transparency = true; + } else if (0 == strcmp("0", env_transparency)) { + new_transparency = false; + } + } + + const char *env_cell_pixels = getenv("CLAY_TB_CELL_PIXELS"); + if (NULL != env_cell_pixels) { + const char *str_width = env_cell_pixels; + const char *str_height = strstr(env_cell_pixels, "x") + 1; + if (NULL + 1 != str_height) { + bool missing_value = false; + + errno = 0; + float cell_width = strtof(str_width, NULL); + if (0 != errno || 0 > cell_width) { + missing_value = true; + } + float cell_height = strtof(str_height, NULL); + if (0 != errno || 0 >= cell_height) { + missing_value = true; + } + + if (!missing_value) { + new_pixel_size = (clay_tb_pixel_dimensions) { cell_width, cell_height }; + } + } + } + + // NO_COLOR indicates that ANSI colors shouldn't be used: https://no-color.org/ + const char *env_nocolor = getenv("NO_COLOR"); + if (NULL != env_nocolor && '\0' != env_nocolor[0]) { + new_color_mode = CLAY_TB_OUTPUT_NOCOLOR; + } + + tb_init(); + tb_set_input_mode(TB_INPUT_MOUSE); + + // Enable mouse hover support + // - see https://github.com/termbox/termbox2/issues/71#issuecomment-2179581609 + // - 1003 "Any-event tracking" mode + // - 1006 SGR extended coordinates (already enabled with TB_INPUT_MOUSE) + tb_sendf("\x1b[?%d;%dh", 1003, 1006); + + clay_tb_initialized = true; + + Clay_Termbox_Set_Color_Mode(new_color_mode); + Clay_Termbox_Set_Border_Mode(new_border_mode); + Clay_Termbox_Set_Border_Chars(new_border_chars); + Clay_Termbox_Set_Image_Mode(new_image_mode); + Clay_Termbox_Set_Transparency(new_transparency); + Clay_Termbox_Set_Cell_Pixel_Size(new_pixel_size.width, new_pixel_size.height); + + size_t size = (size_t)tb_width() * tb_height(); + clay_tb_color_buffer_clay = tb_malloc(sizeof(Clay_Color) * size); + for (int i = 0; i < size; ++i) { + clay_tb_color_buffer_clay[i] = (Clay_Color) { 0, 0, 0, 0 }; + } +} + +void Clay_Termbox_Close(void) +{ + if (clay_tb_initialized) { + // Disable mouse hover support + tb_sendf("\x1b[?%d;%dl", 1003, 1006); + + tb_free(clay_tb_color_buffer_clay); + tb_shutdown(); + clay_tb_initialized = false; + } +} + +void Clay_Termbox_Render(Clay_RenderCommandArray commands) +{ + clay_tb_assert(clay_tb_initialized, "Clay_Termbox_Initialize must be run first"); + + clay_tb_resize_buffer(); + clay_tb_partial_image_drawn = false; + clay_tb_image_fuel_used = 0; + + for (int32_t i = 0; i < commands.length; ++i) { + const Clay_RenderCommand *command = Clay_RenderCommandArray_Get(&commands, i); + const clay_tb_cell_bounding_box cell_box = cell_snap_bounding_box(command->boundingBox); + + int box_begin_x = CLAY__MAX(cell_box.x, 0); + int box_end_x = CLAY__MIN(cell_box.x + cell_box.width, tb_width()); + int box_begin_y = CLAY__MAX(cell_box.y, 0); + int box_end_y = CLAY__MIN(cell_box.y + cell_box.height, tb_height()); + + if (box_end_x < 0 || box_end_y < 0 || tb_width() < box_begin_x + || tb_height() < box_begin_y) { + continue; + } + + switch (command->commandType) { + default: { + clay_tb_assert(false, "Unhandled command: %d\n", command->commandType); + } + case CLAY_RENDER_COMMAND_TYPE_NONE: { + break; + } + case CLAY_RENDER_COMMAND_TYPE_RECTANGLE: { + Clay_RectangleRenderData render_data = command->renderData.rectangle; + Clay_Color color_fg = { 0, 0, 0, 0 }; + Clay_Color color_bg = render_data.backgroundColor; + uintattr_t color_tb_fg = TB_DEFAULT; + uintattr_t color_tb_bg = clay_tb_color_convert(color_bg); + + for (int y = box_begin_y; y < box_end_y; ++y) { + for (int x = box_begin_x; x < box_end_x; ++x) { + clay_tb_color_pair color_bg_new = clay_tb_get_transparency_color( + x, y, (clay_tb_color_pair) { color_bg, color_tb_bg }); + clay_tb_set_cell( + x, y, ' ', color_tb_fg, color_bg_new.termbox, color_bg_new.clay); + } + } + break; + } + case CLAY_RENDER_COMMAND_TYPE_BORDER: { + if (CLAY_TB_BORDER_CHARS_NONE == clay_tb_border_chars) { + break; + } + Clay_BorderRenderData render_data = command->renderData.border; + Clay_Color color_fg = { 0, 0, 0, 1 }; + Clay_Color color_bg = render_data.color; + uintattr_t color_tb_fg = TB_DEFAULT; + uintattr_t color_tb_bg = clay_tb_color_convert(color_bg); + + int border_skip_begin_x = box_begin_x; + int border_skip_end_x = box_end_x; + int border_skip_begin_y = box_begin_y; + int border_skip_end_y = box_end_y; + + switch (clay_tb_border_mode) { + default: { + clay_tb_assert(false, "Invalid or unimplemented border mode (%d)", + clay_tb_border_mode); + break; + } + case CLAY_TB_BORDER_MODE_MINIMUM: { + // Borders will be at least one cell wide if width is nonzero + // and the bounding box is large enough to not be all borders + if (0 < cell_box.width) { + if (0 < render_data.width.left) { + border_skip_begin_x = box_begin_x + + (int)CLAY__MAX( + 1, (render_data.width.left / clay_tb_cell_size.width)); + } + if (0 < render_data.width.right) { + border_skip_end_x = box_end_x + - (int)CLAY__MAX( + 1, (render_data.width.right / clay_tb_cell_size.width)); + } + } + if (0 < cell_box.height) { + if (0 < render_data.width.top) { + border_skip_begin_y = box_begin_y + + (int)CLAY__MAX( + 1, (render_data.width.top / clay_tb_cell_size.width)); + } + if (0 < render_data.width.bottom) { + border_skip_end_y = box_end_y + - (int)CLAY__MAX( + 1, (render_data.width.bottom / clay_tb_cell_size.width)); + } + } + break; + } + case CLAY_TB_BORDER_MODE_ROUND: { + int halfwidth = clay_tb_roundf(clay_tb_cell_size.width / 2); + int halfheight = clay_tb_roundf(clay_tb_cell_size.height / 2); + + if (halfwidth < render_data.width.left) { + border_skip_begin_x = box_begin_x + + (int)CLAY__MAX( + 1, (render_data.width.left / clay_tb_cell_size.width)); + } + if (halfwidth < render_data.width.right) { + border_skip_end_x = box_end_x + - (int)CLAY__MAX( + 1, (render_data.width.right / clay_tb_cell_size.width)); + } + if (halfheight < render_data.width.top) { + border_skip_begin_y = box_begin_y + + (int)CLAY__MAX( + 1, (render_data.width.top / clay_tb_cell_size.width)); + } + if (halfheight < render_data.width.bottom) { + border_skip_end_y = box_end_y + - (int)CLAY__MAX( + 1, (render_data.width.bottom / clay_tb_cell_size.width)); + } + break; + } + } + + // Draw border, skipping over the center of the bounding box + for (int y = box_begin_y; y < box_end_y; ++y) { + for (int x = box_begin_x; x < box_end_x; ++x) { + if ((border_skip_begin_x <= x && x < border_skip_end_x) + && (border_skip_begin_y <= y && y < border_skip_end_y)) { + x = border_skip_end_x - 1; + continue; + } + + uint32_t ch; + switch (clay_tb_border_chars) { + default: { + clay_tb_assert(false, + "Invalid or unimplemented border character mode (%d)", + clay_tb_border_chars); + } + case CLAY_TB_BORDER_CHARS_UNICODE: { + if ((x < border_skip_begin_x) + && (y < border_skip_begin_y)) { // Top left + ch = U'\u250c'; + } else if ((x >= border_skip_end_x) + && (y < border_skip_begin_y)) { // Top right + ch = U'\u2510'; + } else if ((x < border_skip_begin_x) + && (y >= border_skip_end_y)) { // Bottom left + ch = U'\u2514'; + } else if ((x >= border_skip_end_x) + && (y >= border_skip_end_y)) { // Bottom right + ch = U'\u2518'; + } else if (x < border_skip_begin_x || x >= border_skip_end_x) { + ch = U'\u2502'; + } else if (y < border_skip_begin_y || y >= border_skip_end_y) { + ch = U'\u2500'; + } + break; + } + case CLAY_TB_BORDER_CHARS_DEFAULT: + case CLAY_TB_BORDER_CHARS_ASCII: { + if ((x < border_skip_begin_x || x >= border_skip_end_x) + && (y < border_skip_begin_y || y >= border_skip_end_y)) { + ch = '+'; + } else if (x < border_skip_begin_x || x >= border_skip_end_x) { + ch = '|'; + } else if (y < border_skip_begin_y || y >= border_skip_end_y) { + ch = '-'; + } + break; + } + case CLAY_TB_BORDER_CHARS_BLANK: { + ch = ' '; + break; + } + } + + clay_tb_color_pair color_bg_new = clay_tb_get_transparency_color( + x, y, (clay_tb_color_pair) { color_bg, color_tb_bg }); + clay_tb_set_cell( + x, y, ch, color_tb_fg, color_bg_new.termbox, color_bg_new.clay); + } + } + break; + } + case CLAY_RENDER_COMMAND_TYPE_TEXT: { + Clay_TextRenderData render_data = command->renderData.text; + Clay_Color color_fg = render_data.textColor; + uintattr_t color_tb_fg = clay_tb_color_convert(color_fg); + + Clay_StringSlice *text = &render_data.stringContents; + int32_t i = 0; + for (int y = box_begin_y; y < box_end_y; ++y) { + for (int x = box_begin_x; x < box_end_x;) { + uint32_t ch = ' '; + if (i < text->length) { + int codepoint_length = tb_utf8_char_to_unicode(&ch, text->chars + i); + if (0 > codepoint_length) { + clay_tb_assert(false, "Invalid utf8"); + } + i += codepoint_length; + + uintattr_t color_tb_bg = (clay_tb_transparency) + ? TB_DEFAULT + : clay_tb_color_convert(clay_tb_color_buffer_clay_get(x, y)); + Clay_Color color_bg = { 0 }; + clay_tb_color_pair color_bg_new = clay_tb_get_transparency_color( + x, y, (clay_tb_color_pair) { color_bg, color_tb_bg }); + clay_tb_set_cell( + x, y, ch, color_tb_fg, color_bg_new.termbox, color_bg_new.clay); + } + + int codepoint_width = tb_wcwidth(ch); + if (-1 == codepoint_width) { + // Nonprintable character, use REPLACEMENT CHARACTER (U+FFFD) + ch = U'\ufffd'; + codepoint_width = tb_wcwidth(ch); + } + + x += codepoint_width; + } + } + break; + } + case CLAY_RENDER_COMMAND_TYPE_IMAGE: { + Clay_ImageRenderData render_data = command->renderData.image; + Clay_Color color_fg = { 0, 0, 0, 0 }; + Clay_Color color_bg = render_data.backgroundColor; + uintattr_t color_tb_fg = clay_tb_color_convert(color_fg); + uintattr_t color_tb_bg; + + // Only set background to the provided color if it's non-default + bool color_specified + = !(color_bg.r == 0 && color_bg.g == 0 && color_bg.b == 0 && color_bg.a == 0); + if (color_specified) { + color_tb_bg = clay_tb_color_convert(color_bg); + } + + bool use_placeholder = true; + + clay_tb_image *image = (clay_tb_image *)render_data.imageData; + + if (!(CLAY_TB_IMAGE_MODE_PLACEHOLDER == clay_tb_image_mode + || CLAY_TB_OUTPUT_NOCOLOR == clay_tb_color_mode)) { + bool convert_success = (NULL != image) + ? clay_tb_image_convert(image, cell_box.width, cell_box.height) + : false; + if (convert_success) { + use_placeholder = false; + } + } + + if (!use_placeholder) { + // Render image + for (int y = box_begin_y; y < box_end_y; ++y) { + int y_offset = y - cell_box.y; + for (int x = box_begin_x; x < box_end_x; ++x) { + int x_offset = x - cell_box.x; + // Fetch cells from the image's cache + if (!color_specified) { + if (CLAY_TB_IMAGE_MODE_ASCII_FG == clay_tb_image_mode + || CLAY_TB_IMAGE_MODE_ASCII_FG_FAST == clay_tb_image_mode) { + color_bg = (Clay_Color) { 0, 0, 0, 0 }; + color_tb_bg = TB_DEFAULT; + } else { + color_bg + = image->internal + .background[y_offset * cell_box.width + x_offset]; + color_tb_bg = clay_tb_color_convert(color_bg); + } + } + color_tb_fg = clay_tb_color_convert( + image->internal.foreground[y_offset * cell_box.width + x_offset]); + uint32_t ch + = image->internal.characters[y_offset * cell_box.width + x_offset]; + if (CLAY_TB_IMAGE_MODE_BG == clay_tb_image_mode) { + ch = ' '; + } + + clay_tb_set_cell(x, y, ch, color_tb_fg, color_tb_bg, color_bg); + } + } + } else { + // Render a placeholder pattern + const char *placeholder_text = "[Image]"; + + int i = 0; + unsigned long len = strlen(placeholder_text); + for (int y = box_begin_y; y < box_end_y; ++y) { + float percent_y = (float)(y - box_begin_y) / (float)cell_box.height; + + for (int x = box_begin_x; x < box_end_x; ++x) { + char ch = ' '; + if (i < len) { + ch = placeholder_text[i++]; + } + + if (!color_specified) { + // Use a placeholder pattern for the image + float percent_x = (float)(cell_box.width - (x - box_begin_x)) + / (float)cell_box.width; + if (percent_x > percent_y) { + color_bg = (Clay_Color) { 0x94, 0xb4, 0xff, 0xff }; + color_tb_bg = clay_tb_color_convert(color_bg); + } else { + color_bg = (Clay_Color) { 0x3f, 0xcc, 0x45, 0xff }; + color_tb_bg = clay_tb_color_convert(color_bg); + } + } + clay_tb_set_cell(x, y, ch, color_tb_fg, color_tb_bg, color_bg); + } + } + } + break; + } + case CLAY_RENDER_COMMAND_TYPE_SCISSOR_START: { + clay_tb_scissor_box = (clay_tb_cell_bounding_box) { + .x = box_begin_x, + .y = box_begin_y, + .width = box_end_x - box_begin_x, + .height = box_end_y - box_begin_y, + }; + clay_tb_scissor_enabled = true; + break; + } + case CLAY_RENDER_COMMAND_TYPE_SCISSOR_END: { + clay_tb_scissor_enabled = false; + break; + } + case CLAY_RENDER_COMMAND_TYPE_CUSTOM: { + break; + } + } + } +} + +void Clay_Termbox_Waitfor_Event(void) +{ + if (clay_tb_partial_image_drawn) { + return; + } + int termbox_ttyfd, termbox_resizefd; + tb_get_fds(&termbox_ttyfd, &termbox_resizefd); + int nfds = CLAY__MAX(termbox_ttyfd, termbox_resizefd) + 1; + fd_set monitor_set; + FD_ZERO(&monitor_set); + FD_SET(termbox_ttyfd, &monitor_set); + FD_SET(termbox_resizefd, &monitor_set); + select(nfds, &monitor_set, NULL, NULL, NULL); +} diff --git a/renderers/termbox2/image_character_masks.h b/renderers/termbox2/image_character_masks.h new file mode 100644 index 0000000..46258f1 --- /dev/null +++ b/renderers/termbox2/image_character_masks.h @@ -0,0 +1,2863 @@ +#ifndef CLAY_TB_IMAGE_H +#define CLAY_TB_IMAGE_H +#include + +typedef struct { + uint32_t character; + int data[6 * 12]; +} clay_tb_character_mask; + +// Ascii bitmap data from the Terminus 4.49 font (https://terminus-font.sourceforge.net/) +// Licensed under the SIL Open Font License, Version 1.1 (https://scripts.sil.org/OFL) +#define CLAY_TB_IMAGE_SHAPES_ASCII_BEST_COUNT 95 +const clay_tb_character_mask clay_tb_image_shapes_ascii_best[CLAY_TB_IMAGE_SHAPES_ASCII_BEST_COUNT] = { + { + .character = ' ', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '!', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '"', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '#', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '$', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '%', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 1, 0, + 0, 1, 0, 1, 0, 1, + 0, 1, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '&', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 0, 1, 0, + 1, 0, 0, 1, 0, 0, + 1, 0, 0, 1, 0, 0, + 0, 1, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '\'', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '(', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = ')', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '*', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '+', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = ',', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '-', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '.', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '/', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '0', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 1, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 1, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '1', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '2', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '3', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '4', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 1, 0, + 0, 0, 1, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '5', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '6', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '7', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '8', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '9', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = ':', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = ';', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '<', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '=', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '>', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '?', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '@', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 1, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'A', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'B', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'C', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'D', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 0, 0, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 1, 0, 0, + 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'E', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'F', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'G', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'H', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'I', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'J', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 1, 0, 0, 1, 0, 0, + 1, 0, 0, 1, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'K', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 1, 0, 0, + 1, 0, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, + 1, 0, 0, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'L', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'M', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 0, 1, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'N', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'O', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'P', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'Q', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'R', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 1, 0, 0, 0, + 1, 0, 0, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'S', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'T', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'U', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'V', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'W', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 1, 0, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'X', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'Y', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'Z', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '[', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '\\', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = ']', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '^', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '_', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '`', + .data = + { 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'a', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'b', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'c', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'd', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'e', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'f', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'g', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0 }, + }, + { + .character = 'h', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'i', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'j', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 0, 0, 1, 0, + 0, 0, 1, 1, 0, 0 }, + }, + { + .character = 'k', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'l', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'm', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'n', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'o', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'p', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0 }, + }, + { + .character = 'q', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0 }, + }, + { + .character = 'r', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 1, 1, 1, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 's', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 't', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'u', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'v', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'w', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'x', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'y', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0 }, + }, + { + .character = 'z', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '{', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '|', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '}', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 1, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0, 0, + 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '~', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, +}; + + +#define CLAY_TB_IMAGE_SHAPES_ASCII_FAST_COUNT 15 +const clay_tb_character_mask clay_tb_image_shapes_ascii_fast[CLAY_TB_IMAGE_SHAPES_ASCII_FAST_COUNT] = { + { + .character = ' ', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '"', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '#', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 1, 0, 1, 0, 0, + 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '-', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '.', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '@', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 1, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'B', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'F', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'L', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '_', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = '`', + .data = + { 0, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'g', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0 }, + }, + { + .character = 'r', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 1, 1, 1, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = 'y', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 1, 0, + 0, 1, 1, 1, 0, 0 }, + }, + { + .character = '~', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 1, 0, + 1, 0, 1, 0, 1, 0, + 1, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, +}; + +#define CLAY_TB_IMAGE_SHAPES_UNICODE_BEST_COUNT 52 +const clay_tb_character_mask clay_tb_image_shapes_unicode_best[CLAY_TB_IMAGE_SHAPES_UNICODE_BEST_COUNT] = { + { + .character = ' ', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2580', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2581', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2582', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2583', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2584', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2585', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2586', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2587', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2588', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2589', + .data = + { 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0 }, + }, + { + .character = U'\u258a', + .data = + { 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0 }, + }, + { + .character = U'\u258c', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\u258e', + .data = + { 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0 }, + }, + { + .character = U'\u258f', + .data = + { 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2590', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\u2594', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2595', + .data = + { 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1 }, + }, + { + .character = U'\u2596', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\u2597', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\u2598', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2599', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u259a', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\u259b', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\u259c', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\u259d', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u259e', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\u259f', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + // TODO: END HERE + { + .character = U'\u25e2', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u25e3', + .data = + { 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u25e4', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u25e5', + .data = + { 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0 }, + }, + + { + .character = U'\U0001fb3c', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\U0001fb3d', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\U0001fb3e', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\U0001fb3f', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\U0001fb40', + .data = + { 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\U0001fb47', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\U0001fb48', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, + 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\U0001fb49', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\U0001fb4a', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\U0001fb4b', + .data = + { 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\U0001fb57', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb58', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, + 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb59', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb5a', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb59', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb62', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb63', + .data = + { 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb64', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb65', + .data = + { 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\U0001fb66', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1 }, + }, +}; + +#define CLAY_TB_IMAGE_SHAPES_UNICODE_FAST_COUNT 15 +const clay_tb_character_mask clay_tb_image_shapes_unicode_fast[CLAY_TB_IMAGE_SHAPES_UNICODE_FAST_COUNT] = { + { + .character = ' ', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2580', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2581', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2586', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2587', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 }, + }, + { + .character = U'\u2589', + .data = + { 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0 }, + }, + { + .character = U'\u258c', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\u258f', + .data = + { 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2594', + .data = + { 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u2596', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, + { + .character = U'\u2597', + .data = + { 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\u2598', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u259a', + .data = + { 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1 }, + }, + { + .character = U'\u259d', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0 }, + }, + { + .character = U'\u259e', + .data = + { 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0 }, + }, +}; + +#endif // CLAY_TB_IMAGE_H