[FL-1138] CLI commands unification (#484)

* power_otg command, merge sd_info and sd_status, added small usage instructions for commands with args
* remove duplicated sd status string
* cli_print_usage added, typo fix
This commit is contained in:
its your bedtime 2021-05-24 17:50:28 +03:00 committed by GitHub
parent 2daf65b62b
commit f1e9a12eb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 312 additions and 241 deletions

View File

@ -70,8 +70,41 @@ void cli_print_version(const Version* version) {
} }
} }
void cli_print_usage(const char* cmd, const char* usage, const char* arg) {
furi_assert(cmd);
furi_assert(arg);
furi_assert(usage);
printf("%s: illegal option -- %s\r\nusage: %s %s", cmd, arg, cmd, usage);
}
void cli_motd() { void cli_motd() {
printf("Flipper cli.\r\n"); printf(" __ \r\n \
_.-~ ) \r\n \
_..--~~~~,' ,-/ _\r\n \
.-'. . . .' ,-',' ,' ) \r\n \
,'. . . _ ,--~,-'__..-' ,' \r\n \
,'. . . (@)' ---~~~~ ,'\r\n \
/. . . . '~~ ,-'\r\n \
/. . . . . ,-'\r\n \
; . . . . - . ,'\r\n \
: . . . . _ /\r\n \
. . . . . `-.:\r\n \
. . . ./ - . )\r\n \
. . . | _____..---.._/ _____\r\n \
~-----~~~~----~~~~ ~~~-----~~~~~-----~\r\n \
______ _ _ _____ _ _____\r\n \
| ____| (_) / ____| | |_ _|\r\n \
| |__ | |_ _ __ _ __ ___ _ __ | | | | | |\r\n \
| __| | | | '_ \\| '_ \\ / _ \\ '__| | | | | | |\r\n \
| | | | | |_) | |_) | __/ | | |____| |____ _| |_\r\n \
|_| |_|_| .__/| .__/ \\___|_| \\_____|______|_____|\r\n \
| | | |\r\n \
|_| |_|\r\n\r\n"
);
printf("You are now connected to Flipper Command Line Interface.\r\n\r\n");
printf("Bootloader\r\n"); printf("Bootloader\r\n");
cli_print_version(api_hal_version_get_boot_version()); cli_print_version(api_hal_version_get_boot_version());

View File

@ -27,6 +27,14 @@ typedef void (*CliCallback)(Cli* cli, string_t args, void* context);
*/ */
void cli_add_command(Cli* cli, const char* name, CliCallback callback, void* context); void cli_add_command(Cli* cli, const char* name, CliCallback callback, void* context);
/* Print unified cmd usage tip
* @param cmd - cmd name
* @param usage - usage tip
* @param arg - arg passed by user
*/
void cli_print_usage(const char* cmd, const char* usage, const char* arg);
/* Delete cli command /* Delete cli command
* @param cli - pointer to cli instance * @param cli - pointer to cli instance
* @param name - command name * @param name - command name

View File

@ -115,7 +115,7 @@ void cli_command_vibro(Cli* cli, string_t args, void* context) {
notification_message_block(notification, &sequence_set_vibro_on); notification_message_block(notification, &sequence_set_vibro_on);
furi_record_close("notification"); furi_record_close("notification");
} else { } else {
printf("Wrong input"); cli_print_usage("vibro", "<1|0>", string_get_cstr(args));
} }
} }
@ -126,7 +126,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) {
string_init(light_name); string_init(light_name);
size_t ws = string_search_char(args, ' '); size_t ws = string_search_char(args, ' ');
if(ws == STRING_FAILURE) { if(ws == STRING_FAILURE) {
printf("Wrong input"); cli_print_usage("led", "<r|g|b|bl> <0-255>", string_get_cstr(args));
string_clear(light_name); string_clear(light_name);
return; return;
} else { } else {
@ -144,7 +144,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) {
} else if(!string_cmp(light_name, "bl")) { } else if(!string_cmp(light_name, "bl")) {
notification_led_message.type = NotificationMessageTypeLedDisplay; notification_led_message.type = NotificationMessageTypeLedDisplay;
} else { } else {
printf("Wrong argument"); cli_print_usage("led", "<r|g|b|bl> <0-255>", string_get_cstr(args));
string_clear(light_name); string_clear(light_name);
return; return;
} }
@ -153,7 +153,7 @@ void cli_command_led(Cli* cli, string_t args, void* context) {
char* end_ptr; char* end_ptr;
uint32_t value = strtoul(string_get_cstr(args), &end_ptr, 0); uint32_t value = strtoul(string_get_cstr(args), &end_ptr, 0);
if(!(value < 256 && *end_ptr == '\0')) { if(!(value < 256 && *end_ptr == '\0')) {
printf("Wrong argument"); cli_print_usage("led", "<r|g|b|bl> <0-255>", string_get_cstr(args));
return; return;
} }
@ -191,7 +191,7 @@ void cli_command_gpio_set(Cli* cli, string_t args, void* context) {
string_init(pin_name); string_init(pin_name);
size_t ws = string_search_char(args, ' '); size_t ws = string_search_char(args, ' ');
if(ws == STRING_FAILURE) { if(ws == STRING_FAILURE) {
printf("Wrong input. Correct usage: gpio_set <pin_name> <0|1>"); cli_print_usage("gpio_set", "<pin_name> <0|1>", string_get_cstr(args));
string_clear(pin_name); string_clear(pin_name);
return; return;
} else { } else {

View File

@ -2,4 +2,4 @@
#include "cli_i.h" #include "cli_i.h"
void cli_commands_init(Cli* cli); void cli_commands_init(Cli* cli);

View File

@ -29,16 +29,18 @@ void power_cli_factory_reset(Cli* cli, string_t args, void* context) {
} }
} }
void power_cli_test(Cli* cli, string_t args, void* context) { void power_cli_info(Cli* cli, string_t args, void* context) {
api_hal_power_dump_state(); api_hal_power_dump_state();
} }
void power_cli_otg_on(Cli* cli, string_t args, void* context) { void power_cli_otg(Cli* cli, string_t args, void* context) {
api_hal_power_enable_otg(); if(!string_cmp(args, "0")) {
} api_hal_power_disable_otg();
} else if(!string_cmp(args, "1")) {
void power_cli_otg_off(Cli* cli, string_t args, void* context) { api_hal_power_enable_otg();
api_hal_power_disable_otg(); } else {
cli_print_usage("power_otg", "<1|0>", string_get_cstr(args));
}
} }
void power_cli_init(Cli* cli, Power* power) { void power_cli_init(Cli* cli, Power* power) {
@ -46,7 +48,6 @@ void power_cli_init(Cli* cli, Power* power) {
cli_add_command(cli, "reset", power_cli_reset, power); cli_add_command(cli, "reset", power_cli_reset, power);
cli_add_command(cli, "factory_reset", power_cli_factory_reset, power); cli_add_command(cli, "factory_reset", power_cli_factory_reset, power);
cli_add_command(cli, "dfu", power_cli_dfu, power); cli_add_command(cli, "dfu", power_cli_dfu, power);
cli_add_command(cli, "power_test", power_cli_test, power); cli_add_command(cli, "power_info", power_cli_info, power);
cli_add_command(cli, "power_otg_on", power_cli_otg_on, power); cli_add_command(cli, "power_otg", power_cli_otg, power);
cli_add_command(cli, "power_otg_off", power_cli_otg_off, power);
} }

View File

@ -522,14 +522,6 @@ void app_sd_eject_callback(void* context) {
/******************* Cli callbacks *******************/ /******************* Cli callbacks *******************/
static void cli_sd_status(Cli* cli, string_t args, void* _ctx) {
SdApp* sd_app = (SdApp*)_ctx;
printf("SD status: ");
printf(fs_error_get_internal_desc(sd_app->info.status));
printf("\r\n");
}
static void cli_sd_format(Cli* cli, string_t args, void* _ctx) { static void cli_sd_format(Cli* cli, string_t args, void* _ctx) {
SdApp* sd_app = (SdApp*)_ctx; SdApp* sd_app = (SdApp*)_ctx;
@ -552,18 +544,18 @@ static void cli_sd_info(Cli* cli, string_t args, void* _ctx) {
SDInfo sd_info; SDInfo sd_info;
get_sd_info(sd_app, &sd_info); get_sd_info(sd_app, &sd_info);
printf("SD Status: %s\r\n", fs_error_get_internal_desc(sd_app->info.status));
if(sd_info.error == SD_OK) { if(sd_info.error == SD_OK) {
const char* fs_type = get_fs_type_text(sd_info.fs_type); const char* fs_type = get_fs_type_text(sd_info.fs_type);
printf("Label: %s\r\n", sd_info.label); printf("Label: %s\r\n", sd_info.label);
printf("%s\r\n", fs_type); printf("Filesystem: %s\r\n", fs_type);
printf("Cluster: %d sectors\r\n", sd_info.cluster_size); printf("Cluster: %d sectors\r\n", sd_info.cluster_size);
printf("Sector: %d bytes\r\n", sd_info.sector_size); printf("Sector: %d bytes\r\n", sd_info.sector_size);
printf("%lu KB total\r\n", sd_info.kb_total); printf("%lu KB total\r\n", sd_info.kb_total);
printf("%lu KB free\r\n", sd_info.kb_free); printf("%lu KB free\r\n", sd_info.kb_free);
} else { } else {
printf("SD status error: %s\r\n", fs_error_get_internal_desc(_fs_status(&sd_app->info))); printf("SD Info error: %s\r\n", fs_error_get_internal_desc(sd_info.error));
printf("SD info error: %s\r\n", fs_error_get_internal_desc(sd_info.error));
} }
} }
@ -635,7 +627,6 @@ int32_t sd_filesystem(void* p) {
gui_add_view_port(gui, sd_app->icon.view_port, GuiLayerStatusBarLeft); gui_add_view_port(gui, sd_app->icon.view_port, GuiLayerStatusBarLeft);
cli_add_command(cli, "sd_status", cli_sd_status, sd_app);
cli_add_command(cli, "sd_format", cli_sd_format, sd_app); cli_add_command(cli, "sd_format", cli_sd_format, sd_app);
cli_add_command(cli, "sd_info", cli_sd_info, sd_app); cli_add_command(cli, "sd_info", cli_sd_info, sd_app);

View File

@ -11,9 +11,9 @@ const uint32_t test_nec_input1[] = {
1415838, 9080, 4436, 611, 494, 600, 505, 578, 500, 608, 501, 602, 502, 580, 498, 606, 508, 605, 500, 583, 1633, 608, 1608, 611, 1631, 578, 1638, 602, 1614, 606, 1637, 583, 1633, 607, 1609, 611, 494, 600, 505, 570, 500, 604, 501, 602, 502, 581, 497, 606, 499, 605, 499, 583, 1633, 617, 1608, 611, 1631, 579, 1638, 602}; 1415838, 9080, 4436, 611, 494, 600, 505, 578, 500, 608, 501, 602, 502, 580, 498, 606, 508, 605, 500, 583, 1633, 608, 1608, 611, 1631, 578, 1638, 602, 1614, 606, 1637, 583, 1633, 607, 1609, 611, 494, 600, 505, 570, 500, 604, 501, 602, 502, 581, 497, 606, 499, 605, 499, 583, 1633, 617, 1608, 611, 1631, 579, 1638, 602};
const IrdaMessage test_nec_expected1[] = { const IrdaMessage test_nec_expected1[] = {
{IrdaProtocolNEC, 0xFF00, 0, false}, {IrdaProtocolNEC, 0, 0, false},
{IrdaProtocolNEC, 0xFF00, 0, true}, {IrdaProtocolNEC, 0, 0, true},
{IrdaProtocolNEC, 0xFF00, 0, false}, {IrdaProtocolNEC, 0, 0, false},
}; };
const uint32_t test_nec_input2[] = { const uint32_t test_nec_input2[] = {
@ -124,57 +124,57 @@ const uint32_t test_nec_input2[] = {
}; };
const IrdaMessage test_nec_expected2[] = { const IrdaMessage test_nec_expected2[] = {
{IrdaProtocolNEC, 0xFF00, 0x02, false}, {IrdaProtocolNEC, 0, 0x02, false},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, false}, {IrdaProtocolNEC, 0, 0x02, false},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x02, true}, {IrdaProtocolNEC, 0, 0x02, true},
{IrdaProtocolNEC, 0xFF00, 0x06, false}, {IrdaProtocolNEC, 0, 0x06, false},
{IrdaProtocolNEC, 0xFF00, 0x06, true}, {IrdaProtocolNEC, 0, 0x06, true},
{IrdaProtocolNEC, 0xFF00, 0x04, false}, {IrdaProtocolNEC, 0, 0x04, false},
{IrdaProtocolNEC, 0xFF00, 0x04, true}, {IrdaProtocolNEC, 0, 0x04, true},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, true}, {IrdaProtocolNEC, 0, 0x08, true},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, true}, {IrdaProtocolNEC, 0, 0x08, true},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x09, false}, {IrdaProtocolNEC, 0, 0x09, false},
{IrdaProtocolNEC, 0xFF00, 0x09, false}, {IrdaProtocolNEC, 0, 0x09, false},
{IrdaProtocolNEC, 0xFF00, 0x09, false}, {IrdaProtocolNEC, 0, 0x09, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x0A, false}, {IrdaProtocolNEC, 0, 0x0A, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, true}, {IrdaProtocolNEC, 0, 0x08, true},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x08, true}, {IrdaProtocolNEC, 0, 0x08, true},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x0A, false}, {IrdaProtocolNEC, 0, 0x0A, false},
{IrdaProtocolNEC, 0xFF00, 0x08, false}, {IrdaProtocolNEC, 0, 0x08, false},
{IrdaProtocolNEC, 0xFF00, 0x0A, false}, {IrdaProtocolNEC, 0, 0x0A, false},
{IrdaProtocolNEC, 0xFF00, 0x0A, true}, {IrdaProtocolNEC, 0, 0x0A, true},
}; };

View File

@ -1,184 +1,222 @@
const uint32_t test_samsung32_input1[] = { const uint32_t test_samsung32_input1[] = {
3129767, 4513, 4483, 565, 530, 586, 1670, 563, 1664, 588, 1666, 566, 530, 586, 535, 560, 535, 591, 531, 565, 531, 585, 1669, 563, 1666, 587, 1640, 593, 531, 566, 530, 587, 536, 559, 562, 564, 531, 585, 537, 558, 1670, 562, 1665, 587, 534, 561, 534, 592, 530, 566, 529, 587, 1668, 564, 1664, 589, 533, 563, 533, 594, 1661, 560, 1667, 565, 1661, 591, 1664, 558, 3129767, 4513, 4483, 565, 530, 586, 1670, 563, 1664, 588, 1666, 566, 530, 586,
46325, 4517, 4480, 558, 1668, 595, 535, 560, 535, 591, 531, 565, 531, 585, 1669, 563, 1666, 587, 1640, 593,
531, 566, 530, 587, 536, 559, 562, 564, 531, 585, 537, 558, 1670, 562,
1665, 587, 534, 561, 534, 592, 530, 566, 529, 587, 1668, 564, 1664, 589,
533, 563, 533, 594, 1661, 560, 1667, 565, 1661, 591, 1664, 558, 46325, 4517,
4480, 558, 1668, 595,
679127, 4511, 4485, 562, 532, 584, 1671, 561, 1666, 587, 1668, 564, 532, 585, 537, 559, 537, 589, 533, 562, 533, 593, 1661, 561, 1667, 586, 1642, 590, 532, 563, 531, 585, 537, 559, 564, 563, 1666, 567, 528, 588, 535, 613, 483, 593, 530, 586, 536, 559, 536, 590, 1637, 584, 537, 558, 1669, 594, 1661, 561, 1667, 586, 1642, 591, 1664, 559, 1670, 583, 534, 567, 679127, 4511, 4485, 562, 532, 584, 1671, 561, 1666, 587, 1668, 564, 532, 585,
46429, 4515, 4480, 558, 1671, 593, 537, 559, 537, 589, 533, 562, 533, 593, 1661, 561, 1667, 586, 1642, 590,
532, 563, 531, 585, 537, 559, 564, 563, 1666, 567, 528, 588, 535, 613,
483, 593, 530, 586, 536, 559, 536, 590, 1637, 584, 537, 558, 1669, 594,
1661, 561, 1667, 586, 1642, 591, 1664, 559, 1670, 583, 534, 567, 46429, 4515,
4480, 558, 1671, 593,
618571, 4508, 4488, 560, 561, 566, 1663, 559, 1667, 583, 1670, 562, 534, 582, 540, 565, 531, 587, 536, 560, 536, 590, 1664, 558, 1670, 583, 1644, 588, 535, 561, 534, 592, 530, 566, 557, 610, 1616, 616, 479, 585, 537, 558, 537, 589, 534, 584, 539, 567, 529, 587, 534, 561, 534, 592, 1663, 559, 1668, 564, 1664, 588, 1666, 566, 1661, 581, 1646, 585, 1669, 563, 618571, 4508, 4488, 560, 561, 566, 1663, 559, 1667, 583, 1670, 562, 534, 582,
46106, 4511, 4485, 563, 1664, 589, 540, 565, 531, 587, 536, 560, 536, 590, 1664, 558, 1670, 583, 1644, 588,
535, 561, 534, 592, 530, 566, 557, 610, 1616, 616, 479, 585, 537, 558,
537, 589, 534, 584, 539, 567, 529, 587, 534, 561, 534, 592, 1663, 559,
1668, 564, 1664, 588, 1666, 566, 1661, 581, 1646, 585, 1669, 563, 46106, 4511,
4485, 563, 1664, 589,
514897, 4514, 4482, 556, 564, 614, 1616, 565, 1664, 589, 1666, 557, 538, 588, 534, 562, 534, 592, 529, 566, 529, 587, 1667, 565, 1663, 590, 1638, 584, 538, 568, 527, 590, 534, 562, 562, 566, 530, 587, 1642, 590, 532, 563, 530, 586, 537, 589, 533, 563, 533, 583, 539, 566, 1661, 561, 561, 566, 1663, 559, 1668, 584, 1671, 563, 1666, 556, 1671, 591, 1663, 559, 514897, 4514, 4482, 556, 564, 614, 1616, 565, 1664, 589, 1666, 557, 538, 588,
46210, 4508, 4488, 560, 1668, 585, 534, 562, 534, 592, 529, 566, 529, 587, 1667, 565, 1663, 590, 1638, 584,
538, 568, 527, 590, 534, 562, 562, 566, 530, 587, 1642, 590, 532, 563,
530, 586, 537, 589, 533, 563, 533, 583, 539, 566, 1661, 561, 561, 566,
1663, 559, 1668, 584, 1671, 563, 1666, 556, 1671, 591, 1663, 559, 46210, 4508,
4488, 560, 1668, 585,
683922, 4509, 4487, 561, 560, 565, 1662, 559, 1669, 585, 1670, 562, 534, 583, 540, 566, 529, 586, 535, 560, 535, 591, 1663, 559, 1669, 584, 1644, 588, 534, 561, 533, 593, 529, 556, 567, 561, 1668, 564, 1664, 590, 534, 563, 532, 584, 538, 557, 537, 589, 534, 562, 534, 593, 530, 566, 555, 561, 1667, 564, 1662, 589, 1665, 557, 1671, 581, 1647, 586, 1669, 564, 683922, 4509, 4487, 561, 560, 565, 1662, 559, 1669, 585, 1670, 562, 534, 583,
46686, 4514, 4481, 556, 1672, 592, 540, 566, 529, 586, 535, 560, 535, 591, 1663, 559, 1669, 584, 1644, 588,
534, 561, 533, 593, 529, 556, 567, 561, 1668, 564, 1664, 590, 534, 563,
532, 584, 538, 557, 537, 589, 534, 562, 534, 593, 530, 566, 555, 561,
1667, 564, 1662, 589, 1665, 557, 1671, 581, 1647, 586, 1669, 564, 46686, 4514,
4481, 556, 1672, 592,
1088255, 4514, 4481, 557, 564, 562, 1667, 565, 1663, 591, 1665, 558, 538, 590, 533, 564, 532, 583, 539, 567, 528, 588, 1666, 566, 1663, 580, 1648, 585, 537, 559, 537, 589, 533, 562, 560, 618, 478, 589, 535, 562, 1667, 565, 1662, 588, 531, 565, 531, 585, 537, 558, 536, 590, 1666, 566, 1661, 592, 530, 566, 530, 586, 1669, 564, 1664, 558, 1669, 594, 1662, 560, 1088255, 4514, 4481, 557, 564, 562, 1667, 565, 1663, 591, 1665, 558, 538, 590,
46291, 4510, 4485, 563, 1663, 589, 533, 564, 532, 583, 539, 567, 528, 588, 1666, 566, 1663, 580, 1648, 585,
97349, 4510, 4487, 561, 1666, 586, 537, 559, 537, 589, 533, 562, 560, 618, 478, 589, 535, 562, 1667, 565,
97560, 4513, 4482, 566, 1662, 591, 1662, 588, 531, 565, 531, 585, 537, 558, 536, 590, 1666, 566, 1661, 592,
97123, 4510, 4485, 563, 1664, 588, 530, 566, 530, 586, 1669, 564, 1664, 558, 1669, 594, 1662, 560, 46291, 4510,
97605, 4508, 4487, 561, 1666, 586, 4485, 563, 1663, 589, 97349, 4510, 4487, 561, 1666, 586, 97560, 4513, 4482, 566,
97371, 4518, 4478, 560, 1668, 595, 1662, 591, 97123, 4510, 4485, 563, 1664, 588, 97605, 4508, 4487, 561, 1666, 586,
97514, 4518, 4478, 560, 1667, 586, 97371, 4518, 4478, 560, 1668, 595, 97514, 4518, 4478, 560, 1667, 586, 97014, 4515,
97014, 4515, 4480, 568, 1660, 593, 4480, 568, 1660, 593, 96719, 4516, 4481, 567, 1660, 593, 97528, 4515, 4480, 568,
96719, 4516, 4481, 567, 1660, 593, 1659, 593, 97453, 4510, 4485, 563, 1665, 587, 97351, 4518, 4477, 561, 1668, 585,
97528, 4515, 4480, 568, 1659, 593, 97216, 4511, 4484, 564, 1664, 589, 97708, 4518, 4477, 561, 1667, 586, 96718, 4516,
97453, 4510, 4485, 563, 1665, 587, 4479, 559, 1669, 594, 97070, 4515, 4480, 568, 1660, 593, 97500, 4511, 4484, 564,
97351, 4518, 4477, 561, 1668, 585, 1662, 590, 97425, 4515, 4481, 567, 1660, 593, 97025, 4515, 4482, 566, 1660, 592,
97216, 4511, 4484, 564, 1664, 589, 96796, 4509, 4487, 561, 1666, 587, 97399, 4512, 4484, 565, 1662, 591, 97486, 4516,
97708, 4518, 4477, 561, 1667, 586, 4480, 567, 1658, 594, 97425, 4515, 4481, 567, 1659, 593, 97511, 4510, 4485, 563,
96718, 4516, 4479, 559, 1669, 594, 1664, 650, 96969, 4511, 4485, 562, 1665, 588, 97243, 4512, 4484, 564, 1663, 590,
97070, 4515, 4480, 568, 1660, 593, 97031, 4519, 4478, 560, 1666, 586, 97548, 4514, 4482, 566, 1661, 591, 97302, 4515,
97500, 4511, 4484, 564, 1662, 590, 4480, 568, 1659, 593, 97726, 4510, 4486, 562, 1665, 588, 97396, 4514, 4482, 566,
97425, 4515, 4481, 567, 1660, 593, 1661, 592, 97301, 4515, 4480, 568, 1661, 593, 97453, 4518, 4477, 560, 1667, 585,
97025, 4515, 4482, 566, 1660, 592, 97430, 4518, 4477, 561, 1665, 587, 97521, 4511, 4484, 564, 1664, 589, 97182, 4512,
96796, 4509, 4487, 561, 1666, 587, 4484, 564, 1663, 590, 97760, 4516, 4479, 559, 1668, 595, 97268, 4516, 4479, 559,
97399, 4512, 4484, 565, 1662, 591, 1668, 595, 97243, 4512, 4485, 563, 1663, 589, 97695, 4510, 4486, 562, 1664, 588,
97486, 4516, 4480, 567, 1658, 594, 374205, 4513, 4483, 565, 530, 586, 1669, 564, 1665, 589, 1667, 567, 529, 587,
97425, 4515, 4481, 567, 1659, 593, 535, 560, 535, 591, 531, 565, 530, 585, 1669, 563, 1664, 588, 1639, 593,
97511, 4510, 4485, 563, 1664, 650, 529, 566, 529, 587, 536, 560, 563, 565, 532, 585, 537, 560, 1669, 563,
96969, 4511, 4485, 562, 1665, 588, 1664, 587, 534, 561, 534, 592, 529, 566, 529, 586, 1668, 564, 1663, 589,
97243, 4512, 4484, 564, 1663, 590, 532, 563, 534, 593, 1661, 562, 1666, 566, 1662, 591, 1664, 558,
97031, 4519, 4478, 560, 1666, 586,
97548, 4514, 4482, 566, 1661, 591,
97302, 4515, 4480, 568, 1659, 593,
97726, 4510, 4486, 562, 1665, 588,
97396, 4514, 4482, 566, 1661, 592,
97301, 4515, 4480, 568, 1661, 593,
97453, 4518, 4477, 560, 1667, 585,
97430, 4518, 4477, 561, 1665, 587,
97521, 4511, 4484, 564, 1664, 589,
97182, 4512, 4484, 564, 1663, 590,
97760, 4516, 4479, 559, 1668, 595,
97268, 4516, 4479, 559, 1668, 595,
97243, 4512, 4485, 563, 1663, 589,
97695, 4510, 4486, 562, 1664, 588,
374205, 4513, 4483, 565, 530, 586, 1669, 564, 1665, 589, 1667, 567, 529, 587, 535, 560, 535, 591, 531, 565, 530, 585, 1669, 563, 1664, 588, 1639, 593, 529, 566, 529, 587, 536, 560, 563, 565, 532, 585, 537, 560, 1669, 563, 1664, 587, 534, 561, 534, 592, 529, 566, 529, 586, 1668, 564, 1663, 589, 532, 563, 534, 593, 1661, 562, 1666, 566, 1662, 591, 1664, 558,
149343, 4512, 4483, 565, 530, 586, 1669, 563, 1664, 588, 1667, 565, 530, 586, 536, 560, 536, 590, 532, 563, 531, 586, 1670, 563, 1666, 567, 1660, 592, 530, 565, 529, 586, 537, 558, 563, 563, 532, 584, 538, 568, 1661, 561, 1665, 587, 535, 560, 535, 592, 532, 565, 531, 587, 1669, 563, 1665, 587, 534, 561, 534, 592, 1663, 559, 1668, 564, 1662, 590, 1666, 566, 149343, 4512, 4483, 565, 530, 586, 1669, 563, 1664, 588, 1667, 565, 530, 586,
536, 560, 536, 590, 532, 563, 531, 586, 1670, 563, 1666, 567, 1660, 592,
530, 565, 529, 586, 537, 558, 563, 563, 532, 584, 538, 568, 1661, 561,
1665, 587, 535, 560, 535, 592, 532, 565, 531, 587, 1669, 563, 1665, 587,
534, 561, 534, 592, 1663, 559, 1668, 564, 1662, 590, 1666, 566,
116399, 4514, 4482, 566, 531, 587, 1669, 564, 1664, 589, 1666, 566, 529, 587, 535, 561, 535, 592, 531, 565, 529, 587, 1668, 564, 1664, 558, 1670, 595, 529, 566, 528, 589, 535, 560, 562, 565, 531, 585, 536, 559, 1668, 564, 1664, 589, 534, 561, 533, 593, 530, 565, 528, 588, 1668, 564, 1665, 590, 533, 564, 532, 594, 1661, 561, 1666, 566, 1661, 592, 1663, 558, 116399, 4514, 4482, 566, 531, 587, 1669, 564, 1664, 589, 1666, 566, 529, 587,
535, 561, 535, 592, 531, 565, 529, 587, 1668, 564, 1664, 558, 1670, 595,
529, 566, 528, 589, 535, 560, 562, 565, 531, 585, 536, 559, 1668, 564,
1664, 589, 534, 561, 533, 593, 530, 565, 528, 588, 1668, 564, 1665, 590,
533, 564, 532, 594, 1661, 561, 1666, 566, 1661, 592, 1663, 558,
121946, 4517, 4478, 559, 537, 590, 1664, 568, 1660, 593, 1661, 560, 536, 590, 531, 564, 531, 585, 537, 559, 536, 590, 1665, 568, 1661, 561, 1666, 587, 537, 559, 529, 591, 531, 564, 558, 558, 537, 588, 533, 562, 1665, 567, 1659, 593, 530, 565, 529, 587, 536, 561, 535, 592, 1664, 559, 1671, 593, 530, 566, 528, 587, 1667, 565, 1662, 558, 1668, 595, 1660, 561, 121946, 4517, 4478, 559, 537, 590, 1664, 568, 1660, 593, 1661, 560, 536, 590,
46509, 4516, 4479, 558, 1668, 594, 531, 564, 531, 585, 537, 559, 536, 590, 1665, 568, 1661, 561, 1666, 587,
537, 559, 529, 591, 531, 564, 558, 558, 537, 588, 533, 562, 1665, 567,
1659, 593, 530, 565, 529, 587, 536, 561, 535, 592, 1664, 559, 1671, 593,
530, 566, 528, 587, 1667, 565, 1662, 558, 1668, 595, 1660, 561, 46509, 4516,
4479, 558, 1668, 594,
88785, 4512, 4484, 564, 530, 585, 1669, 563, 1664, 588, 1666, 566, 530, 587, 536, 560, 535, 592, 532, 565, 531, 585, 1669, 563, 1665, 557, 1669, 594, 530, 566, 530, 586, 535, 560, 562, 564, 530, 585, 537, 558, 1669, 563, 1664, 589, 535, 561, 534, 593, 529, 566, 529, 586, 1668, 564, 1664, 589, 533, 562, 532, 594, 1661, 561, 1666, 565, 1662, 591, 1665, 558, 88785, 4512, 4484, 564, 530, 585, 1669, 563, 1664, 588, 1666, 566, 530, 587,
536, 560, 535, 592, 532, 565, 531, 585, 1669, 563, 1665, 557, 1669, 594,
530, 566, 530, 586, 535, 560, 562, 564, 530, 585, 537, 558, 1669, 563,
1664, 589, 535, 561, 534, 593, 529, 566, 529, 586, 1668, 564, 1664, 589,
533, 562, 532, 594, 1661, 561, 1666, 565, 1662, 591, 1665, 558,
289651, 4512, 4483, 564, 531, 586, 1669, 563, 1665, 588, 1667, 565, 529, 587, 536, 560, 536, 590, 531, 563, 531, 584, 1670, 562, 1666, 556, 1671, 592, 529, 566, 531, 586, 536, 561, 562, 564, 532, 585, 537, 558, 1669, 563, 1665, 588, 535, 561, 536, 590, 530, 565, 531, 585, 1669, 563, 1664, 587, 534, 561, 533, 593, 1662, 561, 1669, 564, 1663, 590, 1665, 567, 289651, 4512, 4483, 564, 531, 586, 1669, 563, 1665, 588, 1667, 565, 529, 587,
46302, 4509, 4487, 561, 1667, 585, 536, 560, 536, 590, 531, 563, 531, 584, 1670, 562, 1666, 556, 1671, 592,
529, 566, 531, 586, 536, 561, 562, 564, 532, 585, 537, 558, 1669, 563,
1665, 588, 535, 561, 536, 590, 530, 565, 531, 585, 1669, 563, 1664, 587,
534, 561, 533, 593, 1662, 561, 1669, 564, 1663, 590, 1665, 567, 46302, 4509,
4487, 561, 1667, 585,
97097, 4513, 4483, 565, 529, 587, 1668, 564, 1663, 589, 1666, 567, 529, 587, 536, 560, 535, 591, 530, 565, 529, 587, 1669, 563, 1664, 558, 1669, 594, 529, 566, 527, 587, 535, 561, 561, 563, 530, 586, 537, 560, 1669, 563, 1663, 589, 534, 561, 532, 594, 529, 566, 528, 587, 1668, 564, 1663, 589, 532, 563, 532, 594, 1660, 561, 1667, 566, 1661, 592, 1663, 558, 97097, 4513, 4483, 565, 529, 587, 1668, 564, 1663, 589, 1666, 567, 529, 587,
46311, 4510, 4485, 562, 1665, 589, 536, 560, 535, 591, 530, 565, 529, 587, 1669, 563, 1664, 558, 1669, 594,
529, 566, 527, 587, 535, 561, 561, 563, 530, 586, 537, 560, 1669, 563,
1663, 589, 534, 561, 532, 594, 529, 566, 528, 587, 1668, 564, 1663, 589,
532, 563, 532, 594, 1660, 561, 1667, 566, 1661, 592, 1663, 558, 46311, 4510,
4485, 562, 1665, 589,
99001, 4514, 4481, 566, 528, 587, 1667, 565, 1662, 589, 1664, 568, 528, 588, 535, 561, 535, 593, 529, 567, 528, 589, 1668, 564, 1663, 559, 1668, 595, 528, 567, 527, 589, 534, 562, 561, 565, 530, 586, 536, 560, 1668, 564, 1663, 590, 533, 563, 532, 595, 524, 567, 527, 588, 1667, 565, 1662, 590, 532, 563, 531, 595, 1659, 562, 1666, 566, 1661, 593, 1664, 559, 99001, 4514, 4481, 566, 528, 587, 1667, 565, 1662, 589, 1664, 568, 528, 588,
535, 561, 535, 593, 529, 567, 528, 589, 1668, 564, 1663, 559, 1668, 595,
528, 567, 527, 589, 534, 562, 561, 565, 530, 586, 536, 560, 1668, 564,
1663, 590, 533, 563, 532, 595, 524, 567, 527, 588, 1667, 565, 1662, 590,
532, 563, 531, 595, 1659, 562, 1666, 566, 1661, 593, 1664, 559,
300259, 4514, 4482, 556, 565, 561, 1668, 564, 1663, 589, 1664, 556, 539, 588, 535, 561, 535, 643, 478, 568, 530, 587, 1668, 564, 1664, 589, 1636, 594, 529, 567, 528, 588, 534, 561, 561, 565, 1662, 560, 536, 590, 532, 564, 531, 586, 537, 589, 532, 564, 533, 584, 538, 568, 528, 588, 1667, 565, 1662, 560, 1669, 584, 1670, 562, 1666, 587, 1641, 591, 1664, 559, 300259, 4514, 4482, 556, 565, 561, 1668, 564, 1663, 589, 1664, 556, 539, 588,
46271, 4561, 4435, 562, 1666, 586, 535, 561, 535, 643, 478, 568, 530, 587, 1668, 564, 1664, 589, 1636, 594,
529, 567, 528, 588, 534, 561, 561, 565, 1662, 560, 536, 590, 532, 564,
531, 586, 537, 589, 532, 564, 533, 584, 538, 568, 528, 588, 1667, 565,
1662, 560, 1669, 584, 1670, 562, 1666, 587, 1641, 591, 1664, 559, 46271, 4561,
4435, 562, 1666, 586,
81421, 4514, 4482, 556, 565, 561, 1667, 565, 1662, 589, 1664, 558, 538, 588, 534, 562, 534, 593, 530, 567, 530, 587, 1669, 564, 1663, 589, 1637, 594, 529, 567, 528, 588, 534, 561, 560, 566, 1663, 559, 535, 591, 531, 565, 530, 587, 538, 589, 533, 563, 533, 583, 539, 567, 529, 587, 1667, 565, 1662, 560, 1669, 584, 1669, 563, 1666, 587, 1640, 592, 1663, 560, 81421, 4514, 4482, 556, 565, 561, 1667, 565, 1662, 589, 1664, 558, 538, 588,
46296, 4516, 4480, 558, 1669, 594, 534, 562, 534, 593, 530, 567, 530, 587, 1669, 564, 1663, 589, 1637, 594,
529, 567, 528, 588, 534, 561, 560, 566, 1663, 559, 535, 591, 531, 565,
530, 587, 538, 589, 533, 563, 533, 583, 539, 567, 529, 587, 1667, 565,
1662, 560, 1669, 584, 1669, 563, 1666, 587, 1640, 592, 1663, 560, 46296, 4516,
4480, 558, 1669, 594,
80690, 4508, 4489, 560, 561, 565, 1663, 558, 1670, 593, 1660, 561, 534, 592, 530, 565, 530, 586, 537, 560, 536, 591, 1664, 558, 1670, 583, 1644, 587, 535, 560, 534, 592, 530, 566, 556, 559, 1669, 563, 532, 584, 538, 558, 537, 588, 534, 582, 540, 567, 530, 588, 535, 562, 535, 591, 1663, 559, 1669, 564, 1665, 588, 1666, 566, 1662, 560, 1668, 585, 1669, 563, 80690, 4508, 4489, 560, 561, 565, 1663, 558, 1670, 593, 1660, 561, 534, 592,
530, 565, 530, 586, 537, 560, 536, 591, 1664, 558, 1670, 583, 1644, 587,
535, 560, 534, 592, 530, 566, 556, 559, 1669, 563, 532, 584, 538, 558,
537, 588, 534, 582, 540, 567, 530, 588, 535, 562, 535, 591, 1663, 559,
1669, 564, 1665, 588, 1666, 566, 1662, 560, 1668, 585, 1669, 563,
136483, 4511, 4485, 563, 531, 585, 1671, 561, 1666, 587, 1668, 564, 531, 585, 536, 559, 537, 589, 532, 563, 532, 584, 1670, 562, 1666, 587, 1642, 591, 531, 566, 531, 585, 536, 559, 563, 563, 1665, 567, 528, 588, 535, 561, 534, 593, 529, 567, 556, 560, 535, 591, 530, 565, 531, 585, 1670, 563, 1665, 568, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1666, 566, 136483, 4511, 4485, 563, 531, 585, 1671, 561, 1666, 587, 1668, 564, 531, 585,
536, 559, 537, 589, 532, 563, 532, 584, 1670, 562, 1666, 587, 1642, 591,
531, 566, 531, 585, 536, 559, 563, 563, 1665, 567, 528, 588, 535, 561,
534, 593, 529, 567, 556, 560, 535, 591, 530, 565, 531, 585, 1670, 563,
1665, 568, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1666, 566,
129038, 4511, 4484, 564, 533, 583, 1670, 562, 1666, 587, 1668, 565, 532, 586, 537, 559, 536, 591, 532, 564, 532, 594, 1660, 562, 1666, 566, 1660, 593, 531, 565, 530, 586, 537, 558, 563, 563, 1664, 568, 528, 589, 535, 562, 533, 595, 530, 567, 556, 560, 535, 591, 531, 565, 531, 584, 1669, 563, 1664, 567, 1661, 592, 1662, 559, 1668, 564, 1663, 590, 1666, 566, 129038, 4511, 4484, 564, 533, 583, 1670, 562, 1666, 587, 1668, 565, 532, 586,
46187, 4511, 4486, 562, 1665, 589, 537, 559, 536, 591, 532, 564, 532, 594, 1660, 562, 1666, 566, 1660, 593,
531, 565, 530, 586, 537, 558, 563, 563, 1664, 568, 528, 589, 535, 562,
533, 595, 530, 567, 556, 560, 535, 591, 531, 565, 531, 584, 1669, 563,
1664, 567, 1661, 592, 1662, 559, 1668, 564, 1663, 590, 1666, 566, 46187, 4511,
4486, 562, 1665, 589,
110663, 4517, 4478, 558, 536, 590, 1665, 568, 1660, 593, 1661, 560, 536, 590, 531, 564, 531, 584, 537, 558, 536, 590, 1665, 567, 1661, 561, 1666, 587, 536, 560, 535, 591, 532, 564, 559, 557, 1670, 562, 532, 594, 529, 567, 528, 649, 473, 561, 561, 565, 531, 585, 536, 559, 536, 589, 1665, 567, 1660, 562, 1666, 587, 1668, 564, 1663, 558, 1669, 594, 1661, 561, 110663, 4517, 4478, 558, 536, 590, 1665, 568, 1660, 593, 1661, 560, 536, 590,
531, 564, 531, 584, 537, 558, 536, 590, 1665, 567, 1661, 561, 1666, 587,
536, 560, 535, 591, 532, 564, 559, 557, 1670, 562, 532, 594, 529, 567,
528, 649, 473, 561, 561, 565, 531, 585, 536, 559, 536, 589, 1665, 567,
1660, 562, 1666, 587, 1668, 564, 1663, 558, 1669, 594, 1661, 561,
143736, 4517, 4479, 559, 536, 591, 1664, 558, 1670, 593, 1661, 559, 536, 590, 531, 564, 531, 585, 536, 559, 537, 589, 1665, 567, 1661, 561, 1666, 587, 536, 560, 536, 590, 530, 564, 557, 558, 1669, 562, 533, 593, 528, 568, 530, 586, 534, 561, 560, 566, 530, 586, 536, 560, 536, 591, 1664, 558, 1671, 562, 1666, 587, 1667, 565, 1663, 559, 1668, 594, 1660, 562, 143736, 4517, 4479, 559, 536, 591, 1664, 558, 1670, 593, 1661, 559, 536, 590,
46234, 4514, 4482, 566, 1661, 591, 531, 564, 531, 585, 536, 559, 537, 589, 1665, 567, 1661, 561, 1666, 587,
536, 560, 536, 590, 530, 564, 557, 558, 1669, 562, 533, 593, 528, 568,
530, 586, 534, 561, 560, 566, 530, 586, 536, 560, 536, 591, 1664, 558,
1671, 562, 1666, 587, 1667, 565, 1663, 559, 1668, 594, 1660, 562, 46234, 4514,
4482, 566, 1661, 591,
120661, 4564, 4432, 565, 530, 586, 1669, 563, 1665, 587, 1666, 566, 531, 585, 536, 559, 536, 591, 532, 564, 532, 586, 1670, 563, 1666, 557, 1666, 592, 530, 565, 530, 586, 536, 560, 562, 563, 1664, 558, 538, 588, 533, 562, 533, 593, 528, 558, 565, 561, 534, 582, 541, 566, 530, 586, 1670, 563, 1664, 567, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1665, 567, 120661, 4564, 4432, 565, 530, 586, 1669, 563, 1665, 587, 1666, 566, 531, 585,
46472, 4513, 4484, 564, 1664, 588, 536, 559, 536, 591, 532, 564, 532, 586, 1670, 563, 1666, 557, 1666, 592,
530, 565, 530, 586, 536, 560, 562, 563, 1664, 558, 538, 588, 533, 562,
533, 593, 528, 558, 565, 561, 534, 582, 541, 566, 530, 586, 1670, 563,
1664, 567, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1665, 567, 46472, 4513,
4484, 564, 1664, 588,
125301, 4511, 4484, 564, 532, 584, 1670, 562, 1666, 587, 1668, 565, 531, 586, 537, 560, 537, 591, 532, 565, 533, 584, 1671, 562, 1666, 566, 1661, 591, 530, 565, 532, 584, 536, 559, 562, 564, 1665, 567, 529, 587, 534, 563, 535, 593, 529, 568, 556, 561, 535, 592, 531, 565, 531, 585, 1669, 563, 1665, 567, 1660, 593, 1663, 559, 1668, 564, 1664, 589, 1666, 567, 125301, 4511, 4484, 564, 532, 584, 1670, 562, 1666, 587, 1668, 565, 531, 586,
537, 560, 537, 591, 532, 565, 533, 584, 1671, 562, 1666, 566, 1661, 591,
530, 565, 532, 584, 536, 559, 562, 564, 1665, 567, 529, 587, 534, 563,
535, 593, 529, 568, 556, 561, 535, 592, 531, 565, 531, 585, 1669, 563,
1665, 567, 1660, 593, 1663, 559, 1668, 564, 1664, 589, 1666, 567,
200253, 4517, 4479, 558, 562, 615, 1613, 558, 1670, 592, 1661, 560, 536, 591, 531, 616, 480, 585, 537, 559, 537, 641, 1613, 568, 1661, 582, 1646, 586, 536, 559, 535, 591, 532, 564, 558, 558, 1670, 562, 533, 592, 530, 566, 529, 588, 536, 581, 542, 617, 479, 587, 537, 560, 536, 590, 1665, 557, 1670, 562, 1666, 587, 1668, 564, 1664, 558, 1669, 593, 1662, 561, 200253, 4517, 4479, 558, 562, 615, 1613, 558, 1670, 592, 1661, 560, 536, 591,
46230, 4570, 4426, 561, 1667, 586, 531, 616, 480, 585, 537, 559, 537, 641, 1613, 568, 1661, 582, 1646, 586,
536, 559, 535, 591, 532, 564, 558, 558, 1670, 562, 533, 592, 530, 566,
529, 588, 536, 581, 542, 617, 479, 587, 537, 560, 536, 590, 1665, 557,
1670, 562, 1666, 587, 1668, 564, 1664, 558, 1669, 593, 1662, 561, 46230, 4570,
4426, 561, 1667, 586,
115418, 4514, 4483, 565, 557, 561, 1669, 563, 1664, 589, 1666, 566, 529, 587, 534, 561, 534, 592, 530, 566, 530, 586, 1668, 564, 1664, 589, 1639, 594, 529, 567, 528, 587, 534, 561, 561, 565, 1663, 559, 535, 590, 532, 563, 532, 584, }; 115418, 4514, 4483, 565, 557, 561, 1669, 563, 1664, 589, 1666, 566, 529, 587,
534, 561, 534, 592, 530, 566, 530, 586, 1668, 564, 1664, 589, 1639, 594,
529, 567, 528, 587, 534, 561, 561, 565, 1663, 559, 535, 590, 532, 563,
532, 584,
};
const IrdaMessage test_samsung32_expected1[] = { const IrdaMessage test_samsung32_expected1[] = {
{IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x81, false}, {IrdaProtocolSamsung32, 0x0E, 0x81, true},
{IrdaProtocolSamsung32, 0x0E, 0x81, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x81, true}, {IrdaProtocolSamsung32, 0x0E, 0x02, false}, {IrdaProtocolSamsung32, 0x0E, 0x02, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x03, false}, {IrdaProtocolSamsung32, 0x0E, 0x03, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x02, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x02, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x03, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x03, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true}, {IrdaProtocolSamsung32, 0x0E, 0x01, false}, {IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x0C, true},
{IrdaProtocolSamsung32, 0x0E, 0x0C, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, true},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, false},
{IrdaProtocolSamsung32, 0x0E, 0x01, true},
}; };