diff --git a/cores/libretro-net-retropad/net_retropad_core.c b/cores/libretro-net-retropad/net_retropad_core.c index d6816218f44c..e78434a36c5c 100644 --- a/cores/libretro-net-retropad/net_retropad_core.c +++ b/cores/libretro-net-retropad/net_retropad_core.c @@ -8,7 +8,7 @@ * - Allow changing IP address and port in runtime * - Input recording / Combos * - Enable test input loading from menu - * - Visualization of keyboard and aux inputs (gyro, accelero, light) + * - Visualization of aux inputs (gyro, accelero, light) */ #include @@ -50,7 +50,7 @@ #define DESC_OFFSET(desc, port, index, id) ( \ port * ((desc)->index_max - (desc)->index_min + 1) * ((desc)->id_max - (desc)->id_min + 1) + \ - index * ((desc)->id_max - (desc)->id_min + 1) + \ + (index - (desc)->index_min) * ((desc)->id_max - (desc)->id_min + 1) + \ id \ ) @@ -58,6 +58,9 @@ #define INITIAL_FRAMES 60*5 #define ONE_TEST_STEP_FRAMES 60*5 +#define NETRETROPAD_SCREEN_PAD 0 +#define NETRETROPAD_SCREEN_KEYBOARD 1 + struct descriptor { int device; int port_min; @@ -77,6 +80,9 @@ struct remote_joypad_message { uint16_t state; }; +static bool keyboard_state[RETROK_LAST]; +static bool keyboard_state_validated[RETROK_LAST]; + static int s; static int port; static char server[64]; @@ -114,9 +120,20 @@ static struct descriptor analog = { .id_max = RETRO_DEVICE_ID_ANALOG_Y }; +static struct descriptor analog_button = { + .device = RETRO_DEVICE_ANALOG, + .port_min = 0, + .port_max = 0, + .index_min = RETRO_DEVICE_INDEX_ANALOG_BUTTON, + .index_max = RETRO_DEVICE_INDEX_ANALOG_BUTTON, + .id_min = RETRO_DEVICE_ID_JOYPAD_B, + .id_max = RETRO_DEVICE_ID_JOYPAD_R3 +}; + static struct descriptor *descriptors[] = { &joypad, - &analog + &analog, + &analog_button }; static uint16_t combo_def[] = @@ -137,6 +154,8 @@ static uint16_t combo_def[] = 1 << RETRO_DEVICE_ID_JOYPAD_L2 | 1 << RETRO_DEVICE_ID_JOYPAD_R2 }; +static unsigned current_screen = NETRETROPAD_SCREEN_PAD; + typedef struct { unsigned expected_button; @@ -338,33 +357,64 @@ static bool input_test_file_read(const char* file_path) /* Test input file handling end */ /********************************/ -void NETRETROPAD_CORE_PREFIX(retro_init)(void) +static void draw_background(void) { - unsigned i; - - dump_state_blocked = false; - frame_buf = (uint16_t*)calloc(320 * 240, sizeof(uint16_t)); - if (frame_buf) { unsigned rle, runs, count; + /* Body is 255 * 142 within the 320 * 240 frame */ uint16_t *pixel = frame_buf + 49 * 320 + 32; - for (rle = 0; rle < sizeof(body); ) - { - uint16_t color = 0; - - for (runs = body[rle++]; runs > 0; runs--) + if (current_screen == NETRETROPAD_SCREEN_PAD) + for (rle = 0; rle < sizeof(body); ) { - for (count = body[rle++]; count > 0; count--) - *pixel++ = color; + uint16_t color = 0; + + for (runs = body[rle++]; runs > 0; runs--) + { + for (count = body[rle++]; count > 0; count--) + *pixel++ = color; + + color = 0x4208 - color; + } - color = 0x4208 - color; + pixel += 65; } + else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD) + for (rle = 0; rle < sizeof(keyboard_body); ) + { + uint16_t color = 0; - pixel += 65; - } + for (runs = keyboard_body[rle++]; runs > 0; runs--) + { + for (count = keyboard_body[rle++]; count > 0; count--) + *pixel++ = color; + + color = 0x4208 - color; + } + + pixel += 65; + } } +} + +static void flip_screen(void) +{ + if (current_screen == NETRETROPAD_SCREEN_PAD) + current_screen = NETRETROPAD_SCREEN_KEYBOARD; + else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD) + current_screen = NETRETROPAD_SCREEN_PAD; + draw_background(); +} + +void NETRETROPAD_CORE_PREFIX(retro_init)(void) +{ + unsigned i; + + dump_state_blocked = false; + frame_buf = (uint16_t*)calloc(320 * 240, sizeof(uint16_t)); + + draw_background(); /* Allocate descriptor values */ for (i = 0; i < ARRAY_SIZE(descriptors); i++) @@ -430,6 +480,25 @@ void NETRETROPAD_CORE_PREFIX(retro_get_system_av_info)( info->geometry.aspect_ratio = 4.0 / 3.0; } +static void NETRETROPAD_CORE_PREFIX(update_keyboard_cb)(bool down, unsigned keycode, + uint32_t character, uint16_t key_modifiers) +{ + struct retro_message message; + char buf[255]; + + if (keycode < RETROK_LAST) + { + keyboard_state[keycode] = down ? true : false; + if (down && ((keycode == RETROK_a && keyboard_state[RETROK_b]) || (keycode == RETROK_b && keyboard_state[RETROK_a]))) + flip_screen(); + /* TODO: message only for the bottom blocks, with key name */ + snprintf(buf, sizeof(buf), "Key pressed: %d",keycode); + message.msg = buf; + message.frames = 60; + NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_MESSAGE, &message); + } +} + static void retropad_update_input(void) { unsigned i; @@ -504,6 +573,8 @@ void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb) { NULL, NULL }, }; enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565; + struct retro_keyboard_callback kcb = { NETRETROPAD_CORE_PREFIX(update_keyboard_cb) }; + cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void*)vars); NETRETROPAD_CORE_PREFIX(environ_cb) = cb; @@ -514,6 +585,9 @@ void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb) if (cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &logger)) NETRETROPAD_CORE_PREFIX(log_cb) = logger.log; + + NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK, &kcb); + } static void netretropad_check_variables(void) @@ -683,54 +757,120 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void) } } /* Input test section end. */ - - for (rle = 0; rle < sizeof(retropad_buttons); ) + if (current_screen == NETRETROPAD_SCREEN_PAD) { - unsigned runs; - char paint = 0; - - for (runs = retropad_buttons[rle++]; runs > 0; runs--) + for (rle = 0; rle < sizeof(retropad_buttons); ) { - unsigned button = paint ? 1 << retropad_buttons[rle++] : 0; + unsigned runs; + char paint = 0; - if (paint) + for (runs = retropad_buttons[rle++]; runs > 0; runs--) { - unsigned count; - uint16_t color; + unsigned button = 0; + unsigned button_analog = 0; + int offset; + if (paint) + { + /* 0 - 15: buttons, 16 - 31: analog x/y */ + /* 32 - 47: analog input for same buttons */ + if (retropad_buttons[rle] < 32) + button = paint ? 1 << retropad_buttons[rle] : 0; + else + { + button_analog = paint ? 1 << (retropad_buttons[rle] - 32) : 0; + offset = DESC_OFFSET(&analog_button, 0, RETRO_DEVICE_INDEX_ANALOG_BUTTON, retropad_buttons[rle] - 32); + } + rle++; + } - /* Red for active inputs */ - if (input_state & button) + if (paint) { - color = 0xA000; - input_state_validated |= button; + unsigned count; + uint16_t color; + + /* Red for active inputs */ + if (input_state & button) + { + color = 0xA000; + input_state_validated |= button; + } + /* Red gradient for active analog button inputs, from 0 to 0xa000 */ + else if (button_analog && (int16_t)analog_button.value[offset] > 3276) + { + color = (uint16_t)((int16_t)analog_button.value[offset]/1638) << 11; + } + else + { + /* Light blue for expected input */ + if (expected_input & button || expected_input & button_analog) + color = 0x7fff; + /* Light green for already validated input */ + else if (input_state_validated & button || input_state_validated & button_analog) + color = 0xbff7; + /* White as default */ + else + color = 0xffff; + } + + for (count = retropad_buttons[rle++]; count > 0; count--) + *pixel++ = color; } else + pixel += retropad_buttons[rle++]; + + paint = !paint; + } + + pixel += 65; + } + } + else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD) + { + for (rle = 0; rle < (sizeof(keyboard_buttons)/sizeof(keyboard_buttons[0])); ) + { + unsigned runs; + char paint = 0; + + for (runs = keyboard_buttons[rle++]; runs > 0; runs--) + { + unsigned button = 0; + unsigned button_analog = 0; + int offset; + + if (paint) { - /* Light blue for expected input */ - if (expected_input & button) - color = 0x7fff; - /* Light green for already validated input */ - else if (input_state_validated & button ) - color = 0xbff7; - /* White as default */ + unsigned count; + uint16_t color; + + /* Red for active inputs */ + if (keyboard_state[keyboard_buttons[rle]]) + { + color = 0xA000; + keyboard_state_validated[keyboard_buttons[rle]] = true; + } else - color = 0xffff; + { + if (keyboard_state_validated[keyboard_buttons[rle]]) + color = 0xbff7; + else + color = 0xffff; + } + rle++; + + for (count = keyboard_buttons[rle++]; count > 0; count--) + *pixel++ = color; } + else + pixel += keyboard_buttons[rle++]; - for (count = retropad_buttons[rle++]; count > 0; count--) - *pixel++ = color; + paint = !paint; } - else - pixel += retropad_buttons[rle++]; - paint = !paint; + pixel += 65; } - - pixel += 65; } NETRETROPAD_CORE_PREFIX(video_cb)(frame_buf, 320, 240, 640); - retro_sleep(4); } diff --git a/cores/libretro-net-retropad/remotepad.h b/cores/libretro-net-retropad/remotepad.h index 8a058d7ac50a..ea443f20a11e 100644 --- a/cores/libretro-net-retropad/remotepad.h +++ b/cores/libretro-net-retropad/remotepad.h @@ -1,6 +1,8 @@ #ifndef REMOTEPAD_H #define REMOTEPAD_H +/* Run-length-encoded format, serialized. */ +/* Number of segments - length of individual segments (segment are alternating black and background color, always starting with black) */ static uint8_t body[] = { /* 0 */ 3, 38, 13, 204, @@ -156,8 +158,8 @@ static uint8_t retropad_buttons[] = /* 0 */ 5, 38, 12, 13, 154, 13, 13, 37, /* 1 */ 5, 35, 12, 21, 144, 13, 21, 34, /* 2 */ 5, 33, 12, 26, 138, 13, 26, 32, - /* 3 */ 5, 32, 12, 28, 136, 13, 28, 31, - /* 4 */ 5, 32, 12, 29, 134, 13, 30, 30, + /* 3 */ 13, 32, 12, 7, 0, 44, 15, 0, 12, 6, 136, 13, 8, 0, 45, 14, 0, 13, 6, 31, + /* 4 */ 13, 32, 12, 7, 0, 44, 15, 0, 12, 7, 134, 13, 9, 0, 45, 14, 0, 13, 7, 30, /* 5 */ 5, 31, 12, 31, 133, 13, 30, 30, /* 6 */ 5, 31, 12, 31, 133, 13, 30, 30, /* 7 */ 9, 31, 12, 2, 23, 12, 6, 133, 13, 5, 24, 13, 1, 30, @@ -168,9 +170,9 @@ static uint8_t retropad_buttons[] = /* 12 */ 5, 39, 10, 13, 152, 11, 14, 37, /* 13 */ 5, 34, 10, 24, 141, 11, 24, 32, /* 14 */ 5, 31, 10, 29, 136, 11, 29, 30, - /* 15 */ 5, 30, 10, 31, 134, 11, 32, 28, - /* 16 */ 5, 29, 10, 33, 133, 11, 32, 28, - /* 17 */ 5, 29, 10, 33, 133, 11, 32, 28, + /* 15 */ 13, 30, 10, 9, 0, 42, 15, 0, 10, 7, 134, 11, 9, 0, 43, 14, 0, 11, 9, 28, + /* 16 */ 13, 29, 10, 10, 0, 42, 15, 0, 10, 8, 133, 11, 9, 0, 43, 14, 0, 11, 9, 28, + /* 17 */ 13, 29, 10, 10, 0, 42, 15, 0, 10, 8, 133, 11, 9, 0, 43, 14, 0, 11, 9, 28, /* 18 */ 5, 29, 10, 33, 133, 11, 32, 28, /* 19 */ 5, 29, 10, 33, 133, 11, 32, 28, /* 20 */ 5, 29, 10, 33, 133, 11, 32, 28, @@ -215,12 +217,12 @@ static uint8_t retropad_buttons[] = /* 59 */ 3, 204, 9, 13, 38, /* 60 */ 3, 203, 9, 15, 37, /* 61 */ 3, 202, 9, 16, 37, - /* 62 */ 3, 202, 9, 17, 36, - /* 63 */ 5, 39, 4, 13, 149, 9, 18, 36, - /* 64 */ 5, 39, 4, 13, 149, 9, 18, 36, - /* 65 */ 5, 39, 4, 13, 149, 9, 18, 36, - /* 66 */ 5, 39, 4, 13, 149, 9, 18, 36, - /* 67 */ 5, 39, 4, 13, 150, 9, 17, 36, + /* 62 */ 7, 202, 9, 6, 0, 41, 5, 0, 9, 6, 36, + /* 63 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 6, 36, + /* 64 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 7, 35, + /* 65 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 7, 35, + /* 66 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 7, 35, + /* 67 */ 9, 39, 4, 13, 150, 9, 6, 0, 41, 5, 0, 9, 6, 36, /* 68 */ 5, 39, 4, 13, 150, 9, 17, 36, /* 69 */ 5, 39, 4, 13, 151, 9, 15, 37, /* 70 */ 5, 39, 4, 13, 151, 9, 14, 38, @@ -233,12 +235,12 @@ static uint8_t retropad_buttons[] = /* 77 */ 9, 24, 6, 12, 19, 7, 12, 115, 1, 12, 33, 8, 12, 16, /* 78 */ 13, 24, 6, 13, 17, 7, 13, 30, 2, 14, 35, 3, 13, 22, 1, 14, 30, 8, 15, 15, /* 79 */ 13, 24, 6, 14, 15, 7, 14, 30, 2, 14, 34, 3, 14, 21, 1, 16, 29, 8, 16, 14, - /* 80 */ 13, 24, 6, 15, 13, 7, 15, 30, 2, 14, 34, 3, 14, 21, 1, 17, 27, 8, 17, 14, - /* 81 */ 13, 24, 6, 16, 11, 7, 16, 30, 2, 14, 34, 3, 14, 20, 1, 18, 27, 8, 18, 13, - /* 82 */ 13, 24, 6, 16, 12, 7, 15, 30, 2, 14, 34, 3, 14, 20, 1, 18, 27, 8, 18, 13, - /* 83 */ 13, 24, 6, 15, 14, 7, 14, 30, 2, 14, 34, 3, 14, 20, 1, 18, 26, 8, 19, 13, - /* 84 */ 13, 24, 6, 14, 16, 7, 13, 30, 2, 14, 34, 3, 14, 20, 1, 18, 27, 8, 18, 13, - /* 85 */ 9, 24, 6, 13, 18, 7, 12, 112, 1, 18, 27, 8, 17, 14, + /* 80 */ 21, 24, 6, 15, 13, 7, 15, 30, 2, 14, 34, 3, 14, 21, 1, 6, 0, 33, 5, 0, 1, 6, 27, 8, 7, 0, 40, 5, 0, 8, 5, 14, + /* 81 */ 21, 24, 6, 16, 11, 7, 16, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 6, 27, 8, 7, 0, 40, 5, 0, 8, 6, 13, + /* 82 */ 21, 24, 6, 16, 12, 7, 15, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 7, 26, 8, 7, 0, 40, 5, 0, 8, 6, 13, + /* 83 */ 21, 24, 6, 15, 14, 7, 14, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 7, 25, 8, 8, 0, 40, 5, 0, 8, 6, 13, + /* 84 */ 21, 24, 6, 14, 16, 7, 13, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 7, 26, 8, 7, 0, 40, 5, 0, 8, 6, 13, + /* 85 */ 17, 24, 6, 13, 18, 7, 12, 112, 1, 7, 0, 33, 5, 0, 1, 6, 27, 8, 7, 0, 40, 5, 0, 8, 5, 14, /* 86 */ 9, 24, 6, 12, 20, 7, 11, 113, 1, 17, 27, 8, 17, 14, /* 87 */ 11, 24, 6, 11, 10, 5, 1, 11, 7, 10, 113, 1, 16, 29, 8, 16, 14, /* 88 */ 7, 44, 5, 3, 134, 1, 14, 31, 8, 14, 15, @@ -251,12 +253,12 @@ static uint8_t retropad_buttons[] = /* 95 */ 5, 39, 5, 13, 152, 0, 13, 38, /* 96 */ 5, 39, 5, 13, 151, 0, 15, 37, /* 97 */ 5, 39, 5, 13, 150, 0, 17, 36, - /* 98 */ 5, 39, 5, 13, 150, 0, 17, 36, - /* 99 */ 5, 39, 5, 13, 149, 0, 18, 36, - /* 100 */ 5, 39, 5, 13, 149, 0, 18, 36, - /* 101 */ 3, 201, 0, 18, 36, - /* 102 */ 3, 201, 0, 18, 36, - /* 103 */ 3, 202, 0, 17, 36, + /* 98 */ 9, 39, 5, 13, 150, 0, 6, 0, 32, 6, 0, 0, 5, 36, + /* 99 */ 9, 39, 5, 13, 149, 0, 7, 0, 32, 6, 0, 0, 6, 35, + /* 100 */ 9, 39, 5, 13, 149, 0, 7, 0, 32, 6, 0, 0, 6, 35, + /* 101 */ 7, 201, 0, 7, 0, 32, 6, 0, 0, 6, 35, + /* 102 */ 7, 201, 0, 7, 0, 32, 6, 0, 0, 6, 35, + /* 103 */ 7, 202, 0, 6, 0, 32, 6, 0, 0, 5, 36, /* 104 */ 7, 84, 24, 5, 78, 28, 5, 30, 0, 17, 36, /* 105 */ 7, 82, 24, 9, 74, 28, 9, 29, 0, 15, 37, /* 106 */ 7, 82, 24, 9, 74, 28, 9, 30, 0, 13, 38, @@ -299,4 +301,295 @@ static uint8_t retropad_buttons[] = /* sizeof( buttons ) = 1238 */ +static uint8_t keyboard_body[] = +{ + /* 0 */ 1, 255, + /* 1 */ 1, 255, + /* 2 */ 1, 255, + /* 3 */ 2, 0, 255, + /* 4 */ 2, 0, 255, + /* 5 */ 2, 0, 255, + /* 6 */ 2, 0, 255, + /* 7 */ 2, 0, 255, + /* 8 */ 2, 0, 255, + /* 9 */ 2, 0, 255, + /* 10 */ 2, 0, 255, + /* 11 */ 2, 0, 255, + /* 12 */ 2, 0, 255, + /* 13 */ 2, 0, 255, + /* 14 */ 2, 0, 255, + /* 15 */ 2, 0, 255, + /* 16 */ 2, 0, 255, + /* 17 */ 2, 0, 255, + /* 18 */ 2, 0, 255, + /* 19 */ 2, 0, 255, + /* 20 */ 2, 0, 255, + /* 21 */ 2, 0, 255, + /* 22 */ 2, 0, 255, + /* 23 */ 2, 0, 255, + /* 24 */ 2, 0, 255, + /* 25 */ 2, 0, 255, + /* 26 */ 2, 0, 255, + /* 27 */ 2, 0, 255, + /* 28 */ 2, 0, 255, + /* 29 */ 2, 0, 255, + /* 30 */ 2, 0, 255, + /* 31 */ 2, 0, 255, + /* 32 */ 2, 0, 255, + /* 33 */ 2, 0, 255, + /* 34 */ 2, 0, 255, + /* 35 */ 2, 0, 255, + /* 36 */ 2, 0, 255, + /* 37 */ 2, 0, 255, + /* 38 */ 2, 0, 255, + /* 39 */ 2, 0, 255, + /* 40 */ 2, 0, 255, + /* 41 */ 2, 0, 255, + /* 42 */ 2, 0, 255, + /* 43 */ 2, 0, 255, + /* 44 */ 2, 0, 255, + /* 45 */ 2, 0, 255, + /* 46 */ 2, 0, 255, + /* 47 */ 2, 0, 255, + /* 48 */ 2, 0, 255, + /* 49 */ 2, 0, 255, + /* 50 */ 2, 0, 255, + /* 51 */ 2, 0, 255, + /* 52 */ 2, 0, 255, + /* 53 */ 2, 0, 255, + /* 54 */ 2, 0, 255, + /* 55 */ 2, 0, 255, + /* 56 */ 2, 0, 255, + /* 57 */ 2, 0, 255, + /* 58 */ 2, 0, 255, + /* 59 */ 2, 0, 255, + /* 60 */ 2, 0, 255, + /* 61 */ 2, 0, 255, + /* 62 */ 2, 0, 255, + /* 63 */ 2, 0, 255, + /* 64 */ 2, 0, 255, + /* 65 */ 2, 0, 255, + /* 66 */ 2, 0, 255, + /* 67 */ 2, 0, 255, + /* 68 */ 2, 0, 255, + /* 69 */ 2, 0, 255, + /* 70 */ 2, 0, 255, + /* 71 */ 2, 0, 255, + /* 72 */ 2, 0, 255, + /* 73 */ 2, 0, 255, + /* 74 */ 2, 0, 255, + /* 75 */ 2, 0, 255, + /* 76 */ 2, 0, 255, + /* 77 */ 2, 0, 255, + /* 78 */ 2, 0, 255, + /* 79 */ 2, 0, 255, + /* 80 */ 2, 0, 255, + /* 81 */ 2, 0, 255, + /* 82 */ 2, 0, 255, + /* 83 */ 2, 0, 255, + /* 84 */ 2, 0, 255, + /* 85 */ 2, 0, 255, + /* 86 */ 2, 0, 255, + /* 87 */ 2, 0, 255, + /* 88 */ 2, 0, 255, + /* 89 */ 2, 0, 255, + /* 90 */ 2, 0, 255, + /* 91 */ 2, 0, 255, + /* 92 */ 2, 0, 255, + /* 93 */ 2, 0, 255, + /* 94 */ 2, 0, 255, + /* 95 */ 2, 0, 255, + /* 96 */ 2, 0, 255, + /* 97 */ 2, 0, 255, + /* 98 */ 2, 0, 255, + /* 99 */ 2, 0, 255, + /* 100 */ 2, 0, 255, + /* 101 */ 2, 0, 255, + /* 102 */ 2, 0, 255, + /* 103 */ 2, 0, 255, + /* 104 */ 2, 0, 255, + /* 105 */ 2, 0, 255, + /* 106 */ 2, 0, 255, + /* 107 */ 2, 0, 255, + /* 108 */ 2, 0, 255, + /* 109 */ 2, 0, 255, + /* 110 */ 2, 0, 255, + /* 111 */ 2, 0, 255, + /* 112 */ 2, 0, 255, + /* 113 */ 2, 0, 255, + /* 114 */ 2, 0, 255, + /* 115 */ 2, 0, 255, + /* 116 */ 2, 0, 255, + /* 117 */ 2, 0, 255, + /* 118 */ 2, 0, 255, + /* 119 */ 2, 0, 255, + /* 120 */ 2, 0, 255, + /* 121 */ 2, 0, 255, + /* 122 */ 2, 0, 255, + /* 123 */ 2, 0, 255, + /* 124 */ 2, 0, 255, + /* 125 */ 2, 0, 255, + /* 126 */ 2, 0, 255, + /* 127 */ 2, 0, 255, + /* 128 */ 2, 0, 255, + /* 129 */ 2, 0, 255, + /* 130 */ 2, 0, 255, + /* 131 */ 2, 0, 255, + /* 132 */ 2, 0, 255, + /* 133 */ 2, 0, 255, + /* 134 */ 2, 0, 255, + /* 135 */ 2, 0, 255, + /* 136 */ 2, 0, 255, + /* 137 */ 1, 255, + /* 138 */ 1, 255, + /* 139 */ 1, 255, + /* 140 */ 1, 255, + /* 141 */ 1, 255, +}; + +static uint16_t keyboard_buttons[] = +{ + /* 0 */ 1, 255, + /* 1 */ 1, 255, + /* 2 */ 1, 255, + /* 3 */ 1, 255, + /* 4 */ 69, 1, 27, 3, 22, 282, 4, 1, 282, 1, 5, 283, 3, 1, 283, 3, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 1, 2, 285, 1, 13, 286, 3, 1, 286, 4, 4, 287, 3, 2, 287, 3, 4, 288, 3, 1, 288, 4, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 3, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 1, 293, 3, 5, 316, 4, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 3, 40, + /* 5 */ 69, 1, 27, 3, 22, 282, 4, 1, 282, 1, 5, 283, 3, 1, 283, 3, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 1, 2, 285, 1, 13, 286, 3, 1, 286, 4, 4, 287, 3, 2, 287, 3, 4, 288, 3, 1, 288, 4, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 3, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 1, 293, 3, 5, 316, 4, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 3, 40, + /* 6 */ 85, 1, 27, 1, 1, 27, 3, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 6, 283, 1, 4, 284, 1, 6, 284, 1, 4, 285, 1, 3, 285, 1, 2, 285, 1, 13, 286, 1, 3, 286, 1, 7, 287, 1, 3, 287, 1, 7, 288, 1, 6, 288, 1, 4, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 4, 290, 1, 1, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 1, 6, 302, 1, 3, 302, 1, 7, 19, 1, 1, 19, 1, 1, 19, 3, 36, + /* 7 */ 85, 1, 27, 1, 1, 27, 3, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 6, 283, 1, 4, 284, 1, 6, 284, 1, 4, 285, 1, 3, 285, 1, 2, 285, 1, 13, 286, 1, 3, 286, 1, 7, 287, 1, 3, 287, 1, 7, 288, 1, 6, 288, 1, 4, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 4, 290, 1, 1, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 1, 6, 302, 1, 3, 302, 1, 7, 19, 1, 1, 19, 1, 1, 19, 3, 36, + /* 8 */ 79, 1, 27, 2, 1, 27, 1, 2, 27, 1, 18, 282, 4, 1, 282, 1, 5, 283, 3, 3, 283, 1, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 4, 13, 286, 3, 1, 286, 3, 5, 287, 3, 1, 287, 3, 5, 288, 3, 4, 288, 1, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 1, 1, 19, 1, 4, 19, 1, 35, + /* 9 */ 79, 1, 27, 2, 1, 27, 1, 2, 27, 1, 18, 282, 4, 1, 282, 1, 5, 283, 3, 3, 283, 1, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 4, 13, 286, 3, 1, 286, 3, 5, 287, 3, 1, 287, 3, 5, 288, 3, 4, 288, 1, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 1, 1, 19, 1, 4, 19, 1, 35, + /* 10 */ 79, 1, 27, 1, 2, 27, 2, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 4, 283, 1, 6, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 5, 288, 1, 5, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 2, 293, 1, 6, 316, 4, 3, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 3, 1, 19, 4, 35, + /* 11 */ 79, 1, 27, 1, 2, 27, 2, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 4, 283, 1, 6, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 5, 288, 1, 5, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 2, 293, 1, 6, 316, 4, 3, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 3, 1, 19, 4, 35, + /* 12 */ 81, 1, 27, 1, 3, 27, 1, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 1, 7, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 4, 288, 1, 6, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 1, 7, 316, 1, 6, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 1, 3, 19, 1, 2, 19, 1, 35, + /* 13 */ 81, 1, 27, 1, 3, 27, 1, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 1, 7, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 4, 288, 1, 6, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 1, 7, 316, 1, 6, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 1, 3, 19, 1, 2, 19, 1, 35, + /* 14 */ 73, 1, 27, 2, 1, 27, 2, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 4, 4, 284, 1, 3, 284, 3, 5, 285, 1, 6, 285, 1, 13, 286, 1, 3, 286, 3, 5, 287, 1, 4, 287, 2, 5, 288, 1, 3, 288, 1, 7, 289, 1, 4, 289, 2, 14, 290, 1, 4, 290, 3, 4, 291, 1, 2, 291, 1, 1, 291, 3, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 3, 5, 316, 1, 4, 316, 3, 4, 302, 3, 1, 302, 4, 4, 19, 1, 3, 19, 4, 35, + /* 15 */ 73, 1, 27, 2, 1, 27, 2, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 4, 4, 284, 1, 3, 284, 3, 5, 285, 1, 6, 285, 1, 13, 286, 1, 3, 286, 3, 5, 287, 1, 4, 287, 2, 5, 288, 1, 3, 288, 1, 7, 289, 1, 4, 289, 2, 14, 290, 1, 4, 290, 3, 4, 291, 1, 2, 291, 1, 1, 291, 3, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 3, 5, 316, 1, 4, 316, 3, 4, 302, 3, 1, 302, 4, 4, 19, 1, 3, 19, 4, 35, + /* 16 */ 1, 255, + /* 17 */ 1, 255, + /* 18 */ 1, 255, + /* 19 */ 1, 255, + /* 20 */ 1, 255, + /* 21 */ 1, 255, + /* 22 */ 1, 255, + /* 23 */ 1, 255, + /* 24 */ 1, 255, + /* 25 */ 1, 255, + /* 26 */ 1, 255, + /* 27 */ 1, 255, + /* 28 */ 1, 255, + /* 29 */ 1, 255, + /* 30 */ 49, 16, 49, 1, 10, 50, 3, 10, 51, 3, 8, 52, 1, 2, 52, 1, 8, 53, 4, 9, 54, 3, 8, 55, 4, 9, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 14, 8, 4, 10, 277, 1, 11, 278, 1, 2, 278, 1, 8, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 7, 267, 1, 5, 268, 1, 11, + /* 31 */ 49, 16, 49, 1, 10, 50, 3, 10, 51, 3, 8, 52, 1, 2, 52, 1, 8, 53, 4, 9, 54, 3, 8, 55, 4, 9, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 14, 8, 4, 10, 277, 1, 11, 278, 1, 2, 278, 1, 8, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 7, 267, 1, 5, 268, 1, 11, + /* 32 */ 83, 3, 96, 2, 2, 96, 1, 8, 49, 1, 13, 50, 1, 12, 51, 1, 7, 52, 1, 2, 52, 1, 8, 53, 1, 11, 54, 1, 14, 55, 1, 8, 56, 1, 2, 56, 1, 8, 57, 1, 2, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 2, 3, 8, 2, 1, 8, 1, 3, 8, 1, 4, 8, 4, 5, 277, 1, 1, 277, 2, 2, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 2, 1, 300, 1, 1, 300, 1, 7, 267, 1, 3, 268, 1, 1, 268, 1, 1, 268, 1, 9, + /* 33 */ 83, 3, 96, 2, 2, 96, 1, 8, 49, 1, 13, 50, 1, 12, 51, 1, 7, 52, 1, 2, 52, 1, 8, 53, 1, 11, 54, 1, 14, 55, 1, 8, 56, 1, 2, 56, 1, 8, 57, 1, 2, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 2, 3, 8, 2, 1, 8, 1, 3, 8, 1, 4, 8, 4, 5, 277, 1, 1, 277, 2, 2, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 2, 1, 300, 1, 1, 300, 1, 7, 267, 1, 3, 268, 1, 1, 268, 1, 1, 268, 1, 9, + /* 34 */ 77, 2, 96, 1, 2, 96, 2, 9, 49, 1, 12, 50, 1, 10, 51, 3, 8, 52, 4, 8, 53, 3, 9, 54, 3, 12, 55, 1, 9, 56, 2, 9, 57, 4, 7, 48, 1, 2, 48, 1, 9, 45, 3, 19, 8, 3, 4, 8, 1, 1, 8, 1, 3, 8, 1, 3, 8, 4, 1, 8, 1, 2, 8, 1, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 1, 5, 278, 4, 1, 278, 1, 1, 278, 1, 4, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 1, 1, 300, 2, 1, 300, 1, 6, 267, 1, 5, 268, 3, 4, 269, 3, 3, + /* 35 */ 77, 2, 96, 1, 2, 96, 2, 9, 49, 1, 12, 50, 1, 10, 51, 3, 8, 52, 4, 8, 53, 3, 9, 54, 3, 12, 55, 1, 9, 56, 2, 9, 57, 4, 7, 48, 1, 2, 48, 1, 9, 45, 3, 19, 8, 3, 4, 8, 1, 1, 8, 1, 3, 8, 1, 3, 8, 4, 1, 8, 1, 2, 8, 1, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 1, 5, 278, 4, 1, 278, 1, 1, 278, 1, 4, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 1, 1, 300, 2, 1, 300, 1, 6, 267, 1, 5, 268, 3, 4, 269, 3, 3, + /* 36 */ 79, 16, 49, 1, 11, 50, 1, 14, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 10, 55, 1, 9, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 3, 1, 8, 1, 3, 8, 1, 1, 8, 1, 4, 8, 1, 1, 8, 4, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 6, 267, 1, 5, 268, 1, 1, 268, 1, 10, + /* 37 */ 79, 16, 49, 1, 11, 50, 1, 14, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 10, 55, 1, 9, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 3, 1, 8, 1, 3, 8, 1, 1, 8, 1, 4, 8, 1, 1, 8, 4, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 6, 267, 1, 5, 268, 1, 1, 268, 1, 10, + /* 38 */ 77, 16, 49, 1, 10, 50, 1, 15, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 9, 55, 1, 10, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 31, 8, 1, 2, 8, 1, 1, 8, 1, 1, 8, 1, 1, 8, 1, 3, 8, 2, 5, 8, 1, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 2, 277, 1, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 1, 3, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 5, 267, 1, 5, 268, 1, 3, 268, 1, 9, + /* 39 */ 77, 16, 49, 1, 10, 50, 1, 15, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 9, 55, 1, 10, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 31, 8, 1, 2, 8, 1, 1, 8, 1, 1, 8, 1, 1, 8, 1, 3, 8, 2, 5, 8, 1, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 2, 277, 1, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 1, 3, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 5, 267, 1, 5, 268, 1, 3, 268, 1, 9, + /* 40 */ 61, 16, 49, 1, 10, 50, 4, 9, 51, 3, 11, 52, 1, 8, 53, 3, 10, 54, 2, 9, 55, 1, 12, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 2, 8, 3, 2, 8, 2, 1, 8, 1, 1, 8, 1, 1, 8, 4, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 4, 280, 2, 5, 300, 1, 2, 300, 1, 1, 300, 3, 3, 267, 1, 19, + /* 41 */ 61, 16, 49, 1, 10, 50, 4, 9, 51, 3, 11, 52, 1, 8, 53, 3, 10, 54, 2, 9, 55, 1, 12, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 2, 8, 3, 2, 8, 2, 1, 8, 1, 1, 8, 1, 1, 8, 4, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 4, 280, 2, 5, 300, 1, 2, 300, 1, 1, 300, 3, 3, 267, 1, 19, + /* 42 */ 1, 255, + /* 43 */ 1, 255, + /* 44 */ 1, 255, + /* 45 */ 1, 255, + /* 46 */ 1, 255, + /* 47 */ 1, 255, + /* 48 */ 1, 255, + /* 49 */ 1, 255, + /* 50 */ 53, 1, 9, 3, 2, 9, 2, 2, 9, 3, 8, 113, 3, 8, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 9, 116, 5, 7, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 10, 111, 2, 9, 112, 4, 8, 91, 3, 10, 93, 3, 32, 127, 2, 5, 127, 1, 4, 279, 3, 9, 281, 3, 1, 281, 3, 7, 263, 4, 5, 264, 2, 4, 265, 4, 10, + /* 51 */ 53, 1, 9, 3, 2, 9, 2, 2, 9, 3, 8, 113, 3, 8, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 9, 116, 5, 7, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 10, 111, 2, 9, 112, 4, 8, 91, 3, 10, 93, 3, 32, 127, 2, 5, 127, 1, 4, 279, 3, 9, 281, 3, 1, 281, 3, 7, 263, 4, 5, 264, 2, 4, 265, 4, 10, + /* 52 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 9, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 3, 5, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 4, 264, 1, 2, 264, 1, 3, 265, 1, 2, 265, 1, 10, + /* 53 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 9, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 3, 5, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 4, 264, 1, 2, 264, 1, 3, 265, 1, 2, 265, 1, 10, + /* 54 */ 73, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 7, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 11, 116, 1, 10, 121, 1, 1, 121, 1, 8, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 5, 264, 2, 4, 265, 4, 10, + /* 55 */ 73, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 7, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 11, 116, 1, 10, 121, 1, 1, 121, 1, 8, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 5, 264, 2, 4, 265, 4, 10, + /* 56 */ 75, 2, 9, 1, 2, 9, 4, 1, 9, 1, 2, 9, 1, 6, 113, 1, 1, 113, 1, 1, 113, 1, 7, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 4, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 3, 1, 281, 1, 2, 281, 1, 8, 263, 1, 5, 264, 1, 2, 264, 1, 6, 265, 1, 10, + /* 57 */ 75, 2, 9, 1, 2, 9, 4, 1, 9, 1, 2, 9, 1, 6, 113, 1, 1, 113, 1, 1, 113, 1, 7, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 4, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 3, 1, 281, 1, 2, 281, 1, 8, 263, 1, 5, 264, 1, 2, 264, 1, 6, 265, 1, 10, + /* 58 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 2, 113, 1, 8, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 11, 91, 1, 14, 93, 1, 11, 13, 3, 7, 13, 1, 10, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 1, 2, 281, 1, 7, 263, 1, 6, 264, 1, 2, 264, 1, 6, 265, 1, 10, + /* 59 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 2, 113, 1, 8, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 11, 91, 1, 14, 93, 1, 11, 13, 3, 7, 13, 1, 10, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 1, 2, 281, 1, 7, 263, 1, 6, 264, 1, 2, 264, 1, 6, 265, 1, 10, + /* 60 */ 69, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 8, 113, 2, 1, 113, 1, 8, 119, 1, 1, 119, 1, 6, 101, 4, 10, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 10, 117, 2, 11, 105, 1, 10, 111, 2, 9, 112, 1, 11, 91, 3, 10, 93, 3, 11, 13, 1, 3, 13, 3, 3, 13, 1, 3, 13, 2, 5, 127, 2, 2, 127, 2, 1, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 3, 7, 263, 1, 8, 264, 2, 4, 265, 4, 10, + /* 61 */ 69, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 8, 113, 2, 1, 113, 1, 8, 119, 1, 1, 119, 1, 6, 101, 4, 10, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 10, 117, 2, 11, 105, 1, 10, 111, 2, 9, 112, 1, 11, 91, 3, 10, 93, 3, 11, 13, 1, 3, 13, 3, 3, 13, 1, 3, 13, 2, 5, 127, 2, 2, 127, 2, 1, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 3, 7, 263, 1, 8, 264, 2, 4, 265, 4, 10, + /* 62 */ 13, 167, 13, 3, 1, 13, 1, 2, 13, 1, 1, 13, 3, 2, 13, 1, 68, 270, 1, 4, + /* 63 */ 13, 167, 13, 3, 1, 13, 1, 2, 13, 1, 1, 13, 3, 2, 13, 1, 68, 270, 1, 4, + /* 64 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 67, 270, 3, 3, + /* 65 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 67, 270, 3, 3, + /* 66 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 68, 270, 1, 4, + /* 67 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 68, 270, 1, 4, + /* 68 */ 11, 167, 13, 3, 1, 13, 1, 2, 13, 1, 3, 13, 2, 1, 13, 1, 73, + /* 69 */ 11, 167, 13, 3, 1, 13, 1, 2, 13, 1, 3, 13, 2, 1, 13, 1, 73, + /* 70 */ 37, 2, 301, 2, 21, 97, 2, 10, 115, 4, 7, 100, 3, 10, 102, 4, 9, 103, 3, 8, 104, 1, 2, 104, 1, 8, 106, 4, 6, 107, 1, 2, 107, 1, 9, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 4, 3, 262, 3, 10, + /* 71 */ 37, 2, 301, 2, 21, 97, 2, 10, 115, 4, 7, 100, 3, 10, 102, 4, 9, 103, 3, 8, 104, 1, 2, 104, 1, 8, 106, 4, 6, 107, 1, 2, 107, 1, 9, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 4, 3, 262, 3, 10, + /* 72 */ 49, 1, 301, 1, 2, 301, 1, 1, 301, 3, 2, 301, 4, 1, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 1, 10, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 11, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 1, 5, 262, 1, 13, + /* 73 */ 49, 1, 301, 1, 2, 301, 1, 1, 301, 3, 2, 301, 4, 1, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 1, 10, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 11, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 1, 5, 262, 1, 13, + /* 74 */ 45, 1, 301, 1, 7, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 7, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 1, 2, 100, 1, 9, 102, 4, 8, 103, 1, 1, 103, 2, 8, 104, 4, 11, 106, 1, 6, 107, 2, 11, 108, 1, 12, 59, 1, 24, 92, 1, 67, 260, 4, 5, 261, 3, 3, 262, 3, 11, + /* 75 */ 45, 1, 301, 1, 7, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 7, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 1, 2, 100, 1, 9, 102, 4, 8, 103, 1, 1, 103, 2, 8, 104, 4, 11, 106, 1, 6, 107, 2, 11, 108, 1, 12, 59, 1, 24, 92, 1, 67, 260, 4, 5, 261, 3, 3, 262, 3, 11, + /* 76 */ 45, 1, 301, 1, 4, 301, 4, 1, 301, 4, 1, 301, 3, 5, 97, 4, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 37, 92, 1, 70, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10, + /* 77 */ 45, 1, 301, 1, 4, 301, 4, 1, 301, 4, 1, 301, 3, 5, 97, 4, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 37, 92, 1, 70, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10, + /* 78 */ 55, 1, 301, 1, 2, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 6, 301, 1, 5, 97, 1, 2, 97, 1, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 8, 106, 1, 2, 106, 1, 6, 107, 1, 2, 107, 1, 9, 108, 1, 12, 59, 1, 25, 92, 1, 69, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10, + /* 79 */ 55, 1, 301, 1, 2, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 6, 301, 1, 5, 97, 1, 2, 97, 1, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 8, 106, 1, 2, 106, 1, 6, 107, 1, 2, 107, 1, 9, 108, 1, 12, 59, 1, 25, 92, 1, 69, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10, + /* 80 */ 43, 2, 301, 2, 2, 301, 4, 1, 301, 1, 4, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 3, 10, 102, 1, 12, 103, 2, 9, 104, 1, 2, 104, 1, 9, 106, 2, 7, 107, 1, 2, 107, 1, 9, 108, 4, 9, 59, 1, 25, 92, 1, 69, 260, 1, 5, 261, 3, 4, 262, 2, 11, + /* 81 */ 43, 2, 301, 2, 2, 301, 4, 1, 301, 1, 4, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 3, 10, 102, 1, 12, 103, 2, 9, 104, 1, 2, 104, 1, 9, 106, 2, 7, 107, 1, 2, 107, 1, 9, 108, 4, 9, 59, 1, 25, 92, 1, 69, 260, 1, 5, 261, 3, 4, 262, 2, 11, + /* 82 */ 1, 255, + /* 83 */ 1, 255, + /* 84 */ 1, 255, + /* 85 */ 1, 255, + /* 86 */ 1, 255, + /* 87 */ 1, 255, + /* 88 */ 1, 255, + /* 89 */ 1, 255, + /* 90 */ 53, 1, 304, 3, 8, 304, 1, 1, 304, 1, 8, 323, 1, 10, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 8, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 34, 47, 1, 11, 303, 4, 1, 303, 1, 4, 303, 1, 2, 303, 3, 1, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 3, 4, 259, 3, 4, 271, 6, 1, + /* 91 */ 53, 1, 304, 3, 8, 304, 1, 1, 304, 1, 8, 323, 1, 10, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 8, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 34, 47, 1, 11, 303, 4, 1, 303, 1, 4, 303, 1, 2, 303, 3, 1, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 3, 4, 259, 3, 4, 271, 6, 1, + /* 92 */ 63, 1, 304, 1, 3, 304, 1, 3, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 14, 122, 1, 7, 120, 1, 3, 120, 1, 8, 99, 1, 2, 99, 1, 7, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 2, 1, 110, 1, 8, 109, 2, 1, 109, 2, 34, 47, 1, 11, 303, 1, 4, 303, 1, 6, 303, 1, 4, 303, 1, 27, 273, 4, 21, 257, 1, 9, 258, 1, 6, 259, 1, 3, 271, 1, 2, 271, 1, 1, 271, 1, 1, + /* 93 */ 63, 1, 304, 1, 3, 304, 1, 3, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 14, 122, 1, 7, 120, 1, 3, 120, 1, 8, 99, 1, 2, 99, 1, 7, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 2, 1, 110, 1, 8, 109, 2, 1, 109, 2, 34, 47, 1, 11, 303, 1, 4, 303, 1, 6, 303, 1, 4, 303, 1, 27, 273, 4, 21, 257, 1, 9, 258, 1, 6, 259, 1, 3, 271, 1, 2, 271, 1, 1, 271, 1, 1, + /* 94 */ 61, 1, 304, 3, 1, 304, 1, 5, 304, 2, 1, 304, 2, 5, 323, 1, 14, 122, 1, 9, 120, 1, 1, 120, 1, 9, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 1, 110, 2, 8, 109, 1, 1, 109, 1, 1, 109, 1, 33, 47, 1, 12, 303, 4, 1, 303, 4, 1, 303, 1, 1, 303, 3, 1, 303, 3, 25, 273, 6, 20, 257, 1, 8, 258, 1, 4, 259, 3, 4, 271, 1, 2, 271, 1, 1, 271, 1, 1, + /* 95 */ 61, 1, 304, 3, 1, 304, 1, 5, 304, 2, 1, 304, 2, 5, 323, 1, 14, 122, 1, 9, 120, 1, 1, 120, 1, 9, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 1, 110, 2, 8, 109, 1, 1, 109, 1, 1, 109, 1, 33, 47, 1, 12, 303, 4, 1, 303, 4, 1, 303, 1, 1, 303, 3, 1, 303, 3, 25, 273, 6, 20, 257, 1, 8, 258, 1, 4, 259, 3, 4, 271, 1, 2, 271, 1, 1, 271, 1, 1, + /* 96 */ 57, 3, 304, 1, 1, 304, 3, 1, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 12, 122, 1, 11, 120, 1, 10, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 33, 47, 1, 15, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 7, 258, 1, 8, 259, 1, 10, + /* 97 */ 57, 3, 304, 1, 1, 304, 3, 1, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 12, 122, 1, 11, 120, 1, 10, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 33, 47, 1, 15, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 7, 258, 1, 8, 259, 1, 10, + /* 98 */ 69, 3, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 2, 304, 1, 8, 323, 1, 10, 122, 1, 11, 120, 1, 1, 120, 1, 9, 99, 1, 2, 99, 1, 8, 118, 1, 1, 118, 1, 9, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 11, 46, 1, 11, 47, 1, 16, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 1, 9, 259, 1, 3, 271, 5, 2, + /* 99 */ 69, 3, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 2, 304, 1, 8, 323, 1, 10, 122, 1, 11, 120, 1, 1, 120, 1, 9, 99, 1, 2, 99, 1, 8, 118, 1, 1, 118, 1, 9, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 11, 46, 1, 11, 47, 1, 16, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 1, 9, 259, 1, 3, 271, 5, 2, + /* 100 */ 59, 1, 304, 3, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 3, 304, 1, 18, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 10, 118, 1, 10, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 23, 47, 1, 13, 303, 4, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 5, 303, 2, 26, 273, 2, 22, 257, 1, 6, 258, 4, 3, 259, 3, 8, 271, 1, 2, + /* 101 */ 59, 1, 304, 3, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 3, 304, 1, 18, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 10, 118, 1, 10, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 23, 47, 1, 13, 303, 4, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 5, 303, 2, 26, 273, 2, 22, 257, 1, 6, 258, 4, 3, 259, 3, 8, 271, 1, 2, + /* 102 */ 3, 252, 271, 1, 2, + /* 103 */ 3, 252, 271, 1, 2, + /* 104 */ 3, 248, 271, 4, 3, + /* 105 */ 3, 248, 271, 4, 3, + /* 106 */ 1, 255, + /* 107 */ 1, 255, + /* 108 */ 3, 251, 271, 1, 3, + /* 109 */ 3, 251, 271, 1, 3, + /* 110 */ 37, 2, 306, 2, 2, 306, 1, 7, 306, 1, 19, 308, 2, 2, 308, 1, 2, 308, 1, 8, 32, 85, 7, 307, 2, 2, 307, 1, 2, 307, 1, 20, 305, 2, 2, 305, 1, 7, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 15, 271, 5, 1, + /* 111 */ 39, 2, 306, 2, 2, 306, 1, 7, 306, 1, 19, 308, 2, 2, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 7, 307, 2, 2, 307, 1, 2, 307, 1, 20, 305, 2, 2, 305, 1, 7, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 15, 271, 5, 1, + /* 112 */ 51, 1, 306, 1, 4, 306, 1, 4, 306, 2, 1, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 4, 305, 2, 1, 305, 1, 7, 276, 2, 11, 274, 2, 11, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 1, 2, 271, 1, 3, + /* 113 */ 51, 1, 306, 1, 4, 306, 1, 4, 306, 2, 1, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 4, 305, 2, 1, 305, 1, 7, 276, 2, 11, 274, 2, 11, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 1, 2, 271, 1, 3, + /* 114 */ 49, 1, 306, 1, 3, 306, 3, 2, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 1, 308, 3, 7, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 1, 307, 3, 18, 305, 1, 3, 305, 3, 2, 305, 1, 3, 305, 1, 6, 276, 6, 8, 274, 2, 8, 275, 6, 11, 256, 1, 2, 256, 1, 14, 271, 1, 6, + /* 115 */ 49, 1, 306, 1, 3, 306, 3, 2, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 1, 308, 3, 7, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 1, 307, 3, 18, 305, 1, 3, 305, 3, 2, 305, 1, 3, 305, 1, 6, 276, 6, 8, 274, 2, 8, 275, 6, 11, 256, 1, 2, 256, 1, 14, 271, 1, 6, + /* 116 */ 43, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 4, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 4, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 6, 276, 6, 6, 274, 6, 6, 275, 6, 11, 256, 1, 2, 256, 1, 21, + /* 117 */ 43, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 4, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 4, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 6, 276, 6, 6, 274, 6, 6, 275, 6, 11, 256, 1, 2, 256, 1, 21, + /* 118 */ 49, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 7, 276, 2, 10, 274, 4, 10, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 5, 2, + /* 119 */ 49, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 7, 276, 2, 10, 274, 4, 10, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 5, 2, + /* 120 */ 49, 2, 306, 2, 3, 306, 2, 1, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 3, 308, 2, 6, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 3, 307, 2, 18, 305, 2, 3, 305, 2, 1, 305, 1, 3, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 8, 266, 1, 9, 271, 1, 2, + /* 121 */ 47, 2, 306, 2, 3, 306, 2, 1, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 3, 308, 2, 6, 32, 85, 6, 307, 1, 2, 307, 1, 1, 307, 1, 3, 307, 2, 18, 305, 2, 3, 305, 2, 1, 305, 1, 3, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 8, 266, 1, 9, 271, 1, 2, + /* 122 */ 1, 255, + /* 123 */ 1, 255, + /* 124 */ 1, 255, + /* 125 */ 1, 255, + /* 126 */ 1, 255, + /* 127 */ 1, 255, + /* 128 */ 1, 255, + /* 129 */ 1, 255, + /* 130 */ 41, 1, 12, 10, 2, 33, 10, 2, 34, 10, 2, 35, 10, 2, 36, 10, 2, 38, 10, 2, 40, 10, 2, 41, 10, 2, 42, 10, 2, 43, 10, 2, 58, 10, 2, 60, 10, 2, 62, 10, 2, 63, 10, 2, 64, 10, 2, 94, 10, 2, 95, 10, 2, 123, 10, 2, 124, 10, 2, 125, 10, 16, + /* 131 */ 41, 1, 12, 10, 2, 33, 10, 2, 34, 10, 2, 35, 10, 2, 36, 10, 2, 38, 10, 2, 40, 10, 2, 41, 10, 2, 42, 10, 2, 43, 10, 2, 58, 10, 2, 60, 10, 2, 62, 10, 2, 63, 10, 2, 64, 10, 2, 94, 10, 2, 95, 10, 2, 123, 10, 2, 124, 10, 2, 125, 10, 16, + /* 132 */ 1, 255, + /* 133 */ 1, 255, + /* 134 */ 41, 1, 126, 10, 2, 272, 10, 2, 294, 10, 2, 295, 10, 2, 296, 10, 2, 309, 10, 2, 310, 10, 2, 311, 10, 2, 312, 10, 2, 313, 10, 2, 315, 10, 2, 316, 10, 2, 317, 10, 2, 318, 10, 2, 319, 10, 2, 320, 10, 2, 321, 10, 2, 322, 10, 2, 314, 10, 2, 0, 10, 16, + /* 135 */ 41, 1, 126, 10, 2, 272, 10, 2, 294, 10, 2, 295, 10, 2, 296, 10, 2, 309, 10, 2, 310, 10, 2, 311, 10, 2, 312, 10, 2, 313, 10, 2, 315, 10, 2, 316, 10, 2, 317, 10, 2, 318, 10, 2, 319, 10, 2, 320, 10, 2, 321, 10, 2, 322, 10, 2, 314, 10, 2, 0, 10, 16, + /* 136 */ 1, 255, + /* 137 */ 1, 255, + /* 138 */ 1, 255, + /* 139 */ 1, 255, + /* 140 */ 1, 255, + /* 141 */ 1, 255, +}; #endif /* REMOTEPAD_H */