From acf809a9a12411b240569e0d479eb9170c99fe08 Mon Sep 17 00:00:00 2001 From: Franc Urbanc Date: Fri, 21 Jun 2024 14:35:39 +0200 Subject: [PATCH] Examples: add HTTPS and SMTPS examples (#28) --- Examples/Network/HTTPS_Server/HTTPS_Server.c | 100 + .../HTTPS_Server/HTTPS_Server.cproject.yml | 62 + .../Network/HTTPS_Server/HTTPS_Server_CGI.c | 509 ++++ Examples/Network/HTTPS_Server/README.md | 23 + .../HTTPS_Server/RTE/CMSIS/RTX_Config.c | 67 + .../RTE/CMSIS/RTX_Config.c.base@5.2.0 | 67 + .../HTTPS_Server/RTE/CMSIS/RTX_Config.h | 663 +++++ .../RTE/CMSIS/RTX_Config.h.base@5.6.0 | 663 +++++ .../HTTPS_Server/RTE/Network/Net_Config.h | 45 + .../RTE/Network/Net_Config.h.base@8.0.0 | 45 + .../RTE/Network/Net_Config_ETH_0.h | 279 ++ .../RTE/Network/Net_Config_ETH_0.h.base@7.5.0 | 273 ++ .../RTE/Network/Net_Config_HTTP_Server.h | 81 + .../Net_Config_HTTP_Server.h.base@7.2.0 | 81 + .../HTTPS_Server/RTE/Network/Net_Config_TCP.h | 67 + .../RTE/Network/Net_Config_TCP.h.base@7.1.1 | 67 + .../HTTPS_Server/RTE/Network/Net_Config_UDP.h | 26 + .../RTE/Network/Net_Config_UDP.h.base@5.1.0 | 26 + .../HTTPS_Server/RTE/Network/Net_Debug.h | 166 ++ .../RTE/Network/Net_Debug.h.base@8.0.0 | 166 ++ .../HTTPS_Server/RTE/Network/Net_Security.bat | 82 + .../HTTPS_Server/RTE/Network/Net_Security.c | 155 ++ .../RTE/Network/Net_Security.c.base@7.2.0 | 167 ++ .../Network/HTTPS_Server/RTE/Network/ca.crt | 20 + .../Network/HTTPS_Server/RTE/Network/ca.key | 27 + .../HTTPS_Server/RTE/Network/server.crt | 20 + .../HTTPS_Server/RTE/Network/server.key | 27 + .../RTE/Security/mbedTLS_config.h | 86 + .../RTE/Security/mbedTLS_config.h.base@3.6.0 | 190 ++ .../RTE/Security/mbedTLS_crypto_config.h | 125 + .../mbedTLS_crypto_config.h.base@3.6.0 | 125 + Examples/Network/HTTPS_Server/Web/Web.c | 2233 +++++++++++++++++ Examples/Network/HTTPS_Server/Web/ad.cgi | 53 + Examples/Network/HTTPS_Server/Web/ad.cgx | 7 + Examples/Network/HTTPS_Server/Web/arm.png | Bin 0 -> 2848 bytes Examples/Network/HTTPS_Server/Web/buttons.cgi | 46 + Examples/Network/HTTPS_Server/Web/buttons.cgx | 27 + Examples/Network/HTTPS_Server/Web/home.png | Bin 0 -> 1389 bytes Examples/Network/HTTPS_Server/Web/index.htm | 59 + Examples/Network/HTTPS_Server/Web/keil.gif | Bin 0 -> 1138 bytes .../Network/HTTPS_Server/Web/language.cgi | 20 + Examples/Network/HTTPS_Server/Web/lcd.cgi | 26 + Examples/Network/HTTPS_Server/Web/leds.cgi | 45 + Examples/Network/HTTPS_Server/Web/llblue.jpg | Bin 0 -> 3008 bytes Examples/Network/HTTPS_Server/Web/network.cgi | 56 + Examples/Network/HTTPS_Server/Web/pabb.gif | Bin 0 -> 121 bytes .../Network/HTTPS_Server/Web/pg_footer.inc | 14 + .../Network/HTTPS_Server/Web/pg_header.inc | 22 + Examples/Network/HTTPS_Server/Web/system.cgi | 33 + Examples/Network/HTTPS_Server/Web/tcp.cgi | 27 + Examples/Network/HTTPS_Server/Web/xml_http.js | 137 + Examples/Network/Network.csolution.yml | 2 + Examples/Network/SMTPS_Client/README.md | 24 + .../SMTPS_Client/RTE/CMSIS/RTX_Config.c | 67 + .../RTE/CMSIS/RTX_Config.c.base@5.2.0 | 67 + .../SMTPS_Client/RTE/CMSIS/RTX_Config.h | 663 +++++ .../RTE/CMSIS/RTX_Config.h.base@5.6.0 | 663 +++++ .../SMTPS_Client/RTE/Network/Net_Config.h | 45 + .../RTE/Network/Net_Config.h.base@8.0.0 | 45 + .../RTE/Network/Net_Config_DNS_Client.h | 20 + .../Net_Config_DNS_Client.h.base@5.0.0 | 20 + .../RTE/Network/Net_Config_ETH_0.h | 279 ++ .../RTE/Network/Net_Config_ETH_0.h.base@7.5.0 | 273 ++ .../RTE/Network/Net_Config_SMTP_Client.h | 26 + .../Net_Config_SMTP_Client.h.base@5.1.0 | 26 + .../SMTPS_Client/RTE/Network/Net_Config_TCP.h | 67 + .../RTE/Network/Net_Config_TCP.h.base@7.1.1 | 67 + .../SMTPS_Client/RTE/Network/Net_Config_UDP.h | 26 + .../RTE/Network/Net_Config_UDP.h.base@5.1.0 | 26 + .../SMTPS_Client/RTE/Network/Net_Debug.h | 166 ++ .../RTE/Network/Net_Debug.h.base@8.0.0 | 166 ++ .../SMTPS_Client/RTE/Network/Net_Security.c | 167 ++ .../RTE/Network/Net_Security.c.base@7.2.0 | 167 ++ .../RTE/Security/mbedTLS_config.h | 80 + .../RTE/Security/mbedTLS_config.h.base@3.6.0 | 190 ++ .../RTE/Security/mbedTLS_crypto_config.h | 90 + .../mbedTLS_crypto_config.h.base@3.6.0 | 125 + Examples/Network/SMTPS_Client/SMTPS_Client.c | 81 + .../SMTPS_Client/SMTPS_Client.cproject.yml | 43 + 79 files changed, 10986 insertions(+) create mode 100644 Examples/Network/HTTPS_Server/HTTPS_Server.c create mode 100644 Examples/Network/HTTPS_Server/HTTPS_Server.cproject.yml create mode 100644 Examples/Network/HTTPS_Server/HTTPS_Server_CGI.c create mode 100644 Examples/Network/HTTPS_Server/README.md create mode 100644 Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c create mode 100644 Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c.base@5.2.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h create mode 100644 Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h.base@5.6.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h.base@8.0.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h.base@7.2.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h.base@7.1.1 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h.base@5.1.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h.base@8.0.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Security.bat create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c.base@7.2.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/ca.crt create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/ca.key create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/server.crt create mode 100644 Examples/Network/HTTPS_Server/RTE/Network/server.key create mode 100644 Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h.base@3.6.0 create mode 100644 Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h create mode 100644 Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 create mode 100644 Examples/Network/HTTPS_Server/Web/Web.c create mode 100644 Examples/Network/HTTPS_Server/Web/ad.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/ad.cgx create mode 100644 Examples/Network/HTTPS_Server/Web/arm.png create mode 100644 Examples/Network/HTTPS_Server/Web/buttons.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/buttons.cgx create mode 100644 Examples/Network/HTTPS_Server/Web/home.png create mode 100644 Examples/Network/HTTPS_Server/Web/index.htm create mode 100644 Examples/Network/HTTPS_Server/Web/keil.gif create mode 100644 Examples/Network/HTTPS_Server/Web/language.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/lcd.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/leds.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/llblue.jpg create mode 100644 Examples/Network/HTTPS_Server/Web/network.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/pabb.gif create mode 100644 Examples/Network/HTTPS_Server/Web/pg_footer.inc create mode 100644 Examples/Network/HTTPS_Server/Web/pg_header.inc create mode 100644 Examples/Network/HTTPS_Server/Web/system.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/tcp.cgi create mode 100644 Examples/Network/HTTPS_Server/Web/xml_http.js create mode 100644 Examples/Network/SMTPS_Client/README.md create mode 100644 Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c create mode 100644 Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c.base@5.2.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h create mode 100644 Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h.base@5.6.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h.base@8.0.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h.base@5.0.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h.base@5.1.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h.base@7.1.1 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h.base@5.1.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h.base@8.0.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c create mode 100644 Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c.base@7.2.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h.base@3.6.0 create mode 100644 Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h create mode 100644 Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 create mode 100644 Examples/Network/SMTPS_Client/SMTPS_Client.c create mode 100644 Examples/Network/SMTPS_Client/SMTPS_Client.cproject.yml diff --git a/Examples/Network/HTTPS_Server/HTTPS_Server.c b/Examples/Network/HTTPS_Server/HTTPS_Server.c new file mode 100644 index 00000000..f50261b4 --- /dev/null +++ b/Examples/Network/HTTPS_Server/HTTPS_Server.c @@ -0,0 +1,100 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: HTTP_Server.c + * Purpose: HTTP Server example + *----------------------------------------------------------------------------*/ + +#include + +#include "main.h" + +#include "cmsis_os2.h" // ::CMSIS:RTOS2 +#include "cmsis_vio.h" // ::CMSIS Driver:VIO + +#include "rl_net.h" // Keil::Network&MDK:CORE + +bool LEDrun; + +static uint32_t analog_val; + +/* Thread declarations */ +static void BlinkLed (void *argument); + +/* Read analog inputs */ +int32_t analog_in (uint32_t ch) { + int32_t val = 0; + + if (ch == 0) { + val = analog_val & 0x3FF; + } + return (val); +} + +/* IP address change notification */ +void netDHCP_Notify (uint32_t if_id, uint8_t option, const uint8_t *val, uint32_t len) { + char ip_ascii[16]; + (void)len; + + if ((if_id == (NET_IF_CLASS_ETH | 0)) && (option == NET_DHCP_OPTION_IP_ADDRESS)) { + netIP_ntoa (NET_ADDR_IP4, val, ip_ascii, sizeof(ip_ascii)); + printf("IP4: %s\n",ip_ascii); + } +} + +/*----------------------------------------------------------------------------- + Thread 'BlinkLed': Blink the LEDs on an eval board + *----------------------------------------------------------------------------*/ +static __NO_RETURN void BlinkLed (void *argument) { + (void)argument; + + LEDrun = true; + while(1) { + if (LEDrun == true) { + // Blink LED 0 + vioSetSignal(vioLED0, vioLEDon); + osDelay(100U); + vioSetSignal(vioLED0, vioLEDoff); + osDelay(400U); + } + osDelay(500U); + analog_val += 10; + } +} + +/*----------------------------------------------------------------------------- + Application Main Thread 'app_main_thread': Run Network + *----------------------------------------------------------------------------*/ +__NO_RETURN void app_main_thread (void *argument) { + uint8_t ip_addr[NET_ADDR_IP6_LEN]; + char ip_ascii[40]; + (void)argument; + + printf("Network HTTP Server example\n"); + + netInitialize (); + + osThreadNew(BlinkLed, NULL, NULL); + + printf("IP4: Waiting for DHCP\n"); + if (netIF_GetOption(NET_IF_CLASS_ETH | 0, + netIF_OptionIP6_LinkLocalAddress, + ip_addr, sizeof(ip_addr)) == netOK) { + /* IPv6 enabled on ETH0, print Link-local address */ + netIP_ntoa(NET_ADDR_IP6, ip_addr, ip_ascii, sizeof(ip_ascii)); + printf("IP6: %s\n", ip_ascii); + } + + osThreadExit(); +} + +/*----------------------------------------------------------------------------- + * Application main function + *----------------------------------------------------------------------------*/ +int app_main (void) { + osKernelInitialize(); + osThreadNew(app_main_thread, NULL, NULL); + osKernelStart(); + return 0; +} diff --git a/Examples/Network/HTTPS_Server/HTTPS_Server.cproject.yml b/Examples/Network/HTTPS_Server/HTTPS_Server.cproject.yml new file mode 100644 index 00000000..183fd03b --- /dev/null +++ b/Examples/Network/HTTPS_Server/HTTPS_Server.cproject.yml @@ -0,0 +1,62 @@ +project: + description: HTTPS Web Server example + + packs: + - pack: Keil::MDK-Middleware@>=8.0.0-0 + - pack: ARM::CMSIS@>=6.1.0 + - pack: ARM::CMSIS-RTX@>=5.9.0 + - pack: ARM::mbedTLS@>=3.6.0 + + connections: + - connect: HTTPS Server + provides: + - CMSIS-RTOS2 + consumes: + - CMSIS_ETH + - CMSIS_VIO + - STDOUT + + groups: + - group: Documentation + files: + - file: README.md + - group: Network + files: + - file: HTTPS_Server.c + - file: HTTPS_Server_CGI.c + - file: Web/Web.c + # - group: Web files + # files: + # - file: Web/index.htm + # - file: Web/pg_header.inc + # - file: Web/pg_footer.inc + # - file: Web/ad.cgi + # - file: Web/ad.cgx + # - file: Web/buttons.cgi + # - file: Web/buttons.cgx + # - file: Web/language.cgi + # - file: Web/lcd.cgi + # - file: Web/leds.cgi + # - file: Web/network.cgi + # - file: Web/system.cgi + # - file: Web/tcp.cgi + # - file: Web/xml_http.js + # - file: Web/home.png + # - file: Web/keil.gif + # - file: Web/arm.png + # - file: Web/llblue.jpg + # - file: Web/pabb.gif + + components: + - component: ARM::CMSIS:OS Tick:SysTick + - component: ARM::CMSIS:RTOS2:Keil RTX5&Source + - component: Keil::Network&MDK:CORE + - component: Keil::Network&MDK:Interface:ETH + - component: Keil::Network&MDK:Socket:TCP + - component: Keil::Network&MDK:Socket:UDP + - component: Keil::Network&MDK:Service:Web Server Compact&HTTPS + - component: ARM::Security:mbed TLS + + layers: + - layer: $Board-Layer$ + type: Board diff --git a/Examples/Network/HTTPS_Server/HTTPS_Server_CGI.c b/Examples/Network/HTTPS_Server/HTTPS_Server_CGI.c new file mode 100644 index 00000000..1d099f2c --- /dev/null +++ b/Examples/Network/HTTPS_Server/HTTPS_Server_CGI.c @@ -0,0 +1,509 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: HTTP_Server_CGI.c + * Purpose: HTTP Server CGI Module + * Rev.: V7.0.0 + *----------------------------------------------------------------------------*/ + +#include +#include + +#include "cmsis_os2.h" // ::CMSIS:RTOS2 +#include "cmsis_vio.h" // ::CMSIS Driver:VIO + +#include "rl_net.h" // Keil::Network&MDK:CORE + +#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6210000) + #pragma clang diagnostic ignored "-Wformat-nonliteral" + #pragma clang diagnostic ignored "-Wunsafe-buffer-usage" +#endif + +extern bool LEDrun; +extern int32_t analog_in (uint32_t ch); +extern const char *net_tcp_ntoa (netTCP_State state); + +// Local variables. +static uint8_t led_port; +static char lcd_text[2][20+1] = { "LCD line 1", "LCD line 2" }; + +// Script interpreter functions +static int32_t cgi_network (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgi_leds (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgi_tcp (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgi_system (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgi_language(const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgi_lcd (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgi_ad (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgx_ad (const char *env, char *buf, uint32_t buf_len, uint32_t *state); +static int32_t cgx_button (const char *env, char *buf, uint32_t buf_len, uint32_t *state); + +// Process query string received by GET request. +void netCGI_ProcessQuery (const char *qstr) { + uint8_t ip_addr[NET_ADDR_IP6_LEN]; + char var[48]; + + do { + // Loop through all the parameters + qstr = netCGI_GetEnvVar (qstr, var, sizeof (var)); + + if (var[0] == 0) continue; + + if (strncmp (var, "ip=", 3) == 0) { + // IPv4 address + if (netIP_aton (&var[3], NET_ADDR_IP4, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP4_Address, + ip_addr, NET_ADDR_IP4_LEN); + } + } + else if (strncmp (var, "ip6=", 4) == 0) { + // IPv6 address + if (netIP_aton (&var[4], NET_ADDR_IP6, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP6_StaticAddress, + ip_addr, NET_ADDR_IP6_LEN); + } + } + else if (strncmp (var, "msk=", 4) == 0) { + // Network mask + if (netIP_aton (&var[4], NET_ADDR_IP4, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP4_SubnetMask, + ip_addr, NET_ADDR_IP4_LEN); + } + } + else if (strncmp (var, "gw=", 3) == 0) { + // Default Gateway + if (netIP_aton (&var[3], NET_ADDR_IP4, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP4_DefaultGateway, + ip_addr, NET_ADDR_IP4_LEN); + } + } + else if (strncmp (var, "gw6=", 4) == 0) { + // Default Gateway v6 + if (netIP_aton (&var[4], NET_ADDR_IP6, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP6_DefaultGateway, + ip_addr, NET_ADDR_IP6_LEN); + } + } + else if (strncmp (var, "pdns=", 5) == 0) { + // Primary DNS server + if (netIP_aton (&var[5], NET_ADDR_IP4, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP4_PrimaryDNS, + ip_addr, NET_ADDR_IP4_LEN); + } + } + else if (strncmp (var, "pdns6=", 6) == 0) { + // Primary DNS server v6 + if (netIP_aton (&var[6], NET_ADDR_IP6, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP6_PrimaryDNS, + ip_addr, NET_ADDR_IP6_LEN); + } + } + else if (strncmp (var, "sdns=", 5) == 0) { + // Secondary DNS server + if (netIP_aton (&var[5], NET_ADDR_IP4, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP4_SecondaryDNS, + ip_addr, NET_ADDR_IP4_LEN); + } + } + else if (strncmp (var, "sdns6=", 6) == 0) { + // Secondary DNS server v6 + if (netIP_aton (&var[6], NET_ADDR_IP6, ip_addr)) { + netIF_SetOption (NET_IF_CLASS_ETH, netIF_OptionIP6_SecondaryDNS, + ip_addr, NET_ADDR_IP6_LEN); + } + } + } while (qstr); +} + +// Process data received by POST request. +// Type code: - 0 = www-url-encoded form data. +// - 1 = filename for file upload (null-terminated string). +// - 2 = file upload raw data. +// - 3 = end of file upload (file close requested). +// - 4 = any XML encoded POST data (single or last stream). +// - 5 = the same as 4, but with more XML data to follow. +void netCGI_ProcessData (uint8_t code, const char *data, uint32_t len) { + char var[40],passw[12]; + + if (code != 0) { + // Ignore all other codes + return; + } + + led_port = 0; + LEDrun = true; + if (len == 0) { + // No data or all items (radio, checkbox) are off + vioSetSignal(0xFFU, led_port); + return; + } + passw[0] = 1; + do { + // Loop through all the parameters + data = netCGI_GetEnvVar (data, var, sizeof (var)); + + if (var[0] == 0) continue; + + if (strcmp (var, "led0=on") == 0) { + led_port |= 0x01; + } + else if (strcmp (var, "led1=on") == 0) { + led_port |= 0x02; + } + else if (strcmp (var, "led2=on") == 0) { + led_port |= 0x04; + } + else if (strcmp (var, "led3=on") == 0) { + led_port |= 0x08; + } + else if (strcmp (var, "led4=on") == 0) { + led_port |= 0x10; + } + else if (strcmp (var, "led5=on") == 0) { + led_port |= 0x20; + } + else if (strcmp (var, "led6=on") == 0) { + led_port |= 0x40; + } + else if (strcmp (var, "led7=on") == 0) { + led_port |= 0x80; + } + else if (strcmp (var, "ctrl=Browser") == 0) { + LEDrun = false; + } + else if ((strncmp (var, "pw0=", 4) == 0) || + (strncmp (var, "pw2=", 4) == 0)) { + // Change password, retyped password + if (netHTTPs_LoginActive()) { + if (passw[0] == 1) { + strcpy (passw, var+4); + } + else if (strcmp (passw, var+4) == 0) { + // Both strings are equal, change the password + netHTTPs_SetPassword (passw); + } + } + } + else if (strncmp (var, "lcd1=", 5) == 0) { + // LCD Module line 1 text + strcpy (lcd_text[0], var+5); + printf("LCD1: %s\n", lcd_text[0]); + } + else if (strncmp (var, "lcd2=", 5) == 0) { + // LCD Module line 2 text + strcpy (lcd_text[1], var+5); + printf("LCD2: %s\n", lcd_text[1]); + } + } while (data); + vioSetSignal(0xFFU, led_port); +} + +// Generate dynamic web data from a script line. +uint32_t netCGI_Script (const char *env, char *buf, uint32_t buf_len, uint32_t *pcgi) { + int32_t (*fn)(const char *env, char *buf, uint32_t buf_len, uint32_t *state); + + switch (env[0]) { + case 'a': fn = cgi_network; break; + case 'b': fn = cgi_leds; break; + case 'c': fn = cgi_tcp; break; + case 'd': fn = cgi_system; break; + case 'e': fn = cgi_language; break; + case 'f': fn = cgi_lcd; break; + case 'g': fn = cgi_ad; break; + case 'x': fn = cgx_ad; break; + case 'y': fn = cgx_button; break; + default: return (0); + } + return ((uint32_t)fn (&env[1], buf, buf_len, pcgi)); +} + +// CGI-script implementation: "network.cgi" +static int32_t cgi_network (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + uint8_t ip_addr[NET_ADDR_IP6_LEN]; + netIF_Option option; + int16_t addr_type; + char ip_ascii[40]; + int32_t len = 0; + + (void)buf_len; + (void)state; + + switch (env[0]) { + case 'l': + // Link-local address + option = netIF_OptionIP6_LinkLocalAddress; + addr_type = NET_ADDR_IP6; + break; + + case 'i': + // IPv4 address + option = netIF_OptionIP4_Address; + addr_type = NET_ADDR_IP4; + break; + + case 'j': + // IPv6 address + option = netIF_OptionIP6_StaticAddress; + addr_type = NET_ADDR_IP6; + break; + + case 'm': + // Network mask + option = netIF_OptionIP4_SubnetMask; + addr_type = NET_ADDR_IP4; + break; + + case 'g': + // Default gateway + option = netIF_OptionIP4_DefaultGateway; + addr_type = NET_ADDR_IP4; + break; + + case 'h': + // Default gateway v6 + option = netIF_OptionIP6_DefaultGateway; + addr_type = NET_ADDR_IP6; + break; + + case 'p': + // Primary DNS server + option = netIF_OptionIP4_PrimaryDNS; + addr_type = NET_ADDR_IP4; + break; + + case 'q': + // Primary DNS server v6 + option = netIF_OptionIP6_PrimaryDNS; + addr_type = NET_ADDR_IP6; + break; + + case 's': + // Secondary DNS server + option = netIF_OptionIP4_SecondaryDNS; + addr_type = NET_ADDR_IP4; + break; + + case 't': + // Secondary DNS server v6 + option = netIF_OptionIP6_SecondaryDNS; + addr_type = NET_ADDR_IP6; + break; + + default: + return (len); + } + + ip_ascii[0] = 0; + if (netIF_GetOption (NET_IF_CLASS_ETH, option, ip_addr, sizeof(ip_addr)) == netOK) { + netIP_ntoa (addr_type, ip_addr, ip_ascii, sizeof(ip_ascii)); + } + len = sprintf (buf, &env[2], ip_ascii); + return (len); +} + +// CGI-script implementation: "leds.cgi" +static int32_t cgi_leds (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + int32_t mask, len = 0; + + (void)buf_len; + (void)state; + + switch (env[0]) { + case 'c': + // Select Control + len = sprintf (buf, &env[2], LEDrun ? "" : "selected", + LEDrun ? "selected" : "" ); + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + // LED CheckBoxes + mask = 1 << (env[0] - '0'); + len = sprintf (buf, &env[2], (led_port & mask) ? "checked" : ""); + break; + } + return (len); +} + +// CGI-script implementation: "tcp.cgi" +static int32_t cgi_tcp (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + netTCP_State tcp_state; + int32_t socket = (int32_t)(*state + 1); + int32_t len = 0; + + (void)env; + (void)buf_len; + + tcp_state = netTCP_GetState (socket); + if (tcp_state != netTCP_StateINVALID) { + len = sprintf (buf, ""); + + // Column: Socket, State + len += sprintf (buf+len, "%d%s",socket,net_tcp_ntoa(tcp_state)); + + // Column: Port + if (tcp_state >= netTCP_StateLISTEN) { + len += sprintf (buf+len, "%d", netTCP_GetLocalPort(socket)); + } + else { + len += sprintf (buf+len, "-"); + } + + // Column: Timer + if (tcp_state > netTCP_StateLISTEN) { + len += sprintf (buf+len, "%d", netTCP_GetTimer(socket)); + } + else { + len += sprintf (buf+len, "-"); + } + + // Column: Address, Port + if (tcp_state > netTCP_StateLISTEN) { + NET_ADDR peer; + char ip_ascii[40]; + netTCP_GetPeer (socket, &peer, sizeof(peer)); + netIP_ntoa (peer.addr_type, peer.addr, ip_ascii, sizeof (ip_ascii)); + len += sprintf (buf+len, "%s%d", ip_ascii, peer.port); + } + else { + len += sprintf (buf+len, "--"); + } + len += sprintf (buf+len, ""); + + *state = *state + 1; + len |= (1u << 31); + } + return (len); +} + +// CGI-script implementation: "system.cgi" +static int32_t cgi_system (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + int32_t len = 0; + + (void)buf_len; + (void)state; + + switch (env[0]) { + case '1': + len = sprintf (buf, &env[2], netHTTPs_LoginActive() ? "Enabled" : "Disabled"); + break; + case '2': + len = sprintf (buf, &env[2], netHTTPs_GetPassword()); + break; + } + return (len); +} + +// CGI-script implementation: "language.cgi" +static int32_t cgi_language (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + const char *lang; + int32_t len = 0; + + (void)buf_len; + (void)state; + + lang = netHTTPs_GetLanguage(); + if (strncmp (lang, "en", 2) == 0) { + lang = "English"; + } + else if (strncmp (lang, "de", 2) == 0) { + lang = "German"; + } + else if (strncmp (lang, "fr", 2) == 0) { + lang = "French"; + } + else if (strncmp (lang, "sl", 2) == 0) { + lang = "Slovene"; + } + else { + lang = "Unknown"; + } + len = sprintf (buf, &env[0], lang, netHTTPs_GetLanguage()); + return (len); +} + +// CGI-script implementation: "lcd.cgi" +static int32_t cgi_lcd (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + int32_t len = 0; + + (void)buf_len; + (void)state; + + switch (env[0]) { + case '1': + len = sprintf (buf, &env[2], lcd_text[0]); + break; + case '2': + len = sprintf (buf, &env[2], lcd_text[1]); + break; + } + return (len); +} + +// CGI-script implementation: "ad.cgi" +static int32_t cgi_ad (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + static int32_t val; + int32_t len = 0; + + (void)buf_len; + (void)state; + + switch (env[0]) { + case '1': + val = analog_in (0); + len = sprintf (buf, &env[2], val); + break; + case '2': { + float v = (float)val * 3.3f / 1024; + len = sprintf (buf, &env[2], (double)v); + } break; + case '3': + val = (val * 100) / 1024; + len = sprintf (buf, &env[2], val); + break; + } + return (len); +} + +// AJAX-script implementation: "ad.cgx" +static int32_t cgx_ad (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + int32_t val, len = 0; + + (void)buf_len; + (void)state; + + val = analog_in (0); + len = sprintf (buf, &env[1], val); + return (len); +} + +// AJAX-script implementation: "button.cgx" +static int32_t cgx_button (const char *env, char *buf, uint32_t buf_len, uint32_t *state) { + uint32_t mask; + int32_t len = 0; + + (void)buf_len; + (void)state; + + switch (env[0]) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + // Button states: ON=true, OFF=false + mask = 1 << (env[0] - '0'); + len = sprintf (buf, &env[2], (vioGetSignal(0xFFU) & mask) ? "true" : "false"); + break; + } + return (len); +} diff --git a/Examples/Network/HTTPS_Server/README.md b/Examples/Network/HTTPS_Server/README.md new file mode 100644 index 00000000..b2025b7d --- /dev/null +++ b/Examples/Network/HTTPS_Server/README.md @@ -0,0 +1,23 @@ +This program is a **Secure Compact Web Server** example. + +Detailed description is available on: + + +Use this example to connect an evaluation board to a LAN with a router. +You can also connect an evaluation board directly to a PC using a direct or +crossover network cable. + +To test this example, open your web browser and enter the address: +> https://my_host +> +> Default user: admin +> Default password: \ + +Note for Windows users: +You must add the test CA certificate **ca.crt** to the Trusted Root Certificate store on your computer +to avoid the *Your connection is not private* error in the Chrome or Microsoft Edge browser. + +To install a **ca.crt** certificate on your computer, double-click on it and select **Install Certificate...**, +then select **Local Machine** for the store location. You need administrator rights for this action. +Select **Trusted Root Certification Authorities** as the location for the certificate. + diff --git a/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c new file mode 100644 index 00000000..d21fa0a9 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.2.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration + * + * ----------------------------------------------------------------------------- + */ + +#include "cmsis_compiler.h" +#include "rtx_os.h" + +// OS Idle Thread +__WEAK __NO_RETURN void osRtxIdleThread (void *argument) { + (void)argument; + + for (;;) {} +} + +// OS Error Callback function +__WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) { + (void)object_id; + + switch (code) { + case osRtxErrorStackOverflow: + // Stack overflow detected for thread (thread_id=object_id) + break; + case osRtxErrorISRQueueOverflow: + // ISR Queue overflow detected when inserting object (object_id) + break; + case osRtxErrorTimerQueueOverflow: + // User Timer Callback Queue overflow detected for timer (timer_id=object_id) + break; + case osRtxErrorClibSpace: + // Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM + break; + case osRtxErrorClibMutex: + // Standard C/C++ library mutex initialization failed + break; + case osRtxErrorSVC: + // Invalid SVC function called (function=object_id) + break; + default: + // Reserved + break; + } + for (;;) {} +//return 0U; +} diff --git a/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c.base@5.2.0 b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c.base@5.2.0 new file mode 100644 index 00000000..d21fa0a9 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.c.base@5.2.0 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.2.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration + * + * ----------------------------------------------------------------------------- + */ + +#include "cmsis_compiler.h" +#include "rtx_os.h" + +// OS Idle Thread +__WEAK __NO_RETURN void osRtxIdleThread (void *argument) { + (void)argument; + + for (;;) {} +} + +// OS Error Callback function +__WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) { + (void)object_id; + + switch (code) { + case osRtxErrorStackOverflow: + // Stack overflow detected for thread (thread_id=object_id) + break; + case osRtxErrorISRQueueOverflow: + // ISR Queue overflow detected when inserting object (object_id) + break; + case osRtxErrorTimerQueueOverflow: + // User Timer Callback Queue overflow detected for timer (timer_id=object_id) + break; + case osRtxErrorClibSpace: + // Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM + break; + case osRtxErrorClibMutex: + // Standard C/C++ library mutex initialization failed + break; + case osRtxErrorSVC: + // Invalid SVC function called (function=object_id) + break; + default: + // Reserved + break; + } + for (;;) {} +//return 0U; +} diff --git a/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h new file mode 100644 index 00000000..46cf4bba --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h @@ -0,0 +1,663 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.6.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration definitions + * + * ----------------------------------------------------------------------------- + */ + +#ifndef RTX_CONFIG_H_ +#define RTX_CONFIG_H_ + +#ifdef _RTE_ +#include "RTE_Components.h" +#ifdef RTE_RTX_CONFIG_H +#include RTE_RTX_CONFIG_H +#endif +#endif + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// System Configuration +// ======================= + +// Global Dynamic Memory size [bytes] <0-1073741824:8> +// Defines the combined global dynamic memory size. +// Default: 32768 +#ifndef OS_DYNAMIC_MEM_SIZE +#define OS_DYNAMIC_MEM_SIZE 32768 +#endif + +// Kernel Tick Frequency [Hz] <1-1000000> +// Defines base time unit for delays and timeouts. +// Default: 1000 (1ms tick) +#ifndef OS_TICK_FREQ +#define OS_TICK_FREQ 1000 +#endif + +// Round-Robin Thread switching +// Enables Round-Robin Thread switching. +#ifndef OS_ROBIN_ENABLE +#define OS_ROBIN_ENABLE 1 +#endif + +// Round-Robin Timeout <1-1000> +// Defines how many ticks a thread will execute before a thread switch. +// Default: 5 +#ifndef OS_ROBIN_TIMEOUT +#define OS_ROBIN_TIMEOUT 5 +#endif + +// + +// Safety features (Source variant only) +// Enables FuSa related features. +// Requires RTX Source variant. +// Enables: +// - selected features from this group +// - Thread functions: osThreadProtectPrivileged +#ifndef OS_SAFETY_FEATURES +#define OS_SAFETY_FEATURES 0 +#endif + +// Safety Class +// Threads assigned to lower classes cannot modify higher class threads. +// Enables: +// - Object attributes: osSafetyClass +// - Kernel functions: osKernelProtect, osKernelDestroyClass +// - Thread functions: osThreadGetClass, osThreadSuspendClass, osThreadResumeClass +#ifndef OS_SAFETY_CLASS +#define OS_SAFETY_CLASS 1 +#endif + +// MPU Protected Zone +// Access protection via MPU (Spatial isolation). +// Enables: +// - Thread attributes: osThreadZone +// - Thread functions: osThreadGetZone, osThreadTerminateZone +// - Zone Management: osZoneSetup_Callback +#ifndef OS_EXECUTION_ZONE +#define OS_EXECUTION_ZONE 1 +#endif + +// Thread Watchdog +// Watchdog alerts ensure timing for critical threads (Temporal isolation). +// Enables: +// - Thread functions: osThreadFeedWatchdog +// - Handler functions: osWatchdogAlarm_Handler +#ifndef OS_THREAD_WATCHDOG +#define OS_THREAD_WATCHDOG 1 +#endif + +// Object Pointer checking +// Check object pointer alignment and memory region. +#ifndef OS_OBJ_PTR_CHECK +#define OS_OBJ_PTR_CHECK 0 +#endif + +// SVC Function Pointer checking +// Check SVC function pointer alignment and memory region. +// User needs to define a linker execution region RTX_SVC_VENEERS +// containing input sections: rtx_*.o (.text.os.svc.veneer.*) +#ifndef OS_SVC_PTR_CHECK +#define OS_SVC_PTR_CHECK 0 +#endif + +// + +// ISR FIFO Queue +// <4=> 4 entries <8=> 8 entries <12=> 12 entries <16=> 16 entries +// <24=> 24 entries <32=> 32 entries <48=> 48 entries <64=> 64 entries +// <96=> 96 entries <128=> 128 entries <196=> 196 entries <256=> 256 entries +// RTOS Functions called from ISR store requests to this buffer. +// Default: 16 entries +#ifndef OS_ISR_FIFO_QUEUE +#define OS_ISR_FIFO_QUEUE 16 +#endif + +// Object Memory usage counters +// Enables object memory usage counters (requires RTX source variant). +#ifndef OS_OBJ_MEM_USAGE +#define OS_OBJ_MEM_USAGE 0 +#endif + +// + +// Thread Configuration +// ======================= + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_THREAD_OBJ_MEM +#define OS_THREAD_OBJ_MEM 0 +#endif + +// Number of user Threads <1-1000> +// Defines maximum number of user threads that can be active at the same time. +// Applies to user threads with system provided memory for control blocks. +#ifndef OS_THREAD_NUM +#define OS_THREAD_NUM 1 +#endif + +// Number of user Threads with default Stack size <0-1000> +// Defines maximum number of user threads with default stack size. +// Applies to user threads with zero stack size specified. +#ifndef OS_THREAD_DEF_STACK_NUM +#define OS_THREAD_DEF_STACK_NUM 0 +#endif + +// Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8> +// Defines the combined stack size for user threads with user-provided stack size. +// Applies to user threads with user-provided stack size and system provided memory for stack. +// Default: 0 +#ifndef OS_THREAD_USER_STACK_SIZE +#define OS_THREAD_USER_STACK_SIZE 0 +#endif + +// + +// Default Thread Stack size [bytes] <96-1073741824:8> +// Defines stack size for threads with zero stack size specified. +// Default: 3072 +#ifndef OS_STACK_SIZE +#define OS_STACK_SIZE 3072 +#endif + +// Idle Thread Stack size [bytes] <72-1073741824:8> +// Defines stack size for Idle thread. +// Default: 512 +#ifndef OS_IDLE_THREAD_STACK_SIZE +#define OS_IDLE_THREAD_STACK_SIZE 512 +#endif + +// Idle Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_IDLE_THREAD_TZ_MOD_ID +#define OS_IDLE_THREAD_TZ_MOD_ID 0 +#endif + +// Idle Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_IDLE_THREAD_CLASS +#define OS_IDLE_THREAD_CLASS 0 +#endif + +// Idle Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_IDLE_THREAD_ZONE +#define OS_IDLE_THREAD_ZONE 0 +#endif + +// Stack overrun checking +// Enables stack overrun check at thread switch (requires RTX source variant). +// Enabling this option increases slightly the execution time of a thread switch. +#ifndef OS_STACK_CHECK +#define OS_STACK_CHECK 1 +#endif + +// Stack usage watermark +// Initializes thread stack with watermark pattern for analyzing stack usage. +// Enabling this option increases significantly the execution time of thread creation. +#ifndef OS_STACK_WATERMARK +#define OS_STACK_WATERMARK 0 +#endif + +// Default Processor mode for Thread execution +// <0=> Unprivileged mode +// <1=> Privileged mode +// Default: Unprivileged mode +#ifndef OS_PRIVILEGE_MODE +#define OS_PRIVILEGE_MODE 1 +#endif + +// + +// Timer Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_TIMER_OBJ_MEM +#define OS_TIMER_OBJ_MEM 0 +#endif + +// Number of Timer objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_TIMER_NUM +#define OS_TIMER_NUM 1 +#endif + +// + +// Timer Thread Priority +// <8=> Low +// <16=> Below Normal <24=> Normal <32=> Above Normal +// <40=> High +// <48=> Realtime +// Defines priority for timer thread +// Default: High +#ifndef OS_TIMER_THREAD_PRIO +#define OS_TIMER_THREAD_PRIO 40 +#endif + +// Timer Thread Stack size [bytes] <0-1073741824:8> +// Defines stack size for Timer thread. +// May be set to 0 when timers are not used. +// Default: 512 +#ifndef OS_TIMER_THREAD_STACK_SIZE +#define OS_TIMER_THREAD_STACK_SIZE 512 +#endif + +// Timer Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_TIMER_THREAD_TZ_MOD_ID +#define OS_TIMER_THREAD_TZ_MOD_ID 0 +#endif + +// Timer Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_TIMER_THREAD_CLASS +#define OS_TIMER_THREAD_CLASS 0 +#endif + +// Timer Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_TIMER_THREAD_ZONE +#define OS_TIMER_THREAD_ZONE 0 +#endif + +// Timer Callback Queue entries <0-256> +// Number of concurrent active timer callback functions. +// May be set to 0 when timers are not used. +// Default: 4 +#ifndef OS_TIMER_CB_QUEUE +#define OS_TIMER_CB_QUEUE 4 +#endif + +// + +// Event Flags Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_EVFLAGS_OBJ_MEM +#define OS_EVFLAGS_OBJ_MEM 0 +#endif + +// Number of Event Flags objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_EVFLAGS_NUM +#define OS_EVFLAGS_NUM 1 +#endif + +// + +// + +// Mutex Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MUTEX_OBJ_MEM +#define OS_MUTEX_OBJ_MEM 0 +#endif + +// Number of Mutex objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MUTEX_NUM +#define OS_MUTEX_NUM 1 +#endif + +// + +// + +// Semaphore Configuration +// ========================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_SEMAPHORE_OBJ_MEM +#define OS_SEMAPHORE_OBJ_MEM 0 +#endif + +// Number of Semaphore objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_SEMAPHORE_NUM +#define OS_SEMAPHORE_NUM 1 +#endif + +// + +// + +// Memory Pool Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MEMPOOL_OBJ_MEM +#define OS_MEMPOOL_OBJ_MEM 0 +#endif + +// Number of Memory Pool objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MEMPOOL_NUM +#define OS_MEMPOOL_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MEMPOOL_DATA_SIZE +#define OS_MEMPOOL_DATA_SIZE 0 +#endif + +// + +// + +// Message Queue Configuration +// ============================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MSGQUEUE_OBJ_MEM +#define OS_MSGQUEUE_OBJ_MEM 0 +#endif + +// Number of Message Queue objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MSGQUEUE_NUM +#define OS_MSGQUEUE_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MSGQUEUE_DATA_SIZE +#define OS_MSGQUEUE_DATA_SIZE 0 +#endif + +// + +// + +// Event Recorder Configuration +// =============================== + +// Global Initialization +// Initialize Event Recorder during 'osKernelInitialize'. +#ifndef OS_EVR_INIT +#define OS_EVR_INIT 0 +#endif + +// Start recording +// Start event recording after initialization. +#ifndef OS_EVR_START +#define OS_EVR_START 1 +#endif + +// Global Event Filter Setup +// Initial recording level applied to all components. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_LEVEL +#define OS_EVR_LEVEL 0x00U +#endif + +// RTOS Event Filter Setup +// Recording levels for RTX components. +// Only applicable if events for the respective component are generated. + +// Memory Management +// Recording level for Memory Management events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMORY_LEVEL +#define OS_EVR_MEMORY_LEVEL 0x81U +#endif + +// Kernel +// Recording level for Kernel events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_KERNEL_LEVEL +#define OS_EVR_KERNEL_LEVEL 0x81U +#endif + +// Thread +// Recording level for Thread events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THREAD_LEVEL +#define OS_EVR_THREAD_LEVEL 0x85U +#endif + +// Generic Wait +// Recording level for Generic Wait events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_WAIT_LEVEL +#define OS_EVR_WAIT_LEVEL 0x81U +#endif + +// Thread Flags +// Recording level for Thread Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THFLAGS_LEVEL +#define OS_EVR_THFLAGS_LEVEL 0x81U +#endif + +// Event Flags +// Recording level for Event Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_EVFLAGS_LEVEL +#define OS_EVR_EVFLAGS_LEVEL 0x81U +#endif + +// Timer +// Recording level for Timer events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_TIMER_LEVEL +#define OS_EVR_TIMER_LEVEL 0x81U +#endif + +// Mutex +// Recording level for Mutex events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MUTEX_LEVEL +#define OS_EVR_MUTEX_LEVEL 0x81U +#endif + +// Semaphore +// Recording level for Semaphore events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_SEMAPHORE_LEVEL +#define OS_EVR_SEMAPHORE_LEVEL 0x81U +#endif + +// Memory Pool +// Recording level for Memory Pool events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMPOOL_LEVEL +#define OS_EVR_MEMPOOL_LEVEL 0x81U +#endif + +// Message Queue +// Recording level for Message Queue events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MSGQUEUE_LEVEL +#define OS_EVR_MSGQUEUE_LEVEL 0x81U +#endif + +// + +// + +// RTOS Event Generation +// Enables event generation for RTX components (requires RTX source variant). + +// Memory Management +// Enables Memory Management event generation. +#ifndef OS_EVR_MEMORY +#define OS_EVR_MEMORY 1 +#endif + +// Kernel +// Enables Kernel event generation. +#ifndef OS_EVR_KERNEL +#define OS_EVR_KERNEL 1 +#endif + +// Thread +// Enables Thread event generation. +#ifndef OS_EVR_THREAD +#define OS_EVR_THREAD 1 +#endif + +// Generic Wait +// Enables Generic Wait event generation. +#ifndef OS_EVR_WAIT +#define OS_EVR_WAIT 1 +#endif + +// Thread Flags +// Enables Thread Flags event generation. +#ifndef OS_EVR_THFLAGS +#define OS_EVR_THFLAGS 1 +#endif + +// Event Flags +// Enables Event Flags event generation. +#ifndef OS_EVR_EVFLAGS +#define OS_EVR_EVFLAGS 1 +#endif + +// Timer +// Enables Timer event generation. +#ifndef OS_EVR_TIMER +#define OS_EVR_TIMER 1 +#endif + +// Mutex +// Enables Mutex event generation. +#ifndef OS_EVR_MUTEX +#define OS_EVR_MUTEX 1 +#endif + +// Semaphore +// Enables Semaphore event generation. +#ifndef OS_EVR_SEMAPHORE +#define OS_EVR_SEMAPHORE 1 +#endif + +// Memory Pool +// Enables Memory Pool event generation. +#ifndef OS_EVR_MEMPOOL +#define OS_EVR_MEMPOOL 1 +#endif + +// Message Queue +// Enables Message Queue event generation. +#ifndef OS_EVR_MSGQUEUE +#define OS_EVR_MSGQUEUE 1 +#endif + +// + +// + +// Number of Threads which use standard C/C++ library libspace +// (when thread specific memory allocation is not used). +#if (OS_THREAD_OBJ_MEM == 0) +#ifndef OS_THREAD_LIBSPACE_NUM +#define OS_THREAD_LIBSPACE_NUM 4 +#endif +#else +#define OS_THREAD_LIBSPACE_NUM OS_THREAD_NUM +#endif + +//------------- <<< end of configuration section >>> --------------------------- + +#endif // RTX_CONFIG_H_ diff --git a/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h.base@5.6.0 b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h.base@5.6.0 new file mode 100644 index 00000000..fe0c57b6 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/CMSIS/RTX_Config.h.base@5.6.0 @@ -0,0 +1,663 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.6.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration definitions + * + * ----------------------------------------------------------------------------- + */ + +#ifndef RTX_CONFIG_H_ +#define RTX_CONFIG_H_ + +#ifdef _RTE_ +#include "RTE_Components.h" +#ifdef RTE_RTX_CONFIG_H +#include RTE_RTX_CONFIG_H +#endif +#endif + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// System Configuration +// ======================= + +// Global Dynamic Memory size [bytes] <0-1073741824:8> +// Defines the combined global dynamic memory size. +// Default: 32768 +#ifndef OS_DYNAMIC_MEM_SIZE +#define OS_DYNAMIC_MEM_SIZE 32768 +#endif + +// Kernel Tick Frequency [Hz] <1-1000000> +// Defines base time unit for delays and timeouts. +// Default: 1000 (1ms tick) +#ifndef OS_TICK_FREQ +#define OS_TICK_FREQ 1000 +#endif + +// Round-Robin Thread switching +// Enables Round-Robin Thread switching. +#ifndef OS_ROBIN_ENABLE +#define OS_ROBIN_ENABLE 1 +#endif + +// Round-Robin Timeout <1-1000> +// Defines how many ticks a thread will execute before a thread switch. +// Default: 5 +#ifndef OS_ROBIN_TIMEOUT +#define OS_ROBIN_TIMEOUT 5 +#endif + +// + +// Safety features (Source variant only) +// Enables FuSa related features. +// Requires RTX Source variant. +// Enables: +// - selected features from this group +// - Thread functions: osThreadProtectPrivileged +#ifndef OS_SAFETY_FEATURES +#define OS_SAFETY_FEATURES 0 +#endif + +// Safety Class +// Threads assigned to lower classes cannot modify higher class threads. +// Enables: +// - Object attributes: osSafetyClass +// - Kernel functions: osKernelProtect, osKernelDestroyClass +// - Thread functions: osThreadGetClass, osThreadSuspendClass, osThreadResumeClass +#ifndef OS_SAFETY_CLASS +#define OS_SAFETY_CLASS 1 +#endif + +// MPU Protected Zone +// Access protection via MPU (Spatial isolation). +// Enables: +// - Thread attributes: osThreadZone +// - Thread functions: osThreadGetZone, osThreadTerminateZone +// - Zone Management: osZoneSetup_Callback +#ifndef OS_EXECUTION_ZONE +#define OS_EXECUTION_ZONE 1 +#endif + +// Thread Watchdog +// Watchdog alerts ensure timing for critical threads (Temporal isolation). +// Enables: +// - Thread functions: osThreadFeedWatchdog +// - Handler functions: osWatchdogAlarm_Handler +#ifndef OS_THREAD_WATCHDOG +#define OS_THREAD_WATCHDOG 1 +#endif + +// Object Pointer checking +// Check object pointer alignment and memory region. +#ifndef OS_OBJ_PTR_CHECK +#define OS_OBJ_PTR_CHECK 0 +#endif + +// SVC Function Pointer checking +// Check SVC function pointer alignment and memory region. +// User needs to define a linker execution region RTX_SVC_VENEERS +// containing input sections: rtx_*.o (.text.os.svc.veneer.*) +#ifndef OS_SVC_PTR_CHECK +#define OS_SVC_PTR_CHECK 0 +#endif + +// + +// ISR FIFO Queue +// <4=> 4 entries <8=> 8 entries <12=> 12 entries <16=> 16 entries +// <24=> 24 entries <32=> 32 entries <48=> 48 entries <64=> 64 entries +// <96=> 96 entries <128=> 128 entries <196=> 196 entries <256=> 256 entries +// RTOS Functions called from ISR store requests to this buffer. +// Default: 16 entries +#ifndef OS_ISR_FIFO_QUEUE +#define OS_ISR_FIFO_QUEUE 16 +#endif + +// Object Memory usage counters +// Enables object memory usage counters (requires RTX source variant). +#ifndef OS_OBJ_MEM_USAGE +#define OS_OBJ_MEM_USAGE 0 +#endif + +// + +// Thread Configuration +// ======================= + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_THREAD_OBJ_MEM +#define OS_THREAD_OBJ_MEM 0 +#endif + +// Number of user Threads <1-1000> +// Defines maximum number of user threads that can be active at the same time. +// Applies to user threads with system provided memory for control blocks. +#ifndef OS_THREAD_NUM +#define OS_THREAD_NUM 1 +#endif + +// Number of user Threads with default Stack size <0-1000> +// Defines maximum number of user threads with default stack size. +// Applies to user threads with zero stack size specified. +#ifndef OS_THREAD_DEF_STACK_NUM +#define OS_THREAD_DEF_STACK_NUM 0 +#endif + +// Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8> +// Defines the combined stack size for user threads with user-provided stack size. +// Applies to user threads with user-provided stack size and system provided memory for stack. +// Default: 0 +#ifndef OS_THREAD_USER_STACK_SIZE +#define OS_THREAD_USER_STACK_SIZE 0 +#endif + +// + +// Default Thread Stack size [bytes] <96-1073741824:8> +// Defines stack size for threads with zero stack size specified. +// Default: 3072 +#ifndef OS_STACK_SIZE +#define OS_STACK_SIZE 3072 +#endif + +// Idle Thread Stack size [bytes] <72-1073741824:8> +// Defines stack size for Idle thread. +// Default: 512 +#ifndef OS_IDLE_THREAD_STACK_SIZE +#define OS_IDLE_THREAD_STACK_SIZE 512 +#endif + +// Idle Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_IDLE_THREAD_TZ_MOD_ID +#define OS_IDLE_THREAD_TZ_MOD_ID 0 +#endif + +// Idle Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_IDLE_THREAD_CLASS +#define OS_IDLE_THREAD_CLASS 0 +#endif + +// Idle Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_IDLE_THREAD_ZONE +#define OS_IDLE_THREAD_ZONE 0 +#endif + +// Stack overrun checking +// Enables stack overrun check at thread switch (requires RTX source variant). +// Enabling this option increases slightly the execution time of a thread switch. +#ifndef OS_STACK_CHECK +#define OS_STACK_CHECK 1 +#endif + +// Stack usage watermark +// Initializes thread stack with watermark pattern for analyzing stack usage. +// Enabling this option increases significantly the execution time of thread creation. +#ifndef OS_STACK_WATERMARK +#define OS_STACK_WATERMARK 0 +#endif + +// Default Processor mode for Thread execution +// <0=> Unprivileged mode +// <1=> Privileged mode +// Default: Unprivileged mode +#ifndef OS_PRIVILEGE_MODE +#define OS_PRIVILEGE_MODE 0 +#endif + +// + +// Timer Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_TIMER_OBJ_MEM +#define OS_TIMER_OBJ_MEM 0 +#endif + +// Number of Timer objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_TIMER_NUM +#define OS_TIMER_NUM 1 +#endif + +// + +// Timer Thread Priority +// <8=> Low +// <16=> Below Normal <24=> Normal <32=> Above Normal +// <40=> High +// <48=> Realtime +// Defines priority for timer thread +// Default: High +#ifndef OS_TIMER_THREAD_PRIO +#define OS_TIMER_THREAD_PRIO 40 +#endif + +// Timer Thread Stack size [bytes] <0-1073741824:8> +// Defines stack size for Timer thread. +// May be set to 0 when timers are not used. +// Default: 512 +#ifndef OS_TIMER_THREAD_STACK_SIZE +#define OS_TIMER_THREAD_STACK_SIZE 512 +#endif + +// Timer Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_TIMER_THREAD_TZ_MOD_ID +#define OS_TIMER_THREAD_TZ_MOD_ID 0 +#endif + +// Timer Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_TIMER_THREAD_CLASS +#define OS_TIMER_THREAD_CLASS 0 +#endif + +// Timer Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_TIMER_THREAD_ZONE +#define OS_TIMER_THREAD_ZONE 0 +#endif + +// Timer Callback Queue entries <0-256> +// Number of concurrent active timer callback functions. +// May be set to 0 when timers are not used. +// Default: 4 +#ifndef OS_TIMER_CB_QUEUE +#define OS_TIMER_CB_QUEUE 4 +#endif + +// + +// Event Flags Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_EVFLAGS_OBJ_MEM +#define OS_EVFLAGS_OBJ_MEM 0 +#endif + +// Number of Event Flags objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_EVFLAGS_NUM +#define OS_EVFLAGS_NUM 1 +#endif + +// + +// + +// Mutex Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MUTEX_OBJ_MEM +#define OS_MUTEX_OBJ_MEM 0 +#endif + +// Number of Mutex objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MUTEX_NUM +#define OS_MUTEX_NUM 1 +#endif + +// + +// + +// Semaphore Configuration +// ========================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_SEMAPHORE_OBJ_MEM +#define OS_SEMAPHORE_OBJ_MEM 0 +#endif + +// Number of Semaphore objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_SEMAPHORE_NUM +#define OS_SEMAPHORE_NUM 1 +#endif + +// + +// + +// Memory Pool Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MEMPOOL_OBJ_MEM +#define OS_MEMPOOL_OBJ_MEM 0 +#endif + +// Number of Memory Pool objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MEMPOOL_NUM +#define OS_MEMPOOL_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MEMPOOL_DATA_SIZE +#define OS_MEMPOOL_DATA_SIZE 0 +#endif + +// + +// + +// Message Queue Configuration +// ============================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MSGQUEUE_OBJ_MEM +#define OS_MSGQUEUE_OBJ_MEM 0 +#endif + +// Number of Message Queue objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MSGQUEUE_NUM +#define OS_MSGQUEUE_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MSGQUEUE_DATA_SIZE +#define OS_MSGQUEUE_DATA_SIZE 0 +#endif + +// + +// + +// Event Recorder Configuration +// =============================== + +// Global Initialization +// Initialize Event Recorder during 'osKernelInitialize'. +#ifndef OS_EVR_INIT +#define OS_EVR_INIT 0 +#endif + +// Start recording +// Start event recording after initialization. +#ifndef OS_EVR_START +#define OS_EVR_START 1 +#endif + +// Global Event Filter Setup +// Initial recording level applied to all components. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_LEVEL +#define OS_EVR_LEVEL 0x00U +#endif + +// RTOS Event Filter Setup +// Recording levels for RTX components. +// Only applicable if events for the respective component are generated. + +// Memory Management +// Recording level for Memory Management events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMORY_LEVEL +#define OS_EVR_MEMORY_LEVEL 0x81U +#endif + +// Kernel +// Recording level for Kernel events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_KERNEL_LEVEL +#define OS_EVR_KERNEL_LEVEL 0x81U +#endif + +// Thread +// Recording level for Thread events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THREAD_LEVEL +#define OS_EVR_THREAD_LEVEL 0x85U +#endif + +// Generic Wait +// Recording level for Generic Wait events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_WAIT_LEVEL +#define OS_EVR_WAIT_LEVEL 0x81U +#endif + +// Thread Flags +// Recording level for Thread Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THFLAGS_LEVEL +#define OS_EVR_THFLAGS_LEVEL 0x81U +#endif + +// Event Flags +// Recording level for Event Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_EVFLAGS_LEVEL +#define OS_EVR_EVFLAGS_LEVEL 0x81U +#endif + +// Timer +// Recording level for Timer events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_TIMER_LEVEL +#define OS_EVR_TIMER_LEVEL 0x81U +#endif + +// Mutex +// Recording level for Mutex events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MUTEX_LEVEL +#define OS_EVR_MUTEX_LEVEL 0x81U +#endif + +// Semaphore +// Recording level for Semaphore events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_SEMAPHORE_LEVEL +#define OS_EVR_SEMAPHORE_LEVEL 0x81U +#endif + +// Memory Pool +// Recording level for Memory Pool events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMPOOL_LEVEL +#define OS_EVR_MEMPOOL_LEVEL 0x81U +#endif + +// Message Queue +// Recording level for Message Queue events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MSGQUEUE_LEVEL +#define OS_EVR_MSGQUEUE_LEVEL 0x81U +#endif + +// + +// + +// RTOS Event Generation +// Enables event generation for RTX components (requires RTX source variant). + +// Memory Management +// Enables Memory Management event generation. +#ifndef OS_EVR_MEMORY +#define OS_EVR_MEMORY 1 +#endif + +// Kernel +// Enables Kernel event generation. +#ifndef OS_EVR_KERNEL +#define OS_EVR_KERNEL 1 +#endif + +// Thread +// Enables Thread event generation. +#ifndef OS_EVR_THREAD +#define OS_EVR_THREAD 1 +#endif + +// Generic Wait +// Enables Generic Wait event generation. +#ifndef OS_EVR_WAIT +#define OS_EVR_WAIT 1 +#endif + +// Thread Flags +// Enables Thread Flags event generation. +#ifndef OS_EVR_THFLAGS +#define OS_EVR_THFLAGS 1 +#endif + +// Event Flags +// Enables Event Flags event generation. +#ifndef OS_EVR_EVFLAGS +#define OS_EVR_EVFLAGS 1 +#endif + +// Timer +// Enables Timer event generation. +#ifndef OS_EVR_TIMER +#define OS_EVR_TIMER 1 +#endif + +// Mutex +// Enables Mutex event generation. +#ifndef OS_EVR_MUTEX +#define OS_EVR_MUTEX 1 +#endif + +// Semaphore +// Enables Semaphore event generation. +#ifndef OS_EVR_SEMAPHORE +#define OS_EVR_SEMAPHORE 1 +#endif + +// Memory Pool +// Enables Memory Pool event generation. +#ifndef OS_EVR_MEMPOOL +#define OS_EVR_MEMPOOL 1 +#endif + +// Message Queue +// Enables Message Queue event generation. +#ifndef OS_EVR_MSGQUEUE +#define OS_EVR_MSGQUEUE 1 +#endif + +// + +// + +// Number of Threads which use standard C/C++ library libspace +// (when thread specific memory allocation is not used). +#if (OS_THREAD_OBJ_MEM == 0) +#ifndef OS_THREAD_LIBSPACE_NUM +#define OS_THREAD_LIBSPACE_NUM 4 +#endif +#else +#define OS_THREAD_LIBSPACE_NUM OS_THREAD_NUM +#endif + +//------------- <<< end of configuration section >>> --------------------------- + +#endif // RTX_CONFIG_H_ diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h new file mode 100644 index 00000000..f73d165f --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config.h + * Purpose: Network Core Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Core +// Variant <0=>IPv4 only +// <1=>IPv4/IPv6 dual stack +// Configure variant of the network library +#define NET_CORE_VARIANT 1 + +// Local Host Name +// This is the name under which embedded host can be +// accessed on a local area network. +// Default: "my_host" +#define NET_HOST_NAME "my_host" + +// Memory Pool Size <1536-262144:4> +// This is the size of a memory pool in bytes. Buffers for +// network packets are allocated from this memory pool. +// Default: 12000 bytes +#define NET_MEM_POOL_SIZE 12000 + +// Start System Services +// If enabled, the system will automatically start server services +// (HTTP, FTP, TFTP server, ...) when initializing the network system. +// Default: Enabled +#define NET_START_SERVICE 1 + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Core Thread Stack Size <512-65535:4> +// Default: 2048 bytes +#define NET_THREAD_STACK_SIZE 2048 + +// Core Thread Priority +#define NET_THREAD_PRIORITY osPriorityNormal +// +// diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h.base@8.0.0 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h.base@8.0.0 new file mode 100644 index 00000000..f73d165f --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config.h.base@8.0.0 @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config.h + * Purpose: Network Core Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Core +// Variant <0=>IPv4 only +// <1=>IPv4/IPv6 dual stack +// Configure variant of the network library +#define NET_CORE_VARIANT 1 + +// Local Host Name +// This is the name under which embedded host can be +// accessed on a local area network. +// Default: "my_host" +#define NET_HOST_NAME "my_host" + +// Memory Pool Size <1536-262144:4> +// This is the size of a memory pool in bytes. Buffers for +// network packets are allocated from this memory pool. +// Default: 12000 bytes +#define NET_MEM_POOL_SIZE 12000 + +// Start System Services +// If enabled, the system will automatically start server services +// (HTTP, FTP, TFTP server, ...) when initializing the network system. +// Default: Enabled +#define NET_START_SERVICE 1 + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Core Thread Stack Size <512-65535:4> +// Default: 2048 bytes +#define NET_THREAD_STACK_SIZE 2048 + +// Core Thread Priority +#define NET_THREAD_PRIORITY osPriorityNormal +// +// diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h new file mode 100644 index 00000000..faac074f --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h @@ -0,0 +1,279 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Interface + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_ETH_0.h + * Purpose: Network Configuration for ETH Interface + * Rev.: V7.5.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +#ifdef CMSIS_target_header +#include CMSIS_target_header +#else +#define CMSIS_DRIVER_ETH 0 +#endif + +// Ethernet Network Interface 0 +#define ETH0_ENABLE 1 + +// Connect to hardware via Driver_ETH# +// Select driver control block for MAC and PHY interface +#define ETH0_DRIVER CMSIS_DRIVER_ETH + +// MAC Address +// Ethernet MAC Address in text representation +// Value FF-FF-FF-FF-FF-FF is not allowed, +// LSB of first byte must be 0 (an ethernet Multicast bit). +// Default: "1E-30-6C-A2-45-5E" +#define ETH0_MAC_ADDR "1E-30-6C-A2-45-5E" + +// VLAN +// Enable or disable Virtual LAN +#define ETH0_VLAN_ENABLE 0 + +// VLAN Identifier <1-4093> +// A unique 12-bit numeric value +// Default: 1 +#define ETH0_VLAN_ID 1 +// + +// IPv4 +// Enable IPv4 Protocol for Network Interface +#define ETH0_IP4_ENABLE 1 + +// IP Address +// Static IPv4 Address in text representation +// Default: "192.168.0.100" +#define ETH0_IP4_ADDR "192.168.0.100" + +// Subnet mask +// Local Subnet mask in text representation +// Default: "255.255.255.0" +#define ETH0_IP4_MASK "255.255.255.0" + +// Default Gateway +// IP Address of Default Gateway in text representation +// Default: "192.168.0.254" +#define ETH0_IP4_GATEWAY "192.168.0.254" + +// Primary DNS Server +// IP Address of Primary DNS Server in text representation +// Default: "8.8.8.8" +#define ETH0_IP4_PRIMARY_DNS "8.8.8.8" + +// Secondary DNS Server +// IP Address of Secondary DNS Server in text representation +// Default: "8.8.4.4" +#define ETH0_IP4_SECONDARY_DNS "8.8.4.4" + +// IP Fragmentation +// This option enables fragmentation of outgoing IP datagrams, +// and reassembling the fragments of incoming IP datagrams. +// Default: enabled +#define ETH0_IP4_FRAG_ENABLE 1 + +// MTU size <576-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP4_MTU 1500 +// + +// ARP Address Resolution +// ARP cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached MAC/IP addresses +// Default: 10 +#define ETH0_ARP_TAB_SIZE 10 + +// Cache Timeout in seconds <5-255> +// A timeout for cached hardware/IP addresses +// Default: 150 +#define ETH0_ARP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of Retries to resolve an IP address +// before ARP module gives up +// Default: 4 +#define ETH0_ARP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend the ARP Request +// Default: 2 +#define ETH0_ARP_RESEND_TOUT 2 + +// Send Notification on Address changes +// When this option is enabled, the embedded host +// will send a Gratuitous ARP notification at startup, +// or when the device IP address has changed. +// Default: Disabled +#define ETH0_ARP_NOTIFY 0 +// + +// IGMP Group Management +// Enable or disable Internet Group Management Protocol +#define ETH0_IGMP_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this host can join +// Default: 5 +#define ETH0_IGMP_TAB_SIZE 5 +// + +// NetBIOS Name Service +// When this option is enabled, the embedded host can be +// accessed by its name on local LAN using NBNS protocol. +#define ETH0_NBNS_ENABLE 1 + +// Dynamic Host Configuration +// When this option is enabled, local IP address, Net Mask +// and Default Gateway are obtained automatically from +// the DHCP Server on local LAN. +#define ETH0_DHCP_ENABLE 1 + +// Vendor Class Identifier +// This value is optional. If specified, it is added +// to DHCP request message, identifying vendor type. +// Default: "" +#define ETH0_DHCP_VCID "" + +// Bootfile Name +// This value is optional. If enabled, the Bootfile Name +// (option 67) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_BOOTFILE 0 + +// NTP Servers +// This value is optional. If enabled, a list of NTP Servers +// (option 42) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_NTP_SERVERS 0 +// + +// Disable ICMP Echo response +#define ETH0_ICMP_NO_ECHO 0 +// + +// IPv6 +// Enable IPv6 Protocol for Network Interface +#define ETH0_IP6_ENABLE 1 + +// IPv6 Address +// Static IPv6 Address in text representation +// Use unspecified address "::" when static +// IPv6 address is not used. +// Default: "fec0::2" +#define ETH0_IP6_ADDR "fec0::2" + +// Subnet prefix-length <1-128> +// Number of bits that define network address +// Default: 64 +#define ETH0_IP6_PREFIX_LEN 64 + +// Default Gateway +// Default Gateway IPv6 Address in text representation +// Default: "fec0::1" +#define ETH0_IP6_GATEWAY "fec0::1" + +// Primary DNS Server +// Primary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8888" +#define ETH0_IP6_PRIMARY_DNS "2001:4860:4860::8888" + +// Secondary DNS Server +// Secondary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8844" +#define ETH0_IP6_SECONDARY_DNS "2001:4860:4860::8844" + +// IPv6 Fragmentation +// This option enables fragmentation of outgoing IPv6 datagrams, +// and reassembling the fragments of incoming IPv6 datagrams. +// Default: enabled +#define ETH0_IP6_FRAG_ENABLE 1 + +// MTU size <1280-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP6_MTU 1500 +// + +// Neighbor Discovery +// Neighbor cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached node addresses +// Default: 5 +#define ETH0_NDP_TAB_SIZE 5 + +// Cache Timeout in seconds <5-255> +// Timeout for cached node addresses +// Default: 150 +#define ETH0_NDP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of retries to resolve an IP address +// before NDP module gives up +// Default: 4 +#define ETH0_NDP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend Neighbor Solicitation +// Default: 2 +#define ETH0_NDP_RESEND_TOUT 2 +// + +// Multicast Listener Discovery +// Enable or disable Multicast Listener Discovery Protocol +#define ETH0_MLD_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this node can join +// Default: 5 +#define ETH0_MLD_TAB_SIZE 5 +// + +// Dynamic Host Configuration +// When this option is enabled, local IPv6 address is +// automatically configured. +#define ETH0_DHCP6_ENABLE 1 + +// DHCPv6 Client Mode <0=>Stateless Mode <1=>Statefull Mode +// Stateless DHCPv6 Client uses router advertisements +// for IPv6 address autoconfiguration (SLAAC). +// Statefull DHCPv6 Client connects to DHCPv6 server for a +// leased IPv6 address and DNS server IPv6 addresses. +#define ETH0_DHCP6_MODE 1 + +// Vendor Class Option +// If enabled, Vendor Class option is added to DHCPv6 +// request message, identifying vendor type. +// Default: disabled +#define ETH0_DHCP6_VCLASS_ENABLE 0 + +// Enterprise ID +// Enterprise-number as registered with IANA. +// Default: 0 (Reserved) +#define ETH0_DHCP6_VCLASS_EID 0 + +// Vendor Class Data +// This string identifies vendor type. +// Default: "" +#define ETH0_DHCP6_VCLASS_DATA "" +// +// + +// Disable ICMP6 Echo response +#define ETH0_ICMP6_NO_ECHO 0 +// + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Interface Thread Stack Size <512-65535:4> +// Default: 512 bytes +#define ETH0_THREAD_STACK_SIZE 512 + +// Interface Thread Priority +#define ETH0_THREAD_PRIORITY osPriorityAboveNormal + +// +// diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 new file mode 100644 index 00000000..6b270a74 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 @@ -0,0 +1,273 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Interface + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_ETH_0.h + * Purpose: Network Configuration for ETH Interface + * Rev.: V7.5.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Ethernet Network Interface 0 +#define ETH0_ENABLE 1 + +// Connect to hardware via Driver_ETH# +// Select driver control block for MAC and PHY interface +#define ETH0_DRIVER 0 + +// MAC Address +// Ethernet MAC Address in text representation +// Value FF-FF-FF-FF-FF-FF is not allowed, +// LSB of first byte must be 0 (an ethernet Multicast bit). +// Default: "1E-30-6C-A2-45-5E" +#define ETH0_MAC_ADDR "1E-30-6C-A2-45-5E" + +// VLAN +// Enable or disable Virtual LAN +#define ETH0_VLAN_ENABLE 0 + +// VLAN Identifier <1-4093> +// A unique 12-bit numeric value +// Default: 1 +#define ETH0_VLAN_ID 1 +// + +// IPv4 +// Enable IPv4 Protocol for Network Interface +#define ETH0_IP4_ENABLE 1 + +// IP Address +// Static IPv4 Address in text representation +// Default: "192.168.0.100" +#define ETH0_IP4_ADDR "192.168.0.100" + +// Subnet mask +// Local Subnet mask in text representation +// Default: "255.255.255.0" +#define ETH0_IP4_MASK "255.255.255.0" + +// Default Gateway +// IP Address of Default Gateway in text representation +// Default: "192.168.0.254" +#define ETH0_IP4_GATEWAY "192.168.0.254" + +// Primary DNS Server +// IP Address of Primary DNS Server in text representation +// Default: "8.8.8.8" +#define ETH0_IP4_PRIMARY_DNS "8.8.8.8" + +// Secondary DNS Server +// IP Address of Secondary DNS Server in text representation +// Default: "8.8.4.4" +#define ETH0_IP4_SECONDARY_DNS "8.8.4.4" + +// IP Fragmentation +// This option enables fragmentation of outgoing IP datagrams, +// and reassembling the fragments of incoming IP datagrams. +// Default: enabled +#define ETH0_IP4_FRAG_ENABLE 1 + +// MTU size <576-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP4_MTU 1500 +// + +// ARP Address Resolution +// ARP cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached MAC/IP addresses +// Default: 10 +#define ETH0_ARP_TAB_SIZE 10 + +// Cache Timeout in seconds <5-255> +// A timeout for cached hardware/IP addresses +// Default: 150 +#define ETH0_ARP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of Retries to resolve an IP address +// before ARP module gives up +// Default: 4 +#define ETH0_ARP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend the ARP Request +// Default: 2 +#define ETH0_ARP_RESEND_TOUT 2 + +// Send Notification on Address changes +// When this option is enabled, the embedded host +// will send a Gratuitous ARP notification at startup, +// or when the device IP address has changed. +// Default: Disabled +#define ETH0_ARP_NOTIFY 0 +// + +// IGMP Group Management +// Enable or disable Internet Group Management Protocol +#define ETH0_IGMP_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this host can join +// Default: 5 +#define ETH0_IGMP_TAB_SIZE 5 +// + +// NetBIOS Name Service +// When this option is enabled, the embedded host can be +// accessed by its name on local LAN using NBNS protocol. +#define ETH0_NBNS_ENABLE 1 + +// Dynamic Host Configuration +// When this option is enabled, local IP address, Net Mask +// and Default Gateway are obtained automatically from +// the DHCP Server on local LAN. +#define ETH0_DHCP_ENABLE 1 + +// Vendor Class Identifier +// This value is optional. If specified, it is added +// to DHCP request message, identifying vendor type. +// Default: "" +#define ETH0_DHCP_VCID "" + +// Bootfile Name +// This value is optional. If enabled, the Bootfile Name +// (option 67) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_BOOTFILE 0 + +// NTP Servers +// This value is optional. If enabled, a list of NTP Servers +// (option 42) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_NTP_SERVERS 0 +// + +// Disable ICMP Echo response +#define ETH0_ICMP_NO_ECHO 0 +// + +// IPv6 +// Enable IPv6 Protocol for Network Interface +#define ETH0_IP6_ENABLE 1 + +// IPv6 Address +// Static IPv6 Address in text representation +// Use unspecified address "::" when static +// IPv6 address is not used. +// Default: "fec0::2" +#define ETH0_IP6_ADDR "fec0::2" + +// Subnet prefix-length <1-128> +// Number of bits that define network address +// Default: 64 +#define ETH0_IP6_PREFIX_LEN 64 + +// Default Gateway +// Default Gateway IPv6 Address in text representation +// Default: "fec0::1" +#define ETH0_IP6_GATEWAY "fec0::1" + +// Primary DNS Server +// Primary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8888" +#define ETH0_IP6_PRIMARY_DNS "2001:4860:4860::8888" + +// Secondary DNS Server +// Secondary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8844" +#define ETH0_IP6_SECONDARY_DNS "2001:4860:4860::8844" + +// IPv6 Fragmentation +// This option enables fragmentation of outgoing IPv6 datagrams, +// and reassembling the fragments of incoming IPv6 datagrams. +// Default: enabled +#define ETH0_IP6_FRAG_ENABLE 1 + +// MTU size <1280-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP6_MTU 1500 +// + +// Neighbor Discovery +// Neighbor cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached node addresses +// Default: 5 +#define ETH0_NDP_TAB_SIZE 5 + +// Cache Timeout in seconds <5-255> +// Timeout for cached node addresses +// Default: 150 +#define ETH0_NDP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of retries to resolve an IP address +// before NDP module gives up +// Default: 4 +#define ETH0_NDP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend Neighbor Solicitation +// Default: 2 +#define ETH0_NDP_RESEND_TOUT 2 +// + +// Multicast Listener Discovery +// Enable or disable Multicast Listener Discovery Protocol +#define ETH0_MLD_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this node can join +// Default: 5 +#define ETH0_MLD_TAB_SIZE 5 +// + +// Dynamic Host Configuration +// When this option is enabled, local IPv6 address is +// automatically configured. +#define ETH0_DHCP6_ENABLE 1 + +// DHCPv6 Client Mode <0=>Stateless Mode <1=>Statefull Mode +// Stateless DHCPv6 Client uses router advertisements +// for IPv6 address autoconfiguration (SLAAC). +// Statefull DHCPv6 Client connects to DHCPv6 server for a +// leased IPv6 address and DNS server IPv6 addresses. +#define ETH0_DHCP6_MODE 1 + +// Vendor Class Option +// If enabled, Vendor Class option is added to DHCPv6 +// request message, identifying vendor type. +// Default: disabled +#define ETH0_DHCP6_VCLASS_ENABLE 0 + +// Enterprise ID +// Enterprise-number as registered with IANA. +// Default: 0 (Reserved) +#define ETH0_DHCP6_VCLASS_EID 0 + +// Vendor Class Data +// This string identifies vendor type. +// Default: "" +#define ETH0_DHCP6_VCLASS_DATA "" +// +// + +// Disable ICMP6 Echo response +#define ETH0_ICMP6_NO_ECHO 0 +// + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Interface Thread Stack Size <512-65535:4> +// Default: 512 bytes +#define ETH0_THREAD_STACK_SIZE 512 + +// Interface Thread Priority +#define ETH0_THREAD_PRIORITY osPriorityAboveNormal + +// +// diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h new file mode 100644 index 00000000..7f1fd337 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h @@ -0,0 +1,81 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2021 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_HTTP_Server.h + * Purpose: Network Configuration for HTTP Server + * Rev.: V7.2.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// HTTP Server +#define HTTP_SERVER_ENABLE 1 + +// Number of Sessions <1-10> +// Number of simultaneously active HTTP Sessions. +// Default: 6 +#define HTTP_SERVER_NUM_SESSIONS 6 + +// Port Number <1-65535> +// Listening port number +// Default: 0 (autoselects: 80/HTTP, 443/HTTPS) +#define HTTP_SERVER_PORT_NUM 0 + +// Server-Id header +// Optional header, which overrides the default server-id header. +// Default: "" +#define HTTP_SERVER_ID "" + +// Enable User Authentication +// When enabled, requires authentication of the user through +// the credentials to access any web page on the server. +#define HTTP_SERVER_AUTH_ENABLE 1 + +// Authentication Scheme <0=>Basic <1=>Digest +// Defines Access Authentication type +// Default: Basic +#define HTTP_SERVER_AUTH_TYPE 0 + +// Authentication Realm +// Defines the protection space on server +// Default: "Embedded WEB Server" +#define HTTP_SERVER_AUTH_REALM "Embedded WEB Server" + +// Built-in Administrator Account +// Enable the built-in Administrator account on the server +// Default: Enabled +#define HTTP_SERVER_AUTH_ADMIN 1 + +// Administrator Username +// Default: "admin" +#define HTTP_SERVER_AUTH_USER "admin" + +// Administrator Secret +// Plain text password or Digested value HA1 +// HA1 = MD5(username:realm:password) +// Default: "" +#define HTTP_SERVER_AUTH_PASS "" +// +// + +// Enable Root Folder +// When enabled, the system prepends the root folder to the file name +// when opening web resource files on external local drive. +// Default: Disabled +#define HTTP_SERVER_ROOT_ENABLE 0 + +// Web Root Folder +// Absolute path to the Web root folder on external drive +// *** Use unix style '/' folder separators *** +// Default: "/Web" +#define HTTP_SERVER_ROOT_FOLDER "/Web" +// + +// + +// Number of nonce cache entries +#define HTTP_SERVER_NONCE_TAB_SIZE 8 + +// Nonce cache timeout in seconds +#define HTTP_SERVER_NONCE_CACHE_TOUT 60 diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h.base@7.2.0 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h.base@7.2.0 new file mode 100644 index 00000000..7f1fd337 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_HTTP_Server.h.base@7.2.0 @@ -0,0 +1,81 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2021 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_HTTP_Server.h + * Purpose: Network Configuration for HTTP Server + * Rev.: V7.2.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// HTTP Server +#define HTTP_SERVER_ENABLE 1 + +// Number of Sessions <1-10> +// Number of simultaneously active HTTP Sessions. +// Default: 6 +#define HTTP_SERVER_NUM_SESSIONS 6 + +// Port Number <1-65535> +// Listening port number +// Default: 0 (autoselects: 80/HTTP, 443/HTTPS) +#define HTTP_SERVER_PORT_NUM 0 + +// Server-Id header +// Optional header, which overrides the default server-id header. +// Default: "" +#define HTTP_SERVER_ID "" + +// Enable User Authentication +// When enabled, requires authentication of the user through +// the credentials to access any web page on the server. +#define HTTP_SERVER_AUTH_ENABLE 1 + +// Authentication Scheme <0=>Basic <1=>Digest +// Defines Access Authentication type +// Default: Basic +#define HTTP_SERVER_AUTH_TYPE 0 + +// Authentication Realm +// Defines the protection space on server +// Default: "Embedded WEB Server" +#define HTTP_SERVER_AUTH_REALM "Embedded WEB Server" + +// Built-in Administrator Account +// Enable the built-in Administrator account on the server +// Default: Enabled +#define HTTP_SERVER_AUTH_ADMIN 1 + +// Administrator Username +// Default: "admin" +#define HTTP_SERVER_AUTH_USER "admin" + +// Administrator Secret +// Plain text password or Digested value HA1 +// HA1 = MD5(username:realm:password) +// Default: "" +#define HTTP_SERVER_AUTH_PASS "" +// +// + +// Enable Root Folder +// When enabled, the system prepends the root folder to the file name +// when opening web resource files on external local drive. +// Default: Disabled +#define HTTP_SERVER_ROOT_ENABLE 0 + +// Web Root Folder +// Absolute path to the Web root folder on external drive +// *** Use unix style '/' folder separators *** +// Default: "/Web" +#define HTTP_SERVER_ROOT_FOLDER "/Web" +// + +// + +// Number of nonce cache entries +#define HTTP_SERVER_NONCE_TAB_SIZE 8 + +// Nonce cache timeout in seconds +#define HTTP_SERVER_NONCE_CACHE_TOUT 60 diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h new file mode 100644 index 00000000..064cf92e --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h @@ -0,0 +1,67 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_TCP.h + * Purpose: Network Configuration for TCP Sockets + * Rev.: V7.1.1 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// TCP Sockets +#define TCP_ENABLE 1 + +// Number of TCP Sockets <1-20> +// Number of available TCP sockets +// Default: 6 +#define TCP_NUM_SOCKS 6 + +// Number of Retries <0-20> +// How many times TCP module will try to retransmit data +// before giving up. Increase this value for high-latency +// and low throughput networks. +// Default: 5 +#define TCP_MAX_RETRY 5 + +// Retry Timeout in seconds <1-10> +// If data frame not acknowledged within this time frame, +// TCP module will try to resend the data again. +// Default: 4 +#define TCP_RETRY_TOUT 4 + +// Default Connect Timeout in seconds <1-65535> +// If no TCP data frame has been exchanged during this time, +// the TCP connection is either closed or a keep-alive frame +// is sent to verify that the connection still exists. +// Default: 120 +#define TCP_DEFAULT_TOUT 120 + +// Maximum Segment Size <536-1440> +// The Maximum Segment Size specifies the maximum +// number of bytes in the TCP segment's Data field. +// Default: 1440 +#define TCP_MAX_SEG_SIZE 1440 + +// Receive Window Size <536-65535> +// Receive Window Size specifies the size of data, +// that the socket is able to buffer in flow-control mode. +// Default: 4320 +#define TCP_RECEIVE_WIN_SIZE 4320 + +// + +// TCP Initial Retransmit period in seconds +#define TCP_INITIAL_RETRY_TOUT 1 + +// TCP SYN frame retransmit period in seconds +#define TCP_SYN_RETRY_TOUT 2 + +// Number of retries to establish a connection +#define TCP_CONNECT_RETRY 7 + +// Dynamic port start (default 49152) +#define TCP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define TCP_DYN_PORT_END 65535 diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h.base@7.1.1 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h.base@7.1.1 new file mode 100644 index 00000000..064cf92e --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_TCP.h.base@7.1.1 @@ -0,0 +1,67 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_TCP.h + * Purpose: Network Configuration for TCP Sockets + * Rev.: V7.1.1 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// TCP Sockets +#define TCP_ENABLE 1 + +// Number of TCP Sockets <1-20> +// Number of available TCP sockets +// Default: 6 +#define TCP_NUM_SOCKS 6 + +// Number of Retries <0-20> +// How many times TCP module will try to retransmit data +// before giving up. Increase this value for high-latency +// and low throughput networks. +// Default: 5 +#define TCP_MAX_RETRY 5 + +// Retry Timeout in seconds <1-10> +// If data frame not acknowledged within this time frame, +// TCP module will try to resend the data again. +// Default: 4 +#define TCP_RETRY_TOUT 4 + +// Default Connect Timeout in seconds <1-65535> +// If no TCP data frame has been exchanged during this time, +// the TCP connection is either closed or a keep-alive frame +// is sent to verify that the connection still exists. +// Default: 120 +#define TCP_DEFAULT_TOUT 120 + +// Maximum Segment Size <536-1440> +// The Maximum Segment Size specifies the maximum +// number of bytes in the TCP segment's Data field. +// Default: 1440 +#define TCP_MAX_SEG_SIZE 1440 + +// Receive Window Size <536-65535> +// Receive Window Size specifies the size of data, +// that the socket is able to buffer in flow-control mode. +// Default: 4320 +#define TCP_RECEIVE_WIN_SIZE 4320 + +// + +// TCP Initial Retransmit period in seconds +#define TCP_INITIAL_RETRY_TOUT 1 + +// TCP SYN frame retransmit period in seconds +#define TCP_SYN_RETRY_TOUT 2 + +// Number of retries to establish a connection +#define TCP_CONNECT_RETRY 7 + +// Dynamic port start (default 49152) +#define TCP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define TCP_DYN_PORT_END 65535 diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h new file mode 100644 index 00000000..7a2163ff --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_UDP.h + * Purpose: Network Configuration for UDP Sockets + * Rev.: V5.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// UDP Sockets +#define UDP_ENABLE 1 + +// Number of UDP Sockets <1-20> +// Number of available UDP sockets +// Default: 5 +#define UDP_NUM_SOCKS 5 + +// + +// Dynamic port start (default 49152) +#define UDP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define UDP_DYN_PORT_END 65535 diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h.base@5.1.0 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h.base@5.1.0 new file mode 100644 index 00000000..7a2163ff --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Config_UDP.h.base@5.1.0 @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_UDP.h + * Purpose: Network Configuration for UDP Sockets + * Rev.: V5.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// UDP Sockets +#define UDP_ENABLE 1 + +// Number of UDP Sockets <1-20> +// Number of available UDP sockets +// Default: 5 +#define UDP_NUM_SOCKS 5 + +// + +// Dynamic port start (default 49152) +#define UDP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define UDP_DYN_PORT_END 65535 diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h b/Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h new file mode 100644 index 00000000..bbdc70a7 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h @@ -0,0 +1,166 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Debug.h + * Purpose: Network Debug Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Debug +// Enable generation of diagnostic messages +#define NET_DEBUG_ENABLE 0 + +// Output Channel <0=>Event Recorder +// <1=>STDIO +// <2=>STDIO + Timestamp +// Select output channel for delivery of diagnostic messages +#define NET_DEBUG_CHANNEL 0 + +// System +// Enable generation of system diagnostic messages +#define NET_DEBUG_SYSTEM 1 + +// Memory Management <0=>Off <1=>Errors <2=>All +// Configure Dynamic Memory Management diagnostics +#define NET_DEBUG_MEM 1 + +// ETH Interface <0=>Off <1=>Errors <2=>All +// Configure Ethernet Interface diagnostics +#define NET_DEBUG_ETH 1 + +// WiFi Interface <0=>Off <1=>Errors <2=>All +// Configure WiFi Interface diagnostics +#define NET_DEBUG_WIFI 1 + +// PPP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial PPP Interface diagnostics +#define NET_DEBUG_PPP 0 + +// SLIP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial SLIP Interface diagnostics +#define NET_DEBUG_SLIP 0 + +// Loopback Interface <0=>Off <1=>Errors <2=>All +// Configure Local Loopback Interface diagnostics +#define NET_DEBUG_LOOP 1 +// + +// IPv4 +// Enable generation of IPv4 diagnostic messages +#define NET_DEBUG_IP4 1 + +// IPv4 Core <0=>Off <1=>Errors <2=>All +// Configure IPv4 Core diagnostics +#define NET_DEBUG_CORE_IP4 1 + +// Control Message (ICMP) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message diagnostics +#define NET_DEBUG_ICMP 1 + +// Address Resolution (ARP) <0=>Off <1=>Errors <2=>All +// Configure Ethernet Address Resolution diagnostics +#define NET_DEBUG_ARP 1 + +// Group Management (IGMP) <0=>Off <1=>Errors <2=>All +// Configure Multicast Group Management diagnostics +#define NET_DEBUG_IGMP 1 + +// NBNS Client <0=>Off <1=>Errors <2=>All +// Configure NetBIOS Name Service diagnostics +#define NET_DEBUG_NBNS 1 + +// DHCP Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration diagnostics +#define NET_DEBUG_DHCP 2 +// + +// IPv6 +// Enable generation of IPv6 diagnostic messages +#define NET_DEBUG_IP6 1 + +// IPv6 Core <0=>Off <1=>Errors <2=>All +// Configure IPv6 Core diagnostics +#define NET_DEBUG_CORE_IP6 1 + +// Control Message (ICMP6) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message ver.6 diagnostics +#define NET_DEBUG_ICMP6 1 + +// Neighbor Discovery (NDP) <0=>Off <1=>Errors <2=>All +// Configure Neighbor Discovery in IPv6 diagnostics +#define NET_DEBUG_NDP6 1 + +// Multicast Listener Discovery (MLD) <0=>Off <1=>Errors <2=>All +// Configure Multicast Listener Discovery diagnostics +#define NET_DEBUG_MLD6 1 + +// DHCP6 Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration ver.6 diagnostics +#define NET_DEBUG_DHCP6 2 +// + +// Socket +// Enable generation of socket diagnostic messages +#define NET_DEBUG_SOCKET 1 + +// UDP Socket <0=>Off <1=>Errors <2=>All +// Configure UDP native socket diagnostics +#define NET_DEBUG_UDP 1 + +// TCP Socket <0=>Off <1=>Errors <2=>All +// Configure TCP native socket diagnostics +#define NET_DEBUG_TCP 1 + +// BSD Socket <0=>Off <1=>Errors <2=>All +// Configure BSD interface socket diagnostics +#define NET_DEBUG_BSD 1 +// + +// Service +// Enable generation of network service diagnostic messages +#define NET_DEBUG_SERVICE 1 + +// HTTP Server <0=>Off <1=>Errors <2=>All +// Configure HTTP server diagnostics +#define NET_DEBUG_HTTP_SERVER 2 + +// FTP Server <0=>Off <1=>Errors <2=>All +// Configure FTP Server diagnostics +#define NET_DEBUG_FTP_SERVER 1 + +// FTP Client <0=>Off <1=>Errors <2=>All +// Configure FTP client diagnostics +#define NET_DEBUG_FTP_CLIENT 1 + +// Telnet Server <0=>Off <1=>Errors <2=>All +// Configure Telnet server diagnostics +#define NET_DEBUG_TELNET_SERVER 1 + +// TFTP Server <0=>Off <1=>Errors <2=>All +// Configure TFTP server diagnostics +#define NET_DEBUG_TFTP_SERVER 1 + +// TFTP Client <0=>Off <1=>Errors <2=>All +// Configure TFTP client diagnostics +#define NET_DEBUG_TFTP_CLIENT 1 + +// SMTP Client <0=>Off <1=>Errors <2=>All +// Configure SMTP client diagnostics +#define NET_DEBUG_SMTP_CLIENT 1 + +// DNS Client <0=>Off <1=>Errors <2=>All +// Configure Domain Name Service diagnostics +#define NET_DEBUG_DNS_CLIENT 1 + +// SNMP Agent <0=>Off <1=>Errors <2=>All +// Configure Simple Network Management diagnostics +#define NET_DEBUG_SNMP_AGENT 1 + +// SNTP Client <0=>Off <1=>Errors <2=>All +// Configure Simple Network Time diagnostics +#define NET_DEBUG_SNTP_CLIENT 1 +// +// diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h.base@8.0.0 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h.base@8.0.0 new file mode 100644 index 00000000..0994f0ef --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Debug.h.base@8.0.0 @@ -0,0 +1,166 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Debug.h + * Purpose: Network Debug Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Debug +// Enable generation of diagnostic messages +#define NET_DEBUG_ENABLE 0 + +// Output Channel <0=>Event Recorder +// <1=>STDIO +// <2=>STDIO + Timestamp +// Select output channel for delivery of diagnostic messages +#define NET_DEBUG_CHANNEL 0 + +// System +// Enable generation of system diagnostic messages +#define NET_DEBUG_SYSTEM 1 + +// Memory Management <0=>Off <1=>Errors <2=>All +// Configure Dynamic Memory Management diagnostics +#define NET_DEBUG_MEM 1 + +// ETH Interface <0=>Off <1=>Errors <2=>All +// Configure Ethernet Interface diagnostics +#define NET_DEBUG_ETH 1 + +// WiFi Interface <0=>Off <1=>Errors <2=>All +// Configure WiFi Interface diagnostics +#define NET_DEBUG_WIFI 1 + +// PPP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial PPP Interface diagnostics +#define NET_DEBUG_PPP 0 + +// SLIP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial SLIP Interface diagnostics +#define NET_DEBUG_SLIP 0 + +// Loopback Interface <0=>Off <1=>Errors <2=>All +// Configure Local Loopback Interface diagnostics +#define NET_DEBUG_LOOP 1 +// + +// IPv4 +// Enable generation of IPv4 diagnostic messages +#define NET_DEBUG_IP4 1 + +// IPv4 Core <0=>Off <1=>Errors <2=>All +// Configure IPv4 Core diagnostics +#define NET_DEBUG_CORE_IP4 1 + +// Control Message (ICMP) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message diagnostics +#define NET_DEBUG_ICMP 1 + +// Address Resolution (ARP) <0=>Off <1=>Errors <2=>All +// Configure Ethernet Address Resolution diagnostics +#define NET_DEBUG_ARP 1 + +// Group Management (IGMP) <0=>Off <1=>Errors <2=>All +// Configure Multicast Group Management diagnostics +#define NET_DEBUG_IGMP 1 + +// NBNS Client <0=>Off <1=>Errors <2=>All +// Configure NetBIOS Name Service diagnostics +#define NET_DEBUG_NBNS 1 + +// DHCP Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration diagnostics +#define NET_DEBUG_DHCP 1 +// + +// IPv6 +// Enable generation of IPv6 diagnostic messages +#define NET_DEBUG_IP6 1 + +// IPv6 Core <0=>Off <1=>Errors <2=>All +// Configure IPv6 Core diagnostics +#define NET_DEBUG_CORE_IP6 1 + +// Control Message (ICMP6) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message ver.6 diagnostics +#define NET_DEBUG_ICMP6 1 + +// Neighbor Discovery (NDP) <0=>Off <1=>Errors <2=>All +// Configure Neighbor Discovery in IPv6 diagnostics +#define NET_DEBUG_NDP6 1 + +// Multicast Listener Discovery (MLD) <0=>Off <1=>Errors <2=>All +// Configure Multicast Listener Discovery diagnostics +#define NET_DEBUG_MLD6 1 + +// DHCP6 Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration ver.6 diagnostics +#define NET_DEBUG_DHCP6 1 +// + +// Socket +// Enable generation of socket diagnostic messages +#define NET_DEBUG_SOCKET 1 + +// UDP Socket <0=>Off <1=>Errors <2=>All +// Configure UDP native socket diagnostics +#define NET_DEBUG_UDP 1 + +// TCP Socket <0=>Off <1=>Errors <2=>All +// Configure TCP native socket diagnostics +#define NET_DEBUG_TCP 1 + +// BSD Socket <0=>Off <1=>Errors <2=>All +// Configure BSD interface socket diagnostics +#define NET_DEBUG_BSD 1 +// + +// Service +// Enable generation of network service diagnostic messages +#define NET_DEBUG_SERVICE 1 + +// HTTP Server <0=>Off <1=>Errors <2=>All +// Configure HTTP server diagnostics +#define NET_DEBUG_HTTP_SERVER 1 + +// FTP Server <0=>Off <1=>Errors <2=>All +// Configure FTP Server diagnostics +#define NET_DEBUG_FTP_SERVER 1 + +// FTP Client <0=>Off <1=>Errors <2=>All +// Configure FTP client diagnostics +#define NET_DEBUG_FTP_CLIENT 1 + +// Telnet Server <0=>Off <1=>Errors <2=>All +// Configure Telnet server diagnostics +#define NET_DEBUG_TELNET_SERVER 1 + +// TFTP Server <0=>Off <1=>Errors <2=>All +// Configure TFTP server diagnostics +#define NET_DEBUG_TFTP_SERVER 1 + +// TFTP Client <0=>Off <1=>Errors <2=>All +// Configure TFTP client diagnostics +#define NET_DEBUG_TFTP_CLIENT 1 + +// SMTP Client <0=>Off <1=>Errors <2=>All +// Configure SMTP client diagnostics +#define NET_DEBUG_SMTP_CLIENT 1 + +// DNS Client <0=>Off <1=>Errors <2=>All +// Configure Domain Name Service diagnostics +#define NET_DEBUG_DNS_CLIENT 1 + +// SNMP Agent <0=>Off <1=>Errors <2=>All +// Configure Simple Network Management diagnostics +#define NET_DEBUG_SNMP_AGENT 1 + +// SNTP Client <0=>Off <1=>Errors <2=>All +// Configure Simple Network Time diagnostics +#define NET_DEBUG_SNTP_CLIENT 1 +// +// diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.bat b/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.bat new file mode 100644 index 00000000..555da44f --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.bat @@ -0,0 +1,82 @@ +:: Batch file for generating and updating Net_Security.c contents +@echo off +setlocal EnableDelayedExpansion + +:: Pack Path (when toolchain root folder is not specified) +set RTEPATH=C:\Keil\ARM\PACK + +:: Pack Versions (overrides automatic selection of latest pack) +REM set MDK_MW_VER=7.1.0 +REM set mbedTLS_VER=1.1.0 + +:: Convert @K Path (replaces '/' with '\') +set KPATH=%1 +set KPATH=!KPATH:/=\! + +:: Pack Path (derived from specified toolchain root folder) +if not .%1==. ( + for /F "tokens=2 delims==" %%a in ('findstr /B /C:"RTEPATH" %KPATH%TOOLS.INI') do set RTEPATH=%%~a +) + +:: Pack Versions (latest packs if not already defined) +if not defined MDK_MW_VER ( + for /F "delims=" %%a in ('dir /B /O:N "%RTEPATH%\Keil\MDK-Middleware"') do set MDK_MW_VER=%%a +) +if not defined mbedTLS_VER ( + for /F "delims=" %%a in ('dir /B /O:N "%RTEPATH%\ARM\mbedTLS"') do set mbedTLS_VER=%%a +) + +:: Tool path +set MW_NET_TOOL_PATH=%RTEPATH%\Keil\MDK-Middleware\%MDK_MW_VER%\Network\Tool +set MBED_TLS_PRG_PATH=%RTEPATH%\ARM\mbedTLS\%mbedTLS_VER%\MDK\programs + +:: Check if tools exist +if not exist "%MW_NET_TOOL_PATH%\pem2mw.exe" ( + echo Error: pem2mw.exe not found in %MW_NET_TOOL_PATH% + pause + exit 1 +) +if not exist "%MBED_TLS_PRG_PATH%\gen_key.exe" ( + echo Error: gen_key.exe not found in %MBED_TLS_PRG_PATH% + pause + exit 1 +) +if not exist "%MBED_TLS_PRG_PATH%\cert_write.exe" ( + echo Error: cert_write.exe not found in %MBED_TLS_PRG_PATH% + pause + exit 1 +) + +echo on + +:: Generate random CA and Server Private Keys +echo | "%MBED_TLS_PRG_PATH%\gen_key" type=rsa rsa_keysize=2048 format=pem filename=ca.key +echo | "%MBED_TLS_PRG_PATH%\gen_key" type=rsa rsa_keysize=2048 format=pem filename=server.key + +:: Generate Self-signed CA Certificate +echo | "%MBED_TLS_PRG_PATH%\cert_write" ^ + selfsign=1 ^ + issuer_key=ca.key ^ + issuer_name="CN=Test CA,O=MyOrganization,C=US" ^ + not_before=20200101000000 ^ + not_after=20301231235959 ^ + is_ca=1 ^ + output_file=ca.crt ^ + san="DNS:my_host" + +:: Generate Server Certificate +echo | "%MBED_TLS_PRG_PATH%\cert_write" ^ + subject_key=server.key ^ + subject_name="CN=my_host,O=MyOrganization,C=US" ^ + issuer_key=ca.key ^ + issuer_crt=ca.crt ^ + serial=2 ^ + not_before=20200101000000 ^ + not_after=20301231235959 ^ + output_file=server.crt ^ + san="DNS:my_host" + +:: Update Net_Security.c with generated Certificates and Server Key +echo | "%MW_NET_TOOL_PATH%\pem2mw" --r=ca.crt --c=server.crt --p=server.key --o=Net_Security.c + +@pause diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c b/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c new file mode 100644 index 00000000..f748a665 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c @@ -0,0 +1,155 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Security.c + * Purpose: Network Security Credentials + * Rev.: V7.2.0 + *----------------------------------------------------------------------------*/ + +#include "rl_net.h" + + +#if defined(RTE_Network_Web_Server_RO_TLS) || \ + defined(RTE_Network_Web_Server_FS_TLS) + +// Web Server (HTTPS) + +// Server CA certificate(s) +extern const uint8_t NetSecurity_ServerCA[]; + const uint8_t NetSecurity_ServerCA[] = +//NS_SERVER_CA_START +// Issuer: :C=US, O=MyOrganization, CN=Test CA +// Subject: :C=US, O=MyOrganization, CN=Test CA +// Valid From: :1.01.2020 01:00:00 +// Valid To: :1.01.2031 00:59:59 +// Serial No: :01 +// Signature :sha256RSA +// Key Size: :2048 +// Key Exchange :RSA-PKCS1-KeyEx +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDUjCCAjqgAwIBAgIBATANBgkqhkiG9w0BAQsFADA4MRAwDgYDVQQDDAdUZXN0\r\n" +"IENBMRcwFQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwHhcNMjAw\r\n" +"MTAxMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjA4MRAwDgYDVQQDDAdUZXN0IENBMRcw\r\n" +"FQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3\r\n" +"DQEBAQUAA4IBDwAwggEKAoIBAQDJ3ix/lcTQTXRxjoDuc0pDY2/Kx1qTA6R7INQT\r\n" +"FcZ7T2Y2+pHhMBPh/yDYzvqjEQHfD/nHbaw7oigo0opjeQV1XIROgGI4JLT6G5Pi\r\n" +"1HVIb/5SxVI5/3AS6gpKr+RHXBNqlgfhcSAMR9jqaP5fojy0cNEOU6okBmHzn1Dp\r\n" +"9mVIBR8/LMl02oHSjS1myDIFJutmEu2+mL7fap6AverGEj/4uz4NPMAQpWhPO+rh\r\n" +"cEYhz0tgmC3so22Dsvb9WSns0+YVNJhT2e3IHALfCroDeRQ23QQ91Y64b07HOCO+\r\n" +"n7KkWjo6zo2mV6XPdXjxKPzoKypUut5ak724vvg/QioT3ZBPAgMBAAGjZzBlMA8G\r\n" +"A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCjnB0BpoPKCptJNs0vCPzDZ5Dg0MB8G\r\n" +"A1UdIwQYMBaAFCjnB0BpoPKCptJNs0vCPzDZ5Dg0MBIGA1UdEQQLMAmCB215X2hv\r\n" +"c3QwDQYJKoZIhvcNAQELBQADggEBALQ5/sitrGD/yKS1NDetii5pbj185JodKzHh\r\n" +"K9JJXDGYXUVVt6sl/ZNsQ3MM+Y6xmfjF3wpTj+3NOV4vF4blCrzDUvUPuMl4jIXC\r\n" +"I9VceSxJWPaMp/RCvgOlYyxtBIDQGGdqdj563DENswsw/Kj8LfVjmn7qVcRj8sVT\r\n" +"n1rg5k05UrJ8YDSK6bQW4dGrHTW6zcLCgrvHW2KrcxmsDpWjcN586og9jPfDvwOE\r\n" +"+vPtXrZNtBKwNrvRbjGJPVro1Alflnr065K039uJpvSF/sEEEMI4e8nyYPvOjmHu\r\n" +"pv1+rKQ13wYvuGf9460TsLsC+cw+m1ViJDl+a4CW14AfwAXm0Gs=\r\n" +"-----END CERTIFICATE-----\r\n" +; +//NS_SERVER_CA_END + +// Server certificate +extern const uint8_t NetSecurity_ServerCert[]; + const uint8_t NetSecurity_ServerCert[] = +//NS_SERVER_CERT_START +// Issuer: :C=US, O=MyOrganization, CN=Test CA +// Subject: :C=US, O=MyOrganization, CN=my_host +// Valid From: :1.01.2020 01:00:00 +// Valid To: :1.01.2031 00:59:59 +// Serial No: :02 +// Signature :sha256RSA +// Key Size: :2048 +// Key Exchange :RSA-PKCS1-KeyEx +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDTDCCAjSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA4MRAwDgYDVQQDDAdUZXN0\r\n" +"IENBMRcwFQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwHhcNMjAw\r\n" +"MTAxMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjA4MRAwDgYDVQQDDAdteV9ob3N0MRcw\r\n" +"FQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3\r\n" +"DQEBAQUAA4IBDwAwggEKAoIBAQDLSSC7xVIin0z13QAzJpJXMFCTEunT0n3r8onh\r\n" +"7OfAGNTWI6nbrPKGdmlvGdhm7wr40X1bvKyVl2UVuHB8FcUuZcIdoskZKczCMgo4\r\n" +"03Lze9Vf2mH/e8stwSL24s5kNomy7JHuhqXnaConi3PWMYi3jnMhI3DEypU9GDYb\r\n" +"bzihrgv6mwjjtMWH0Z2FWeQmPmXIupEozwpeen5TfnEuE7AhOLy7juViUPdod6HE\r\n" +"DLkf0sJ0ubZKCPJRxboCZmVL2H7AJJf58kBhj2DT3OrsaEmGSBaPGNwEpsaqi0Tc\r\n" +"+y8l5aDr0h5qmKpI7Ae0x1pYKKD+EzEl1j1VadNN56L2DWLFAgMBAAGjYTBfMAkG\r\n" +"A1UdEwQCMAAwHQYDVR0OBBYEFBVBouVm0owt0mTjLvnla4Tm/2svMB8GA1UdIwQY\r\n" +"MBaAFCjnB0BpoPKCptJNs0vCPzDZ5Dg0MBIGA1UdEQQLMAmCB215X2hvc3QwDQYJ\r\n" +"KoZIhvcNAQELBQADggEBAE87JMPsEHxIX4VuSfB8QTQHWQ003ypRQm2uA5mXyIda\r\n" +"blIDKmgO/dRnZCwXyRBHg2bZr7C6n3GEh87xJNSTx5BYBsDmfVE2iIsuF4ACLt/W\r\n" +"U0N3/mXEUxFi3ImISEVSecsB7zdJ3jkGGK4HtKiFNFnDCmBiLIH8G2RUcm1WCvsh\r\n" +"1r4L/lw7GfaZkd34rvYaMdq6DMw9e1YJ8AeJUYet9CyFEuJINORd5iKT3GIdeoap\r\n" +"bxJPNa2vea4vb79/88b7C8NbertLPLYs2M8+uyGajcwMmjGSrv8x2qTm5dMLOWLO\r\n" +"Vy9JQ8kD9vFPN2DfNovTIukNbRGw0nRC0qlpWVnPXBo=\r\n" +"-----END CERTIFICATE-----\r\n" +; +//NS_SERVER_CERT_END + +// Server private key +extern const uint8_t NetSecurity_ServerKey[]; + const uint8_t NetSecurity_ServerKey[] = +//NS_SERVER_KEY_START +"-----BEGIN RSA PRIVATE KEY-----\r\n" +"MIIEpAIBAAKCAQEAy0kgu8VSIp9M9d0AMyaSVzBQkxLp09J96/KJ4eznwBjU1iOp\r\n" +"26zyhnZpbxnYZu8K+NF9W7yslZdlFbhwfBXFLmXCHaLJGSnMwjIKONNy83vVX9ph\r\n" +"/3vLLcEi9uLOZDaJsuyR7oal52gqJ4tz1jGIt45zISNwxMqVPRg2G284oa4L+psI\r\n" +"47TFh9GdhVnkJj5lyLqRKM8KXnp+U35xLhOwITi8u47lYlD3aHehxAy5H9LCdLm2\r\n" +"SgjyUcW6AmZlS9h+wCSX+fJAYY9g09zq7GhJhkgWjxjcBKbGqotE3PsvJeWg69Ie\r\n" +"apiqSOwHtMdaWCig/hMxJdY9VWnTTeei9g1ixQIDAQABAoIBAERDJynGheE4awh4\r\n" +"kNOcVTHP+I6aoEhP+5bal/B0tBGuhPHvgd9RgRMj+h2jqSZPiPiqqBTBE5ccAoa7\r\n" +"q5IPYWpGI1v+SNcZUTe4w/P3FTer0qfgVl4LPNv9afdLjBDcu3qItCxLrLQ7J0Sm\r\n" +"MFyxv34b6I8tLnX2rQyZ77lgrLylcwlDer1wFnbPEqnT47AHd3Vik8jxFGMaUnp7\r\n" +"2obrwqW5Bi4OS/rcfEzvS22y0s7BDgjgO8pIOUXDegRS9fLt9rEalZDFzCBeZ8bm\r\n" +"yIN8eMSjnxp1Usg0NHBImypTZourb9d3M5Ia8u5vjbs6ZdxPH/XUWvtVzgg67fBc\r\n" +"C+V0mzUCgYEA5zdGbYbXgK9sFupKwzoB3uhKOLLahvKVt+TalVdYL6yatyoPobt2\r\n" +"DctwaLr1TuuP1F9BIEu8LfnG3wn62DSdhFQsrBt7UQ4kCbOHbbyTjAlkBGQFJp8J\r\n" +"YMKPKs+WLATXPRiHU5NuGBbsf0MF9B3zU4bSPX7nHCHuEBD0DywYPycCgYEA4RNt\r\n" +"UIrcpFPQGUh47u0zPQLTF97EWa5smlu4tFBKWCGQWsDfFQO8jKbiwwWxGYZgxS8q\r\n" +"Gq5fJtlpbLrfOSChbnTvG48LT4aqp7yxlHjoVph9nQy476WtEkjxRzYLTXj/1N9p\r\n" +"sy0UP2C+hB6ai5JWYfyDihDmBF0DMyQUvTIBgjMCgYEAjLnH08HOSDR8xTW0az5T\r\n" +"BSi8g+XXu2rKVTKlF2Ah/GJBiFnBSd6e66Z2tEeWJoKY99lB+jYeQp1TvUyFsDHV\r\n" +"7USOK/JOC/dfV8g9FT1BUGomxcVanTcOriW8nYHbFM+dcUIMm4GP8HmDV7GjXgEc\r\n" +"qCnWrDcg0q6UBpNK+DEOUOECgYEAjJvEWOLHQGmTwZfC5RCOR/kxwuHKLHSJKE1Q\r\n" +"sGTQbQpa0jdXphs1eXDwjQFLSDTo04bJeO2iR/TepayAs4GtGAI5NjBA0qfAiRWa\r\n" +"orR+AUs2fhxqlFweKSQkh2Y93WJQAL6pm+P3mDhqDMPJrJP5HzHPQzuXVvZ8f0B1\r\n" +"LFTHGH0CgYAXFoowvsSO7WfxOAzNOczJk0h/ElZHhzSMG6ucOualSqFvpZrh1PNO\r\n" +"JkPwjqgJ+TPE1WsswYIhsIt0pNW9vEm97sw22LlHBsN6obnX4Mxx+nV83/CpMiVl\r\n" +"6A9XBJ+eis/Thz3Wt3Bkq1KnaABoWdUgxmh7QMQmsqpWrzWxNkhOTQ==\r\n" +"-----END RSA PRIVATE KEY-----\r\n" +; +//NS_SERVER_KEY_END + +extern const uint32_t NetSecurity_ServerCA_Len; + const uint32_t NetSecurity_ServerCA_Len = sizeof(NetSecurity_ServerCA); +extern const uint32_t NetSecurity_ServerCert_Len; + const uint32_t NetSecurity_ServerCert_Len = sizeof(NetSecurity_ServerCert); +extern const uint32_t NetSecurity_ServerKey_Len; + const uint32_t NetSecurity_ServerKey_Len = sizeof(NetSecurity_ServerKey); + +#endif + + +#if defined(RTE_Network_SMTP_Client_TLS) && \ + !defined(SMTPS_SERVER_VERIFY_NONE) + +// Email Client (SMTPS) + +// Email Server root CA certificate +extern const uint8_t NetSecurity_EmailServerCA[]; + const uint8_t NetSecurity_EmailServerCA[] = +"-----BEGIN CERTIFICATE-----\r\n" +#error "Email Server CA certificate is missing!" +/* + This certificate is used to verify the identity of the email server. It must + be PEM-encoded. Provide a certificate or disable server verification with + the following SMTPS_SERVER_VERIFY_NONE macro definition. +*/ +/* +"...base64 data...\n" +*/ +"-----END CERTIFICATE-----\r\n"; + +extern const uint32_t NetSecurity_EmailServerCA_Len; + const uint32_t NetSecurity_EmailServerCA_Len = sizeof(NetSecurity_EmailServerCA); + +#endif diff --git a/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c.base@7.2.0 b/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c.base@7.2.0 new file mode 100644 index 00000000..7265b139 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/Net_Security.c.base@7.2.0 @@ -0,0 +1,167 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Security.c + * Purpose: Network Security Credentials + * Rev.: V7.2.0 + *----------------------------------------------------------------------------*/ + +#include "rl_net.h" + + +#if defined(RTE_Network_Web_Server_RO_TLS) || \ + defined(RTE_Network_Web_Server_FS_TLS) + +// Web Server (HTTPS) + +// Server CA certificate(s) +extern const uint8_t NetSecurity_ServerCA[]; + const uint8_t NetSecurity_ServerCA[] = +//NS_SERVER_CA_START +#warning "Using a test Server CA certificate!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +// Issuer: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Subject: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Valid To: Feb 12 14:44:00 2021 GMT +// Serial No: 0 +// CA Cert: Yes +// Key Size: 2048-bit (RSA) +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" +"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" +"MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" +"A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" +"CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" +"mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" +"50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" +"YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" +"R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" +"KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" +"gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH\r\n" +"/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV\r\n" +"BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz\r\n" +"dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ\r\n" +"SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H\r\n" +"DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF\r\n" +"pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf\r\n" +"m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ\r\n" +"7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==\r\n" +"-----END CERTIFICATE-----\r\n"; +//NS_SERVER_CA_END + +// Server certificate +extern const uint8_t NetSecurity_ServerCert[]; + const uint8_t NetSecurity_ServerCert[] = +//NS_SERVER_CERT_START +#warning "Using a test Server certificate!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +// Issuer: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Subject: CN="localhost", O="PolarSSL", C="NL" +// Valid To: Feb 12 14:44:06 2021 GMT +// Serial No: 2 +// CA Cert: No +// Key Size: 2048-bit (RSA) +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" +"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" +"MTEwMjEyMTQ0NDA2WhcNMjEwMjEyMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" +"A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN\r\n" +"AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN\r\n" +"owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz\r\n" +"NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM\r\n" +"tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P\r\n" +"hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya\r\n" +"HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD\r\n" +"VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw\r\n" +"FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQEFBQADggEBAJxnXClY\r\n" +"oHkbp70cqBrsGXLybA74czbO5RdLEgFs7rHVS9r+c293luS/KdliLScZqAzYVylw\r\n" +"UfRWvKMoWhHYKp3dEIS4xTXk6/5zXxhv9Rw8SGc8qn6vITHk1S1mPevtekgasY5Y\r\n" +"iWQuM3h4YVlRH3HHEMAD1TnAexfXHHDFQGe+Bd1iAbz1/sH9H8l4StwX6egvTK3M\r\n" +"wXRwkKkvjKaEDA9ATbZx0mI8LGsxSuCqe9r9dyjmttd47J1p1Rulz3CLzaRcVIuS\r\n" +"RRQfaD8neM9c1S/iJ/amTVqJxA1KOdOS5780WhPfSArA+g4qAmSjelc3p4wWpha8\r\n" +"zhuYwjVuX6JHG0c=\r\n" +"-----END CERTIFICATE-----\r\n"; +//NS_SERVER_CERT_END + +// Server private key +extern const uint8_t NetSecurity_ServerKey[]; + const uint8_t NetSecurity_ServerKey[] = +//NS_SERVER_KEY_START +#warning "Using a test Server private key!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +"-----BEGIN RSA PRIVATE KEY-----\r\n" +"MIIEpAIBAAKCAQEAwU2j3efNHdEE10lyuJmsDnjkOjxKzzoTFtBa5M2jAIin7h5r\r\n" +"lqdStJDvLXJ6PiSa/LY0rCT1d+AmZIycsCh9odrqjObJHJa8/sEEUrM21KP64bF2\r\n" +"2JDBYbRmUjaiJlOqq3ReB30Zgtsq2B+g2Q0cLUlm91slc0boC4pPaQy1AJDh2oIQ\r\n" +"Zn2uVCuLZXmRoeJhw81ASQjuaAzxi4bSRr/QuKoRAx5/VqgaHkQYDw+Fi9qLRF7i\r\n" +"GMZiL8dmjfpd2H3zJ4kpAcWQDj8n8TDISg7v1t7HxydrxwU9esQCPJodPg/oNJhb\r\n" +"y3NLUpbYEaIsgIhpOVrTD7DeWS8Rx/fqEgEwlwIDAQABAoIBAQCXR0S8EIHFGORZ\r\n" +"++AtOg6eENxD+xVs0f1IeGz57Tjo3QnXX7VBZNdj+p1ECvhCE/G7XnkgU5hLZX+G\r\n" +"Z0jkz/tqJOI0vRSdLBbipHnWouyBQ4e/A1yIJdlBtqXxJ1KE/ituHRbNc4j4kL8Z\r\n" +"/r6pvwnTI0PSx2Eqs048YdS92LT6qAv4flbNDxMn2uY7s4ycS4Q8w1JXnCeaAnYm\r\n" +"WYI5wxO+bvRELR2Mcz5DmVnL8jRyml6l6582bSv5oufReFIbyPZbQWlXgYnpu6He\r\n" +"GTc7E1zKYQGG/9+DQUl/1vQuCPqQwny0tQoX2w5tdYpdMdVm+zkLtbajzdTviJJa\r\n" +"TWzL6lt5AoGBAN86+SVeJDcmQJcv4Eq6UhtRr4QGMiQMz0Sod6ettYxYzMgxtw28\r\n" +"CIrgpozCc+UaZJLo7UxvC6an85r1b2nKPCLQFaggJ0H4Q0J/sZOhBIXaoBzWxveK\r\n" +"nupceKdVxGsFi8CDy86DBfiyFivfBj+47BbaQzPBj7C4rK7UlLjab2rDAoGBAN2u\r\n" +"AM2gchoFiu4v1HFL8D7lweEpi6ZnMJjnEu/dEgGQJFjwdpLnPbsj4c75odQ4Gz8g\r\n" +"sw9lao9VVzbusoRE/JGI4aTdO0pATXyG7eG1Qu+5Yc1YGXcCrliA2xM9xx+d7f+s\r\n" +"mPzN+WIEg5GJDYZDjAzHG5BNvi/FfM1C9dOtjv2dAoGAF0t5KmwbjWHBhcVqO4Ic\r\n" +"BVvN3BIlc1ue2YRXEDlxY5b0r8N4XceMgKmW18OHApZxfl8uPDauWZLXOgl4uepv\r\n" +"whZC3EuWrSyyICNhLY21Ah7hbIEBPF3L3ZsOwC+UErL+dXWLdB56Jgy3gZaBeW7b\r\n" +"vDrEnocJbqCm7IukhXHOBK8CgYEAwqdHB0hqyNSzIOGY7v9abzB6pUdA3BZiQvEs\r\n" +"3LjHVd4HPJ2x0N8CgrBIWOE0q8+0hSMmeE96WW/7jD3fPWwCR5zlXknxBQsfv0gP\r\n" +"3BC5PR0Qdypz+d+9zfMf625kyit4T/hzwhDveZUzHnk1Cf+IG7Q+TOEnLnWAWBED\r\n" +"ISOWmrUCgYAFEmRxgwAc/u+D6t0syCwAYh6POtscq9Y0i9GyWk89NzgC4NdwwbBH\r\n" +"4AgahOxIxXx2gxJnq3yfkJfIjwf0s2DyP0kY2y6Ua1OeomPeY9mrIS4tCuDQ6LrE\r\n" +"TB6l9VGoxJL4fyHnZb8L5gGvnB1bbD8cL6YPaDiOhcRseC9vBiEuVg==\r\n" +"-----END RSA PRIVATE KEY-----\r\n"; +//NS_SERVER_KEY_END + +extern const uint32_t NetSecurity_ServerCA_Len; + const uint32_t NetSecurity_ServerCA_Len = sizeof(NetSecurity_ServerCA); +extern const uint32_t NetSecurity_ServerCert_Len; + const uint32_t NetSecurity_ServerCert_Len = sizeof(NetSecurity_ServerCert); +extern const uint32_t NetSecurity_ServerKey_Len; + const uint32_t NetSecurity_ServerKey_Len = sizeof(NetSecurity_ServerKey); + +#endif + + +#if defined(RTE_Network_SMTP_Client_TLS) && \ + !defined(SMTPS_SERVER_VERIFY_NONE) + +// Email Client (SMTPS) + +// Email Server root CA certificate +extern const uint8_t NetSecurity_EmailServerCA[]; + const uint8_t NetSecurity_EmailServerCA[] = +"-----BEGIN CERTIFICATE-----\r\n" +#error "Email Server CA certificate is missing!" +/* + This certificate is used to verify the identity of the email server. It must + be PEM-encoded. Provide a certificate or disable server verification with + the following SMTPS_SERVER_VERIFY_NONE macro definition. +*/ +/* +"...base64 data...\n" +*/ +"-----END CERTIFICATE-----\r\n"; + +extern const uint32_t NetSecurity_EmailServerCA_Len; + const uint32_t NetSecurity_EmailServerCA_Len = sizeof(NetSecurity_EmailServerCA); + +#endif diff --git a/Examples/Network/HTTPS_Server/RTE/Network/ca.crt b/Examples/Network/HTTPS_Server/RTE/Network/ca.crt new file mode 100644 index 00000000..8347d323 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/ca.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUjCCAjqgAwIBAgIBATANBgkqhkiG9w0BAQsFADA4MRAwDgYDVQQDDAdUZXN0 +IENBMRcwFQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwHhcNMjAw +MTAxMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjA4MRAwDgYDVQQDDAdUZXN0IENBMRcw +FQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDJ3ix/lcTQTXRxjoDuc0pDY2/Kx1qTA6R7INQT +FcZ7T2Y2+pHhMBPh/yDYzvqjEQHfD/nHbaw7oigo0opjeQV1XIROgGI4JLT6G5Pi +1HVIb/5SxVI5/3AS6gpKr+RHXBNqlgfhcSAMR9jqaP5fojy0cNEOU6okBmHzn1Dp +9mVIBR8/LMl02oHSjS1myDIFJutmEu2+mL7fap6AverGEj/4uz4NPMAQpWhPO+rh +cEYhz0tgmC3so22Dsvb9WSns0+YVNJhT2e3IHALfCroDeRQ23QQ91Y64b07HOCO+ +n7KkWjo6zo2mV6XPdXjxKPzoKypUut5ak724vvg/QioT3ZBPAgMBAAGjZzBlMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCjnB0BpoPKCptJNs0vCPzDZ5Dg0MB8G +A1UdIwQYMBaAFCjnB0BpoPKCptJNs0vCPzDZ5Dg0MBIGA1UdEQQLMAmCB215X2hv +c3QwDQYJKoZIhvcNAQELBQADggEBALQ5/sitrGD/yKS1NDetii5pbj185JodKzHh +K9JJXDGYXUVVt6sl/ZNsQ3MM+Y6xmfjF3wpTj+3NOV4vF4blCrzDUvUPuMl4jIXC +I9VceSxJWPaMp/RCvgOlYyxtBIDQGGdqdj563DENswsw/Kj8LfVjmn7qVcRj8sVT +n1rg5k05UrJ8YDSK6bQW4dGrHTW6zcLCgrvHW2KrcxmsDpWjcN586og9jPfDvwOE ++vPtXrZNtBKwNrvRbjGJPVro1Alflnr065K039uJpvSF/sEEEMI4e8nyYPvOjmHu +pv1+rKQ13wYvuGf9460TsLsC+cw+m1ViJDl+a4CW14AfwAXm0Gs= +-----END CERTIFICATE----- diff --git a/Examples/Network/HTTPS_Server/RTE/Network/ca.key b/Examples/Network/HTTPS_Server/RTE/Network/ca.key new file mode 100644 index 00000000..0abf58c8 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/ca.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpQIBAAKCAQEAyd4sf5XE0E10cY6A7nNKQ2NvysdakwOkeyDUExXGe09mNvqR +4TAT4f8g2M76oxEB3w/5x22sO6IoKNKKY3kFdVyEToBiOCS0+huT4tR1SG/+UsVS +Of9wEuoKSq/kR1wTapYH4XEgDEfY6mj+X6I8tHDRDlOqJAZh859Q6fZlSAUfPyzJ +dNqB0o0tZsgyBSbrZhLtvpi+32qegL3qxhI/+Ls+DTzAEKVoTzvq4XBGIc9LYJgt +7KNtg7L2/Vkp7NPmFTSYU9ntyBwC3wq6A3kUNt0EPdWOuG9Oxzgjvp+ypFo6Os6N +plelz3V48Sj86CsqVLreWpO9uL74P0IqE92QTwIDAQABAoIBAAaNyTYPNBkOGrS1 +efk4QTApRR5WWsK4aUgGdF8ZKW5qLiS8FPN6aO81VKM4QuQqD6U4O3htENbkQSMq +J9INTeZV/xDvNkzEg5eqEhdY6wewkyLxt3ERVJ+HIGjGtguc38KvfHemRzgtZVc2 +N2+hDctPBIqJiQR8w9WJG5wKC5bWq3xYlpKptH+fGh+BF0ylomjt+s3E6CowLk5D +NZsQE4MPAQ8RF+01ILuddvfO/8KlD07OLxV14hbRLrngsuAqfFEaF1CBwnFl1bbF +VRWTzXZKlszG7Gxqqk0/hx+r42c82Fer149PceKDReyafsidbcVVtc/hKlFP4eyd +pEr+bLkCgYEA8riHbEa2U2+Ws9ODgg6rCn7ShaPIS8THeo6vd2F8C1GeBxPjSFe6 +wZL1fqIUS5R6nddGgKKvJwtUE+lzEz5dNC0ODBTMF3SVDFG541y+JgTDfWsWD4wu +focnJS8vYvRoMW9dO4ree9qBzeXSbK3448DgmqWoLYGVYRgcQxDVY4MCgYEA1Ol4 +qO1mUFTFEQ6T222xP5FrVkBo2rqEiuTNrot3GxuP1EBk7mqSwxWdCPb3Oj3/mSG2 +HxXLrzme1HJUJFZWesk5V/fUM2vO/0XuDfEkmJtWX6/3V9URZica2S8CY1PRqkYA +MhtUnnX3aTaflN+jbMdupr5UVcLNt450EzvM6kUCgYEA0G7kZHgI5HekK8LMYOhl +uzqTYI34WBCg2L8lMVh2pGWvVhafDCXCS67+wINA+HKGJXuToK2Tyeyxg/PqjTD1 +6vNx57AIX3AO+qhIAFZJN+7JTa+jHzDbUG6RkB4IDGsj+qfOoW4shqFq7LyaShfP +7w1YE5WEaaeo9ts0kecnyC8CgYEAjAEGhdat+87yUzgJxDXKYymlsm7iREp4E7lH +AyrUZG/oUUMS27Aa18ujmpyDj7nrFHAViTVU3eF+7uZLLCXV8iHV4mGmGTYgRL5g +Pqy+SteCoaNde1UxfsHiJsSBxnz8lwI26LwOFbEuwvHXWBcDKOmvelgXrtlNWxGC +hI9DPR0CgYEAvotaQAyV9VQtEsELbHMeqpY2IaPo8GUUjnhWLOtJ13hEloLb3Oer +K1pY5lys3RLnf7VG5r0VZigjX3tI7OGdP91MOxIBRgQxpaHj9/asCKsvodR+iNNH +EwCx8ZUS53T5hW4X0WKXtkh40uC8p5ToUyy0o/JjzDpyjri1hn6nuMI= +-----END RSA PRIVATE KEY----- diff --git a/Examples/Network/HTTPS_Server/RTE/Network/server.crt b/Examples/Network/HTTPS_Server/RTE/Network/server.crt new file mode 100644 index 00000000..f25a0ec9 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/server.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA4MRAwDgYDVQQDDAdUZXN0 +IENBMRcwFQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwHhcNMjAw +MTAxMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjA4MRAwDgYDVQQDDAdteV9ob3N0MRcw +FQYDVQQKDA5NeU9yZ2FuaXphdGlvbjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDLSSC7xVIin0z13QAzJpJXMFCTEunT0n3r8onh +7OfAGNTWI6nbrPKGdmlvGdhm7wr40X1bvKyVl2UVuHB8FcUuZcIdoskZKczCMgo4 +03Lze9Vf2mH/e8stwSL24s5kNomy7JHuhqXnaConi3PWMYi3jnMhI3DEypU9GDYb +bzihrgv6mwjjtMWH0Z2FWeQmPmXIupEozwpeen5TfnEuE7AhOLy7juViUPdod6HE +DLkf0sJ0ubZKCPJRxboCZmVL2H7AJJf58kBhj2DT3OrsaEmGSBaPGNwEpsaqi0Tc ++y8l5aDr0h5qmKpI7Ae0x1pYKKD+EzEl1j1VadNN56L2DWLFAgMBAAGjYTBfMAkG +A1UdEwQCMAAwHQYDVR0OBBYEFBVBouVm0owt0mTjLvnla4Tm/2svMB8GA1UdIwQY +MBaAFCjnB0BpoPKCptJNs0vCPzDZ5Dg0MBIGA1UdEQQLMAmCB215X2hvc3QwDQYJ +KoZIhvcNAQELBQADggEBAE87JMPsEHxIX4VuSfB8QTQHWQ003ypRQm2uA5mXyIda +blIDKmgO/dRnZCwXyRBHg2bZr7C6n3GEh87xJNSTx5BYBsDmfVE2iIsuF4ACLt/W +U0N3/mXEUxFi3ImISEVSecsB7zdJ3jkGGK4HtKiFNFnDCmBiLIH8G2RUcm1WCvsh +1r4L/lw7GfaZkd34rvYaMdq6DMw9e1YJ8AeJUYet9CyFEuJINORd5iKT3GIdeoap +bxJPNa2vea4vb79/88b7C8NbertLPLYs2M8+uyGajcwMmjGSrv8x2qTm5dMLOWLO +Vy9JQ8kD9vFPN2DfNovTIukNbRGw0nRC0qlpWVnPXBo= +-----END CERTIFICATE----- diff --git a/Examples/Network/HTTPS_Server/RTE/Network/server.key b/Examples/Network/HTTPS_Server/RTE/Network/server.key new file mode 100644 index 00000000..ce16ad5d --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Network/server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAy0kgu8VSIp9M9d0AMyaSVzBQkxLp09J96/KJ4eznwBjU1iOp +26zyhnZpbxnYZu8K+NF9W7yslZdlFbhwfBXFLmXCHaLJGSnMwjIKONNy83vVX9ph +/3vLLcEi9uLOZDaJsuyR7oal52gqJ4tz1jGIt45zISNwxMqVPRg2G284oa4L+psI +47TFh9GdhVnkJj5lyLqRKM8KXnp+U35xLhOwITi8u47lYlD3aHehxAy5H9LCdLm2 +SgjyUcW6AmZlS9h+wCSX+fJAYY9g09zq7GhJhkgWjxjcBKbGqotE3PsvJeWg69Ie +apiqSOwHtMdaWCig/hMxJdY9VWnTTeei9g1ixQIDAQABAoIBAERDJynGheE4awh4 +kNOcVTHP+I6aoEhP+5bal/B0tBGuhPHvgd9RgRMj+h2jqSZPiPiqqBTBE5ccAoa7 +q5IPYWpGI1v+SNcZUTe4w/P3FTer0qfgVl4LPNv9afdLjBDcu3qItCxLrLQ7J0Sm +MFyxv34b6I8tLnX2rQyZ77lgrLylcwlDer1wFnbPEqnT47AHd3Vik8jxFGMaUnp7 +2obrwqW5Bi4OS/rcfEzvS22y0s7BDgjgO8pIOUXDegRS9fLt9rEalZDFzCBeZ8bm +yIN8eMSjnxp1Usg0NHBImypTZourb9d3M5Ia8u5vjbs6ZdxPH/XUWvtVzgg67fBc +C+V0mzUCgYEA5zdGbYbXgK9sFupKwzoB3uhKOLLahvKVt+TalVdYL6yatyoPobt2 +DctwaLr1TuuP1F9BIEu8LfnG3wn62DSdhFQsrBt7UQ4kCbOHbbyTjAlkBGQFJp8J +YMKPKs+WLATXPRiHU5NuGBbsf0MF9B3zU4bSPX7nHCHuEBD0DywYPycCgYEA4RNt +UIrcpFPQGUh47u0zPQLTF97EWa5smlu4tFBKWCGQWsDfFQO8jKbiwwWxGYZgxS8q +Gq5fJtlpbLrfOSChbnTvG48LT4aqp7yxlHjoVph9nQy476WtEkjxRzYLTXj/1N9p +sy0UP2C+hB6ai5JWYfyDihDmBF0DMyQUvTIBgjMCgYEAjLnH08HOSDR8xTW0az5T +BSi8g+XXu2rKVTKlF2Ah/GJBiFnBSd6e66Z2tEeWJoKY99lB+jYeQp1TvUyFsDHV +7USOK/JOC/dfV8g9FT1BUGomxcVanTcOriW8nYHbFM+dcUIMm4GP8HmDV7GjXgEc +qCnWrDcg0q6UBpNK+DEOUOECgYEAjJvEWOLHQGmTwZfC5RCOR/kxwuHKLHSJKE1Q +sGTQbQpa0jdXphs1eXDwjQFLSDTo04bJeO2iR/TepayAs4GtGAI5NjBA0qfAiRWa +orR+AUs2fhxqlFweKSQkh2Y93WJQAL6pm+P3mDhqDMPJrJP5HzHPQzuXVvZ8f0B1 +LFTHGH0CgYAXFoowvsSO7WfxOAzNOczJk0h/ElZHhzSMG6ucOualSqFvpZrh1PNO +JkPwjqgJ+TPE1WsswYIhsIt0pNW9vEm97sw22LlHBsN6obnX4Mxx+nV83/CpMiVl +6A9XBJ+eis/Thz3Wt3Bkq1KnaABoWdUgxmh7QMQmsqpWrzWxNkhOTQ== +-----END RSA PRIVATE KEY----- diff --git a/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h new file mode 100644 index 00000000..e15e1e2c --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h @@ -0,0 +1,86 @@ +/** + * Configuration template for HTTPS + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +#define MBEDTLS_CONFIG_VERSION 0x03060000 + +/* System support */ + +/* mbed TLS feature support */ +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_AES_ROM_TABLES +#define MBEDTLS_CIPHER_MODE_CBC +#define MBEDTLS_CIPHER_MODE_CFB +#define MBEDTLS_CIPHER_MODE_CTR +#define MBEDTLS_CIPHER_PADDING_PKCS7 +#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS +#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN +#define MBEDTLS_CIPHER_PADDING_ZEROS +#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED +#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED +#define MBEDTLS_GENPRIME +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_PK_RSA_ALT_SUPPORT +#define MBEDTLS_PKCS1_V15 +#define MBEDTLS_PKCS1_V21 +#define MBEDTLS_SSL_ALL_ALERT_MESSAGES +#define MBEDTLS_SSL_ENCRYPT_THEN_MAC +#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET +#define MBEDTLS_SSL_RENEGOTIATION +#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#define MBEDTLS_SSL_PROTO_TLS1_2 +#define MBEDTLS_SSL_ALPN +#define MBEDTLS_SSL_SESSION_TICKETS +#define MBEDTLS_SSL_SERVER_NAME_INDICATION +#define MBEDTLS_X509_RSASSA_PSS_SUPPORT + +/* mbed TLS modules */ +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_CAMELLIA_C +#define MBEDTLS_CCM_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_CTR_DRBG_C +//#define MBEDTLS_DEBUG_C +#define MBEDTLS_DES_C +#define MBEDTLS_DHM_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_GCM_C +#define MBEDTLS_HMAC_DRBG_C +#define MBEDTLS_MD_C +#define MBEDTLS_MD5_C +#define MBEDTLS_OID_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PKCS5_C +#define MBEDTLS_PKCS12_C +#define MBEDTLS_PLATFORM_C +#define MBEDTLS_RIPEMD160_C +#define MBEDTLS_RSA_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_SSL_CACHE_C +#define MBEDTLS_SSL_COOKIE_C +#define MBEDTLS_SSL_TICKET_C +#define MBEDTLS_SSL_SRV_C +#define MBEDTLS_SSL_TLS_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CSR_PARSE_C + +/* SSL options */ +#define MBEDTLS_SSL_IN_CONTENT_LEN 4096 /**< Maximum length (in bytes) of incoming plaintext fragments. */ +#define MBEDTLS_SSL_OUT_CONTENT_LEN 4096 /**< Maximum length (in bytes) of outgoing plaintext fragments. */ diff --git a/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h.base@3.6.0 b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h.base@3.6.0 new file mode 100644 index 00000000..f45ac4f8 --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_config.h.base@3.6.0 @@ -0,0 +1,190 @@ +/** + * Configuration template + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +#define MBEDTLS_CONFIG_VERSION 0x03060000 + +/* System support */ +//#define MBEDTLS_HAVE_ASM +//#define MBEDTLS_HAVE_TIME +//#define MBEDTLS_HAVE_TIME_DATE +//#define MBEDTLS_PLATFORM_MEMORY +//#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS + +/* mbed TLS feature support */ +//#define MBEDTLS_AES_ROM_TABLES +//#define MBEDTLS_AES_FEWER_TABLES +//#define MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH +//#define MBEDTLS_BLOCK_CIPHER_NO_DECRYPT +//#define MBEDTLS_CAMELLIA_SMALL_MEMORY +//#define MBEDTLS_CHECK_RETURN_WARNING +//#define MBEDTLS_CIPHER_MODE_CBC +//#define MBEDTLS_CIPHER_MODE_CFB +//#define MBEDTLS_CIPHER_MODE_CTR +//#define MBEDTLS_CIPHER_MODE_OFB +//#define MBEDTLS_CIPHER_MODE_XTS +//#define MBEDTLS_CIPHER_PADDING_PKCS7 +//#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS +//#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN +//#define MBEDTLS_CIPHER_PADDING_ZEROS +//#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP224R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP192K1_ENABLED +//#define MBEDTLS_ECP_DP_SECP224K1_ENABLED +//#define MBEDTLS_ECP_DP_SECP256K1_ENABLED +//#define MBEDTLS_ECP_DP_BP256R1_ENABLED +//#define MBEDTLS_ECP_DP_BP384R1_ENABLED +//#define MBEDTLS_ECP_DP_BP512R1_ENABLED +//#define MBEDTLS_ECP_DP_CURVE25519_ENABLED +//#define MBEDTLS_ECP_DP_CURVE448_ENABLED +//#define MBEDTLS_ECP_NIST_OPTIM +//#define MBEDTLS_ECP_RESTARTABLE +//#define MBEDTLS_ECDSA_DETERMINISTIC +//#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED +//#define MBEDTLS_PK_PARSE_EC_EXTENDED +//#define MBEDTLS_ERROR_STRERROR_DUMMY +//#define MBEDTLS_GCM_LARGE_TABLE +//#define MBEDTLS_GENPRIME +//#define MBEDTLS_FS_IO +//#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES +//#define MBEDTLS_NO_PLATFORM_ENTROPY +//#define MBEDTLS_ENTROPY_FORCE_SHA256 +//#define MBEDTLS_ENTROPY_NV_SEED +//#define MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER +//#define MBEDTLS_MEMORY_DEBUG +//#define MBEDTLS_MEMORY_BACKTRACE +//#define MBEDTLS_PK_RSA_ALT_SUPPORT +//#define MBEDTLS_PKCS1_V15 +//#define MBEDTLS_PKCS1_V21 +//#define MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS +//#define MBEDTLS_PSA_CRYPTO_CLIENT +//#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +//#define MBEDTLS_PSA_CRYPTO_SPM +//#define MBEDTLS_PSA_P256M_DRIVER_ENABLED +//#define MBEDTLS_PSA_INJECT_ENTROPY +//#define MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS +//#define MBEDTLS_RSA_NO_CRT +//#define MBEDTLS_SELF_TEST +//#define MBEDTLS_SHA256_SMALLER +//#define MBEDTLS_SHA512_SMALLER +//#define MBEDTLS_SSL_ALL_ALERT_MESSAGES +//#define MBEDTLS_SSL_DTLS_CONNECTION_ID +//#define MBEDTLS_SSL_ASYNC_PRIVATE +//#define MBEDTLS_SSL_CONTEXT_SERIALIZATION +//#define MBEDTLS_SSL_DEBUG_ALL +//#define MBEDTLS_SSL_ENCRYPT_THEN_MAC +//#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET +//#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE +//#define MBEDTLS_SSL_RENEGOTIATION +//#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +//#define MBEDTLS_SSL_PROTO_TLS1_2 +//#define MBEDTLS_SSL_PROTO_TLS1_3 +//#define MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE +//#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED +//#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED +//#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED +//#define MBEDTLS_SSL_EARLY_DATA +//#define MBEDTLS_SSL_PROTO_DTLS +//#define MBEDTLS_SSL_ALPN +//#define MBEDTLS_SSL_DTLS_ANTI_REPLAY +//#define MBEDTLS_SSL_DTLS_HELLO_VERIFY +//#define MBEDTLS_SSL_DTLS_SRTP +//#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE +//#define MBEDTLS_SSL_SESSION_TICKETS +//#define MBEDTLS_SSL_SERVER_NAME_INDICATION +//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH +//#define MBEDTLS_USE_PSA_CRYPTO +//#define MBEDTLS_PSA_CRYPTO_CONFIG +//#define MBEDTLS_VERSION_FEATURES +//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK +//#define MBEDTLS_X509_RSASSA_PSS_SUPPORT + +/* mbed TLS modules */ +//#define MBEDTLS_AESCE_C +//#define MBEDTLS_AES_C +//#define MBEDTLS_ASN1_PARSE_C +//#define MBEDTLS_ASN1_WRITE_C +//#define MBEDTLS_BASE64_C +//#define MBEDTLS_BIGNUM_C +//#define MBEDTLS_CAMELLIA_C +//#define MBEDTLS_ARIA_C +//#define MBEDTLS_CCM_C +//#define MBEDTLS_CHACHA20_C +//#define MBEDTLS_CHACHAPOLY_C +//#define MBEDTLS_CIPHER_C +//#define MBEDTLS_CMAC_C +//#define MBEDTLS_CTR_DRBG_C +//#define MBEDTLS_DEBUG_C +//#define MBEDTLS_DES_C +//#define MBEDTLS_DHM_C +//#define MBEDTLS_ECDH_C +//#define MBEDTLS_ECDSA_C +//#define MBEDTLS_ECJPAKE_C +//#define MBEDTLS_ECP_C +//#define MBEDTLS_ENTROPY_C +//#define MBEDTLS_ERROR_C +//#define MBEDTLS_GCM_C +//#define MBEDTLS_HKDF_C +//#define MBEDTLS_HMAC_DRBG_C +//#define MBEDTLS_LMS_C +//#define MBEDTLS_NIST_KW_C +//#define MBEDTLS_MD_C +//#define MBEDTLS_MD5_C +//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C +//#define MBEDTLS_NET_C +//#define MBEDTLS_OID_C +//#define MBEDTLS_PEM_PARSE_C +//#define MBEDTLS_PEM_WRITE_C +//#define MBEDTLS_PK_C +//#define MBEDTLS_PK_PARSE_C +//#define MBEDTLS_PK_WRITE_C +//#define MBEDTLS_PKCS5_C +//#define MBEDTLS_PKCS7_C +//#define MBEDTLS_PKCS12_C +//#define MBEDTLS_PLATFORM_C +//#define MBEDTLS_POLY1305_C +//#define MBEDTLS_PSA_CRYPTO_C +//#define MBEDTLS_PSA_CRYPTO_SE_C +//#define MBEDTLS_PSA_CRYPTO_STORAGE_C +//#define MBEDTLS_PSA_ITS_FILE_C +//#define MBEDTLS_RIPEMD160_C +//#define MBEDTLS_RSA_C +//#define MBEDTLS_SHA1_C +//#define MBEDTLS_SHA224_C +//#define MBEDTLS_SHA256_C +//#define MBEDTLS_SHA384_C +//#define MBEDTLS_SHA512_C +//#define MBEDTLS_SHA3_C +//#define MBEDTLS_SSL_CACHE_C +//#define MBEDTLS_SSL_COOKIE_C +//#define MBEDTLS_SSL_TICKET_C +//#define MBEDTLS_SSL_CLI_C +//#define MBEDTLS_SSL_SRV_C +//#define MBEDTLS_SSL_TLS_C +//#define MBEDTLS_THREADING_C +//#define MBEDTLS_TIMING_C +//#define MBEDTLS_VERSION_C +//#define MBEDTLS_X509_USE_C +//#define MBEDTLS_X509_CRT_PARSE_C +//#define MBEDTLS_X509_CRL_PARSE_C +//#define MBEDTLS_X509_CSR_PARSE_C +//#define MBEDTLS_X509_CREATE_C +//#define MBEDTLS_X509_CRT_WRITE_C +//#define MBEDTLS_X509_CSR_WRITE_C diff --git a/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h new file mode 100644 index 00000000..3dd0496d --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h @@ -0,0 +1,125 @@ +/** + * PSA crypto configuration template + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +/* + * CBC-MAC is not yet supported via the PSA API in Mbed TLS. + */ +//#define PSA_WANT_ALG_CBC_MAC 1 +#define PSA_WANT_ALG_CBC_NO_PADDING 1 +#define PSA_WANT_ALG_CBC_PKCS7 1 +#define PSA_WANT_ALG_CCM 1 +#define PSA_WANT_ALG_CCM_STAR_NO_TAG 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CFB 1 +#define PSA_WANT_ALG_CHACHA20_POLY1305 1 +#define PSA_WANT_ALG_CTR 1 +#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1 +#define PSA_WANT_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_ECDH 1 +#define PSA_WANT_ALG_FFDH 1 +#define PSA_WANT_ALG_ECDSA 1 +#define PSA_WANT_ALG_JPAKE 1 +#define PSA_WANT_ALG_GCM 1 +#define PSA_WANT_ALG_HKDF 1 +#define PSA_WANT_ALG_HKDF_EXTRACT 1 +#define PSA_WANT_ALG_HKDF_EXPAND 1 +#define PSA_WANT_ALG_HMAC 1 +#define PSA_WANT_ALG_MD5 1 +#define PSA_WANT_ALG_OFB 1 +#define PSA_WANT_ALG_PBKDF2_HMAC 1 +#define PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128 1 +#define PSA_WANT_ALG_RIPEMD160 1 +#define PSA_WANT_ALG_RSA_OAEP 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PSS 1 +#define PSA_WANT_ALG_SHA_1 1 +#define PSA_WANT_ALG_SHA_224 1 +#define PSA_WANT_ALG_SHA_256 1 +#define PSA_WANT_ALG_SHA_384 1 +#define PSA_WANT_ALG_SHA_512 1 +#define PSA_WANT_ALG_SHA3_224 1 +#define PSA_WANT_ALG_SHA3_256 1 +#define PSA_WANT_ALG_SHA3_384 1 +#define PSA_WANT_ALG_SHA3_512 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define PSA_WANT_ALG_TLS12_PRF 1 +#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1 +#define PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS 1 + +/* XTS is not yet supported via the PSA API in Mbed TLS. + * Note: when adding support, also adjust include/mbedtls/config_psa.h */ +//#define PSA_WANT_ALG_XTS 1 + +#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 1 +#define PSA_WANT_ECC_MONTGOMERY_255 1 +#define PSA_WANT_ECC_MONTGOMERY_448 1 +#define PSA_WANT_ECC_SECP_K1_192 1 +/* + * SECP224K1 is buggy via the PSA API in Mbed TLS + * (https://github.com/Mbed-TLS/mbedtls/issues/3541). Thus, do not enable it by + * default. + */ +//#define PSA_WANT_ECC_SECP_K1_224 1 +#define PSA_WANT_ECC_SECP_K1_256 1 +#define PSA_WANT_ECC_SECP_R1_192 1 +#define PSA_WANT_ECC_SECP_R1_224 1 +/* For secp256r1, consider enabling #MBEDTLS_PSA_P256M_DRIVER_ENABLED + * (see the description in mbedtls/mbedtls_config.h for details). */ +#define PSA_WANT_ECC_SECP_R1_256 1 +#define PSA_WANT_ECC_SECP_R1_384 1 +#define PSA_WANT_ECC_SECP_R1_521 1 + +#define PSA_WANT_DH_RFC7919_2048 1 +#define PSA_WANT_DH_RFC7919_3072 1 +#define PSA_WANT_DH_RFC7919_4096 1 +#define PSA_WANT_DH_RFC7919_6144 1 +#define PSA_WANT_DH_RFC7919_8192 1 + +#define PSA_WANT_KEY_TYPE_DERIVE 1 +#define PSA_WANT_KEY_TYPE_PASSWORD 1 +#define PSA_WANT_KEY_TYPE_PASSWORD_HASH 1 +#define PSA_WANT_KEY_TYPE_HMAC 1 +#define PSA_WANT_KEY_TYPE_AES 1 +#define PSA_WANT_KEY_TYPE_ARIA 1 +#define PSA_WANT_KEY_TYPE_CAMELLIA 1 +#define PSA_WANT_KEY_TYPE_CHACHA20 1 +#define PSA_WANT_KEY_TYPE_DES 1 +//#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1 /* Deprecated */ +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_RAW_DATA 1 +//#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1 /* Deprecated */ +#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1 + +/* + * The following symbols extend and deprecate the legacy + * PSA_WANT_KEY_TYPE_xxx_KEY_PAIR ones. They include the usage of that key in + * the name's suffix. "_USE" is the most generic and it can be used to describe + * a generic suport, whereas other ones add more features on top of that and + * they are more specific. + */ +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE 1 + +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE 1 +//#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE 1 /* Not supported */ + +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE 1 +//#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE 1 /* Not supported */ diff --git a/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 new file mode 100644 index 00000000..3dd0496d --- /dev/null +++ b/Examples/Network/HTTPS_Server/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 @@ -0,0 +1,125 @@ +/** + * PSA crypto configuration template + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +/* + * CBC-MAC is not yet supported via the PSA API in Mbed TLS. + */ +//#define PSA_WANT_ALG_CBC_MAC 1 +#define PSA_WANT_ALG_CBC_NO_PADDING 1 +#define PSA_WANT_ALG_CBC_PKCS7 1 +#define PSA_WANT_ALG_CCM 1 +#define PSA_WANT_ALG_CCM_STAR_NO_TAG 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CFB 1 +#define PSA_WANT_ALG_CHACHA20_POLY1305 1 +#define PSA_WANT_ALG_CTR 1 +#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1 +#define PSA_WANT_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_ECDH 1 +#define PSA_WANT_ALG_FFDH 1 +#define PSA_WANT_ALG_ECDSA 1 +#define PSA_WANT_ALG_JPAKE 1 +#define PSA_WANT_ALG_GCM 1 +#define PSA_WANT_ALG_HKDF 1 +#define PSA_WANT_ALG_HKDF_EXTRACT 1 +#define PSA_WANT_ALG_HKDF_EXPAND 1 +#define PSA_WANT_ALG_HMAC 1 +#define PSA_WANT_ALG_MD5 1 +#define PSA_WANT_ALG_OFB 1 +#define PSA_WANT_ALG_PBKDF2_HMAC 1 +#define PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128 1 +#define PSA_WANT_ALG_RIPEMD160 1 +#define PSA_WANT_ALG_RSA_OAEP 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PSS 1 +#define PSA_WANT_ALG_SHA_1 1 +#define PSA_WANT_ALG_SHA_224 1 +#define PSA_WANT_ALG_SHA_256 1 +#define PSA_WANT_ALG_SHA_384 1 +#define PSA_WANT_ALG_SHA_512 1 +#define PSA_WANT_ALG_SHA3_224 1 +#define PSA_WANT_ALG_SHA3_256 1 +#define PSA_WANT_ALG_SHA3_384 1 +#define PSA_WANT_ALG_SHA3_512 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define PSA_WANT_ALG_TLS12_PRF 1 +#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1 +#define PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS 1 + +/* XTS is not yet supported via the PSA API in Mbed TLS. + * Note: when adding support, also adjust include/mbedtls/config_psa.h */ +//#define PSA_WANT_ALG_XTS 1 + +#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 1 +#define PSA_WANT_ECC_MONTGOMERY_255 1 +#define PSA_WANT_ECC_MONTGOMERY_448 1 +#define PSA_WANT_ECC_SECP_K1_192 1 +/* + * SECP224K1 is buggy via the PSA API in Mbed TLS + * (https://github.com/Mbed-TLS/mbedtls/issues/3541). Thus, do not enable it by + * default. + */ +//#define PSA_WANT_ECC_SECP_K1_224 1 +#define PSA_WANT_ECC_SECP_K1_256 1 +#define PSA_WANT_ECC_SECP_R1_192 1 +#define PSA_WANT_ECC_SECP_R1_224 1 +/* For secp256r1, consider enabling #MBEDTLS_PSA_P256M_DRIVER_ENABLED + * (see the description in mbedtls/mbedtls_config.h for details). */ +#define PSA_WANT_ECC_SECP_R1_256 1 +#define PSA_WANT_ECC_SECP_R1_384 1 +#define PSA_WANT_ECC_SECP_R1_521 1 + +#define PSA_WANT_DH_RFC7919_2048 1 +#define PSA_WANT_DH_RFC7919_3072 1 +#define PSA_WANT_DH_RFC7919_4096 1 +#define PSA_WANT_DH_RFC7919_6144 1 +#define PSA_WANT_DH_RFC7919_8192 1 + +#define PSA_WANT_KEY_TYPE_DERIVE 1 +#define PSA_WANT_KEY_TYPE_PASSWORD 1 +#define PSA_WANT_KEY_TYPE_PASSWORD_HASH 1 +#define PSA_WANT_KEY_TYPE_HMAC 1 +#define PSA_WANT_KEY_TYPE_AES 1 +#define PSA_WANT_KEY_TYPE_ARIA 1 +#define PSA_WANT_KEY_TYPE_CAMELLIA 1 +#define PSA_WANT_KEY_TYPE_CHACHA20 1 +#define PSA_WANT_KEY_TYPE_DES 1 +//#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1 /* Deprecated */ +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_RAW_DATA 1 +//#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1 /* Deprecated */ +#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1 + +/* + * The following symbols extend and deprecate the legacy + * PSA_WANT_KEY_TYPE_xxx_KEY_PAIR ones. They include the usage of that key in + * the name's suffix. "_USE" is the most generic and it can be used to describe + * a generic suport, whereas other ones add more features on top of that and + * they are more specific. + */ +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE 1 + +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE 1 +//#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE 1 /* Not supported */ + +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE 1 +//#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE 1 /* Not supported */ diff --git a/Examples/Network/HTTPS_Server/Web/Web.c b/Examples/Network/HTTPS_Server/Web/Web.c new file mode 100644 index 00000000..0ab80666 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/Web.c @@ -0,0 +1,2233 @@ +/*------------------------------------------------------------------------------ + * uVision/ARM development tools + * Copyright (C) 2015-2022 ARM Ltd and ARM Germany GmbH. All rights reserved. + *------------------------------------------------------------------------------ + * Name: Web.c + * Purpose: ROM Image generated from user specified files. + * Note: Generated by FCARM FILE CONVERTER V2.59, do not modify! + *----------------------------------------------------------------------------*/ + +#include +#include + +extern const uint32_t imageLastModified; +extern uint32_t imageFileInfo (const char *name, const uint8_t **data); + +/* File information */ +typedef struct _imageFileItem { + uint32_t id; /* Name identifier (CRC32 value of file name) */ + const uint8_t *data; /* Data start address in ROM */ +} imageFileItem; + +#define IMAGE_FILE_COUNT 19U + +/* Last-Modified: Fri, 29 Mar 2024 08:23:36 GMT */ +const uint32_t imageLastModified = 1711700616U; + +static const uint8_t imageFileData[27140U] = { + + /*-- File: index.htm, 2237 bytes --*/ + 0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU,0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU, + 0x57U,0x65U,0x62U,0x20U,0x53U,0x65U,0x72U,0x76U,0x65U,0x72U,0x20U,0x44U,0x65U, + 0x6DU,0x6FU,0x3CU,0x2FU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x68U, + 0x65U,0x61U,0x64U,0x3EU,0x3CU,0x62U,0x6FU,0x64U,0x79U,0x20U,0x62U,0x67U,0x43U, + 0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U,0x66U,0x66U,0x66U,0x66U,0x66U,0x66U,0x20U, + 0x6CU,0x65U,0x66U,0x74U,0x4DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x3DU,0x30U,0x20U, + 0x74U,0x6FU,0x70U,0x4DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x3DU,0x31U,0x30U,0x20U, + 0x6DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U, + 0x30U,0x22U,0x20U,0x6DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x68U,0x65U,0x69U,0x67U, + 0x68U,0x74U,0x3DU,0x22U,0x30U,0x22U,0x3EU,0x3CU,0x64U,0x69U,0x76U,0x20U,0x61U, + 0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x20U,0x73U, + 0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3AU,0x20U, + 0x38U,0x33U,0x33U,0x3BU,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3AU,0x20U, + 0x34U,0x37U,0x30U,0x22U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x73U, + 0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3AU, + 0x20U,0x31U,0x70U,0x78U,0x20U,0x73U,0x6FU,0x6CU,0x69U,0x64U,0x20U,0x23U,0x30U, + 0x30U,0x30U,0x30U,0x38U,0x30U,0x22U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U, + 0x3DU,0x33U,0x38U,0x34U,0x20U,0x63U,0x65U,0x6CU,0x6CU,0x53U,0x70U,0x61U,0x63U, + 0x69U,0x6EU,0x67U,0x3DU,0x30U,0x20U,0x63U,0x65U,0x6CU,0x6CU,0x50U,0x61U,0x64U, + 0x64U,0x69U,0x6EU,0x67U,0x3DU,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU, + 0x22U,0x38U,0x31U,0x35U,0x22U,0x3EU,0x3CU,0x74U,0x62U,0x6FU,0x64U,0x79U,0x3EU, + 0x3CU,0x74U,0x72U,0x20U,0x62U,0x67U,0x43U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U, + 0x45U,0x45U,0x45U,0x45U,0x45U,0x45U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x73U,0x74U, + 0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x2DU,0x62U, + 0x6FU,0x74U,0x74U,0x6FU,0x6DU,0x3AU,0x20U,0x31U,0x70U,0x78U,0x20U,0x73U,0x6FU, + 0x6CU,0x69U,0x64U,0x20U,0x23U,0x30U,0x30U,0x30U,0x30U,0x38U,0x30U,0x22U,0x20U, + 0x76U,0x41U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x62U,0x6FU,0x74U,0x74U,0x6FU,0x6DU, + 0x20U,0x6EU,0x6FU,0x57U,0x72U,0x61U,0x70U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U, + 0x74U,0x3DU,0x37U,0x30U,0x20U,0x6DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x3DU,0x35U, + 0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x35U,0x36U,0x37U,0x22U, + 0x3EU,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U, + 0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U, + 0x66U,0x61U,0x63U,0x65U,0x3DU,0x22U,0x76U,0x65U,0x72U,0x64U,0x61U,0x6EU,0x61U, + 0x22U,0x20U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x22U,0x23U,0x30U,0x30U,0x36U, + 0x36U,0x39U,0x39U,0x22U,0x3EU,0x45U,0x6DU,0x62U,0x65U,0x64U,0x64U,0x65U,0x64U, + 0x20U,0x44U,0x65U,0x76U,0x65U,0x6CU,0x6FU,0x70U,0x6DU,0x65U,0x6EU,0x74U,0x20U, + 0x54U,0x6FU,0x6FU,0x6CU,0x73U,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU, + 0x2FU,0x68U,0x32U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x74U,0x64U,0x20U, + 0x73U,0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U, + 0x2DU,0x62U,0x6FU,0x74U,0x74U,0x6FU,0x6DU,0x3AU,0x20U,0x31U,0x70U,0x78U,0x20U, + 0x73U,0x6FU,0x6CU,0x69U,0x64U,0x20U,0x23U,0x30U,0x30U,0x30U,0x30U,0x38U,0x30U, + 0x22U,0x20U,0x76U,0x41U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U, + 0x65U,0x72U,0x20U,0x6EU,0x6FU,0x57U,0x72U,0x61U,0x70U,0x20U,0x68U,0x65U,0x69U, + 0x67U,0x68U,0x74U,0x3DU,0x37U,0x33U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU, + 0x22U,0x32U,0x34U,0x30U,0x22U,0x3EU,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U, + 0x3DU,0x22U,0x68U,0x74U,0x74U,0x70U,0x3AU,0x2FU,0x2FU,0x77U,0x77U,0x77U,0x2EU, + 0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x63U,0x6FU,0x6DU,0x22U,0x3EU,0x3CU,0x69U,0x6DU, + 0x67U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U,0x30U,0x22U,0x20U, + 0x73U,0x72U,0x63U,0x3DU,0x22U,0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x67U,0x69U,0x66U, + 0x22U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x6CU,0x65U,0x66U,0x74U, + 0x22U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x31U,0x35U,0x31U,0x22U, + 0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x22U,0x34U,0x37U,0x22U,0x3EU, + 0x3CU,0x2FU,0x61U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U, + 0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x63U,0x6FU,0x6CU,0x53U, + 0x70U,0x61U,0x6EU,0x3DU,0x35U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU, + 0x34U,0x30U,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x38U,0x30U, + 0x35U,0x22U,0x20U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU,0x64U, + 0x3DU,0x22U,0x6CU,0x6CU,0x62U,0x6CU,0x75U,0x65U,0x2EU,0x6AU,0x70U,0x67U,0x22U, + 0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U,0x61U,0x63U,0x6BU,0x67U, + 0x72U,0x6FU,0x75U,0x6EU,0x64U,0x2DU,0x72U,0x65U,0x70U,0x65U,0x61U,0x74U,0x3AU, + 0x20U,0x72U,0x65U,0x70U,0x65U,0x61U,0x74U,0x2DU,0x79U,0x3BU,0x22U,0x3EU,0x3CU, + 0x64U,0x69U,0x76U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU, + 0x74U,0x65U,0x72U,0x3EU,0x3CU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU, + 0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U, + 0x39U,0x30U,0x25U,0x22U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x30U, + 0x3EU,0x3CU,0x74U,0x62U,0x6FU,0x64U,0x79U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU, + 0x74U,0x64U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x39U,0x35U,0x25U, + 0x22U,0x3EU,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U, + 0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x3CU, + 0x62U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x66U,0x61U,0x63U,0x65U,0x3DU, + 0x22U,0x76U,0x65U,0x72U,0x64U,0x61U,0x6EU,0x61U,0x22U,0x20U,0x63U,0x6FU,0x6CU, + 0x6FU,0x72U,0x3DU,0x23U,0x30U,0x30U,0x33U,0x33U,0x36U,0x36U,0x3EU,0x45U,0x6DU, + 0x62U,0x65U,0x64U,0x64U,0x65U,0x64U,0x20U,0x57U,0x45U,0x42U,0x20U,0x53U,0x65U, + 0x72U,0x76U,0x65U,0x72U,0x20U,0x45U,0x78U,0x61U,0x6DU,0x70U,0x6CU,0x65U,0x3CU, + 0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x62U,0x3EU,0x3CU,0x2FU,0x68U, + 0x32U,0x3EU,0x3CU,0x70U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U, + 0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x3CU,0x61U,0x20U,0x74U,0x61U,0x72U, + 0x67U,0x65U,0x74U,0x3DU,0x22U,0x5FU,0x62U,0x6CU,0x61U,0x6EU,0x6BU,0x22U,0x20U, + 0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U,0x74U,0x70U,0x3AU,0x2FU,0x2FU, + 0x77U,0x77U,0x77U,0x2EU,0x61U,0x72U,0x6DU,0x2EU,0x63U,0x6FU,0x6DU,0x22U,0x3EU, + 0x3CU,0x69U,0x6DU,0x67U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U, + 0x30U,0x22U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x22U,0x61U,0x72U,0x6DU,0x2EU,0x70U, + 0x6EU,0x67U,0x22U,0x3EU,0x3CU,0x2FU,0x61U,0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x3CU, + 0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U, + 0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x37U,0x39U,0x37U,0x22U,0x20U, + 0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x22U,0x39U,0x34U,0x22U,0x20U,0x62U, + 0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x63U,0x65U,0x6CU, + 0x6CU,0x70U,0x61U,0x64U,0x64U,0x69U,0x6EU,0x67U,0x3DU,0x22U,0x30U,0x22U,0x20U, + 0x63U,0x65U,0x6CU,0x6CU,0x73U,0x70U,0x61U,0x63U,0x69U,0x6EU,0x67U,0x3DU,0x22U, + 0x30U,0x22U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x61U,0x6CU, + 0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU, + 0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x66U,0x61U,0x63U,0x65U,0x3DU,0x22U,0x56U, + 0x65U,0x72U,0x64U,0x61U,0x6EU,0x61U,0x22U,0x3EU,0x3CU,0x62U,0x3EU,0x20U,0x5BU, + 0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU,0x6EU,0x65U, + 0x74U,0x77U,0x6FU,0x72U,0x6BU,0x2EU,0x63U,0x67U,0x69U,0x22U,0x3EU,0x4EU,0x65U, + 0x74U,0x77U,0x6FU,0x72U,0x6BU,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x7CU,0x20U,0x3CU, + 0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU,0x73U,0x79U,0x73U,0x74U, + 0x65U,0x6DU,0x2EU,0x63U,0x67U,0x69U,0x22U,0x3EU,0x53U,0x79U,0x73U,0x74U,0x65U, + 0x6DU,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x7CU,0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U, + 0x65U,0x66U,0x3DU,0x22U,0x2FU,0x6CU,0x65U,0x64U,0x73U,0x2EU,0x63U,0x67U,0x69U, + 0x22U,0x3EU,0x4CU,0x45U,0x44U,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x7CU,0x20U,0x3CU, + 0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU,0x6CU,0x63U,0x64U,0x2EU, + 0x63U,0x67U,0x69U,0x22U,0x3EU,0x4CU,0x43U,0x44U,0x3CU,0x2FU,0x61U,0x3EU,0x20U, + 0x7CU,0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU,0x61U, + 0x64U,0x2EU,0x63U,0x67U,0x69U,0x22U,0x3EU,0x41U,0x44U,0x3CU,0x2FU,0x61U,0x3EU, + 0x20U,0x7CU,0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU, + 0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x73U,0x2EU,0x63U,0x67U,0x69U,0x22U,0x3EU, + 0x42U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x73U,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x7CU, + 0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU,0x6CU,0x61U, + 0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x2EU,0x63U,0x67U,0x69U,0x22U,0x3EU,0x4CU, + 0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x7CU, + 0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x2FU,0x74U,0x63U, + 0x70U,0x2EU,0x63U,0x67U,0x69U,0x22U,0x3EU,0x53U,0x74U,0x61U,0x74U,0x69U,0x73U, + 0x74U,0x69U,0x63U,0x73U,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x5DU,0x3CU,0x2FU,0x62U, + 0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU, + 0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU, + 0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x66U,0x61U,0x63U,0x65U, + 0x3DU,0x22U,0x56U,0x65U,0x72U,0x64U,0x61U,0x6EU,0x61U,0x22U,0x20U,0x73U,0x69U, + 0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x54U,0x68U,0x65U,0x73U,0x65U,0x20U, + 0x77U,0x65U,0x62U,0x20U,0x70U,0x61U,0x67U,0x65U,0x73U,0x20U,0x61U,0x72U,0x65U, + 0x20U,0x73U,0x65U,0x72U,0x76U,0x65U,0x64U,0x20U,0x66U,0x72U,0x6FU,0x6DU,0x20U, + 0x61U,0x20U,0x57U,0x65U,0x62U,0x20U,0x73U,0x65U,0x72U,0x76U,0x65U,0x72U,0x2CU, + 0x3CU,0x62U,0x72U,0x3EU,0x20U,0x77U,0x68U,0x69U,0x63U,0x68U,0x20U,0x69U,0x73U, + 0x20U,0x70U,0x61U,0x72U,0x74U,0x20U,0x6FU,0x66U,0x20U,0x61U,0x20U,0x3CU,0x61U, + 0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U,0x74U,0x70U,0x3AU,0x2FU, + 0x2FU,0x77U,0x77U,0x77U,0x2EU,0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x63U,0x6FU,0x6DU, + 0x2FU,0x70U,0x61U,0x63U,0x6BU,0x2FU,0x64U,0x6FU,0x63U,0x2FU,0x6DU,0x77U,0x2FU, + 0x4EU,0x65U,0x74U,0x77U,0x6FU,0x72U,0x6BU,0x2FU,0x68U,0x74U,0x6DU,0x6CU,0x2FU, + 0x69U,0x6EU,0x64U,0x65U,0x78U,0x2EU,0x68U,0x74U,0x6DU,0x6CU,0x22U,0x20U,0x74U, + 0x61U,0x72U,0x67U,0x65U,0x74U,0x3DU,0x22U,0x5FU,0x62U,0x6CU,0x61U,0x6EU,0x6BU, + 0x22U,0x3EU,0x3CU,0x62U,0x3EU,0x4EU,0x65U,0x74U,0x77U,0x6FU,0x72U,0x6BU,0x20U, + 0x43U,0x6FU,0x6DU,0x70U,0x6FU,0x6EU,0x65U,0x6EU,0x74U,0x3CU,0x2FU,0x62U,0x3EU, + 0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x69U,0x6EU,0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U, + 0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U,0x74U,0x70U,0x3AU,0x2FU,0x2FU,0x77U,0x77U, + 0x77U,0x32U,0x2EU,0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x63U,0x6FU,0x6DU,0x2FU,0x6DU, + 0x64U,0x6BU,0x35U,0x2FU,0x22U,0x20U,0x74U,0x61U,0x72U,0x67U,0x65U,0x74U,0x3DU, + 0x22U,0x5FU,0x62U,0x6CU,0x61U,0x6EU,0x6BU,0x22U,0x3EU,0x3CU,0x62U,0x3EU,0x4BU, + 0x65U,0x69U,0x6CU,0x20U,0x4DU,0x44U,0x4BU,0x3CU,0x2FU,0x62U,0x3EU,0x3CU,0x2FU, + 0x61U,0x3EU,0x2EU,0x20U,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU, + 0x70U,0x3EU,0x3CU,0x2FU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x2FU, + 0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x74U,0x62U,0x6FU, + 0x64U,0x79U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x2FU, + 0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x2FU,0x64U,0x69U,0x76U,0x3EU, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x72U, + 0x3EU,0x3CU,0x74U,0x64U,0x20U,0x63U,0x6FU,0x6CU,0x53U,0x70U,0x61U,0x6EU,0x3DU, + 0x35U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x32U,0x30U,0x20U,0x77U, + 0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x38U,0x30U,0x35U,0x22U,0x20U,0x62U,0x61U, + 0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU,0x64U,0x3DU,0x22U,0x6CU,0x6CU,0x62U, + 0x6CU,0x75U,0x65U,0x2EU,0x6AU,0x70U,0x67U,0x22U,0x20U,0x73U,0x74U,0x79U,0x6CU, + 0x65U,0x3DU,0x22U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU,0x64U, + 0x2DU,0x72U,0x65U,0x70U,0x65U,0x61U,0x74U,0x3AU,0x20U,0x72U,0x65U,0x70U,0x65U, + 0x61U,0x74U,0x2DU,0x79U,0x3BU,0x22U,0x3EU,0x3CU,0x70U,0x20U,0x61U,0x6CU,0x69U, + 0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x66U,0x6FU, + 0x6EU,0x74U,0x20U,0x66U,0x61U,0x63U,0x65U,0x3DU,0x22U,0x56U,0x65U,0x72U,0x64U, + 0x61U,0x6EU,0x61U,0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x31U,0x22U, + 0x3EU,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U,0x74U, + 0x70U,0x3AU,0x2FU,0x2FU,0x77U,0x77U,0x77U,0x2EU,0x6BU,0x65U,0x69U,0x6CU,0x2EU, + 0x63U,0x6FU,0x6DU,0x2FU,0x63U,0x6FU,0x6DU,0x70U,0x61U,0x6EU,0x79U,0x2FU,0x63U, + 0x6FU,0x70U,0x79U,0x72U,0x69U,0x67U,0x68U,0x74U,0x2EU,0x61U,0x73U,0x70U,0x22U, + 0x3EU,0x20U,0x43U,0x6FU,0x70U,0x79U,0x72U,0x69U,0x67U,0x68U,0x74U,0x3CU,0x2FU, + 0x61U,0x3EU,0x20U,0xA9U,0x20U,0x32U,0x30U,0x30U,0x34U,0x2DU,0x32U,0x30U,0x32U, + 0x34U,0x20U,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U, + 0x74U,0x70U,0x3AU,0x2FU,0x2FU,0x77U,0x77U,0x77U,0x2EU,0x6BU,0x65U,0x69U,0x6CU, + 0x2EU,0x63U,0x6FU,0x6DU,0x2FU,0x63U,0x6FU,0x6DU,0x70U,0x61U,0x6EU,0x79U,0x2FU, + 0x22U,0x3EU,0x4BU,0x45U,0x49U,0x4CU,0x20U,0x2DU,0x20U,0x41U,0x6EU,0x20U,0x41U, + 0x52U,0x4DU,0x20U,0x43U,0x6FU,0x6DU,0x70U,0x61U,0x6EU,0x79U,0x3CU,0x2FU,0x61U, + 0x3EU,0x20U,0x41U,0x6CU,0x6CU,0x20U,0x72U,0x69U,0x67U,0x68U,0x74U,0x73U,0x20U, + 0x72U,0x65U,0x73U,0x65U,0x72U,0x76U,0x65U,0x64U,0x2EU,0x3CU,0x2FU,0x66U,0x6FU, + 0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU, + 0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x74U,0x62U,0x6FU,0x64U,0x79U,0x3EU,0x3CU, + 0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x64U,0x69U,0x76U,0x3EU, + 0x3CU,0x2FU,0x62U,0x6FU,0x64U,0x79U,0x3EU,0x3CU,0x2FU,0x68U,0x74U,0x6DU,0x6CU, + 0x3EU, + + /*-- File: pg_header.inc, 1048 bytes --*/ + 0x3CU,0x62U,0x6FU,0x64U,0x79U,0x20U,0x62U,0x67U,0x43U,0x6FU,0x6CU,0x6FU,0x72U, + 0x3DU,0x23U,0x66U,0x66U,0x66U,0x66U,0x66U,0x66U,0x20U,0x6CU,0x65U,0x66U,0x74U, + 0x4DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x3DU,0x30U,0x20U,0x74U,0x6FU,0x70U,0x4DU, + 0x61U,0x72U,0x67U,0x69U,0x6EU,0x3DU,0x31U,0x30U,0x20U,0x6DU,0x61U,0x72U,0x67U, + 0x69U,0x6EU,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x6DU, + 0x61U,0x72U,0x67U,0x69U,0x6EU,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x22U, + 0x30U,0x22U,0x3EU,0x3CU,0x64U,0x69U,0x76U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU, + 0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U, + 0x3DU,0x22U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3AU,0x20U,0x38U,0x33U,0x33U,0x3BU, + 0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3AU,0x20U,0x34U,0x37U,0x30U,0x22U, + 0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U, + 0x3DU,0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3AU,0x20U,0x31U,0x70U,0x78U, + 0x20U,0x73U,0x6FU,0x6CU,0x69U,0x64U,0x20U,0x23U,0x30U,0x30U,0x30U,0x30U,0x38U, + 0x30U,0x22U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x33U,0x38U,0x34U, + 0x20U,0x63U,0x65U,0x6CU,0x6CU,0x53U,0x70U,0x61U,0x63U,0x69U,0x6EU,0x67U,0x3DU, + 0x30U,0x20U,0x63U,0x65U,0x6CU,0x6CU,0x50U,0x61U,0x64U,0x64U,0x69U,0x6EU,0x67U, + 0x3DU,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x38U,0x31U,0x35U, + 0x22U,0x3EU,0x3CU,0x74U,0x62U,0x6FU,0x64U,0x79U,0x3EU,0x3CU,0x74U,0x72U,0x20U, + 0x62U,0x67U,0x43U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U,0x45U,0x45U,0x45U,0x45U, + 0x45U,0x45U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U,0x3DU, + 0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x2DU,0x62U,0x6FU,0x74U,0x74U,0x6FU, + 0x6DU,0x3AU,0x20U,0x31U,0x70U,0x78U,0x20U,0x73U,0x6FU,0x6CU,0x69U,0x64U,0x20U, + 0x23U,0x30U,0x30U,0x30U,0x30U,0x38U,0x30U,0x22U,0x20U,0x76U,0x41U,0x6CU,0x69U, + 0x67U,0x6EU,0x3DU,0x62U,0x6FU,0x74U,0x74U,0x6FU,0x6DU,0x20U,0x6EU,0x6FU,0x57U, + 0x72U,0x61U,0x70U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x37U,0x30U, + 0x20U,0x6DU,0x61U,0x72U,0x67U,0x69U,0x6EU,0x3DU,0x35U,0x30U,0x20U,0x77U,0x69U, + 0x64U,0x74U,0x68U,0x3DU,0x22U,0x35U,0x36U,0x37U,0x22U,0x3EU,0x3CU,0x68U,0x32U, + 0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U,0x65U,0x6EU,0x74U,0x65U, + 0x72U,0x22U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x66U,0x61U,0x63U,0x65U, + 0x3DU,0x22U,0x76U,0x65U,0x72U,0x64U,0x61U,0x6EU,0x61U,0x22U,0x20U,0x63U,0x6FU, + 0x6CU,0x6FU,0x72U,0x3DU,0x22U,0x23U,0x30U,0x30U,0x36U,0x36U,0x39U,0x39U,0x22U, + 0x3EU,0x45U,0x6DU,0x62U,0x65U,0x64U,0x64U,0x65U,0x64U,0x20U,0x44U,0x65U,0x76U, + 0x65U,0x6CU,0x6FU,0x70U,0x6DU,0x65U,0x6EU,0x74U,0x20U,0x54U,0x6FU,0x6FU,0x6CU, + 0x73U,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x68U,0x32U,0x3EU, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x73U,0x74U,0x79U,0x6CU, + 0x65U,0x3DU,0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x2DU,0x62U,0x6FU,0x74U, + 0x74U,0x6FU,0x6DU,0x3AU,0x20U,0x31U,0x70U,0x78U,0x20U,0x73U,0x6FU,0x6CU,0x69U, + 0x64U,0x20U,0x23U,0x30U,0x30U,0x30U,0x30U,0x38U,0x30U,0x22U,0x20U,0x76U,0x41U, + 0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x20U,0x6EU, + 0x6FU,0x57U,0x72U,0x61U,0x70U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU, + 0x37U,0x33U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x31U,0x37U,0x30U, + 0x22U,0x3EU,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U, + 0x74U,0x70U,0x3AU,0x2FU,0x2FU,0x77U,0x77U,0x77U,0x2EU,0x6BU,0x65U,0x69U,0x6CU, + 0x2EU,0x63U,0x6FU,0x6DU,0x22U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x62U,0x6FU, + 0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x73U,0x72U,0x63U,0x3DU, + 0x22U,0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x67U,0x69U,0x66U,0x22U,0x20U,0x61U,0x6CU, + 0x69U,0x67U,0x6EU,0x3DU,0x22U,0x6CU,0x65U,0x66U,0x74U,0x22U,0x20U,0x77U,0x69U, + 0x64U,0x74U,0x68U,0x3DU,0x22U,0x31U,0x35U,0x31U,0x22U,0x20U,0x68U,0x65U,0x69U, + 0x67U,0x68U,0x74U,0x3DU,0x22U,0x34U,0x37U,0x22U,0x3EU,0x3CU,0x2FU,0x61U,0x3EU, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x73U,0x74U,0x79U,0x6CU, + 0x65U,0x3DU,0x22U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x2DU,0x62U,0x6FU,0x74U, + 0x74U,0x6FU,0x6DU,0x3AU,0x20U,0x31U,0x70U,0x78U,0x20U,0x73U,0x6FU,0x6CU,0x69U, + 0x64U,0x20U,0x23U,0x30U,0x30U,0x30U,0x30U,0x38U,0x30U,0x22U,0x20U,0x61U,0x6CU, + 0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x20U,0x76U,0x41U, + 0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x20U,0x6EU, + 0x6FU,0x57U,0x72U,0x61U,0x70U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U, + 0x37U,0x30U,0x22U,0x3EU,0x3CU,0x61U,0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U, + 0x69U,0x6EU,0x64U,0x65U,0x78U,0x2EU,0x68U,0x74U,0x6DU,0x22U,0x3EU,0x3CU,0x69U, + 0x6DU,0x67U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U,0x30U,0x22U, + 0x20U,0x73U,0x72U,0x63U,0x3DU,0x22U,0x68U,0x6FU,0x6DU,0x65U,0x2EU,0x70U,0x6EU, + 0x67U,0x22U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x33U,0x31U,0x22U, + 0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU,0x22U,0x32U,0x39U,0x22U,0x3EU, + 0x3CU,0x2FU,0x61U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U, + 0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x63U,0x6FU,0x6CU,0x53U, + 0x70U,0x61U,0x6EU,0x3DU,0x35U,0x20U,0x68U,0x65U,0x69U,0x67U,0x68U,0x74U,0x3DU, + 0x33U,0x38U,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x38U,0x31U, + 0x35U,0x22U,0x20U,0x76U,0x41U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x74U,0x6FU,0x70U, + 0x20U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU,0x64U,0x3DU,0x22U, + 0x6CU,0x6CU,0x62U,0x6CU,0x75U,0x65U,0x2EU,0x6AU,0x70U,0x67U,0x22U,0x20U,0x73U, + 0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU, + 0x75U,0x6EU,0x64U,0x2DU,0x72U,0x65U,0x70U,0x65U,0x61U,0x74U,0x3AU,0x20U,0x72U, + 0x65U,0x70U,0x65U,0x61U,0x74U,0x2DU,0x79U,0x3BU,0x22U,0x3EU,0x3CU,0x64U,0x69U, + 0x76U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U, + 0x72U,0x3EU,0x3CU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x66U,0x6FU, + 0x6EU,0x74U,0x20U,0x66U,0x61U,0x63U,0x65U,0x3DU,0x22U,0x76U,0x65U,0x72U,0x64U, + 0x61U,0x6EU,0x61U,0x22U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x77U, + 0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x39U,0x30U,0x25U,0x22U,0x20U,0x62U,0x6FU, + 0x72U,0x64U,0x65U,0x72U,0x3DU,0x30U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU, + 0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x74U,0x62U,0x6FU,0x64U,0x79U, + 0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x77U,0x69U,0x64U,0x74U, + 0x68U,0x3DU,0x22U,0x39U,0x35U,0x25U,0x22U,0x3EU, + + /*-- File: pg_footer.inc, 426 bytes --*/ + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x74U, + 0x62U,0x6FU,0x64U,0x79U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU, + 0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x63U,0x65U,0x6EU,0x74U, + 0x65U,0x72U,0x3EU,0x3CU,0x2FU,0x64U,0x69U,0x76U,0x3EU,0x3CU,0x2FU,0x74U,0x64U, + 0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U, + 0x20U,0x63U,0x6FU,0x6CU,0x53U,0x70U,0x61U,0x6EU,0x3DU,0x35U,0x20U,0x68U,0x65U, + 0x69U,0x67U,0x68U,0x74U,0x3DU,0x32U,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U, + 0x3DU,0x22U,0x38U,0x30U,0x35U,0x22U,0x20U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U, + 0x6FU,0x75U,0x6EU,0x64U,0x3DU,0x22U,0x6CU,0x6CU,0x62U,0x6CU,0x75U,0x65U,0x2EU, + 0x6AU,0x70U,0x67U,0x22U,0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U, + 0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU,0x64U,0x2DU,0x72U,0x65U,0x70U, + 0x65U,0x61U,0x74U,0x3AU,0x20U,0x72U,0x65U,0x70U,0x65U,0x61U,0x74U,0x2DU,0x79U, + 0x3BU,0x22U,0x3EU,0x3CU,0x70U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U, + 0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x66U, + 0x61U,0x63U,0x65U,0x3DU,0x22U,0x56U,0x65U,0x72U,0x64U,0x61U,0x6EU,0x61U,0x22U, + 0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x31U,0x22U,0x3EU,0x3CU,0x61U,0x20U, + 0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U,0x74U,0x70U,0x3AU,0x2FU,0x2FU, + 0x77U,0x77U,0x77U,0x2EU,0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x63U,0x6FU,0x6DU,0x2FU, + 0x63U,0x6FU,0x6DU,0x70U,0x61U,0x6EU,0x79U,0x2FU,0x63U,0x6FU,0x70U,0x79U,0x72U, + 0x69U,0x67U,0x68U,0x74U,0x2EU,0x61U,0x73U,0x70U,0x22U,0x3EU,0x20U,0x43U,0x6FU, + 0x70U,0x79U,0x72U,0x69U,0x67U,0x68U,0x74U,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0xA9U, + 0x20U,0x32U,0x30U,0x30U,0x34U,0x2DU,0x32U,0x30U,0x32U,0x34U,0x20U,0x3CU,0x61U, + 0x20U,0x68U,0x72U,0x65U,0x66U,0x3DU,0x22U,0x68U,0x74U,0x74U,0x70U,0x3AU,0x2FU, + 0x2FU,0x77U,0x77U,0x77U,0x2EU,0x6BU,0x65U,0x69U,0x6CU,0x2EU,0x63U,0x6FU,0x6DU, + 0x2FU,0x63U,0x6FU,0x6DU,0x70U,0x61U,0x6EU,0x79U,0x2FU,0x22U,0x3EU,0x4BU,0x45U, + 0x49U,0x4CU,0x20U,0x2DU,0x20U,0x41U,0x6EU,0x20U,0x41U,0x52U,0x4DU,0x20U,0x43U, + 0x6FU,0x6DU,0x70U,0x61U,0x6EU,0x79U,0x3CU,0x2FU,0x61U,0x3EU,0x20U,0x41U,0x6CU, + 0x6CU,0x20U,0x72U,0x69U,0x67U,0x68U,0x74U,0x73U,0x20U,0x72U,0x65U,0x73U,0x65U, + 0x72U,0x76U,0x65U,0x64U,0x2EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU, + 0x2FU,0x70U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU, + 0x3CU,0x2FU,0x74U,0x62U,0x6FU,0x64U,0x79U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U, + 0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x64U,0x69U,0x76U,0x3EU,0x3CU,0x2FU,0x62U,0x6FU, + 0x64U,0x79U,0x3EU,0x3CU,0x2FU,0x68U,0x74U,0x6DU,0x6CU,0x3EU, + + /*-- File: ad.cgi, 2288 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x41U,0x6EU,0x61U,0x6CU,0x6FU,0x67U, + 0x20U,0x49U,0x6EU,0x70U,0x75U,0x74U,0x3CU,0x2FU,0x74U,0x69U,0x74U,0x6CU,0x65U, + 0x3EU,0x01U,0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U,0x6CU,0x61U,0x6EU, + 0x67U,0x75U,0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U,0x53U,0x63U,0x72U, + 0x69U,0x70U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x74U,0x65U,0x78U, + 0x74U,0x2FU,0x6AU,0x61U,0x76U,0x61U,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x22U, + 0x20U,0x73U,0x72U,0x63U,0x3DU,0x22U,0x78U,0x6DU,0x6CU,0x5FU,0x68U,0x74U,0x74U, + 0x70U,0x2EU,0x6AU,0x73U,0x22U,0x3EU,0x3CU,0x2FU,0x73U,0x63U,0x72U,0x69U,0x70U, + 0x74U,0x3EU,0x01U,0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U,0x6CU,0x61U, + 0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U,0x53U,0x63U, + 0x72U,0x69U,0x70U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x74U,0x65U, + 0x78U,0x74U,0x2FU,0x6AU,0x61U,0x76U,0x61U,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U, + 0x22U,0x3EU,0x76U,0x61U,0x72U,0x20U,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U, + 0x61U,0x74U,0x65U,0x20U,0x3DU,0x20U,0x6EU,0x65U,0x77U,0x20U,0x70U,0x65U,0x72U, + 0x69U,0x6FU,0x64U,0x69U,0x63U,0x4FU,0x62U,0x6AU,0x28U,0x22U,0x61U,0x64U,0x2EU, + 0x63U,0x67U,0x78U,0x22U,0x2CU,0x20U,0x35U,0x30U,0x30U,0x29U,0x3BU,0x01U,0x66U, + 0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x70U,0x6CU,0x6FU,0x74U,0x41U, + 0x44U,0x47U,0x72U,0x61U,0x70U,0x68U,0x28U,0x29U,0x20U,0x7BU,0x20U,0x61U,0x64U, + 0x56U,0x61U,0x6CU,0x20U,0x3DU,0x20U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU, + 0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U, + 0x79U,0x49U,0x64U,0x28U,0x22U,0x61U,0x64U,0x5FU,0x76U,0x61U,0x6CU,0x75U,0x65U, + 0x22U,0x29U,0x2EU,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x20U,0x6EU,0x75U,0x6DU, + 0x56U,0x61U,0x6CU,0x20U,0x3DU,0x20U,0x70U,0x61U,0x72U,0x73U,0x65U,0x49U,0x6EU, + 0x74U,0x28U,0x61U,0x64U,0x56U,0x61U,0x6CU,0x2CU,0x20U,0x31U,0x36U,0x29U,0x3BU, + 0x01U,0x20U,0x76U,0x6FU,0x6CU,0x74U,0x73U,0x56U,0x61U,0x6CU,0x20U,0x3DU,0x20U, + 0x28U,0x33U,0x2EU,0x33U,0x2AU,0x6EU,0x75U,0x6DU,0x56U,0x61U,0x6CU,0x29U,0x2FU, + 0x31U,0x30U,0x32U,0x34U,0x3BU,0x20U,0x74U,0x61U,0x62U,0x6CU,0x65U,0x53U,0x69U, + 0x7AU,0x65U,0x20U,0x3DU,0x20U,0x28U,0x6EU,0x75U,0x6DU,0x56U,0x61U,0x6CU,0x2AU, + 0x31U,0x30U,0x30U,0x2FU,0x31U,0x30U,0x32U,0x34U,0x29U,0x3BU,0x01U,0x20U,0x64U, + 0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU, + 0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x22U,0x61U,0x64U, + 0x5FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x22U,0x29U,0x2EU,0x73U,0x74U,0x79U,0x6CU, + 0x65U,0x2EU,0x77U,0x69U,0x64U,0x74U,0x68U,0x20U,0x3DU,0x20U,0x28U,0x74U,0x61U, + 0x62U,0x6CU,0x65U,0x53U,0x69U,0x7AU,0x65U,0x20U,0x2BU,0x20U,0x27U,0x25U,0x27U, + 0x29U,0x3BU,0x01U,0x20U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU, + 0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U,0x79U,0x49U, + 0x64U,0x28U,0x22U,0x61U,0x64U,0x5FU,0x76U,0x6FU,0x6CU,0x74U,0x73U,0x22U,0x29U, + 0x2EU,0x76U,0x61U,0x6CU,0x75U,0x65U,0x20U,0x3DU,0x20U,0x28U,0x76U,0x6FU,0x6CU, + 0x74U,0x73U,0x56U,0x61U,0x6CU,0x2EU,0x74U,0x6FU,0x46U,0x69U,0x78U,0x65U,0x64U, + 0x28U,0x33U,0x29U,0x20U,0x2BU,0x20U,0x27U,0x20U,0x56U,0x27U,0x29U,0x3BU,0x7DU, + 0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x70U,0x65U,0x72U,0x69U, + 0x6FU,0x64U,0x69U,0x63U,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x41U,0x64U,0x28U, + 0x29U,0x20U,0x7BU,0x01U,0x20U,0x69U,0x66U,0x28U,0x64U,0x6FU,0x63U,0x75U,0x6DU, + 0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x22U,0x61U,0x64U,0x43U,0x68U,0x6BU,0x42U, + 0x6FU,0x78U,0x22U,0x29U,0x2EU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x65U,0x64U,0x20U, + 0x3DU,0x3DU,0x20U,0x74U,0x72U,0x75U,0x65U,0x29U,0x20U,0x7BU,0x20U,0x75U,0x70U, + 0x64U,0x61U,0x74U,0x65U,0x4DU,0x75U,0x6CU,0x74U,0x69U,0x70U,0x6CU,0x65U,0x28U, + 0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x2CU,0x70U,0x6CU, + 0x6FU,0x74U,0x41U,0x44U,0x47U,0x72U,0x61U,0x70U,0x68U,0x29U,0x3BU,0x01U,0x20U, + 0x61U,0x64U,0x5FU,0x65U,0x6CU,0x54U,0x69U,0x6DU,0x65U,0x20U,0x3DU,0x20U,0x73U, + 0x65U,0x74U,0x54U,0x69U,0x6DU,0x65U,0x6FU,0x75U,0x74U,0x28U,0x70U,0x65U,0x72U, + 0x69U,0x6FU,0x64U,0x69U,0x63U,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x41U,0x64U, + 0x2CU,0x20U,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x2EU, + 0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x29U,0x3BU,0x20U,0x7DU,0x20U,0x65U,0x6CU, + 0x73U,0x65U,0x20U,0x63U,0x6CU,0x65U,0x61U,0x72U,0x54U,0x69U,0x6DU,0x65U,0x6FU, + 0x75U,0x74U,0x28U,0x61U,0x64U,0x5FU,0x65U,0x6CU,0x54U,0x69U,0x6DU,0x65U,0x29U, + 0x3BU,0x7DU,0x3CU,0x2FU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x3EU,0x3CU,0x2FU, + 0x68U,0x65U,0x61U,0x64U,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x68U,0x65U,0x61U,0x64U, + 0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x01U,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU, + 0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU, + 0x3CU,0x62U,0x72U,0x3EU,0x41U,0x6EU,0x61U,0x6CU,0x6FU,0x67U,0x20U,0x49U,0x6EU, + 0x70U,0x75U,0x74U,0x3CU,0x2FU,0x68U,0x32U,0x3EU,0x01U,0x3CU,0x70U,0x3EU,0x3CU, + 0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U, + 0x3EU,0x4FU,0x6EU,0x20U,0x74U,0x68U,0x69U,0x73U,0x20U,0x70U,0x61U,0x67U,0x65U, + 0x20U,0x79U,0x6FU,0x75U,0x20U,0x63U,0x61U,0x6EU,0x20U,0x6DU,0x6FU,0x6EU,0x69U, + 0x74U,0x6FU,0x72U,0x20U,0x74U,0x68U,0x65U,0x20U,0x61U,0x6EU,0x61U,0x6CU,0x6FU, + 0x67U,0x20U,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U, + 0x20U,0x69U,0x6EU,0x20U,0x6EU,0x75U,0x6DU,0x65U,0x72U,0x69U,0x63U,0x61U,0x6CU, + 0x01U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x67U,0x72U,0x61U,0x70U,0x68U,0x69U,0x63U, + 0x61U,0x6CU,0x20U,0x66U,0x6FU,0x72U,0x6DU,0x2EU,0x20U,0x54U,0x68U,0x65U,0x20U, + 0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U,0x63U,0x20U,0x73U,0x63U,0x72U,0x65U, + 0x65U,0x6EU,0x20U,0x75U,0x70U,0x64U,0x61U,0x74U,0x65U,0x20U,0x69U,0x73U,0x20U, + 0x62U,0x61U,0x73U,0x65U,0x64U,0x20U,0x6FU,0x6EU,0x20U,0x78U,0x6DU,0x6CU,0x20U, + 0x74U,0x65U,0x63U,0x68U,0x6EU,0x6FU,0x6CU,0x6FU,0x67U,0x79U,0x2EU,0x20U,0x54U, + 0x68U,0x69U,0x73U,0x01U,0x20U,0x72U,0x65U,0x73U,0x75U,0x6CU,0x74U,0x73U,0x20U, + 0x69U,0x6EU,0x20U,0x61U,0x20U,0x73U,0x6DU,0x6FU,0x6FU,0x74U,0x68U,0x2CU,0x20U, + 0x66U,0x6CU,0x69U,0x63U,0x6BU,0x65U,0x72U,0x2DU,0x66U,0x72U,0x65U,0x65U,0x20U, + 0x73U,0x63U,0x72U,0x65U,0x65U,0x6EU,0x20U,0x72U,0x65U,0x66U,0x72U,0x65U,0x73U, + 0x68U,0x2EU,0x3CU,0x62U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U,0x54U, + 0x68U,0x65U,0x20U,0x61U,0x6EU,0x61U,0x6CU,0x6FU,0x67U,0x20U,0x76U,0x61U,0x6CU, + 0x75U,0x65U,0x20U,0x69U,0x73U,0x20U,0x67U,0x65U,0x6EU,0x65U,0x72U,0x61U,0x74U, + 0x65U,0x64U,0x20U,0x66U,0x72U,0x6FU,0x6DU,0x20U,0x74U,0x68U,0x65U,0x20U,0x73U, + 0x69U,0x6DU,0x75U,0x6CU,0x61U,0x74U,0x65U,0x64U,0x20U,0x61U,0x6EU,0x61U,0x6CU, + 0x6FU,0x67U,0x20U,0x73U,0x6FU,0x75U,0x72U,0x63U,0x65U,0x2CU,0x20U,0x77U,0x68U, + 0x69U,0x63U,0x68U,0x20U,0x69U,0x6EU,0x63U,0x72U,0x65U,0x6DU,0x65U,0x6EU,0x74U, + 0x73U,0x01U,0x20U,0x61U,0x74U,0x20U,0x61U,0x20U,0x73U,0x6CU,0x6FU,0x77U,0x20U, + 0x72U,0x61U,0x74U,0x65U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x73U,0x77U,0x69U,0x74U, + 0x63U,0x68U,0x65U,0x73U,0x20U,0x74U,0x6FU,0x20U,0x30U,0x20U,0x6FU,0x6EU,0x20U, + 0x6FU,0x76U,0x65U,0x72U,0x66U,0x6CU,0x6FU,0x77U,0x2EU,0x3CU,0x2FU,0x66U,0x6FU, + 0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x20U, + 0x61U,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x22U,0x61U,0x64U,0x2EU,0x63U,0x67U, + 0x69U,0x22U,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU,0x22U,0x70U,0x6FU, + 0x73U,0x74U,0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x22U,0x61U,0x64U,0x22U, + 0x3EU,0x01U,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U, + 0x3DU,0x22U,0x68U,0x69U,0x64U,0x64U,0x65U,0x6EU,0x22U,0x20U,0x76U,0x61U,0x6CU, + 0x75U,0x65U,0x3DU,0x22U,0x61U,0x64U,0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU, + 0x22U,0x70U,0x67U,0x22U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x62U, + 0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U, + 0x3DU,0x39U,0x39U,0x25U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U, + 0x7AU,0x65U,0x3DU,0x22U,0x33U,0x22U,0x3EU,0x01U,0x3CU,0x74U,0x72U,0x20U,0x73U, + 0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU, + 0x75U,0x6EU,0x64U,0x2DU,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3AU,0x20U,0x23U,0x61U, + 0x61U,0x63U,0x63U,0x66U,0x66U,0x22U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U, + 0x69U,0x64U,0x74U,0x68U,0x3DU,0x31U,0x35U,0x25U,0x3EU,0x49U,0x74U,0x65U,0x6DU, + 0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x31U,0x35U,0x25U,0x3EU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3CU, + 0x2FU,0x74U,0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U, + 0x68U,0x3DU,0x31U,0x35U,0x25U,0x3EU,0x56U,0x6FU,0x6CU,0x74U,0x73U,0x3CU,0x2FU, + 0x74U,0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U, + 0x68U,0x3DU,0x35U,0x35U,0x25U,0x3EU,0x42U,0x61U,0x72U,0x67U,0x72U,0x61U,0x70U, + 0x68U,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U, + 0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U, + 0x63U,0x3DU,0x22U,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x22U,0x3EU, + 0x41U,0x69U,0x6EU,0x31U,0x3AU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x20U,0x3CU,0x74U, + 0x64U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U,0x65U,0x6EU,0x74U, + 0x65U,0x72U,0x22U,0x3EU,0x01U,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U, + 0x79U,0x70U,0x65U,0x3DU,0x22U,0x74U,0x65U,0x78U,0x74U,0x22U,0x20U,0x72U,0x65U, + 0x61U,0x64U,0x6FU,0x6EU,0x6CU,0x79U,0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U,0x3DU, + 0x22U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU,0x64U,0x2DU,0x63U, + 0x6FU,0x6CU,0x6FU,0x72U,0x3AU,0x20U,0x74U,0x72U,0x61U,0x6EU,0x73U,0x70U,0x61U, + 0x72U,0x65U,0x6EU,0x74U,0x3BU,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3AU, + 0x20U,0x30U,0x70U,0x78U,0x22U,0x02U,0x67U,0x31U,0x20U,0x73U,0x69U,0x7AU,0x65U, + 0x3DU,0x22U,0x31U,0x30U,0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x61U,0x64U,0x5FU, + 0x76U,0x61U,0x6CU,0x75U,0x65U,0x22U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU, + 0x22U,0x30U,0x78U,0x25U,0x30U,0x33U,0x58U,0x22U,0x3EU,0x3CU,0x2FU,0x74U,0x64U, + 0x3EU,0x01U,0x3CU,0x74U,0x64U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U, + 0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x74U,0x65U,0x78U,0x74U,0x22U, + 0x20U,0x72U,0x65U,0x61U,0x64U,0x6FU,0x6EU,0x6CU,0x79U,0x20U,0x73U,0x74U,0x79U, + 0x6CU,0x65U,0x3DU,0x22U,0x62U,0x61U,0x63U,0x6BU,0x67U,0x72U,0x6FU,0x75U,0x6EU, + 0x64U,0x2DU,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3AU,0x20U,0x74U,0x72U,0x61U,0x6EU, + 0x73U,0x70U,0x61U,0x72U,0x65U,0x6EU,0x74U,0x3BU,0x20U,0x62U,0x6FU,0x72U,0x64U, + 0x65U,0x72U,0x3AU,0x20U,0x30U,0x70U,0x78U,0x22U,0x02U,0x67U,0x32U,0x20U,0x73U, + 0x69U,0x7AU,0x65U,0x3DU,0x22U,0x31U,0x30U,0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U, + 0x61U,0x64U,0x5FU,0x76U,0x6FU,0x6CU,0x74U,0x73U,0x22U,0x20U,0x76U,0x61U,0x6CU, + 0x75U,0x65U,0x3DU,0x22U,0x25U,0x35U,0x2EU,0x33U,0x66U,0x20U,0x56U,0x22U,0x3EU, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x01U,0x3CU,0x74U,0x64U,0x20U,0x68U,0x65U,0x69U, + 0x67U,0x68U,0x74U,0x3DU,0x35U,0x30U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U, + 0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x22U,0x23U,0x46U,0x46U, + 0x46U,0x46U,0x46U,0x46U,0x22U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU, + 0x22U,0x32U,0x22U,0x20U,0x63U,0x65U,0x6CU,0x6CU,0x70U,0x61U,0x64U,0x64U,0x69U, + 0x6EU,0x67U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x63U,0x65U,0x6CU,0x6CU,0x73U,0x70U, + 0x61U,0x63U,0x69U,0x6EU,0x67U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x22U,0x31U,0x30U,0x30U,0x25U,0x22U,0x3EU,0x3CU,0x74U,0x72U, + 0x3EU,0x02U,0x67U,0x33U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x74U,0x61U,0x62U, + 0x6CU,0x65U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x61U,0x64U,0x5FU,0x74U,0x61U,0x62U, + 0x6CU,0x65U,0x22U,0x20U,0x73U,0x74U,0x79U,0x6CU,0x65U,0x3DU,0x22U,0x77U,0x69U, + 0x64U,0x74U,0x68U,0x3AU,0x20U,0x25U,0x64U,0x25U,0x25U,0x22U,0x20U,0x62U,0x6FU, + 0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x63U,0x65U,0x6CU,0x6CU, + 0x70U,0x61U,0x64U,0x64U,0x69U,0x6EU,0x67U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x63U, + 0x65U,0x6CU,0x6CU,0x73U,0x70U,0x61U,0x63U,0x69U,0x6EU,0x67U,0x3DU,0x22U,0x30U, + 0x22U,0x3EU,0x01U,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x20U,0x62U,0x67U, + 0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x22U,0x23U,0x30U,0x30U,0x30U,0x30U,0x46U, + 0x46U,0x22U,0x3EU,0x26U,0x6EU,0x62U,0x73U,0x70U,0x3BU,0x3CU,0x2FU,0x74U,0x64U, + 0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U, + 0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU, + 0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU, + 0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U, + 0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x70U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU, + 0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x01U,0x3CU,0x69U,0x6EU,0x70U, + 0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x62U,0x75U,0x74U,0x74U,0x6FU, + 0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x52U,0x65U,0x66U,0x72U, + 0x65U,0x73U,0x68U,0x22U,0x20U,0x6FU,0x6EU,0x63U,0x6CU,0x69U,0x63U,0x6BU,0x3DU, + 0x22U,0x75U,0x70U,0x64U,0x61U,0x74U,0x65U,0x4DU,0x75U,0x6CU,0x74U,0x69U,0x70U, + 0x6CU,0x65U,0x28U,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U, + 0x2CU,0x70U,0x6CU,0x6FU,0x74U,0x41U,0x44U,0x47U,0x72U,0x61U,0x70U,0x68U,0x29U, + 0x22U,0x3EU,0x01U,0x50U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U,0x63U,0x3AU,0x3CU, + 0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x63U, + 0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U, + 0x61U,0x64U,0x43U,0x68U,0x6BU,0x42U,0x6FU,0x78U,0x22U,0x20U,0x6FU,0x6EU,0x63U, + 0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U, + 0x63U,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x41U,0x64U,0x28U,0x29U,0x22U,0x3EU, + 0x3CU,0x2FU,0x70U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x03U,0x70U, + 0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x00U, + + /*-- File: ad.cgx, 70 bytes --*/ + 0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x3CU,0x74U,0x65U,0x78U,0x74U,0x3EU, + 0x3CU,0x69U,0x64U,0x3EU,0x61U,0x64U,0x5FU,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3CU, + 0x2FU,0x69U,0x64U,0x3EU,0x02U,0x78U,0x20U,0x3CU,0x76U,0x61U,0x6CU,0x75U,0x65U, + 0x3EU,0x30U,0x78U,0x25U,0x30U,0x33U,0x58U,0x3CU,0x2FU,0x76U,0x61U,0x6CU,0x75U, + 0x65U,0x3EU,0x01U,0x3CU,0x2FU,0x74U,0x65U,0x78U,0x74U,0x3EU,0x3CU,0x2FU,0x66U, + 0x6FU,0x72U,0x6DU,0x3EU,0x00U, + + /*-- File: buttons.cgi, 1713 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x50U,0x75U,0x73U,0x68U,0x62U,0x75U, + 0x74U,0x74U,0x6FU,0x6EU,0x73U,0x3CU,0x2FU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU, + 0x01U,0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U,0x6CU,0x61U,0x6EU,0x67U, + 0x75U,0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U,0x53U,0x63U,0x72U,0x69U, + 0x70U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x74U,0x65U,0x78U,0x74U, + 0x2FU,0x6AU,0x61U,0x76U,0x61U,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x22U,0x20U, + 0x73U,0x72U,0x63U,0x3DU,0x22U,0x78U,0x6DU,0x6CU,0x5FU,0x68U,0x74U,0x74U,0x70U, + 0x2EU,0x6AU,0x73U,0x22U,0x3EU,0x3CU,0x2FU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U, + 0x3EU,0x01U,0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U,0x6CU,0x61U,0x6EU, + 0x67U,0x75U,0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U,0x53U,0x63U,0x72U, + 0x69U,0x70U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x74U,0x65U,0x78U, + 0x74U,0x2FU,0x6AU,0x61U,0x76U,0x61U,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x22U, + 0x3EU,0x76U,0x61U,0x72U,0x20U,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U,0x61U, + 0x74U,0x65U,0x20U,0x3DU,0x20U,0x6EU,0x65U,0x77U,0x20U,0x70U,0x65U,0x72U,0x69U, + 0x6FU,0x64U,0x69U,0x63U,0x4FU,0x62U,0x6AU,0x28U,0x22U,0x62U,0x75U,0x74U,0x74U, + 0x6FU,0x6EU,0x73U,0x2EU,0x63U,0x67U,0x78U,0x22U,0x2CU,0x20U,0x33U,0x30U,0x30U, + 0x29U,0x3BU,0x01U,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x70U, + 0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U,0x63U,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U, + 0x28U,0x29U,0x20U,0x7BU,0x20U,0x69U,0x66U,0x28U,0x64U,0x6FU,0x63U,0x75U,0x6DU, + 0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x22U,0x72U,0x65U,0x66U,0x72U,0x65U,0x73U, + 0x68U,0x43U,0x68U,0x6BU,0x42U,0x6FU,0x78U,0x22U,0x29U,0x2EU,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x65U,0x64U,0x20U,0x3DU,0x3DU,0x20U,0x74U,0x72U,0x75U,0x65U,0x29U, + 0x20U,0x7BU,0x01U,0x20U,0x75U,0x70U,0x64U,0x61U,0x74U,0x65U,0x4DU,0x75U,0x6CU, + 0x74U,0x69U,0x70U,0x6CU,0x65U,0x28U,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U, + 0x61U,0x74U,0x65U,0x29U,0x3BU,0x20U,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U, + 0x63U,0x46U,0x6FU,0x72U,0x6DU,0x54U,0x69U,0x6DU,0x65U,0x20U,0x3DU,0x20U,0x73U, + 0x65U,0x74U,0x54U,0x69U,0x6DU,0x65U,0x6FU,0x75U,0x74U,0x28U,0x22U,0x70U,0x65U, + 0x72U,0x69U,0x6FU,0x64U,0x69U,0x63U,0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x28U, + 0x29U,0x22U,0x2CU,0x20U,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U,0x64U,0x61U,0x74U, + 0x65U,0x2EU,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x29U,0x3BU,0x20U,0x7DU,0x20U, + 0x65U,0x6CU,0x73U,0x65U,0x01U,0x20U,0x63U,0x6CU,0x65U,0x61U,0x72U,0x54U,0x69U, + 0x6DU,0x65U,0x6FU,0x75U,0x74U,0x28U,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U, + 0x63U,0x46U,0x6FU,0x72U,0x6DU,0x54U,0x69U,0x6DU,0x65U,0x29U,0x3BU,0x7DU,0x3CU, + 0x2FU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x3EU,0x3CU,0x2FU,0x68U,0x65U,0x61U, + 0x64U,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x68U,0x65U,0x61U,0x64U,0x65U,0x72U,0x2EU, + 0x69U,0x6EU,0x63U,0x01U,0x3CU,0x68U,0x33U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU, + 0x3DU,0x22U,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x3CU,0x62U,0x72U, + 0x3EU,0x44U,0x69U,0x67U,0x69U,0x74U,0x61U,0x6CU,0x20U,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x3CU,0x2FU,0x68U,0x33U,0x3EU,0x01U,0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU, + 0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x4FU, + 0x6EU,0x20U,0x74U,0x68U,0x69U,0x73U,0x20U,0x70U,0x61U,0x67U,0x65U,0x20U,0x79U, + 0x6FU,0x75U,0x20U,0x63U,0x61U,0x6EU,0x20U,0x6DU,0x6FU,0x6EU,0x69U,0x74U,0x6FU, + 0x72U,0x20U,0x74U,0x68U,0x65U,0x20U,0x73U,0x74U,0x61U,0x74U,0x75U,0x73U,0x20U, + 0x6FU,0x66U,0x20U,0x74U,0x68U,0x65U,0x20U,0x70U,0x75U,0x73U,0x68U,0x62U,0x75U, + 0x74U,0x74U,0x6FU,0x6EU,0x73U,0x01U,0x20U,0x6FU,0x6EU,0x20U,0x62U,0x6FU,0x61U, + 0x72U,0x64U,0x2EU,0x20U,0x54U,0x68U,0x65U,0x20U,0x70U,0x65U,0x72U,0x69U,0x6FU, + 0x64U,0x69U,0x63U,0x20U,0x72U,0x65U,0x66U,0x72U,0x65U,0x73U,0x68U,0x20U,0x6FU, + 0x66U,0x20U,0x74U,0x68U,0x65U,0x20U,0x73U,0x63U,0x72U,0x65U,0x65U,0x6EU,0x20U, + 0x69U,0x73U,0x20U,0x62U,0x61U,0x73U,0x65U,0x64U,0x20U,0x6FU,0x6EU,0x20U,0x3CU, + 0x62U,0x3EU,0x78U,0x6DU,0x6CU,0x3CU,0x2FU,0x62U,0x3EU,0x20U,0x74U,0x65U,0x63U, + 0x68U,0x6EU,0x6FU,0x6CU,0x6FU,0x67U,0x79U,0x2EU,0x01U,0x20U,0x54U,0x68U,0x69U, + 0x73U,0x20U,0x72U,0x65U,0x73U,0x75U,0x6CU,0x74U,0x73U,0x20U,0x69U,0x6EU,0x20U, + 0x61U,0x20U,0x73U,0x6DU,0x6FU,0x6FU,0x74U,0x68U,0x2CU,0x20U,0x66U,0x6CU,0x69U, + 0x63U,0x6BU,0x65U,0x72U,0x2DU,0x66U,0x72U,0x65U,0x65U,0x20U,0x73U,0x63U,0x72U, + 0x65U,0x65U,0x6EU,0x20U,0x72U,0x65U,0x66U,0x72U,0x65U,0x73U,0x68U,0x2EU,0x3CU, + 0x62U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U,0x50U,0x72U,0x65U,0x73U, + 0x73U,0x20U,0x61U,0x20U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x20U,0x6FU,0x6EU, + 0x20U,0x61U,0x6EU,0x20U,0x65U,0x76U,0x61U,0x6CU,0x75U,0x61U,0x74U,0x69U,0x6FU, + 0x6EU,0x20U,0x62U,0x6FU,0x61U,0x72U,0x64U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x6FU, + 0x62U,0x73U,0x65U,0x72U,0x76U,0x65U,0x20U,0x74U,0x68U,0x65U,0x20U,0x63U,0x68U, + 0x61U,0x6EU,0x67U,0x65U,0x20U,0x6FU,0x6EU,0x20U,0x74U,0x68U,0x65U,0x20U,0x73U, + 0x63U,0x72U,0x65U,0x65U,0x6EU,0x2EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU, + 0x3CU,0x2FU,0x70U,0x3EU,0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x20U,0x61U,0x63U, + 0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x22U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x73U, + 0x2EU,0x63U,0x67U,0x69U,0x22U,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU, + 0x22U,0x70U,0x6FU,0x73U,0x74U,0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x66U,0x6FU, + 0x72U,0x6DU,0x31U,0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x22U,0x66U,0x6FU, + 0x72U,0x6DU,0x31U,0x22U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x62U, + 0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x22U,0x30U,0x22U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U, + 0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x33U,0x22U,0x3EU,0x01U,0x3CU,0x74U,0x72U, + 0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U,0x61U,0x61U,0x63U, + 0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U, + 0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U,0x74U,0x65U,0x6DU,0x3CU,0x2FU,0x74U, + 0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU, + 0x36U,0x30U,0x25U,0x3EU,0x53U,0x74U,0x61U,0x74U,0x75U,0x73U,0x3CU,0x2FU,0x74U, + 0x68U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x01U,0x20U, + 0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU, + 0x22U,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x22U,0x3EU,0x42U,0x75U, + 0x74U,0x74U,0x6FU,0x6EU,0x73U,0x20U,0x5BU,0x37U,0x2EU,0x2EU,0x30U,0x5DU,0x3AU, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x20U,0x3CU,0x74U,0x64U,0x20U,0x61U,0x6CU,0x69U, + 0x67U,0x6EU,0x3DU,0x22U,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x20U, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x22U,0x20U,0x64U,0x69U,0x73U, + 0x61U,0x62U,0x6CU,0x65U,0x64U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x62U,0x75U,0x74U, + 0x74U,0x6FU,0x6EU,0x37U,0x22U,0x3EU,0x37U,0x01U,0x20U,0x3CU,0x69U,0x6EU,0x70U, + 0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U, + 0x6BU,0x62U,0x6FU,0x78U,0x22U,0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U, + 0x64U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x36U, + 0x22U,0x3EU,0x36U,0x20U,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U, + 0x70U,0x65U,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x22U, + 0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U,0x64U,0x20U,0x69U,0x64U,0x3DU, + 0x22U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x35U,0x22U,0x3EU,0x35U,0x01U,0x20U, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x22U,0x20U,0x64U,0x69U,0x73U, + 0x61U,0x62U,0x6CU,0x65U,0x64U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x62U,0x75U,0x74U, + 0x74U,0x6FU,0x6EU,0x34U,0x22U,0x3EU,0x34U,0x20U,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U,0x6BU, + 0x62U,0x6FU,0x78U,0x22U,0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U,0x64U, + 0x20U,0x69U,0x64U,0x3DU,0x22U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x33U,0x22U, + 0x3EU,0x33U,0x01U,0x20U,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U, + 0x70U,0x65U,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x22U, + 0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U,0x64U,0x20U,0x69U,0x64U,0x3DU, + 0x22U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x32U,0x22U,0x3EU,0x32U,0x20U,0x3CU, + 0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x63U, + 0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x22U,0x20U,0x64U,0x69U,0x73U,0x61U, + 0x62U,0x6CU,0x65U,0x64U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x62U,0x75U,0x74U,0x74U, + 0x6FU,0x6EU,0x31U,0x22U,0x3EU,0x31U,0x01U,0x20U,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U,0x6BU, + 0x62U,0x6FU,0x78U,0x22U,0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U,0x64U, + 0x20U,0x69U,0x64U,0x3DU,0x22U,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x30U,0x22U, + 0x3EU,0x30U,0x20U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU, + 0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU, + 0x65U,0x3EU,0x3CU,0x70U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U, + 0x65U,0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x01U,0x20U,0x3CU,0x69U,0x6EU,0x70U, + 0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x62U,0x75U,0x74U,0x74U, + 0x6FU,0x6EU,0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x72U,0x65U,0x66U,0x72U,0x65U, + 0x73U,0x68U,0x42U,0x74U,0x6EU,0x22U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU, + 0x22U,0x52U,0x65U,0x66U,0x72U,0x65U,0x73U,0x68U,0x22U,0x20U,0x6FU,0x6EU,0x63U, + 0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x75U,0x70U,0x64U,0x61U,0x74U,0x65U,0x4DU, + 0x75U,0x6CU,0x74U,0x69U,0x70U,0x6CU,0x65U,0x28U,0x66U,0x6FU,0x72U,0x6DU,0x55U, + 0x70U,0x64U,0x61U,0x74U,0x65U,0x29U,0x22U,0x3EU,0x01U,0x20U,0x50U,0x65U,0x72U, + 0x69U,0x6FU,0x64U,0x69U,0x63U,0x3AU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U, + 0x74U,0x79U,0x70U,0x65U,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU, + 0x78U,0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x72U,0x65U,0x66U,0x72U,0x65U,0x73U, + 0x68U,0x43U,0x68U,0x6BU,0x42U,0x6FU,0x78U,0x22U,0x20U,0x6FU,0x6EU,0x63U,0x6CU, + 0x69U,0x63U,0x6BU,0x3DU,0x22U,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x69U,0x63U, + 0x55U,0x70U,0x64U,0x61U,0x74U,0x65U,0x28U,0x29U,0x22U,0x3EU,0x3CU,0x2FU,0x70U, + 0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x66U, + 0x6FU,0x6FU,0x74U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x00U, + + /*-- File: buttons.cgx, 439 bytes --*/ + 0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x3CU,0x63U,0x68U,0x65U,0x63U,0x6BU, + 0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U,0x3EU,0x62U,0x75U,0x74U,0x74U,0x6FU, + 0x6EU,0x30U,0x3CU,0x2FU,0x69U,0x64U,0x3EU,0x02U,0x79U,0x30U,0x20U,0x3CU,0x6FU, + 0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU,0x6EU,0x3EU,0x01U,0x3CU,0x2FU,0x63U, + 0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x63U,0x68U,0x65U,0x63U, + 0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U,0x3EU,0x62U,0x75U,0x74U,0x74U, + 0x6FU,0x6EU,0x31U,0x3CU,0x2FU,0x69U,0x64U,0x3EU,0x02U,0x79U,0x31U,0x20U,0x3CU, + 0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU,0x6EU,0x3EU,0x01U,0x3CU,0x2FU, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U,0x3EU,0x62U,0x75U,0x74U, + 0x74U,0x6FU,0x6EU,0x32U,0x3CU,0x2FU,0x69U,0x64U,0x3EU,0x02U,0x79U,0x32U,0x20U, + 0x3CU,0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU,0x6EU,0x3EU,0x01U,0x3CU, + 0x2FU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x63U,0x68U, + 0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U,0x3EU,0x62U,0x75U, + 0x74U,0x74U,0x6FU,0x6EU,0x33U,0x3CU,0x2FU,0x69U,0x64U,0x3EU,0x02U,0x79U,0x33U, + 0x20U,0x3CU,0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU,0x6EU,0x3EU,0x01U, + 0x3CU,0x2FU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x63U, + 0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U,0x3EU,0x62U, + 0x75U,0x74U,0x74U,0x6FU,0x6EU,0x34U,0x3CU,0x2FU,0x69U,0x64U,0x3EU,0x02U,0x79U, + 0x34U,0x20U,0x3CU,0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU,0x6EU,0x3EU, + 0x01U,0x3CU,0x2FU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U,0x3EU, + 0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x35U,0x3CU,0x2FU,0x69U,0x64U,0x3EU,0x02U, + 0x79U,0x35U,0x20U,0x3CU,0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU,0x6EU, + 0x3EU,0x01U,0x3CU,0x2FU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU, + 0x3CU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U,0x64U, + 0x3EU,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x36U,0x3CU,0x2FU,0x69U,0x64U,0x3EU, + 0x02U,0x79U,0x36U,0x20U,0x3CU,0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x6FU, + 0x6EU,0x3EU,0x01U,0x3CU,0x2FU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U, + 0x3EU,0x3CU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x3EU,0x3CU,0x69U, + 0x64U,0x3EU,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x37U,0x3CU,0x2FU,0x69U,0x64U, + 0x3EU,0x02U,0x79U,0x37U,0x20U,0x3CU,0x6FU,0x6EU,0x3EU,0x25U,0x73U,0x3CU,0x2FU, + 0x6FU,0x6EU,0x3EU,0x01U,0x3CU,0x2FU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU, + 0x78U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x00U, + + /*-- File: language.cgi, 845 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x42U,0x72U,0x6FU,0x77U,0x73U,0x65U, + 0x72U,0x20U,0x4CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x20U,0x50U,0x72U, + 0x65U,0x66U,0x65U,0x72U,0x65U,0x6EU,0x63U,0x65U,0x3CU,0x2FU,0x74U,0x69U,0x74U, + 0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x68U,0x65U,0x61U,0x64U,0x3EU,0x03U,0x70U,0x67U, + 0x5FU,0x68U,0x65U,0x61U,0x64U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x01U,0x3CU, + 0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U, + 0x65U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x42U,0x72U,0x6FU,0x77U,0x73U,0x65U, + 0x72U,0x20U,0x4CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x20U,0x50U,0x72U, + 0x65U,0x66U,0x65U,0x72U,0x65U,0x6EU,0x63U,0x65U,0x3CU,0x2FU,0x68U,0x32U,0x3EU, + 0x01U,0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU, + 0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x59U,0x6FU,0x75U,0x20U,0x63U,0x61U,0x6EU, + 0x20U,0x75U,0x73U,0x65U,0x20U,0x74U,0x68U,0x69U,0x73U,0x20U,0x69U,0x6EU,0x66U, + 0x6FU,0x72U,0x6DU,0x61U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x74U,0x6FU,0x20U,0x63U, + 0x72U,0x65U,0x61U,0x74U,0x65U,0x20U,0x3CU,0x62U,0x3EU,0x6DU,0x75U,0x6CU,0x74U, + 0x69U,0x6CU,0x69U,0x6EU,0x67U,0x75U,0x61U,0x6CU,0x3CU,0x2FU,0x62U,0x3EU,0x20U, + 0x77U,0x65U,0x62U,0x73U,0x69U,0x74U,0x65U,0x73U,0x2EU,0x3CU,0x62U,0x72U,0x3EU, + 0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U,0x54U,0x68U,0x65U,0x20U,0x6CU,0x61U,0x6EU, + 0x67U,0x75U,0x61U,0x67U,0x65U,0x20U,0x70U,0x72U,0x65U,0x66U,0x65U,0x72U,0x65U, + 0x6EU,0x63U,0x65U,0x73U,0x20U,0x63U,0x61U,0x6EU,0x20U,0x62U,0x65U,0x20U,0x73U, + 0x65U,0x74U,0x20U,0x69U,0x6EU,0x20U,0x43U,0x68U,0x72U,0x6FU,0x6DU,0x65U,0x20U, + 0x76U,0x69U,0x61U,0x20U,0x3CU,0x62U,0x3EU,0x53U,0x65U,0x74U,0x74U,0x69U,0x6EU, + 0x67U,0x73U,0x20U,0x2FU,0x20U,0x4CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U, + 0x73U,0x3CU,0x2FU,0x62U,0x3EU,0x01U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x69U,0x6EU, + 0x20U,0x4DU,0x6FU,0x7AU,0x69U,0x6CU,0x6CU,0x61U,0x20U,0x46U,0x69U,0x72U,0x65U, + 0x66U,0x6FU,0x78U,0x20U,0x76U,0x69U,0x61U,0x20U,0x3CU,0x62U,0x3EU,0x53U,0x65U, + 0x74U,0x74U,0x69U,0x6EU,0x67U,0x73U,0x20U,0x2FU,0x20U,0x47U,0x65U,0x6EU,0x65U, + 0x72U,0x61U,0x6CU,0x20U,0x2FU,0x20U,0x4CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U, + 0x65U,0x3CU,0x2FU,0x62U,0x3EU,0x2EU,0x20U,0x59U,0x6FU,0x75U,0x20U,0x63U,0x61U, + 0x6EU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x01U,0x20U,0x74U,0x68U,0x65U, + 0x20U,0x73U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x20U,0x69U,0x6EU,0x20U,0x79U, + 0x6FU,0x75U,0x72U,0x20U,0x62U,0x72U,0x6FU,0x77U,0x73U,0x65U,0x72U,0x20U,0x61U, + 0x6EU,0x64U,0x20U,0x72U,0x65U,0x6CU,0x6FU,0x61U,0x64U,0x20U,0x74U,0x68U,0x69U, + 0x73U,0x20U,0x70U,0x61U,0x67U,0x65U,0x20U,0x74U,0x6FU,0x20U,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x2EU,0x3CU,0x62U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U, + 0x59U,0x6FU,0x75U,0x72U,0x20U,0x62U,0x72U,0x6FU,0x77U,0x73U,0x65U,0x72U,0x20U, + 0x63U,0x75U,0x72U,0x72U,0x65U,0x6EU,0x74U,0x6CU,0x79U,0x20U,0x73U,0x65U,0x6EU, + 0x64U,0x73U,0x20U,0x74U,0x68U,0x65U,0x20U,0x66U,0x6FU,0x6CU,0x6CU,0x6FU,0x77U, + 0x69U,0x6EU,0x67U,0x20U,0x6CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x20U, + 0x73U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x3AU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU, + 0x74U,0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x20U, + 0x61U,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x69U,0x6EU,0x64U,0x65U,0x78U,0x2EU, + 0x68U,0x74U,0x6DU,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU,0x70U,0x6FU, + 0x73U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x63U,0x67U,0x69U,0x3EU,0x3CU, + 0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x68U,0x69U, + 0x64U,0x64U,0x65U,0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x6CU, + 0x61U,0x6EU,0x67U,0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x67U,0x3EU, + 0x01U,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U, + 0x72U,0x3DU,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U, + 0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U, + 0x33U,0x22U,0x3EU,0x3CU,0x74U,0x72U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU, + 0x72U,0x3DU,0x23U,0x61U,0x61U,0x63U,0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U, + 0x68U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U, + 0x74U,0x65U,0x6DU,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U, + 0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x36U,0x30U,0x25U,0x3EU,0x53U,0x65U, + 0x74U,0x74U,0x69U,0x6EU,0x67U,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x3CU,0x2FU,0x74U, + 0x72U,0x3EU,0x02U,0x65U,0x20U,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU, + 0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U, + 0x2EU,0x67U,0x69U,0x66U,0x3EU,0x42U,0x72U,0x6FU,0x77U,0x73U,0x65U,0x72U,0x20U, + 0x4CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x3CU,0x2FU,0x74U,0x64U,0x3EU, + 0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x62U,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x62U,0x3EU, + 0x20U,0x5BU,0x25U,0x73U,0x5DU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x01U,0x3CU,0x2FU, + 0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U, + 0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x03U,0x70U, + 0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x00U, + + /*-- File: lcd.cgi, 979 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x4CU,0x43U,0x44U,0x20U,0x43U,0x6FU, + 0x6EU,0x74U,0x72U,0x6FU,0x6CU,0x3CU,0x2FU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU, + 0x3CU,0x2FU,0x68U,0x65U,0x61U,0x64U,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x68U,0x65U, + 0x61U,0x64U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x01U,0x3CU,0x68U,0x32U,0x20U, + 0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU, + 0x3CU,0x62U,0x72U,0x3EU,0x4CU,0x43U,0x44U,0x20U,0x4DU,0x6FU,0x64U,0x75U,0x6CU, + 0x65U,0x20U,0x43U,0x6FU,0x6EU,0x74U,0x72U,0x6FU,0x6CU,0x3CU,0x2FU,0x68U,0x32U, + 0x3EU,0x01U,0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U, + 0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x4FU,0x6EU,0x20U,0x74U,0x68U,0x69U, + 0x73U,0x20U,0x70U,0x61U,0x67U,0x65U,0x20U,0x79U,0x6FU,0x75U,0x20U,0x63U,0x61U, + 0x6EU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x20U,0x61U,0x20U,0x6DU,0x65U, + 0x73U,0x73U,0x61U,0x67U,0x65U,0x20U,0x64U,0x69U,0x73U,0x70U,0x6CU,0x61U,0x79U, + 0x65U,0x64U,0x20U,0x6FU,0x6EU,0x20U,0x74U,0x68U,0x65U,0x20U,0x4CU,0x43U,0x44U, + 0x01U,0x20U,0x6DU,0x6FU,0x64U,0x75U,0x6CU,0x65U,0x2EU,0x20U,0x53U,0x69U,0x6DU, + 0x70U,0x6CU,0x79U,0x20U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x20U,0x74U,0x68U,0x65U, + 0x20U,0x74U,0x65U,0x78U,0x74U,0x20U,0x74U,0x6FU,0x20U,0x62U,0x65U,0x20U,0x64U, + 0x69U,0x73U,0x70U,0x6CU,0x61U,0x79U,0x65U,0x64U,0x20U,0x61U,0x6EU,0x64U,0x20U, + 0x63U,0x6CU,0x69U,0x63U,0x6BU,0x20U,0x6FU,0x6EU,0x20U,0x53U,0x65U,0x6EU,0x64U, + 0x2EU,0x20U,0x54U,0x68U,0x65U,0x20U,0x6DU,0x65U,0x73U,0x73U,0x61U,0x67U,0x65U, + 0x01U,0x20U,0x77U,0x69U,0x6CU,0x6CU,0x20U,0x62U,0x65U,0x20U,0x70U,0x72U,0x69U, + 0x6EU,0x74U,0x65U,0x64U,0x20U,0x69U,0x6EU,0x20U,0x61U,0x20U,0x73U,0x65U,0x72U, + 0x69U,0x61U,0x6CU,0x20U,0x77U,0x69U,0x6EU,0x64U,0x6FU,0x77U,0x20U,0x69U,0x6EU, + 0x20U,0x74U,0x68U,0x65U,0x20U,0x64U,0x65U,0x62U,0x75U,0x67U,0x67U,0x65U,0x72U, + 0x2EU,0x3CU,0x62U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U,0x54U,0x68U, + 0x69U,0x73U,0x20U,0x46U,0x6FU,0x72U,0x6DU,0x20U,0x75U,0x73U,0x65U,0x73U,0x20U, + 0x61U,0x20U,0x3CU,0x62U,0x3EU,0x50U,0x4FU,0x53U,0x54U,0x3CU,0x2FU,0x62U,0x3EU, + 0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x20U,0x74U,0x6FU,0x20U,0x73U,0x65U, + 0x6EU,0x64U,0x20U,0x64U,0x61U,0x74U,0x61U,0x20U,0x74U,0x6FU,0x20U,0x61U,0x20U, + 0x57U,0x65U,0x62U,0x20U,0x73U,0x65U,0x72U,0x76U,0x65U,0x72U,0x2EU,0x3CU,0x2FU, + 0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x01U,0x3CU,0x66U,0x6FU, + 0x72U,0x6DU,0x20U,0x61U,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x6CU,0x63U,0x64U, + 0x2EU,0x63U,0x67U,0x69U,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU,0x70U, + 0x6FU,0x73U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x63U,0x67U,0x69U,0x3EU, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x68U, + 0x69U,0x64U,0x64U,0x65U,0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U, + 0x6CU,0x63U,0x64U,0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x67U,0x3EU, + 0x01U,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U, + 0x72U,0x3DU,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U, + 0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U, + 0x33U,0x22U,0x3EU,0x3CU,0x74U,0x72U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU, + 0x72U,0x3DU,0x23U,0x61U,0x61U,0x63U,0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U, + 0x68U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U, + 0x74U,0x65U,0x6DU,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U, + 0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x36U,0x30U,0x25U,0x3EU,0x53U,0x65U, + 0x74U,0x74U,0x69U,0x6EU,0x67U,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x3CU,0x2FU,0x74U, + 0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU, + 0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U, + 0x66U,0x3EU,0x4CU,0x69U,0x6EU,0x65U,0x20U,0x31U,0x20U,0x54U,0x65U,0x78U,0x74U, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x66U,0x31U,0x20U,0x3CU,0x74U,0x64U,0x3EU, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U, + 0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x63U,0x64U,0x31U, + 0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x32U,0x30U,0x20U,0x6DU,0x61U,0x78U,0x6CU, + 0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x32U,0x30U,0x20U,0x76U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU, + 0x2FU,0x74U,0x72U,0x3EU,0x01U,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU, + 0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U, + 0x2EU,0x67U,0x69U,0x66U,0x3EU,0x4CU,0x69U,0x6EU,0x65U,0x20U,0x32U,0x20U,0x54U, + 0x65U,0x78U,0x74U,0x3CU,0x2FU,0x54U,0x44U,0x3EU,0x02U,0x66U,0x32U,0x20U,0x3CU, + 0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U, + 0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6CU, + 0x63U,0x64U,0x32U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x32U,0x30U,0x20U,0x6DU, + 0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x32U,0x30U,0x20U,0x76U, + 0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x3EU,0x3CU,0x2FU,0x74U, + 0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x01U,0x3CU,0x2FU,0x66U,0x6FU,0x6EU, + 0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x70U,0x20U, + 0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x73U, + 0x75U,0x62U,0x6DU,0x69U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x73U,0x65U, + 0x74U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x53U,0x65U,0x6EU,0x64U, + 0x22U,0x20U,0x69U,0x64U,0x3DU,0x22U,0x73U,0x62U,0x6DU,0x22U,0x3EU,0x3CU,0x69U, + 0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x72U,0x65U,0x73U, + 0x65U,0x74U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x55U,0x6EU,0x64U, + 0x6FU,0x22U,0x3EU,0x01U,0x3CU,0x2FU,0x70U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x72U, + 0x6DU,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U,0x65U,0x72U,0x2EU, + 0x69U,0x6EU,0x63U,0x00U, + + /*-- File: leds.cgi, 1940 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x4CU,0x45U,0x44U,0x20U,0x43U,0x6FU, + 0x6EU,0x74U,0x72U,0x6FU,0x6CU,0x3CU,0x2FU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU, + 0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U,0x6CU,0x61U,0x6EU,0x67U,0x75U, + 0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U,0x53U,0x63U,0x72U,0x69U,0x70U, + 0x74U,0x3EU,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x41U,0x6CU, + 0x6CU,0x53U,0x57U,0x28U,0x73U,0x74U,0x29U,0x20U,0x7BU,0x01U,0x20U,0x66U,0x6FU, + 0x72U,0x28U,0x69U,0x3DU,0x30U,0x3BU,0x69U,0x3CU,0x64U,0x6FU,0x63U,0x75U,0x6DU, + 0x65U,0x6EU,0x74U,0x2EU,0x66U,0x6FU,0x72U,0x6DU,0x31U,0x2EU,0x6CU,0x65U,0x6EU, + 0x67U,0x74U,0x68U,0x3BU,0x69U,0x2BU,0x2BU,0x29U,0x20U,0x7BU,0x20U,0x69U,0x66U, + 0x28U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x66U,0x6FU,0x72U, + 0x6DU,0x31U,0x2EU,0x65U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x73U,0x5BU,0x69U, + 0x5DU,0x2EU,0x74U,0x79U,0x70U,0x65U,0x3DU,0x3DU,0x22U,0x63U,0x68U,0x65U,0x63U, + 0x6BU,0x62U,0x6FU,0x78U,0x22U,0x29U,0x7BU,0x01U,0x20U,0x64U,0x6FU,0x63U,0x75U, + 0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x66U,0x6FU,0x72U,0x6DU,0x31U,0x2EU,0x65U,0x6CU, + 0x65U,0x6DU,0x65U,0x6EU,0x74U,0x73U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x65U,0x64U,0x3DU,0x73U,0x74U,0x3BU,0x20U,0x7DU,0x20U,0x7DU,0x20U, + 0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x66U,0x6FU,0x72U,0x6DU, + 0x31U,0x2EU,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x7DU,0x3CU, + 0x2FU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x3EU,0x3CU,0x2FU,0x68U,0x65U,0x61U, + 0x64U,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x68U,0x65U,0x61U,0x64U,0x65U,0x72U,0x2EU, + 0x69U,0x6EU,0x63U,0x01U,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU, + 0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x43U, + 0x6FU,0x6EU,0x74U,0x72U,0x6FU,0x6CU,0x20U,0x4CU,0x45U,0x44U,0x73U,0x20U,0x6FU, + 0x6EU,0x20U,0x74U,0x68U,0x65U,0x20U,0x62U,0x6FU,0x61U,0x72U,0x64U,0x3CU,0x2FU, + 0x68U,0x32U,0x3EU,0x01U,0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U, + 0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x54U,0x68U,0x69U,0x73U, + 0x20U,0x70U,0x61U,0x67U,0x65U,0x20U,0x73U,0x68U,0x6FU,0x77U,0x73U,0x20U,0x79U, + 0x6FU,0x75U,0x20U,0x68U,0x6FU,0x77U,0x20U,0x74U,0x6FU,0x20U,0x75U,0x73U,0x65U, + 0x20U,0x74U,0x68U,0x65U,0x20U,0x66U,0x6FU,0x6CU,0x6CU,0x6FU,0x77U,0x69U,0x6EU, + 0x67U,0x20U,0x68U,0x74U,0x74U,0x70U,0x20U,0x66U,0x6FU,0x72U,0x6DU,0x20U,0x69U, + 0x6EU,0x70U,0x75U,0x74U,0x01U,0x20U,0x6FU,0x62U,0x6AU,0x65U,0x63U,0x74U,0x73U, + 0x3AU,0x20U,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x2CU,0x20U,0x73U, + 0x65U,0x6CU,0x65U,0x63U,0x74U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x62U,0x75U,0x74U, + 0x74U,0x6FU,0x6EU,0x2EU,0x20U,0x49U,0x74U,0x20U,0x61U,0x6CU,0x73U,0x6FU,0x20U, + 0x75U,0x73U,0x65U,0x73U,0x20U,0x61U,0x20U,0x73U,0x69U,0x6DU,0x70U,0x6CU,0x65U, + 0x20U,0x6AU,0x61U,0x76U,0x61U,0x20U,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U, + 0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x01U,0x20U,0x74U,0x6FU,0x20U, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x2FU,0x75U,0x6EU,0x63U,0x68U,0x65U,0x63U,0x6BU, + 0x20U,0x61U,0x6CU,0x6CU,0x20U,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U, + 0x65U,0x73U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U, + 0x20U,0x74U,0x68U,0x65U,0x20U,0x64U,0x61U,0x74U,0x61U,0x2EU,0x3CU,0x62U,0x72U, + 0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U,0x54U,0x68U,0x69U,0x73U,0x20U,0x66U, + 0x6FU,0x72U,0x6DU,0x20U,0x75U,0x73U,0x65U,0x73U,0x20U,0x61U,0x20U,0x3CU,0x62U, + 0x3EU,0x50U,0x4FU,0x53U,0x54U,0x3CU,0x2FU,0x62U,0x3EU,0x20U,0x6DU,0x65U,0x74U, + 0x68U,0x6FU,0x64U,0x20U,0x74U,0x6FU,0x20U,0x73U,0x65U,0x6EU,0x64U,0x20U,0x64U, + 0x61U,0x74U,0x61U,0x20U,0x74U,0x6FU,0x20U,0x61U,0x20U,0x77U,0x65U,0x62U,0x20U, + 0x73U,0x65U,0x72U,0x76U,0x65U,0x72U,0x2EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U, + 0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x20U,0x61U, + 0x63U,0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x6CU,0x65U,0x64U,0x73U,0x2EU,0x63U,0x67U, + 0x69U,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU,0x70U,0x6FU,0x73U,0x74U, + 0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x66U,0x6FU,0x72U,0x6DU,0x31U,0x3EU,0x3CU, + 0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x68U,0x69U, + 0x64U,0x64U,0x65U,0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x6CU, + 0x65U,0x64U,0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x67U,0x3EU,0x01U, + 0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U, + 0x3DU,0x30U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U,0x3EU, + 0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x33U, + 0x22U,0x3EU,0x3CU,0x74U,0x72U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U, + 0x3DU,0x23U,0x61U,0x61U,0x63U,0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U,0x68U, + 0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U,0x74U, + 0x65U,0x6DU,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U,0x20U, + 0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x36U,0x30U,0x25U,0x3EU,0x53U,0x65U,0x74U, + 0x74U,0x69U,0x6EU,0x67U,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x3CU,0x2FU,0x74U,0x72U, + 0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U, + 0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x3EU,0x4CU,0x45U,0x44U, + 0x20U,0x63U,0x6FU,0x6EU,0x74U,0x72U,0x6FU,0x6CU,0x3AU,0x3CU,0x2FU,0x74U,0x64U, + 0x3EU,0x01U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U, + 0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x22U,0x63U,0x74U,0x72U,0x6CU,0x22U,0x20U, + 0x6FU,0x6EU,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x3DU,0x22U,0x73U,0x75U,0x62U, + 0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x22U,0x3EU,0x02U,0x62U,0x63U,0x20U,0x3CU, + 0x6FU,0x70U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x25U,0x73U,0x3EU,0x42U,0x72U,0x6FU, + 0x77U,0x73U,0x65U,0x72U,0x3CU,0x2FU,0x6FU,0x70U,0x74U,0x69U,0x6FU,0x6EU,0x3EU, + 0x3CU,0x6FU,0x70U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x25U,0x73U,0x3EU,0x52U,0x75U, + 0x6EU,0x6EU,0x69U,0x6EU,0x67U,0x20U,0x4CU,0x69U,0x67U,0x68U,0x74U,0x73U,0x3CU, + 0x2FU,0x6FU,0x70U,0x74U,0x69U,0x6FU,0x6EU,0x3EU,0x3CU,0x2FU,0x73U,0x65U,0x6CU, + 0x65U,0x63U,0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U, + 0x3EU,0x01U,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU, + 0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U, + 0x66U,0x3EU,0x4CU,0x45U,0x44U,0x20U,0x64U,0x69U,0x6FU,0x64U,0x65U,0x20U,0x70U, + 0x6FU,0x72U,0x74U,0x73U,0x20U,0x5BU,0x37U,0x2EU,0x2EU,0x30U,0x5DU,0x3AU,0x3CU, + 0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU, + 0x65U,0x3EU,0x3CU,0x74U,0x72U,0x20U,0x76U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU, + 0x22U,0x6DU,0x69U,0x64U,0x64U,0x6CU,0x65U,0x22U,0x3EU,0x02U,0x62U,0x37U,0x20U, + 0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U, + 0x70U,0x65U,0x3DU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x20U,0x6EU, + 0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x65U,0x64U,0x37U,0x20U,0x4FU,0x6EU,0x43U,0x6CU, + 0x69U,0x63U,0x6BU,0x3DU,0x22U,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U, + 0x3BU,0x22U,0x20U,0x25U,0x73U,0x3EU,0x37U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U, + 0x62U,0x36U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U, + 0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU, + 0x78U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x65U,0x64U,0x36U,0x20U,0x4FU, + 0x6EU,0x43U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x73U,0x75U,0x62U,0x6DU,0x69U, + 0x74U,0x28U,0x29U,0x3BU,0x22U,0x20U,0x25U,0x73U,0x3EU,0x36U,0x3CU,0x2FU,0x74U, + 0x64U,0x3EU,0x02U,0x62U,0x35U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU, + 0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x63U,0x68U,0x65U,0x63U, + 0x6BU,0x62U,0x6FU,0x78U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x65U,0x64U, + 0x35U,0x20U,0x4FU,0x6EU,0x43U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x73U,0x75U, + 0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x22U,0x20U,0x25U,0x73U,0x3EU,0x35U, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x62U,0x34U,0x20U,0x3CU,0x74U,0x64U,0x3EU, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x63U, + 0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU, + 0x6CU,0x65U,0x64U,0x34U,0x20U,0x4FU,0x6EU,0x43U,0x6CU,0x69U,0x63U,0x6BU,0x3DU, + 0x22U,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x22U,0x20U,0x25U, + 0x73U,0x3EU,0x34U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x01U,0x3CU,0x74U,0x64U,0x20U, + 0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x22U,0x35U,0x25U,0x22U,0x3EU,0x3CU,0x2FU, + 0x74U,0x64U,0x3EU,0x02U,0x62U,0x33U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U, + 0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x62U,0x6FU,0x78U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x65U, + 0x64U,0x33U,0x20U,0x4FU,0x6EU,0x43U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x73U, + 0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x22U,0x20U,0x25U,0x73U,0x3EU, + 0x33U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x62U,0x32U,0x20U,0x3CU,0x74U,0x64U, + 0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x20U,0x6EU,0x61U,0x6DU,0x65U, + 0x3DU,0x6CU,0x65U,0x64U,0x32U,0x20U,0x4FU,0x6EU,0x43U,0x6CU,0x69U,0x63U,0x6BU, + 0x3DU,0x22U,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x22U,0x20U, + 0x25U,0x73U,0x3EU,0x32U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x62U,0x31U,0x20U, + 0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U, + 0x70U,0x65U,0x3DU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x20U,0x6EU, + 0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x65U,0x64U,0x31U,0x20U,0x4FU,0x6EU,0x43U,0x6CU, + 0x69U,0x63U,0x6BU,0x3DU,0x22U,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U, + 0x3BU,0x22U,0x20U,0x25U,0x73U,0x3EU,0x31U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U, + 0x62U,0x30U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U, + 0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU, + 0x78U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x65U,0x64U,0x30U,0x20U,0x4FU, + 0x6EU,0x43U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x73U,0x75U,0x62U,0x6DU,0x69U, + 0x74U,0x28U,0x29U,0x3BU,0x22U,0x20U,0x25U,0x73U,0x3EU,0x30U,0x3CU,0x2FU,0x74U, + 0x64U,0x3EU,0x01U,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U, + 0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U, + 0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU, + 0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U, + 0x66U,0x3EU,0x41U,0x6CU,0x6CU,0x20U,0x4CU,0x45U,0x44U,0x20U,0x64U,0x69U,0x6FU, + 0x64U,0x65U,0x73U,0x20U,0x4FU,0x6EU,0x20U,0x6FU,0x72U,0x20U,0x4FU,0x46U,0x46U, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x01U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU, + 0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x62U,0x75U,0x74U,0x74U, + 0x6FU,0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x26U,0x6EU,0x62U, + 0x73U,0x70U,0x3BU,0x26U,0x6EU,0x62U,0x73U,0x70U,0x3BU,0x4FU,0x4EU,0x26U,0x6EU, + 0x62U,0x73U,0x70U,0x3BU,0x26U,0x6EU,0x62U,0x73U,0x70U,0x3BU,0x26U,0x6EU,0x62U, + 0x73U,0x70U,0x3BU,0x22U,0x20U,0x6FU,0x6EU,0x63U,0x6CU,0x69U,0x63U,0x6BU,0x3DU, + 0x22U,0x41U,0x6CU,0x6CU,0x53U,0x57U,0x28U,0x74U,0x72U,0x75U,0x65U,0x29U,0x22U, + 0x3EU,0x01U,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U, + 0x3DU,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U, + 0x3DU,0x22U,0x26U,0x6EU,0x62U,0x73U,0x70U,0x3BU,0x26U,0x6EU,0x62U,0x73U,0x70U, + 0x3BU,0x4FU,0x46U,0x46U,0x26U,0x6EU,0x62U,0x73U,0x70U,0x3BU,0x26U,0x6EU,0x62U, + 0x73U,0x70U,0x3BU,0x22U,0x20U,0x6FU,0x6EU,0x63U,0x6CU,0x69U,0x63U,0x6BU,0x3DU, + 0x22U,0x41U,0x6CU,0x6CU,0x53U,0x57U,0x28U,0x66U,0x61U,0x6CU,0x73U,0x65U,0x29U, + 0x22U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU, + 0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x72U,0x6DU, + 0x3EU,0x03U,0x70U,0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U,0x65U,0x72U,0x2EU,0x69U, + 0x6EU,0x63U,0x00U, + + /*-- File: network.cgi, 1969 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x4EU,0x65U,0x74U,0x77U,0x6FU,0x72U, + 0x6BU,0x20U,0x53U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x73U,0x3CU,0x2FU,0x74U, + 0x69U,0x74U,0x6CU,0x65U,0x3EU,0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U, + 0x6CU,0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U, + 0x53U,0x63U,0x72U,0x69U,0x70U,0x74U,0x3EU,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U, + 0x6FU,0x6EU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x43U,0x6FU,0x6EU,0x66U, + 0x69U,0x72U,0x6DU,0x28U,0x66U,0x29U,0x7BU,0x01U,0x20U,0x69U,0x66U,0x28U,0x21U, + 0x63U,0x6FU,0x6EU,0x66U,0x69U,0x72U,0x6DU,0x28U,0x27U,0x41U,0x72U,0x65U,0x20U, + 0x79U,0x6FU,0x75U,0x20U,0x73U,0x75U,0x72U,0x65U,0x20U,0x79U,0x6FU,0x75U,0x20U, + 0x77U,0x61U,0x6EU,0x74U,0x20U,0x74U,0x6FU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U, + 0x65U,0x5CU,0x6EU,0x74U,0x68U,0x65U,0x20U,0x4EU,0x65U,0x74U,0x77U,0x6FU,0x72U, + 0x6BU,0x20U,0x73U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x73U,0x3FU,0x27U,0x29U, + 0x29U,0x20U,0x72U,0x65U,0x74U,0x75U,0x72U,0x6EU,0x3BU,0x20U,0x66U,0x2EU,0x73U, + 0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x7DU,0x3CU,0x2FU,0x73U,0x63U, + 0x72U,0x69U,0x70U,0x74U,0x3EU,0x3CU,0x2FU,0x68U,0x65U,0x61U,0x64U,0x3EU,0x03U, + 0x70U,0x67U,0x5FU,0x68U,0x65U,0x61U,0x64U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U, + 0x01U,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U, + 0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x4EU,0x65U,0x74U,0x77U, + 0x6FU,0x72U,0x6BU,0x20U,0x53U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x73U,0x3CU, + 0x2FU,0x68U,0x32U,0x3EU,0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U,0x20U, + 0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x48U,0x65U,0x72U,0x65U, + 0x20U,0x79U,0x6FU,0x75U,0x20U,0x63U,0x61U,0x6EU,0x20U,0x63U,0x68U,0x61U,0x6EU, + 0x67U,0x65U,0x20U,0x74U,0x68U,0x65U,0x20U,0x6EU,0x65U,0x74U,0x77U,0x6FU,0x72U, + 0x6BU,0x20U,0x73U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x73U,0x20U,0x6FU,0x66U, + 0x20U,0x74U,0x68U,0x65U,0x20U,0x73U,0x79U,0x73U,0x74U,0x65U,0x6DU,0x2EU,0x01U, + 0x20U,0x41U,0x66U,0x74U,0x65U,0x72U,0x20U,0x79U,0x6FU,0x75U,0x20U,0x68U,0x61U, + 0x76U,0x65U,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x64U,0x20U,0x74U,0x68U, + 0x65U,0x20U,0x49U,0x50U,0x20U,0x61U,0x64U,0x64U,0x72U,0x65U,0x73U,0x73U,0x2CU, + 0x20U,0x79U,0x6FU,0x75U,0x20U,0x6DU,0x75U,0x73U,0x74U,0x20U,0x61U,0x6CU,0x73U, + 0x6FU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x20U,0x74U,0x68U,0x65U,0x20U, + 0x68U,0x6FU,0x73U,0x74U,0x20U,0x49U,0x50U,0x20U,0x61U,0x64U,0x64U,0x72U,0x65U, + 0x73U,0x73U,0x01U,0x20U,0x69U,0x6EU,0x20U,0x79U,0x6FU,0x75U,0x72U,0x20U,0x49U, + 0x6EU,0x74U,0x65U,0x72U,0x6EU,0x65U,0x74U,0x20U,0x62U,0x72U,0x6FU,0x77U,0x73U, + 0x65U,0x72U,0x20U,0x74U,0x6FU,0x20U,0x72U,0x65U,0x2DU,0x65U,0x73U,0x74U,0x61U, + 0x62U,0x6CU,0x69U,0x73U,0x68U,0x20U,0x74U,0x68U,0x65U,0x20U,0x63U,0x6FU,0x6EU, + 0x6EU,0x65U,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x74U,0x6FU,0x20U,0x74U,0x68U, + 0x65U,0x20U,0x74U,0x61U,0x72U,0x67U,0x65U,0x74U,0x2EU,0x3CU,0x62U,0x72U,0x3EU, + 0x3CU,0x62U,0x72U,0x3EU,0x01U,0x20U,0x54U,0x68U,0x69U,0x73U,0x20U,0x66U,0x6FU, + 0x72U,0x6DU,0x20U,0x75U,0x73U,0x65U,0x73U,0x20U,0x61U,0x20U,0x3CU,0x62U,0x3EU, + 0x47U,0x45U,0x54U,0x3CU,0x2FU,0x62U,0x3EU,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU, + 0x64U,0x20U,0x74U,0x6FU,0x20U,0x73U,0x65U,0x6EU,0x64U,0x20U,0x64U,0x61U,0x74U, + 0x61U,0x20U,0x74U,0x6FU,0x20U,0x61U,0x20U,0x77U,0x65U,0x62U,0x20U,0x73U,0x65U, + 0x72U,0x76U,0x65U,0x72U,0x2EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU, + 0x2FU,0x70U,0x3EU,0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x20U,0x61U,0x63U,0x74U, + 0x69U,0x6FU,0x6EU,0x3DU,0x6EU,0x65U,0x74U,0x77U,0x6FU,0x72U,0x6BU,0x2EU,0x63U, + 0x67U,0x69U,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU,0x67U,0x65U,0x74U, + 0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x63U,0x67U,0x69U,0x3EU,0x3CU,0x69U,0x6EU, + 0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x68U,0x69U,0x64U,0x64U, + 0x65U,0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x6EU,0x65U,0x74U, + 0x22U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x67U,0x3EU,0x01U,0x3CU,0x74U, + 0x61U,0x62U,0x6CU,0x65U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x30U, + 0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U,0x3EU,0x3CU,0x66U, + 0x6FU,0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x33U,0x22U,0x3EU, + 0x3CU,0x74U,0x72U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U, + 0x61U,0x61U,0x63U,0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U, + 0x69U,0x64U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U,0x74U,0x65U,0x6DU, + 0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x32U,0x30U,0x25U,0x3EU,0x49U,0x50U,0x76U,0x34U,0x3CU,0x2FU, + 0x74U,0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U, + 0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U,0x50U,0x76U,0x36U,0x3CU,0x2FU,0x74U, + 0x68U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x20U,0x3CU, + 0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U, + 0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x3EU,0x49U,0x50U,0x20U,0x41U,0x64U, + 0x64U,0x72U,0x65U,0x73U,0x73U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x61U,0x69U, + 0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U, + 0x79U,0x70U,0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U, + 0x3DU,0x69U,0x70U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U, + 0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x31U,0x35U,0x20U,0x6DU,0x61U,0x78U, + 0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x31U,0x35U,0x3EU,0x3CU,0x2FU,0x74U, + 0x64U,0x3EU,0x02U,0x61U,0x6AU,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU, + 0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U, + 0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x69U,0x70U,0x36U,0x20U,0x76U,0x61U,0x6CU, + 0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU, + 0x34U,0x30U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU, + 0x34U,0x30U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x01U,0x3CU,0x2FU,0x74U,0x72U, + 0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU, + 0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U, + 0x66U,0x3EU,0x4EU,0x65U,0x74U,0x6DU,0x61U,0x73U,0x6BU,0x2FU,0x4CU,0x69U,0x6EU, + 0x6BU,0x2DU,0x6CU,0x6FU,0x63U,0x61U,0x6CU,0x20U,0x41U,0x64U,0x64U,0x72U,0x65U, + 0x73U,0x73U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x61U,0x6DU,0x20U,0x3CU,0x74U, + 0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U, + 0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x6DU,0x73U, + 0x6BU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U, + 0x73U,0x69U,0x7AU,0x65U,0x3DU,0x31U,0x35U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U, + 0x6EU,0x67U,0x74U,0x68U,0x3DU,0x31U,0x35U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU, + 0x02U,0x61U,0x6CU,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU, + 0x61U,0x6DU,0x65U,0x3DU,0x6CU,0x6CU,0x61U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U, + 0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x34U,0x30U, + 0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x34U,0x30U, + 0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U,0x64U,0x3EU,0x3CU,0x2FU,0x74U, + 0x64U,0x3EU,0x01U,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x20U, + 0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU, + 0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x3EU,0x44U,0x65U,0x66U,0x61U, + 0x75U,0x6CU,0x74U,0x20U,0x47U,0x61U,0x74U,0x65U,0x77U,0x61U,0x79U,0x3CU,0x2FU, + 0x74U,0x64U,0x3EU,0x02U,0x61U,0x67U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U, + 0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U,0x65U,0x78U, + 0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x67U,0x77U,0x20U,0x76U,0x61U,0x6CU, + 0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU, + 0x31U,0x35U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU, + 0x31U,0x35U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x61U,0x68U,0x20U,0x3CU, + 0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U, + 0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x67U, + 0x77U,0x36U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U, + 0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x34U,0x30U,0x20U,0x6DU,0x61U,0x78U,0x6CU, + 0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x3EU,0x3CU,0x2FU,0x74U,0x64U, + 0x3EU,0x01U,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x72U,0x3EU,0x20U,0x3CU, + 0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U, + 0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x3EU,0x50U,0x72U,0x69U,0x6DU,0x61U, + 0x72U,0x79U,0x20U,0x44U,0x4EU,0x53U,0x20U,0x53U,0x65U,0x72U,0x76U,0x65U,0x72U, + 0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x61U,0x70U,0x20U,0x3CU,0x74U,0x64U,0x3EU, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U, + 0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x64U,0x6EU,0x73U, + 0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U,0x73U, + 0x69U,0x7AU,0x65U,0x3DU,0x31U,0x35U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU, + 0x67U,0x74U,0x68U,0x3DU,0x31U,0x35U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U, + 0x61U,0x71U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U, + 0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U, + 0x6DU,0x65U,0x3DU,0x70U,0x64U,0x6EU,0x73U,0x36U,0x20U,0x76U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x34U, + 0x30U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x34U, + 0x30U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x01U,0x3CU,0x2FU,0x74U,0x72U,0x3EU, + 0x3CU,0x74U,0x72U,0x3EU,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U, + 0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U, + 0x3EU,0x53U,0x65U,0x63U,0x6FU,0x6EU,0x64U,0x61U,0x72U,0x79U,0x20U,0x44U,0x4EU, + 0x53U,0x20U,0x53U,0x65U,0x72U,0x76U,0x65U,0x72U,0x3CU,0x2FU,0x74U,0x64U,0x3EU, + 0x02U,0x61U,0x73U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU, + 0x61U,0x6DU,0x65U,0x3DU,0x73U,0x64U,0x6EU,0x73U,0x20U,0x76U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x22U,0x25U,0x73U,0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x31U, + 0x35U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x31U, + 0x35U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x61U,0x74U,0x20U,0x3CU,0x74U, + 0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U, + 0x3DU,0x74U,0x65U,0x78U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x73U,0x64U, + 0x6EU,0x73U,0x36U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U, + 0x22U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x34U,0x30U,0x20U,0x6DU,0x61U,0x78U, + 0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x3EU,0x3CU,0x2FU,0x74U, + 0x64U,0x3EU,0x01U,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU, + 0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x70U,0x20U, + 0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU, + 0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x62U, + 0x75U,0x74U,0x74U,0x6FU,0x6EU,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x73U,0x65U, + 0x74U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x43U,0x68U,0x61U,0x6EU, + 0x67U,0x65U,0x22U,0x20U,0x6FU,0x6EU,0x63U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U, + 0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x43U,0x6FU,0x6EU,0x66U,0x69U,0x72U,0x6DU, + 0x28U,0x74U,0x68U,0x69U,0x73U,0x2EU,0x66U,0x6FU,0x72U,0x6DU,0x29U,0x22U,0x3EU, + 0x01U,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU, + 0x72U,0x65U,0x73U,0x65U,0x74U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U, + 0x55U,0x6EU,0x64U,0x6FU,0x22U,0x3EU,0x3CU,0x2FU,0x70U,0x3EU,0x3CU,0x2FU,0x66U, + 0x6FU,0x72U,0x6DU,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U,0x65U, + 0x72U,0x2EU,0x69U,0x6EU,0x63U,0x00U, + + /*-- File: system.cgi, 1222 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x53U,0x79U,0x73U,0x74U,0x65U,0x6DU, + 0x20U,0x53U,0x65U,0x74U,0x74U,0x69U,0x6EU,0x67U,0x73U,0x3CU,0x2FU,0x74U,0x69U, + 0x74U,0x6CU,0x65U,0x3EU,0x3CU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x20U,0x6CU, + 0x61U,0x6EU,0x67U,0x75U,0x61U,0x67U,0x65U,0x3DU,0x4AU,0x61U,0x76U,0x61U,0x53U, + 0x63U,0x72U,0x69U,0x70U,0x74U,0x3EU,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU, + 0x6EU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x43U,0x6FU,0x6EU,0x66U,0x69U, + 0x72U,0x6DU,0x28U,0x66U,0x29U,0x7BU,0x01U,0x20U,0x69U,0x66U,0x28U,0x21U,0x63U, + 0x6FU,0x6EU,0x66U,0x69U,0x72U,0x6DU,0x28U,0x27U,0x41U,0x72U,0x65U,0x20U,0x79U, + 0x6FU,0x75U,0x20U,0x73U,0x75U,0x72U,0x65U,0x20U,0x79U,0x6FU,0x75U,0x20U,0x77U, + 0x61U,0x6EU,0x74U,0x5CU,0x6EU,0x74U,0x6FU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U, + 0x65U,0x20U,0x74U,0x68U,0x65U,0x20U,0x70U,0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U, + 0x64U,0x3FU,0x27U,0x29U,0x29U,0x20U,0x72U,0x65U,0x74U,0x75U,0x72U,0x6EU,0x3BU, + 0x20U,0x66U,0x2EU,0x73U,0x75U,0x62U,0x6DU,0x69U,0x74U,0x28U,0x29U,0x3BU,0x7DU, + 0x3CU,0x2FU,0x73U,0x63U,0x72U,0x69U,0x70U,0x74U,0x3EU,0x3CU,0x2FU,0x68U,0x65U, + 0x61U,0x64U,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x68U,0x65U,0x61U,0x64U,0x65U,0x72U, + 0x2EU,0x69U,0x6EU,0x63U,0x01U,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U, + 0x6EU,0x3DU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU, + 0x53U,0x79U,0x73U,0x74U,0x65U,0x6DU,0x20U,0x53U,0x65U,0x74U,0x74U,0x69U,0x6EU, + 0x67U,0x73U,0x3CU,0x2FU,0x68U,0x32U,0x3EU,0x3CU,0x70U,0x3EU,0x3CU,0x66U,0x6FU, + 0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x32U,0x22U,0x3EU,0x4FU, + 0x6EU,0x20U,0x74U,0x68U,0x69U,0x73U,0x20U,0x70U,0x61U,0x67U,0x65U,0x20U,0x79U, + 0x6FU,0x75U,0x20U,0x63U,0x61U,0x6EU,0x20U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U, + 0x20U,0x74U,0x68U,0x65U,0x20U,0x73U,0x79U,0x73U,0x74U,0x65U,0x6DU,0x20U,0x70U, + 0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U,0x64U,0x20U,0x66U,0x6FU,0x72U,0x20U,0x74U, + 0x68U,0x65U,0x01U,0x20U,0x75U,0x73U,0x65U,0x72U,0x20U,0x6EU,0x61U,0x6DU,0x65U, + 0x20U,0x61U,0x64U,0x6DU,0x69U,0x6EU,0x2EU,0x20U,0x54U,0x68U,0x65U,0x20U,0x64U, + 0x65U,0x66U,0x61U,0x75U,0x6CU,0x74U,0x20U,0x72U,0x65U,0x61U,0x6CU,0x6DU,0x2CU, + 0x20U,0x75U,0x73U,0x65U,0x72U,0x20U,0x61U,0x6EU,0x64U,0x20U,0x70U,0x61U,0x73U, + 0x73U,0x77U,0x6FU,0x72U,0x64U,0x20U,0x63U,0x61U,0x6EU,0x20U,0x62U,0x65U,0x20U, + 0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x20U,0x69U,0x6EU,0x20U,0x74U,0x68U, + 0x65U,0x20U,0x63U,0x6FU,0x6EU,0x66U,0x69U,0x67U,0x75U,0x72U,0x61U,0x74U,0x69U, + 0x6FU,0x6EU,0x20U,0x66U,0x69U,0x6CU,0x65U,0x2EU,0x3CU,0x62U,0x72U,0x3EU,0x3CU, + 0x62U,0x72U,0x3EU,0x01U,0x20U,0x54U,0x68U,0x69U,0x73U,0x20U,0x46U,0x6FU,0x72U, + 0x6DU,0x20U,0x75U,0x73U,0x65U,0x73U,0x20U,0x61U,0x20U,0x3CU,0x62U,0x3EU,0x50U, + 0x4FU,0x53U,0x54U,0x3CU,0x2FU,0x62U,0x3EU,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU, + 0x64U,0x20U,0x74U,0x6FU,0x20U,0x73U,0x65U,0x6EU,0x64U,0x20U,0x64U,0x61U,0x74U, + 0x61U,0x20U,0x74U,0x6FU,0x20U,0x61U,0x20U,0x57U,0x65U,0x62U,0x20U,0x73U,0x65U, + 0x72U,0x76U,0x65U,0x72U,0x2EU,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU, + 0x2FU,0x70U,0x3EU,0x01U,0x3CU,0x66U,0x6FU,0x72U,0x6DU,0x20U,0x61U,0x63U,0x74U, + 0x69U,0x6FU,0x6EU,0x3DU,0x69U,0x6EU,0x64U,0x65U,0x78U,0x2EU,0x68U,0x74U,0x6DU, + 0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU,0x70U,0x6FU,0x73U,0x74U,0x20U, + 0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x63U,0x67U,0x69U,0x3EU,0x3CU,0x69U,0x6EU,0x70U, + 0x75U,0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x68U,0x69U,0x64U,0x64U,0x65U, + 0x6EU,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x73U,0x79U,0x73U,0x22U, + 0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x67U,0x3EU,0x01U,0x3CU,0x74U,0x61U, + 0x62U,0x6CU,0x65U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x30U,0x20U, + 0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U,0x3EU,0x3CU,0x66U,0x6FU, + 0x6EU,0x74U,0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x33U,0x22U,0x3EU,0x3CU, + 0x74U,0x72U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U,0x61U, + 0x61U,0x63U,0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U, + 0x64U,0x74U,0x68U,0x3DU,0x34U,0x30U,0x25U,0x3EU,0x49U,0x74U,0x65U,0x6DU,0x3CU, + 0x2FU,0x74U,0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x36U,0x30U,0x25U,0x3EU,0x53U,0x65U,0x74U,0x74U,0x69U,0x6EU, + 0x67U,0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x02U,0x64U, + 0x31U,0x20U,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU, + 0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U, + 0x66U,0x3EU,0x41U,0x75U,0x74U,0x68U,0x65U,0x6EU,0x74U,0x69U,0x63U,0x61U,0x74U, + 0x69U,0x6FU,0x6EU,0x3CU,0x2FU,0x54U,0x44U,0x3EU,0x3CU,0x54U,0x44U,0x3EU,0x3CU, + 0x62U,0x3EU,0x25U,0x73U,0x3CU,0x2FU,0x62U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU, + 0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x01U,0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U, + 0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U,0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U, + 0x62U,0x2EU,0x67U,0x69U,0x66U,0x3EU,0x50U,0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U, + 0x64U,0x20U,0x66U,0x6FU,0x72U,0x20U,0x75U,0x73U,0x65U,0x72U,0x20U,0x27U,0x61U, + 0x64U,0x6DU,0x69U,0x6EU,0x27U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U,0x64U,0x32U, + 0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U,0x20U,0x74U, + 0x79U,0x70U,0x65U,0x3DU,0x70U,0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U,0x64U,0x20U, + 0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x77U,0x30U,0x20U,0x73U,0x69U,0x7AU,0x65U, + 0x3DU,0x31U,0x30U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U, + 0x3DU,0x31U,0x30U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x25U,0x73U, + 0x22U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x01U, + 0x3CU,0x74U,0x72U,0x3EU,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6DU,0x67U,0x20U, + 0x73U,0x72U,0x63U,0x3DU,0x70U,0x61U,0x62U,0x62U,0x2EU,0x67U,0x69U,0x66U,0x3EU, + 0x52U,0x65U,0x74U,0x79U,0x70U,0x65U,0x20U,0x79U,0x6FU,0x75U,0x72U,0x20U,0x70U, + 0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U,0x64U,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x02U, + 0x64U,0x32U,0x20U,0x3CU,0x74U,0x64U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U, + 0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x70U,0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U, + 0x64U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x70U,0x77U,0x32U,0x20U,0x73U,0x69U, + 0x7AU,0x65U,0x3DU,0x31U,0x30U,0x20U,0x6DU,0x61U,0x78U,0x6CU,0x65U,0x6EU,0x67U, + 0x74U,0x68U,0x3DU,0x31U,0x30U,0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U, + 0x25U,0x73U,0x22U,0x3EU,0x3CU,0x2FU,0x74U,0x64U,0x3EU,0x3CU,0x2FU,0x74U,0x72U, + 0x3EU,0x01U,0x3CU,0x2FU,0x66U,0x6FU,0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x61U, + 0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x70U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU, + 0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x69U,0x6EU,0x70U,0x75U,0x74U, + 0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU,0x20U, + 0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x73U,0x65U,0x74U,0x20U,0x76U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x22U,0x43U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x22U,0x20U,0x6FU,0x6EU, + 0x63U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U, + 0x43U,0x6FU,0x6EU,0x66U,0x69U,0x72U,0x6DU,0x28U,0x74U,0x68U,0x69U,0x73U,0x2EU, + 0x66U,0x6FU,0x72U,0x6DU,0x29U,0x22U,0x3EU,0x01U,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x72U,0x65U,0x73U,0x65U,0x74U,0x20U, + 0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x55U,0x6EU,0x64U,0x6FU,0x22U,0x3EU, + 0x3CU,0x2FU,0x70U,0x3EU,0x3CU,0x2FU,0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x03U,0x70U, + 0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U,0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x00U, + + /*-- File: tcp.cgi, 644 bytes --*/ + 0x01U,0x3CU,0x68U,0x74U,0x6DU,0x6CU,0x3EU,0x3CU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x3CU,0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x54U,0x43U,0x50U,0x20U,0x53U,0x6FU, + 0x63U,0x6BU,0x65U,0x74U,0x20U,0x53U,0x74U,0x61U,0x74U,0x75U,0x73U,0x3CU,0x2FU, + 0x74U,0x69U,0x74U,0x6CU,0x65U,0x3EU,0x3CU,0x6DU,0x65U,0x74U,0x61U,0x20U,0x68U, + 0x74U,0x74U,0x70U,0x2DU,0x65U,0x71U,0x75U,0x69U,0x76U,0x3DU,0x22U,0x72U,0x65U, + 0x66U,0x72U,0x65U,0x73U,0x68U,0x22U,0x20U,0x63U,0x6FU,0x6EU,0x74U,0x65U,0x6EU, + 0x74U,0x3DU,0x22U,0x35U,0x22U,0x3EU,0x3CU,0x2FU,0x68U,0x65U,0x61U,0x64U,0x3EU, + 0x03U,0x70U,0x67U,0x5FU,0x68U,0x65U,0x61U,0x64U,0x65U,0x72U,0x2EU,0x69U,0x6EU, + 0x63U,0x01U,0x3CU,0x68U,0x32U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x63U, + 0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x62U,0x72U,0x3EU,0x54U,0x63U,0x70U, + 0x20U,0x53U,0x6FU,0x63U,0x6BU,0x65U,0x74U,0x20U,0x6FU,0x6EU,0x6CU,0x69U,0x6EU, + 0x65U,0x20U,0x53U,0x74U,0x61U,0x74U,0x75U,0x73U,0x3CU,0x2FU,0x68U,0x32U,0x3EU, + 0x3CU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x74U,0x61U,0x62U,0x6CU, + 0x65U,0x20U,0x62U,0x6FU,0x72U,0x64U,0x65U,0x72U,0x3DU,0x30U,0x20U,0x77U,0x69U, + 0x64U,0x74U,0x68U,0x3DU,0x39U,0x39U,0x25U,0x3EU,0x3CU,0x66U,0x6FU,0x6EU,0x74U, + 0x20U,0x73U,0x69U,0x7AU,0x65U,0x3DU,0x22U,0x33U,0x22U,0x3EU,0x01U,0x3CU,0x74U, + 0x72U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U,0x61U,0x61U, + 0x63U,0x63U,0x66U,0x66U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x31U,0x32U,0x25U,0x3EU,0x53U,0x6FU,0x63U,0x6BU,0x65U,0x74U, + 0x3CU,0x2FU,0x74U,0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U, + 0x74U,0x68U,0x3DU,0x31U,0x38U,0x25U,0x3EU,0x53U,0x74U,0x61U,0x74U,0x65U,0x3CU, + 0x2FU,0x74U,0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U, + 0x68U,0x3DU,0x31U,0x32U,0x25U,0x3EU,0x50U,0x6FU,0x72U,0x74U,0x3CU,0x2FU,0x74U, + 0x68U,0x3EU,0x01U,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U, + 0x3DU,0x31U,0x32U,0x25U,0x3EU,0x54U,0x69U,0x6DU,0x65U,0x72U,0x3CU,0x2FU,0x74U, + 0x68U,0x3EU,0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU, + 0x33U,0x34U,0x25U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U, + 0x61U,0x61U,0x63U,0x63U,0x30U,0x30U,0x3EU,0x52U,0x65U,0x6DU,0x6FU,0x74U,0x65U, + 0x20U,0x41U,0x64U,0x64U,0x72U,0x65U,0x73U,0x73U,0x3CU,0x2FU,0x74U,0x68U,0x3EU, + 0x20U,0x3CU,0x74U,0x68U,0x20U,0x77U,0x69U,0x64U,0x74U,0x68U,0x3DU,0x31U,0x32U, + 0x25U,0x20U,0x62U,0x67U,0x63U,0x6FU,0x6CU,0x6FU,0x72U,0x3DU,0x23U,0x61U,0x61U, + 0x63U,0x63U,0x30U,0x3EU,0x50U,0x6FU,0x72U,0x74U,0x3CU,0x2FU,0x74U,0x68U,0x3EU, + 0x01U,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x02U,0x63U,0x01U,0x3CU,0x2FU,0x66U,0x6FU, + 0x6EU,0x74U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x3EU,0x3CU,0x66U, + 0x6FU,0x72U,0x6DU,0x20U,0x61U,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x74U,0x63U, + 0x70U,0x2EU,0x63U,0x67U,0x69U,0x20U,0x6DU,0x65U,0x74U,0x68U,0x6FU,0x64U,0x3DU, + 0x70U,0x6FU,0x73U,0x74U,0x20U,0x6EU,0x61U,0x6DU,0x65U,0x3DU,0x66U,0x6FU,0x72U, + 0x6DU,0x31U,0x3EU,0x20U,0x3CU,0x74U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x77U,0x69U, + 0x64U,0x74U,0x68U,0x3DU,0x36U,0x36U,0x30U,0x3EU,0x20U,0x3CU,0x74U,0x72U,0x3EU, + 0x3CU,0x74U,0x64U,0x20U,0x61U,0x6CU,0x69U,0x67U,0x6EU,0x3DU,0x22U,0x63U,0x65U, + 0x6EU,0x74U,0x65U,0x72U,0x22U,0x3EU,0x01U,0x20U,0x3CU,0x69U,0x6EU,0x70U,0x75U, + 0x74U,0x20U,0x74U,0x79U,0x70U,0x65U,0x3DU,0x62U,0x75U,0x74U,0x74U,0x6FU,0x6EU, + 0x20U,0x76U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x22U,0x52U,0x65U,0x66U,0x72U,0x65U, + 0x73U,0x68U,0x22U,0x20U,0x6FU,0x6EU,0x63U,0x6CU,0x69U,0x63U,0x6BU,0x3DU,0x22U, + 0x6CU,0x6FU,0x63U,0x61U,0x74U,0x69U,0x6FU,0x6EU,0x3DU,0x27U,0x2FU,0x74U,0x63U, + 0x70U,0x2EU,0x63U,0x67U,0x69U,0x27U,0x22U,0x3EU,0x20U,0x3CU,0x2FU,0x74U,0x64U, + 0x3EU,0x3CU,0x2FU,0x74U,0x72U,0x3EU,0x3CU,0x2FU,0x74U,0x61U,0x62U,0x6CU,0x65U, + 0x3EU,0x20U,0x3CU,0x2FU,0x63U,0x65U,0x6EU,0x74U,0x65U,0x72U,0x3EU,0x3CU,0x2FU, + 0x66U,0x6FU,0x72U,0x6DU,0x3EU,0x03U,0x70U,0x67U,0x5FU,0x66U,0x6FU,0x6FU,0x74U, + 0x65U,0x72U,0x2EU,0x69U,0x6EU,0x63U,0x00U, + + /*-- File: xml_http.js, 2816 bytes --*/ + 0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x75U,0x70U,0x64U,0x61U, + 0x74U,0x65U,0x4DU,0x75U,0x6CU,0x74U,0x69U,0x70U,0x6CU,0x65U,0x28U,0x66U,0x6FU, + 0x72U,0x6DU,0x55U,0x70U,0x64U,0x2CU,0x63U,0x61U,0x6CU,0x6CU,0x42U,0x61U,0x63U, + 0x6BU,0x2CU,0x75U,0x73U,0x65U,0x72U,0x4EU,0x61U,0x6DU,0x65U,0x2CU,0x75U,0x73U, + 0x65U,0x72U,0x50U,0x61U,0x73U,0x73U,0x77U,0x6FU,0x72U,0x64U,0x29U,0x7BU,0x78U, + 0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x3DU,0x47U,0x65U,0x74U,0x58U,0x6DU,0x6CU, + 0x48U,0x74U,0x74U,0x70U,0x4FU,0x62U,0x6AU,0x65U,0x63U,0x74U,0x28U,0x29U,0x3BU, + 0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x3DU,0x3DU,0x6EU, + 0x75U,0x6CU,0x6CU,0x29U,0x7BU,0x61U,0x6CU,0x65U,0x72U,0x74U,0x28U,0x22U,0x58U, + 0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x20U,0x6EU,0x6FU,0x74U,0x20U,0x69U,0x6EU, + 0x69U,0x74U,0x69U,0x61U,0x6CU,0x69U,0x7AU,0x65U,0x64U,0x21U,0x22U,0x29U,0x3BU, + 0x72U,0x65U,0x74U,0x75U,0x72U,0x6EU,0x20U,0x30U,0x3BU,0x7DU,0x78U,0x6DU,0x6CU, + 0x48U,0x74U,0x74U,0x70U,0x2EU,0x6FU,0x6EU,0x72U,0x65U,0x61U,0x64U,0x79U,0x73U, + 0x74U,0x61U,0x74U,0x65U,0x63U,0x68U,0x61U,0x6EU,0x67U,0x65U,0x3DU,0x72U,0x65U, + 0x73U,0x70U,0x6FU,0x6EU,0x73U,0x65U,0x48U,0x61U,0x6EU,0x64U,0x6CU,0x65U,0x72U, + 0x3BU,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU,0x6FU,0x70U,0x65U,0x6EU, + 0x28U,0x22U,0x47U,0x45U,0x54U,0x22U,0x2CU,0x66U,0x6FU,0x72U,0x6DU,0x55U,0x70U, + 0x64U,0x2EU,0x75U,0x72U,0x6CU,0x2CU,0x74U,0x72U,0x75U,0x65U,0x2CU,0x75U,0x73U, + 0x65U,0x72U,0x4EU,0x61U,0x6DU,0x65U,0x2CU,0x75U,0x73U,0x65U,0x72U,0x50U,0x61U, + 0x73U,0x73U,0x77U,0x6FU,0x72U,0x64U,0x29U,0x3BU,0x78U,0x6DU,0x6CU,0x48U,0x74U, + 0x74U,0x70U,0x2EU,0x73U,0x65U,0x6EU,0x64U,0x28U,0x6EU,0x75U,0x6CU,0x6CU,0x29U, + 0x3BU,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x72U,0x65U,0x73U, + 0x70U,0x6FU,0x6EU,0x73U,0x65U,0x48U,0x61U,0x6EU,0x64U,0x6CU,0x65U,0x72U,0x28U, + 0x29U,0x7BU,0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU, + 0x72U,0x65U,0x61U,0x64U,0x79U,0x53U,0x74U,0x61U,0x74U,0x65U,0x3DU,0x3DU,0x34U, + 0x29U,0x7BU,0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU, + 0x73U,0x74U,0x61U,0x74U,0x75U,0x73U,0x3DU,0x3DU,0x32U,0x30U,0x30U,0x29U,0x7BU, + 0x76U,0x61U,0x72U,0x20U,0x78U,0x6DU,0x6CU,0x44U,0x6FU,0x63U,0x3DU,0x78U,0x6DU, + 0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU,0x72U,0x65U,0x73U,0x70U,0x6FU,0x6EU,0x73U, + 0x65U,0x58U,0x4DU,0x4CU,0x3BU,0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x44U,0x6FU, + 0x63U,0x3DU,0x3DU,0x6EU,0x75U,0x6CU,0x6CU,0x29U,0x72U,0x65U,0x74U,0x75U,0x72U, + 0x6EU,0x20U,0x30U,0x3BU,0x74U,0x72U,0x79U,0x7BU,0x70U,0x72U,0x6FU,0x63U,0x65U, + 0x73U,0x73U,0x52U,0x65U,0x73U,0x70U,0x6FU,0x6EU,0x73U,0x65U,0x28U,0x78U,0x6DU, + 0x6CU,0x44U,0x6FU,0x63U,0x29U,0x3BU,0x7DU,0x63U,0x61U,0x74U,0x63U,0x68U,0x28U, + 0x65U,0x29U,0x7BU,0x72U,0x65U,0x74U,0x75U,0x72U,0x6EU,0x20U,0x30U,0x3BU,0x7DU, + 0x69U,0x66U,0x28U,0x63U,0x61U,0x6CU,0x6CU,0x42U,0x61U,0x63U,0x6BU,0x21U,0x3DU, + 0x75U,0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U,0x63U,0x61U,0x6CU, + 0x6CU,0x42U,0x61U,0x63U,0x6BU,0x28U,0x29U,0x3BU,0x7DU,0x65U,0x6CU,0x73U,0x65U, + 0x20U,0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU,0x73U, + 0x74U,0x61U,0x74U,0x75U,0x73U,0x3DU,0x3DU,0x34U,0x30U,0x31U,0x29U,0x61U,0x6CU, + 0x65U,0x72U,0x74U,0x28U,0x22U,0x45U,0x72U,0x72U,0x6FU,0x72U,0x20U,0x63U,0x6FU, + 0x64U,0x65U,0x20U,0x34U,0x30U,0x31U,0x3AU,0x20U,0x55U,0x6EU,0x61U,0x75U,0x74U, + 0x68U,0x6FU,0x72U,0x69U,0x7AU,0x65U,0x64U,0x22U,0x29U,0x3BU,0x65U,0x6CU,0x73U, + 0x65U,0x20U,0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU, + 0x73U,0x74U,0x61U,0x74U,0x75U,0x73U,0x3DU,0x3DU,0x34U,0x30U,0x33U,0x29U,0x61U, + 0x6CU,0x65U,0x72U,0x74U,0x28U,0x22U,0x45U,0x72U,0x72U,0x6FU,0x72U,0x20U,0x63U, + 0x6FU,0x64U,0x65U,0x20U,0x34U,0x30U,0x33U,0x3AU,0x20U,0x46U,0x6FU,0x72U,0x62U, + 0x69U,0x64U,0x64U,0x65U,0x6EU,0x22U,0x29U,0x3BU,0x65U,0x6CU,0x73U,0x65U,0x20U, + 0x69U,0x66U,0x28U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x2EU,0x73U,0x74U, + 0x61U,0x74U,0x75U,0x73U,0x3DU,0x3DU,0x34U,0x30U,0x34U,0x29U,0x61U,0x6CU,0x65U, + 0x72U,0x74U,0x28U,0x22U,0x45U,0x72U,0x72U,0x6FU,0x72U,0x20U,0x63U,0x6FU,0x64U, + 0x65U,0x20U,0x34U,0x30U,0x34U,0x3AU,0x20U,0x55U,0x52U,0x4CU,0x20U,0x6EU,0x6FU, + 0x74U,0x20U,0x66U,0x6FU,0x75U,0x6EU,0x64U,0x21U,0x22U,0x29U,0x3BU,0x7DU,0x7DU, + 0x7DU,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x70U,0x72U,0x6FU, + 0x63U,0x65U,0x73U,0x73U,0x52U,0x65U,0x73U,0x70U,0x6FU,0x6EU,0x73U,0x65U,0x28U, + 0x78U,0x6DU,0x6CU,0x44U,0x6FU,0x63U,0x29U,0x7BU,0x74U,0x65U,0x78U,0x74U,0x45U, + 0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x41U,0x72U,0x72U,0x3DU,0x78U,0x6DU,0x6CU, + 0x44U,0x6FU,0x63U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x73U,0x42U,0x79U,0x54U,0x61U,0x67U,0x4EU,0x61U,0x6DU,0x65U,0x28U,0x22U, + 0x74U,0x65U,0x78U,0x74U,0x22U,0x29U,0x3BU,0x66U,0x6FU,0x72U,0x28U,0x76U,0x61U, + 0x72U,0x20U,0x69U,0x3DU,0x30U,0x3BU,0x69U,0x3CU,0x74U,0x65U,0x78U,0x74U,0x45U, + 0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x41U,0x72U,0x72U,0x2EU,0x6CU,0x65U,0x6EU, + 0x67U,0x74U,0x68U,0x3BU,0x69U,0x2BU,0x2BU,0x29U,0x7BU,0x74U,0x72U,0x79U,0x7BU, + 0x65U,0x6CU,0x49U,0x64U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x45U,0x6CU,0x65U,0x6DU, + 0x65U,0x6EU,0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U, + 0x6CU,0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x63U,0x68U, + 0x69U,0x6CU,0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU, + 0x6FU,0x64U,0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x56U,0x61U, + 0x6CU,0x75U,0x65U,0x3DU,0x74U,0x65U,0x78U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U, + 0x6EU,0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU, + 0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x31U,0x5DU,0x2EU,0x63U,0x68U,0x69U, + 0x6CU,0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU, + 0x64U,0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x64U,0x6FU,0x63U,0x75U,0x6DU, + 0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x76U, + 0x61U,0x6CU,0x75U,0x65U,0x3DU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU, + 0x7DU,0x63U,0x61U,0x74U,0x63U,0x68U,0x28U,0x65U,0x72U,0x72U,0x6FU,0x72U,0x29U, + 0x7BU,0x69U,0x66U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x3DU,0x3DU,0x75U,0x6EU,0x64U, + 0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U,0x7BU,0x63U,0x6FU,0x6EU,0x74U,0x69U, + 0x6EU,0x75U,0x65U,0x3BU,0x7DU,0x65U,0x6CU,0x73U,0x65U,0x20U,0x69U,0x66U,0x28U, + 0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x3DU,0x75U,0x6EU,0x64U,0x65U, + 0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U,0x7BU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x22U,0x22U,0x3BU,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U, + 0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U,0x79U, + 0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x76U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x7DU,0x7DU,0x7DU, + 0x63U,0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x45U,0x6CU,0x65U,0x6DU,0x65U, + 0x6EU,0x74U,0x41U,0x72U,0x72U,0x3DU,0x78U,0x6DU,0x6CU,0x44U,0x6FU,0x63U,0x2EU, + 0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x73U,0x42U,0x79U, + 0x54U,0x61U,0x67U,0x4EU,0x61U,0x6DU,0x65U,0x28U,0x22U,0x63U,0x68U,0x65U,0x63U, + 0x6BU,0x62U,0x6FU,0x78U,0x22U,0x29U,0x3BU,0x66U,0x6FU,0x72U,0x28U,0x76U,0x61U, + 0x72U,0x20U,0x69U,0x3DU,0x30U,0x3BU,0x69U,0x3CU,0x63U,0x68U,0x65U,0x63U,0x6BU, + 0x62U,0x6FU,0x78U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x41U,0x72U,0x72U, + 0x2EU,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3BU,0x69U,0x2BU,0x2BU,0x29U,0x7BU, + 0x74U,0x72U,0x79U,0x7BU,0x65U,0x6CU,0x49U,0x64U,0x3DU,0x63U,0x68U,0x65U,0x63U, + 0x6BU,0x62U,0x6FU,0x78U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x41U,0x72U, + 0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU,0x64U,0x4EU,0x6FU,0x64U, + 0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU,0x64U,0x4EU,0x6FU, + 0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU,0x64U,0x65U,0x56U,0x61U, + 0x6CU,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x63U, + 0x68U,0x65U,0x63U,0x6BU,0x62U,0x6FU,0x78U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU,0x64U, + 0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x31U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU, + 0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU,0x64U, + 0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x69U,0x66U,0x28U,0x65U,0x6CU,0x56U, + 0x61U,0x6CU,0x75U,0x65U,0x2EU,0x6DU,0x61U,0x74U,0x63U,0x68U,0x28U,0x22U,0x74U, + 0x72U,0x75U,0x65U,0x22U,0x29U,0x29U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU, + 0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U, + 0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x65U,0x64U,0x3DU,0x74U,0x72U,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x73U, + 0x65U,0x20U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U, + 0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U,0x79U,0x49U,0x64U,0x28U, + 0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x65U,0x64U, + 0x3DU,0x66U,0x61U,0x6CU,0x73U,0x65U,0x3BU,0x7DU,0x63U,0x61U,0x74U,0x63U,0x68U, + 0x28U,0x65U,0x72U,0x72U,0x6FU,0x72U,0x29U,0x7BU,0x69U,0x66U,0x28U,0x65U,0x6CU, + 0x49U,0x64U,0x3DU,0x3DU,0x75U,0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U, + 0x29U,0x7BU,0x63U,0x6FU,0x6EU,0x74U,0x69U,0x6EU,0x75U,0x65U,0x3BU,0x7DU,0x65U, + 0x6CU,0x73U,0x65U,0x20U,0x69U,0x66U,0x28U,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x3DU,0x75U,0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U, + 0x63U,0x6FU,0x6EU,0x74U,0x69U,0x6EU,0x75U,0x65U,0x3BU,0x7DU,0x7DU,0x73U,0x65U, + 0x6CU,0x65U,0x63U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x41U,0x72U, + 0x72U,0x3DU,0x78U,0x6DU,0x6CU,0x44U,0x6FU,0x63U,0x2EU,0x67U,0x65U,0x74U,0x45U, + 0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x73U,0x42U,0x79U,0x54U,0x61U,0x67U,0x4EU, + 0x61U,0x6DU,0x65U,0x28U,0x22U,0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U,0x22U,0x29U, + 0x3BU,0x66U,0x6FU,0x72U,0x28U,0x76U,0x61U,0x72U,0x20U,0x69U,0x3DU,0x30U,0x3BU, + 0x69U,0x3CU,0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U, + 0x6EU,0x74U,0x41U,0x72U,0x72U,0x2EU,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U,0x3BU, + 0x69U,0x2BU,0x2BU,0x29U,0x7BU,0x74U,0x72U,0x79U,0x7BU,0x65U,0x6CU,0x49U,0x64U, + 0x3DU,0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU,0x64U, + 0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU, + 0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU,0x64U, + 0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U, + 0x6EU,0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU, + 0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x31U,0x5DU,0x2EU,0x63U,0x68U,0x69U, + 0x6CU,0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU, + 0x64U,0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x64U,0x6FU,0x63U,0x75U,0x6DU, + 0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x76U, + 0x61U,0x6CU,0x75U,0x65U,0x3DU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU, + 0x69U,0x66U,0x28U,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x2EU,0x6DU,0x61U, + 0x74U,0x63U,0x68U,0x28U,0x22U,0x74U,0x72U,0x75U,0x65U,0x22U,0x29U,0x29U,0x64U, + 0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU, + 0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U, + 0x64U,0x29U,0x2EU,0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U,0x65U,0x64U,0x3DU,0x74U, + 0x72U,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x73U,0x65U,0x20U,0x64U,0x6FU,0x63U,0x75U, + 0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U, + 0x6EU,0x74U,0x42U,0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU, + 0x73U,0x65U,0x6CU,0x65U,0x63U,0x74U,0x65U,0x64U,0x3DU,0x66U,0x61U,0x6CU,0x73U, + 0x65U,0x3BU,0x7DU,0x63U,0x61U,0x74U,0x63U,0x68U,0x28U,0x65U,0x72U,0x72U,0x6FU, + 0x72U,0x29U,0x7BU,0x69U,0x66U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x3DU,0x3DU,0x75U, + 0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U,0x7BU,0x63U,0x6FU,0x6EU, + 0x74U,0x69U,0x6EU,0x75U,0x65U,0x3BU,0x7DU,0x65U,0x6CU,0x73U,0x65U,0x20U,0x69U, + 0x66U,0x28U,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3DU,0x3DU,0x75U,0x6EU, + 0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U,0x7BU,0x65U,0x6CU,0x56U,0x61U, + 0x6CU,0x75U,0x65U,0x3DU,0x22U,0x22U,0x3BU,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U, + 0x6EU,0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U, + 0x42U,0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x76U,0x61U, + 0x6CU,0x75U,0x65U,0x3DU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x7DU, + 0x7DU,0x7DU,0x72U,0x61U,0x64U,0x69U,0x6FU,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x41U,0x72U,0x72U,0x3DU,0x78U,0x6DU,0x6CU,0x44U,0x6FU,0x63U,0x2EU,0x67U, + 0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x73U,0x42U,0x79U,0x54U, + 0x61U,0x67U,0x4EU,0x61U,0x6DU,0x65U,0x28U,0x22U,0x72U,0x61U,0x64U,0x69U,0x6FU, + 0x22U,0x29U,0x3BU,0x66U,0x6FU,0x72U,0x28U,0x76U,0x61U,0x72U,0x20U,0x69U,0x3DU, + 0x30U,0x3BU,0x69U,0x3CU,0x72U,0x61U,0x64U,0x69U,0x6FU,0x45U,0x6CU,0x65U,0x6DU, + 0x65U,0x6EU,0x74U,0x41U,0x72U,0x72U,0x2EU,0x6CU,0x65U,0x6EU,0x67U,0x74U,0x68U, + 0x3BU,0x69U,0x2BU,0x2BU,0x29U,0x7BU,0x74U,0x72U,0x79U,0x7BU,0x65U,0x6CU,0x49U, + 0x64U,0x3DU,0x72U,0x61U,0x64U,0x69U,0x6FU,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU,0x64U, + 0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU, + 0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU,0x64U, + 0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x72U,0x61U,0x64U,0x69U,0x6FU,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU, + 0x74U,0x41U,0x72U,0x72U,0x5BU,0x69U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU,0x64U, + 0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x31U,0x5DU,0x2EU,0x63U,0x68U,0x69U,0x6CU, + 0x64U,0x4EU,0x6FU,0x64U,0x65U,0x73U,0x5BU,0x30U,0x5DU,0x2EU,0x6EU,0x6FU,0x64U, + 0x65U,0x56U,0x61U,0x6CU,0x75U,0x65U,0x3BU,0x69U,0x66U,0x28U,0x65U,0x6CU,0x56U, + 0x61U,0x6CU,0x75U,0x65U,0x2EU,0x6DU,0x61U,0x74U,0x63U,0x68U,0x28U,0x22U,0x74U, + 0x72U,0x75U,0x65U,0x22U,0x29U,0x29U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU, + 0x74U,0x2EU,0x67U,0x65U,0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U, + 0x79U,0x49U,0x64U,0x28U,0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x63U,0x68U,0x65U, + 0x63U,0x6BU,0x65U,0x64U,0x3DU,0x74U,0x72U,0x75U,0x65U,0x3BU,0x65U,0x6CU,0x73U, + 0x65U,0x20U,0x64U,0x6FU,0x63U,0x75U,0x6DU,0x65U,0x6EU,0x74U,0x2EU,0x67U,0x65U, + 0x74U,0x45U,0x6CU,0x65U,0x6DU,0x65U,0x6EU,0x74U,0x42U,0x79U,0x49U,0x64U,0x28U, + 0x65U,0x6CU,0x49U,0x64U,0x29U,0x2EU,0x63U,0x68U,0x65U,0x63U,0x6BU,0x65U,0x64U, + 0x3DU,0x66U,0x61U,0x6CU,0x73U,0x65U,0x3BU,0x7DU,0x63U,0x61U,0x74U,0x63U,0x68U, + 0x28U,0x65U,0x72U,0x72U,0x6FU,0x72U,0x29U,0x7BU,0x69U,0x66U,0x28U,0x65U,0x6CU, + 0x49U,0x64U,0x3DU,0x3DU,0x75U,0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U, + 0x29U,0x7BU,0x63U,0x6FU,0x6EU,0x74U,0x69U,0x6EU,0x75U,0x65U,0x3BU,0x7DU,0x65U, + 0x6CU,0x73U,0x65U,0x20U,0x69U,0x66U,0x28U,0x65U,0x6CU,0x56U,0x61U,0x6CU,0x75U, + 0x65U,0x3DU,0x3DU,0x75U,0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x29U, + 0x63U,0x6FU,0x6EU,0x74U,0x69U,0x6EU,0x75U,0x65U,0x3BU,0x7DU,0x7DU,0x7DU,0x66U, + 0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x47U,0x65U,0x74U,0x58U,0x6DU, + 0x6CU,0x48U,0x74U,0x74U,0x70U,0x4FU,0x62U,0x6AU,0x65U,0x63U,0x74U,0x28U,0x29U, + 0x7BU,0x76U,0x61U,0x72U,0x20U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x3DU, + 0x6EU,0x75U,0x6CU,0x6CU,0x3BU,0x74U,0x72U,0x79U,0x7BU,0x78U,0x6DU,0x6CU,0x48U, + 0x74U,0x74U,0x70U,0x3DU,0x6EU,0x65U,0x77U,0x20U,0x58U,0x4DU,0x4CU,0x48U,0x74U, + 0x74U,0x70U,0x52U,0x65U,0x71U,0x75U,0x65U,0x73U,0x74U,0x28U,0x29U,0x3BU,0x7DU, + 0x63U,0x61U,0x74U,0x63U,0x68U,0x28U,0x65U,0x29U,0x7BU,0x74U,0x72U,0x79U,0x7BU, + 0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x3DU,0x6EU,0x65U,0x77U,0x20U,0x41U, + 0x63U,0x74U,0x69U,0x76U,0x65U,0x58U,0x4FU,0x62U,0x6AU,0x65U,0x63U,0x74U,0x28U, + 0x22U,0x4DU,0x73U,0x78U,0x6DU,0x6CU,0x32U,0x2EU,0x58U,0x4DU,0x4CU,0x48U,0x54U, + 0x54U,0x50U,0x22U,0x29U,0x3BU,0x7DU,0x63U,0x61U,0x74U,0x63U,0x68U,0x28U,0x65U, + 0x29U,0x7BU,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U,0x3DU,0x6EU,0x65U,0x77U, + 0x20U,0x41U,0x63U,0x74U,0x69U,0x76U,0x65U,0x58U,0x4FU,0x62U,0x6AU,0x65U,0x63U, + 0x74U,0x28U,0x22U,0x4DU,0x69U,0x63U,0x72U,0x6FU,0x73U,0x6FU,0x66U,0x74U,0x2EU, + 0x58U,0x4DU,0x4CU,0x48U,0x54U,0x54U,0x50U,0x22U,0x29U,0x3BU,0x7DU,0x7DU,0x72U, + 0x65U,0x74U,0x75U,0x72U,0x6EU,0x20U,0x78U,0x6DU,0x6CU,0x48U,0x74U,0x74U,0x70U, + 0x3BU,0x7DU,0x66U,0x75U,0x6EU,0x63U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x70U,0x65U, + 0x72U,0x69U,0x6FU,0x64U,0x69U,0x63U,0x4FU,0x62U,0x6AU,0x28U,0x75U,0x72U,0x6CU, + 0x2CU,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x29U,0x7BU,0x74U,0x68U,0x69U,0x73U, + 0x2EU,0x75U,0x72U,0x6CU,0x3DU,0x75U,0x72U,0x6CU,0x3BU,0x74U,0x68U,0x69U,0x73U, + 0x2EU,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x3DU,0x28U,0x74U,0x79U,0x70U,0x65U, + 0x6FU,0x66U,0x20U,0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x3DU,0x3DU,0x22U,0x75U, + 0x6EU,0x64U,0x65U,0x66U,0x69U,0x6EU,0x65U,0x64U,0x22U,0x29U,0x3FU,0x30U,0x3AU, + 0x70U,0x65U,0x72U,0x69U,0x6FU,0x64U,0x3BU,0x7DU, + + /*-- File: arm.png, 2848 bytes --*/ + 0x89U,0x50U,0x4EU,0x47U,0x0DU,0x0AU,0x1AU,0x0AU,0x00U,0x00U,0x00U,0x0DU,0x49U, + 0x48U,0x44U,0x52U,0x00U,0x00U,0x00U,0xEDU,0x00U,0x00U,0x00U,0x49U,0x08U,0x03U, + 0x00U,0x00U,0x00U,0xE6U,0x1EU,0x51U,0x45U,0x00U,0x00U,0x00U,0x04U,0x67U,0x41U, + 0x4DU,0x41U,0x00U,0x00U,0xB1U,0x8FU,0x0BU,0xFCU,0x61U,0x05U,0x00U,0x00U,0x00U, + 0x20U,0x63U,0x48U,0x52U,0x4DU,0x00U,0x00U,0x7AU,0x26U,0x00U,0x00U,0x80U,0x84U, + 0x00U,0x00U,0xFAU,0x00U,0x00U,0x00U,0x80U,0xE8U,0x00U,0x00U,0x75U,0x30U,0x00U, + 0x00U,0xEAU,0x60U,0x00U,0x00U,0x3AU,0x98U,0x00U,0x00U,0x17U,0x70U,0x9CU,0xBAU, + 0x51U,0x3CU,0x00U,0x00U,0x02U,0xC4U,0x50U,0x4CU,0x54U,0x45U,0x00U,0x00U,0x00U, + 0x00U,0x8EU,0xB8U,0x00U,0x92U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xBCU,0x00U, + 0x91U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBEU,0x00U,0x93U,0xBDU,0x00U,0x91U, + 0xBAU,0x00U,0xAAU,0xAAU,0x00U,0x99U,0xBBU,0x00U,0x92U,0xBFU,0x00U,0x91U,0xBCU, + 0x00U,0x92U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x90U,0xBDU,0x00U,0x91U,0xBDU,0x00U, + 0x90U,0xBEU,0x00U,0x92U,0xBDU,0x00U,0x91U,0xBBU,0x00U,0x9FU,0xBFU,0x00U,0x93U, + 0xBBU,0x00U,0x90U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x90U,0xBCU, + 0x00U,0x90U,0xBCU,0x00U,0x8FU,0xBCU,0x00U,0xFFU,0xFFU,0x00U,0x8EU,0xBDU,0x00U, + 0x91U,0xBBU,0x00U,0x91U,0xBEU,0x00U,0x92U,0xBDU,0x00U,0x92U,0xBCU,0x00U,0x92U, + 0xBDU,0x00U,0x92U,0xBEU,0x00U,0x90U,0xBEU,0x00U,0x99U,0xB3U,0x00U,0x91U,0xBEU, + 0x00U,0x90U,0xBEU,0x00U,0x92U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U, + 0x91U,0xBEU,0x00U,0x90U,0xBEU,0x00U,0x94U,0xBCU,0x00U,0x91U,0xBDU,0x00U,0x91U, + 0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x94U,0xBCU, + 0x00U,0x91U,0xBDU,0x00U,0x90U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U, + 0x91U,0xBDU,0x00U,0x95U,0xBFU,0x00U,0x93U,0xBFU,0x00U,0x91U,0xBEU,0x00U,0x91U, + 0xBCU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x8FU,0xBDU, + 0x00U,0x99U,0xCCU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBDU,0x00U, + 0x90U,0xBCU,0x00U,0x92U,0xBCU,0x00U,0x92U,0xBDU,0x00U,0x90U,0xBDU,0x00U,0x91U, + 0xBEU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU, + 0x00U,0x90U,0xBCU,0x00U,0x93U,0xBDU,0x00U,0x90U,0xBCU,0x00U,0x8BU,0xB9U,0x00U, + 0x92U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xB6U,0x00U,0x92U, + 0xBEU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xBDU, + 0x00U,0x92U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBCU,0x00U, + 0x80U,0xBFU,0x00U,0x91U,0xBDU,0x00U,0x8EU,0xBEU,0x00U,0x92U,0xBDU,0x00U,0x91U, + 0xBEU,0x00U,0x91U,0xBDU,0x00U,0x80U,0x80U,0x00U,0x91U,0xBEU,0x00U,0x91U,0xBDU, + 0x00U,0x91U,0xBEU,0x00U,0x91U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBDU,0x00U, + 0x92U,0xBCU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBFU,0x00U,0x91U,0xBDU,0x00U,0x92U, + 0xBCU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x92U,0xBDU,0x00U,0x91U,0xBDU, + 0x00U,0x8FU,0xBCU,0x00U,0x90U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U, + 0x96U,0xC3U,0x00U,0x91U,0xBCU,0x00U,0x95U,0xBFU,0x00U,0x8EU,0xC6U,0x00U,0x92U, + 0xBDU,0x00U,0x90U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x8FU,0xBCU, + 0x00U,0x91U,0xBDU,0x00U,0x90U,0xBDU,0x00U,0x8FU,0xBBU,0x00U,0x92U,0xBDU,0x00U, + 0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x92U, + 0xBDU,0x00U,0x91U,0xBEU,0x00U,0x91U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x8FU,0xBFU, + 0x00U,0x92U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBDU,0x00U,0x93U,0xB9U,0x00U, + 0x94U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBDU,0x00U,0x93U,0xBFU,0x00U,0x91U, + 0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBEU,0x00U,0x8FU,0xBBU, + 0x00U,0x92U,0xB6U,0x00U,0x92U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x93U,0xBAU,0x00U, + 0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x92U, + 0xBEU,0x00U,0x91U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU, + 0x00U,0x92U,0xBEU,0x00U,0x90U,0xBCU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBDU,0x00U, + 0x91U,0xBEU,0x00U,0x92U,0xBBU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xC2U,0x00U,0x92U, + 0xBDU,0x00U,0x92U,0xBCU,0x00U,0x90U,0xBCU,0x00U,0x97U,0xB9U,0x00U,0x91U,0xBDU, + 0x00U,0x90U,0xBCU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBEU,0x00U,0x91U,0xBDU,0x00U, + 0x90U,0xBDU,0x00U,0x90U,0xBDU,0x00U,0x8DU,0xB9U,0x00U,0x91U,0xBDU,0x00U,0x91U, + 0xBCU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBCU,0x00U,0x91U,0xBCU,0x00U,0x91U,0xBDU, + 0x00U,0x91U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x80U,0xAAU,0x00U,0x91U,0xBDU,0x00U, + 0x91U,0xBDU,0x00U,0x92U,0xBEU,0x00U,0x90U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U, + 0xBDU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U,0xBCU, + 0x00U,0x91U,0xBEU,0x00U,0x92U,0xBEU,0x00U,0x90U,0xBCU,0x00U,0x8CU,0xBFU,0x00U, + 0x92U,0xBDU,0x00U,0x92U,0xBEU,0x00U,0x92U,0xBDU,0x00U,0x91U,0xBDU,0x00U,0x91U, + 0xBDU,0x00U,0x89U,0xC4U,0x00U,0x91U,0xBDU,0x00U,0x8FU,0xBFU,0x00U,0x91U,0xBDU, + 0x00U,0x92U,0xBCU,0x00U,0x8FU,0xBFU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xBEU,0x00U, + 0x93U,0xBEU,0x00U,0x91U,0xBDU,0x00U,0x90U,0xBDU,0x00U,0x91U,0xBCU,0x00U,0x91U, + 0xBDU,0x00U,0x90U,0xBCU,0x00U,0x91U,0xBDU,0x00U,0x92U,0xBDU,0x00U,0x91U,0xBDU, + 0xFFU,0xFFU,0xFFU,0x3AU,0x6FU,0x27U,0x79U,0x00U,0x00U,0x00U,0xEAU,0x74U,0x52U, + 0x4EU,0x53U,0x00U,0x12U,0x36U,0x51U,0x5BU,0x66U,0x74U,0x5EU,0x42U,0x25U,0x03U, + 0x0FU,0x38U,0x5FU,0x77U,0x82U,0x88U,0x84U,0x6AU,0x46U,0x1EU,0x08U,0x2DU,0x4EU, + 0x6DU,0x6BU,0x5CU,0x4CU,0x22U,0x01U,0x1BU,0x3CU,0x5AU,0x70U,0x67U,0x59U,0x4BU, + 0x27U,0x0AU,0x43U,0x81U,0xBFU,0xECU,0xF4U,0xC3U,0x37U,0x13U,0xC2U,0xFCU,0xF1U, + 0xABU,0x5DU,0x26U,0x7FU,0xC4U,0xF8U,0xB9U,0x68U,0x18U,0x28U,0x79U,0xB4U,0xEEU, + 0xF5U,0xC8U,0x32U,0x05U,0xA5U,0xE4U,0x83U,0x17U,0x44U,0xAAU,0x55U,0x33U,0x8BU, + 0xF3U,0xFBU,0xA9U,0x35U,0x49U,0x2EU,0x0BU,0x6EU,0xCEU,0xDCU,0x0EU,0x75U,0xE6U, + 0x99U,0x80U,0x9AU,0x4DU,0xE8U,0xFEU,0xACU,0x04U,0xB2U,0x2BU,0xC6U,0xA0U,0xEAU, + 0x02U,0x7DU,0xEFU,0x8DU,0xB7U,0x78U,0xE9U,0x3DU,0xC7U,0x2CU,0xBCU,0xB8U,0xA7U, + 0x6FU,0x8CU,0xFDU,0x50U,0x9FU,0xD9U,0x9BU,0x11U,0xCFU,0x0CU,0x09U,0xAFU,0x71U, + 0xD5U,0x58U,0x39U,0xBAU,0x65U,0x40U,0x23U,0xE7U,0xE3U,0xF6U,0xDDU,0x7CU,0x9CU, + 0xDEU,0xF2U,0x10U,0xB1U,0x9DU,0x8EU,0x21U,0x1FU,0x48U,0x9EU,0x34U,0xA3U,0xDAU, + 0x92U,0x53U,0x29U,0x07U,0xE2U,0xC0U,0x1AU,0xD7U,0xC1U,0xA6U,0x87U,0x2FU,0x56U, + 0xCAU,0xBEU,0xF9U,0x85U,0x63U,0xEBU,0xD2U,0x4FU,0x31U,0xAEU,0x15U,0x69U,0xA1U, + 0x91U,0x16U,0x90U,0x73U,0x72U,0xA4U,0xA2U,0xB6U,0xBDU,0x1DU,0xD0U,0x41U,0xC5U, + 0xCBU,0x76U,0xCCU,0x64U,0x86U,0x06U,0xE1U,0xD1U,0x3FU,0xADU,0x3AU,0xD6U,0x97U, + 0xCDU,0xC9U,0x95U,0x89U,0xA8U,0x57U,0x14U,0x93U,0x62U,0xD4U,0xF7U,0xB5U,0x0DU, + 0xF0U,0x30U,0xE5U,0x2AU,0x20U,0xE0U,0x52U,0x3BU,0xDFU,0x8FU,0xB0U,0xFAU,0x7AU, + 0xB3U,0xDBU,0x37U,0xBFU,0xC8U,0x88U,0x00U,0x00U,0x00U,0x01U,0x62U,0x4BU,0x47U, + 0x44U,0xEBU,0xBFU,0xDDU,0x26U,0xB8U,0x00U,0x00U,0x00U,0x07U,0x74U,0x49U,0x4DU, + 0x45U,0x07U,0xE6U,0x01U,0x0CU,0x0FU,0x18U,0x11U,0x98U,0x88U,0x3BU,0xA1U,0x00U, + 0x00U,0x06U,0x63U,0x49U,0x44U,0x41U,0x54U,0x78U,0xDAU,0xE5U,0x9BU,0xF9U,0x5FU, + 0x14U,0x65U,0x1CU,0xC7U,0x1FU,0xC2U,0x55U,0x94U,0x5CU,0x11U,0x05U,0x05U,0x5DU, + 0x21U,0xE5U,0x4AU,0x3CU,0x16U,0x50U,0x30U,0x2DU,0x10U,0xBCU,0x16U,0x39U,0x36U, + 0x11U,0x14U,0x50U,0x10U,0x44U,0x88U,0x14U,0x0FU,0xB0U,0x55U,0x30U,0x34U,0xAFU, + 0x0EU,0xB1U,0xD4U,0xD2U,0xF2U,0x0EU,0x0CU,0xC8U,0xCAU,0x4CU,0xA4U,0x4BU,0xB3U, + 0xACU,0xDCU,0xD4U,0xB2U,0xC2U,0xECU,0x30U,0xCBU,0x34U,0xB3U,0xECU,0x78U,0xFEU, + 0x8AU,0x38U,0x96U,0x63U,0x9FU,0xE7U,0x99U,0xE7U,0xF9U,0xCEU,0x03U,0x2FU,0x9CU, + 0xC1U,0xEFU,0x8FU,0xCFU,0x7CU,0xBEU,0xCFU,0x7CU,0xDEU,0x33U,0x3BU,0xB3U,0xDFU, + 0xE7U,0x18U,0x84U,0x38U,0xE1U,0x72U,0x9FU,0x6BU,0x2FU,0x43U,0x6FU,0x43U,0x1FU, + 0xB7U,0xBEU,0xFDU,0x50U,0x17U,0x86U,0xFBU,0xFDU,0xFDU,0x8DU,0x03U,0x3CU,0x06U, + 0x1AU,0x3DU,0x07U,0x0DU,0x56U,0x95U,0xE7U,0xE5U,0x3DU,0xC4U,0x30U,0xD4U,0xC7U, + 0x77U,0xD8U,0x70U,0x13U,0x47U,0x64U,0x1AU,0xE1U,0xE7U,0x6FU,0x78U,0x60U,0xE4U, + 0xA8U,0x80U,0x40U,0x15U,0x9EU,0x83U,0x82U,0x43U,0x1EU,0x1CU,0x8DU,0xDBU,0x22U, + 0x74U,0x8CU,0xC7U,0x58U,0x53U,0x97U,0xA0U,0x8EU,0xEBU,0x3DU,0xDEU,0xDCU,0xDEU, + 0x6FU,0x58U,0x78U,0x84U,0x0BU,0x2CU,0x6FU,0xC2U,0xC4U,0xC8U,0xA8U,0xB6U,0xACU, + 0x49U,0x0FU,0x4DU,0x66U,0x8AU,0xA6U,0x3CU,0xFCU,0x48U,0x74U,0x5BU,0xDFU,0x31U, + 0x53U,0x07U,0xC4U,0x42U,0x7AU,0x8EU,0x0BU,0x98U,0x16U,0x8AU,0xA9U,0x98U,0x3EU, + 0x63U,0x66U,0xABU,0x60U,0x96U,0xC5U,0x39U,0xE2U,0xE9U,0x3EU,0x0CU,0x84U,0x64U, + 0x76U,0x0BU,0x6BU,0x42U,0x22U,0xD9U,0x6DU,0x52U,0xB2U,0xB5U,0x43U,0x9AU,0x91U, + 0x48U,0x1BU,0xDEU,0xD2U,0xFCU,0xE8U,0x18U,0x32U,0x6BU,0xDAU,0x1CU,0xF2U,0x8CU, + 0x29U,0x73U,0x53U,0x29U,0xCFU,0x69U,0x3EU,0x41U,0x02U,0xD6U,0x79U,0xF3U,0xD3U, + 0x31U,0x3BU,0xA2U,0x32U,0x1CU,0xBCU,0x06U,0xE2U,0x40U,0x26U,0xDDU,0xCBU,0x02U, + 0x42U,0xB2U,0xB0U,0xA9U,0xD1U,0x35U,0x8BU,0xD5U,0x6DU,0xF6U,0xA2U,0x9CU,0xB6U, + 0xB4U,0x5CU,0xE2U,0x58U,0xF3U,0x45U,0x5AU,0x9CU,0xC7U,0xCAU,0x5AU,0x32U,0xCEU, + 0x89U,0xD5U,0x98U,0xCFU,0xF4U,0x9CU,0x3FU,0xB4U,0x80U,0xF7U,0x70U,0x3CU,0x56U, + 0x88U,0x95U,0x23U,0xDAU,0x60U,0x92U,0xA7U,0xCDU,0x79U,0x5CU,0xA1U,0xD7U,0xA5U, + 0x88U,0x47U,0x6BU,0x5AU,0x16U,0xC5U,0x4EU,0x2BU,0x0AU,0x68U,0xCFU,0x5BU,0x9EU, + 0xA6U,0xE8U,0x79U,0xC5U,0x4AU,0x45U,0xD8U,0x80U,0x34U,0xCCU,0x8FU,0x55U,0x2EU, + 0xB2U,0xB4U,0x29U,0xC5U,0x4AU,0x7DU,0xCEU,0xE2U,0xD1U,0x7AU,0x95U,0x28U,0x7AU, + 0x31U,0xAFU,0x76U,0x64U,0xF5U,0x7BU,0xC2U,0xC6U,0xB1U,0x1CU,0xBAU,0x86U,0xCDU, + 0x9AU,0xB2U,0x16U,0x0BU,0xA3U,0x74U,0x02U,0x88U,0xB6U,0x8CU,0xA4U,0x5DU,0x97U, + 0xA7U,0xD4U,0xE3U,0x93U,0x88U,0x43U,0x5BU,0x1EU,0xC9U,0x33U,0x13U,0xD2U,0x9CU, + 0xB4U,0x7EU,0x03U,0xDFU,0xB2U,0xEDU,0x29U,0x16U,0xECU,0xE2U,0x8DU,0x18U,0x10U, + 0xD1U,0x56U,0x19U,0xDAU,0x4DU,0x2BU,0x14U,0x3BU,0x8CU,0xE0U,0xD0U,0x6EU,0xDEU, + 0xC2U,0x37U,0x63U,0x68U,0xFAU,0x47U,0x1BU,0x2FU,0xF4U,0xBCU,0x95U,0x36U,0xF8U, + 0x74U,0x18U,0x06U,0x45U,0xD1U,0x33U,0x12U,0xB4U,0xCFU,0x2AU,0x76U,0xF7U,0x5CU, + 0x1CU,0x87U,0x36U,0x55U,0xE0U,0xC5U,0xECU,0x87U,0xFAU,0x2DU,0x15U,0x5BU,0x4EU, + 0x0AU,0x20U,0xFDU,0x2DU,0xDCU,0x86U,0x81U,0x51U,0xB1U,0x5DU,0x4CU,0xFBU,0x3CU, + 0xB4U,0x33U,0x3CU,0x1FU,0x71U,0x68U,0x85U,0xF1U,0x42U,0x79U,0x02U,0x44U,0x56U, + 0x38U,0x82U,0x80U,0x4DU,0x82U,0x9FU,0x22U,0xAAU,0x0BU,0x69U,0x77U,0xECU,0xECU, + 0x14U,0x2DU,0xCEU,0x83U,0xC9U,0x76U,0x39U,0xB9U,0x1BU,0x1BU,0x83U,0xE5U,0x83U, + 0x41U,0xFBU,0x22U,0x34U,0xF7U,0x25U,0xD4U,0x39U,0x5AU,0x68U,0xB8U,0x76U,0x38U, + 0xCBU,0xEEU,0x7CU,0x7CU,0x77U,0x68U,0x93U,0xF6U,0x74U,0x13U,0x6DU,0x6AU,0x7BU, + 0xE5U,0x9BU,0x93U,0x87U,0xEFU,0x12U,0x6DU,0x09U,0xEAU,0x26U,0x5AU,0xFCU,0x72U, + 0xDBU,0x49U,0x42U,0x78U,0xB2U,0x30U,0x19U,0xDAU,0x57U,0x80U,0x1EU,0xF6U,0x76U, + 0x1BU,0xEDU,0xBEU,0xD6U,0x73U,0xC4U,0x9AU,0xD9U,0x82U,0xFDU,0x07U,0x0EU,0x1EU, + 0x3AU,0xDCU,0x78U,0x7CU,0x67U,0x6CU,0x9FU,0x8CU,0x57U,0xBBU,0x8CU,0xB6U,0x62U, + 0x55U,0xAEU,0x25U,0x7CU,0x6AU,0x4BU,0x81U,0x5AU,0x89U,0x40U,0xB4U,0xD9U,0x95U, + 0x73U,0xC7U,0x56U,0xB9U,0xF4U,0x0DU,0x9EU,0x78U,0x84U,0x0BU,0xC4U,0x95U,0x85U, + 0x79U,0x39U,0xCEU,0xF1U,0x1AU,0x33U,0x35U,0x7CU,0xB9U,0xD3U,0xC0U,0xD1U,0xCFU, + 0x62U,0xEEU,0x3CU,0x6DU,0x52U,0xF5U,0x30U,0x47U,0x31U,0x6FU,0xB2U,0xD6U,0xA4U, + 0x3BU,0x06U,0x0BU,0x42U,0xDAU,0x49U,0xB5U,0xADU,0xC7U,0x0BU,0x5EU,0x2FU,0x52U, + 0x86U,0x15U,0xC8U,0x1CU,0xEFU,0xA9U,0x78U,0x56U,0xEAU,0xD1U,0xBDU,0xF4U,0xF0U, + 0xB1U,0x18U,0x4EU,0xCBU,0xAEU,0x41U,0xDFU,0x08U,0x74U,0x1AU,0x44U,0x2FU,0xCBU, + 0x2BU,0x00U,0xD0U,0xBEU,0x39U,0xB2U,0xA3U,0x62U,0x84U,0xD2U,0xEDU,0x15U,0xCAU, + 0x32U,0x5AU,0x2EU,0xC4U,0x7EU,0xC6U,0x8DU,0x7DU,0x2BU,0x8EU,0x55U,0x5BU,0x1EU, + 0x8BU,0xE9U,0x14U,0x6DU,0x0DU,0x09U,0x47U,0xCDU,0x10U,0x30U,0x68U,0xCDU,0x43U, + 0x9CU,0x25U,0x83U,0xDFU,0x66U,0x57U,0x55U,0x42U,0xD9U,0xF1U,0xE6U,0xF6U,0x77U, + 0x18U,0xD7U,0xC9U,0x57U,0x61U,0x8CU,0x74U,0x22U,0xABU,0x13U,0xB4U,0x99U,0xE2U, + 0x89U,0x84U,0x5CU,0x40U,0x8DU,0xBBU,0x15U,0x56U,0x0AU,0x53U,0x32U,0x5BU,0x10U, + 0xFBU,0xA9U,0xB5U,0x8DU,0x52U,0xB4U,0xD3U,0x37U,0x0BU,0x86U,0xB1U,0x84U,0x56U, + 0xD5U,0x99U,0x64U,0x68U,0xD7U,0xD2U,0x53U,0x2BU,0x15U,0x0CU,0x0BU,0x10U,0xD9U, + 0x89U,0xC6U,0x56U,0x6FU,0x3AU,0xD5U,0xC8U,0xF1U,0x63U,0x8DU,0x91U,0xA4U,0x2DU, + 0x72U,0x47U,0x12U,0xB4U,0x61U,0x27U,0x69U,0xD1U,0x6AU,0xC6U,0x0BU,0x17U,0x22U, + 0xF3U,0x6FU,0x6CU,0x1CU,0x48U,0xA5U,0xE6U,0x72U,0x6FU,0x42U,0x3DU,0x88U,0xF6U, + 0x5DU,0x4AU,0x54U,0x8FU,0x64U,0x68U,0xDFU,0x63U,0x88U,0xDEU,0xCFU,0xC6U,0x52U, + 0xB2U,0x65U,0x8DU,0x8DU,0xA5U,0xD4U,0x75U,0xAAU,0xE2U,0x1AU,0x32U,0x6DU,0x91U, + 0xA2U,0x4DU,0xCFU,0x91U,0xA2U,0xF5U,0x66U,0xA9U,0xE8U,0xD7U,0x2AU,0x48U,0xF6U, + 0x01U,0x42U,0xB5U,0x54U,0xE6U,0x87U,0x02U,0x47U,0x2BU,0xCDU,0x32U,0xB4U,0x1EU, + 0x48U,0x86U,0xB6U,0x82U,0xA9U,0xAAU,0xC6U,0x52U,0xB2U,0xC6U,0x2AU,0xF5U,0x14U, + 0x99U,0x99U,0x25U,0x9AU,0x94U,0x44U,0xA7U,0x01U,0xB4U,0x1FU,0xB1U,0x5EU,0x11U, + 0xEAU,0x69U,0xCBU,0x98U,0x2AU,0xEAU,0xE1U,0x83U,0xC9U,0xCEU,0x20U,0xB4U,0x88U, + 0xCCU,0xDCU,0x2EU,0xB4U,0x64U,0x95U,0xA0U,0x8DU,0x2EU,0x90U,0xA2U,0x65U,0x3FU, + 0xECU,0x9EU,0x58U,0x4AU,0xF6U,0x31U,0x42U,0xE4U,0xE4U,0xB1U,0xEDU,0x13U,0xB1U, + 0xA7U,0xB3U,0xEAU,0x69U,0xCFU,0x20U,0x29U,0xDAU,0x4FU,0x99U,0xAAU,0x35U,0x58U, + 0x4AU,0xF6U,0x19U,0x1AU,0x4CU,0x26U,0x56U,0x02U,0x3CU,0x4DU,0x14U,0xD3U,0xEEU, + 0xE3U,0x0EU,0xDAU,0xC1U,0xB4U,0x53U,0x98U,0x2AU,0x3FU,0x2CU,0x25U,0xFBU,0x1CU, + 0xB9U,0x91U,0x89U,0xE7U,0x00U,0x9EU,0xF6U,0xAAU,0xA7U,0xF5U,0x94U,0xA3U,0x75U, + 0x07U,0x9DU,0x1FU,0x28U,0xB3U,0xA3U,0x2FU,0x30U,0x6BU,0x2DU,0x42U,0xB4U,0x50U, + 0xB4U,0x4DU,0x35U,0x6DU,0xBCU,0x14U,0x6DU,0x28U,0x5BU,0x45U,0x16U,0x44U,0x40U, + 0x99U,0x1DU,0x9DU,0x27U,0x2BU,0xE4U,0x0BU,0x10U,0x53U,0x91U,0x42U,0xDAU,0xD3U, + 0xCAU,0xEBU,0x01U,0x2AU,0x68U,0x2FU,0x2AU,0x2CU,0xF8U,0x61U,0x29U,0x99U,0x9DU, + 0x7AU,0x9BU,0x7CU,0x09U,0x32U,0xB5U,0x56U,0x35U,0xEDU,0x57U,0x52U,0xB4U,0x69U, + 0x6CU,0xD5U,0x1EU,0x2CU,0x25U,0xB3U,0xA3U,0x4BU,0x64U,0xD5U,0x08U,0x32U,0x95U, + 0x29U,0xA4U,0x9DU,0x46U,0xF4U,0xFBU,0xB5U,0x14U,0xEDU,0x37U,0x6CU,0x55U,0x15U, + 0x96U,0x92U,0xD9U,0x11U,0x39U,0x40U,0xFFU,0x16U,0x64U,0x6AU,0xA4U,0x6AU,0x5AU, + 0xABU,0x14U,0xEDU,0x71U,0x18U,0xC6U,0x71U,0x28U,0x2DU,0xB9U,0x0CU,0x9CU,0x00U, + 0x32U,0xE5U,0xABU,0x9AU,0x76U,0xB6U,0x14U,0x6DU,0x03U,0x0CU,0xA3U,0x01U,0x4AU, + 0x7BU,0x99U,0x68U,0x19U,0x00U,0x32U,0xE5U,0x2AU,0xA4U,0xADU,0xEEU,0x12U,0x5AU, + 0x3BU,0x14U,0x03U,0x28U,0x23U,0x87U,0xF2U,0xE7U,0x41U,0xA6U,0x0EU,0x0AU,0x69U, + 0x4BU,0x34U,0x49U,0xBBU,0x94U,0x1EU,0x15U,0x01U,0x22U,0x42U,0xA7U,0xF7U,0x96U, + 0x1CU,0x14U,0x54U,0x83U,0x4CU,0xF9U,0xE8U,0xF4U,0xDEU,0x7EU,0x47U,0xB4U,0x44U, + 0x82U,0x4CU,0x5DU,0x11U,0xD2U,0x7EU,0xAFU,0x49U,0xDAU,0x73U,0x44U,0xCBU,0x68U, + 0xD0U,0xB6U,0x28U,0x8BU,0x4EU,0xEFU,0xEDU,0x0FU,0x64U,0x9DU,0x3CU,0x1CU,0x62U, + 0xAAU,0x54U,0xA7U,0xF7U,0x36U,0x96U,0xA4U,0xEDU,0x0FU,0xF0U,0xF4U,0x63U,0xB6U, + 0x4EU,0x69U,0x2FU,0x90U,0xEBU,0xECU,0xC9U,0x00U,0x4FU,0xF1U,0xE2U,0x11U,0x5FU, + 0xB2U,0x26U,0x69U,0xA9U,0xF2U,0x62U,0x47U,0xB9U,0xD8U,0x53U,0x89U,0x6EU,0x69U, + 0x7FU,0x22U,0x7FU,0xCAU,0x57U,0x85U,0x96U,0xDCU,0x13U,0x75U,0x4BU,0xBBU,0x90U, + 0xA4U,0xFDU,0x59U,0x38U,0x5FU,0x36U,0x1FU,0x30U,0x0BU,0x67U,0xD1U,0x26U,0x6DU, + 0xD0U,0x35U,0xDEU,0x7EU,0x0CU,0x56U,0x04U,0x4DU,0xD7U,0x2FU,0x2DU,0xFAU,0x85U, + 0xF4U,0x9EU,0xE6U,0xA5U,0x6AU,0x70U,0xABU,0x2FU,0x5AU,0x5FU,0x7AU,0x99U,0x95U, + 0x6BU,0x68U,0xCEU,0x35U,0x08U,0x6DU,0xB8U,0x46U,0x69U,0xD7U,0x53U,0x5BU,0x74U, + 0x6DU,0x83U,0x38U,0x7EU,0x7EU,0xDDU,0x88U,0xF5U,0x4CU,0x4BU,0x95U,0xCAU,0x18U, + 0x5FU,0xFFU,0x4DU,0x79U,0xBAU,0xB1U,0x18U,0xB6U,0x7EU,0xBBU,0x48U,0xABU,0xB4U, + 0x81U,0xF4U,0xEEU,0x91U,0x1BU,0x37U,0x95U,0xDEU,0x50U,0xB9U,0x58U,0xE7U,0xB4U, + 0xD4U,0xACU,0x4AU,0xD3U,0xB2U,0x8DU,0x1BU,0x33U,0xFFU,0xF7U,0xCBU,0x58U,0xF7U, + 0xB4U,0x87U,0x18U,0x3BU,0xB7U,0x6DU,0x35U,0xF4U,0x9BU,0xB9U,0xE0U,0x58U,0x21U, + 0x78U,0x4FU,0xCDU,0x25U,0xCDU,0xD2U,0xA2U,0x0CU,0x16U,0xC2U,0xADU,0x5EU,0xCEU, + 0xDBU,0x6AU,0x0AU,0xFEU,0x68U,0x50U,0xB1U,0x5FU,0x4AU,0xC3U,0xB4U,0x2EU,0xECU, + 0x2DU,0x57U,0x37U,0x6AU,0x6EU,0xB7U,0x7EU,0x42U,0x74U,0xD8U,0xEFU,0xCAU,0x9FU, + 0xAAU,0xF6U,0xC2U,0x69U,0x98U,0x96U,0x9CU,0x67U,0x6AU,0x8FU,0x18U,0xBBU,0x25U, + 0xE3U,0xAFU,0x8CU,0xBAU,0xB3U,0xD7U,0xD4U,0xEEU,0x73U,0xACU,0xD3U,0x30U,0x2DU, + 0xB5U,0x48U,0xA5U,0x2EU,0x18U,0xB4U,0x1BU,0xB4U,0x4CU,0x5BU,0x7EU,0xE4U,0x5EU, + 0xA2U,0x45U,0xDEU,0xD7U,0xEFU,0x25U,0x5AU,0xB4U,0x39U,0xB4U,0x4BU,0x69U,0xEFU, + 0x68U,0x9BU,0x16U,0x0DU,0xFBU,0x1BU,0x4CU,0x77U,0x54U,0xFFU,0xB4U,0x28U,0x18U, + 0xFAU,0x63U,0xFEU,0xC7U,0xD0U,0x03U,0x68U,0xD1U,0xCAU,0x8BU,0x20U,0xD8U,0xEDU, + 0x90U,0x6FU,0xBDU,0x76U,0x69U,0x9EU,0x16U,0xCDU,0xFCU,0x57U,0xCCU,0xBAU,0xEDU, + 0x2AU,0xEAU,0x21U,0xB4U,0x8DU,0x1CU,0x89U,0x02U,0xD8U,0xB4U,0xA6U,0x3DU,0x6DU, + 0x3DU,0x85U,0x16U,0x55U,0x2DU,0xE0U,0x7DU,0xF3U,0x95U,0x74U,0xA0U,0xF9U,0xCBU, + 0xACU,0x1EU,0x43U,0x8BU,0xD0U,0xCDU,0xEAU,0x28U,0x25U,0xD8U,0xE2U,0xC5U,0x8EU, + 0x5FU,0x80U,0x98U,0x36U,0x57U,0x27U,0xB4U,0x08U,0x9DU,0x3CU,0xC7U,0xAAU,0xACU, + 0x62U,0xCAU,0xDAU,0x3EU,0x55U,0xAFU,0x35U,0x3AU,0x87U,0x1FU,0x63U,0x3DU,0x9BU, + 0x90U,0x4CU,0x86U,0xD1U,0x12U,0xDFU,0xCDU,0x7BU,0xB0U,0x55U,0xEBU,0x2CU,0x20U, + 0xD9U,0x3CU,0x0FU,0xE7U,0x18U,0xAAU,0x74U,0xD6U,0xDDU,0xF5U,0x77U,0x6EU,0x75U, + 0x20U,0xCDU,0xFEU,0xAFU,0x6CU,0x4DU,0x0AU,0xEAU,0xD1U,0x51U,0x6EU,0xDDU,0x64U, + 0x30U,0x0EU,0xF4U,0x98U,0x71U,0xCAU,0xFFU,0xF6U,0xBCU,0x9EU,0x41U,0xF4U,0x3FU, + 0x25U,0xC4U,0x61U,0xB9U,0x1EU,0xD7U,0x6EU,0x20U,0x00U,0x00U,0x00U,0x25U,0x74U, + 0x45U,0x58U,0x74U,0x64U,0x61U,0x74U,0x65U,0x3AU,0x63U,0x72U,0x65U,0x61U,0x74U, + 0x65U,0x00U,0x32U,0x30U,0x32U,0x32U,0x2DU,0x30U,0x31U,0x2DU,0x31U,0x32U,0x54U, + 0x31U,0x35U,0x3AU,0x32U,0x34U,0x3AU,0x31U,0x37U,0x2BU,0x30U,0x30U,0x3AU,0x30U, + 0x30U,0x2DU,0x82U,0xB4U,0xC4U,0x00U,0x00U,0x00U,0x25U,0x74U,0x45U,0x58U,0x74U, + 0x64U,0x61U,0x74U,0x65U,0x3AU,0x6DU,0x6FU,0x64U,0x69U,0x66U,0x79U,0x00U,0x32U, + 0x30U,0x32U,0x32U,0x2DU,0x30U,0x31U,0x2DU,0x31U,0x32U,0x54U,0x31U,0x35U,0x3AU, + 0x32U,0x34U,0x3AU,0x31U,0x37U,0x2BU,0x30U,0x30U,0x3AU,0x30U,0x30U,0x5CU,0xDFU, + 0x0CU,0x78U,0x00U,0x00U,0x00U,0x00U,0x49U,0x45U,0x4EU,0x44U,0xAEU,0x42U,0x60U, + 0x82U, + + /*-- File: home.png, 1389 bytes --*/ + 0x89U,0x50U,0x4EU,0x47U,0x0DU,0x0AU,0x1AU,0x0AU,0x00U,0x00U,0x00U,0x0DU,0x49U, + 0x48U,0x44U,0x52U,0x00U,0x00U,0x00U,0x1FU,0x00U,0x00U,0x00U,0x1DU,0x08U,0x02U, + 0x00U,0x00U,0x00U,0xDDU,0x04U,0x20U,0x65U,0x00U,0x00U,0x00U,0x04U,0x67U,0x41U, + 0x4DU,0x41U,0x00U,0x00U,0xB1U,0x8FU,0x0BU,0xFCU,0x61U,0x05U,0x00U,0x00U,0x05U, + 0x24U,0x49U,0x44U,0x41U,0x54U,0x48U,0x4BU,0xADU,0xD6U,0x6DU,0x4CU,0x13U,0x77U, + 0x1CU,0x07U,0x70U,0x7DU,0x6FU,0xF6U,0x66U,0xBEU,0xD9U,0x8BU,0x65U,0x64U,0x0FU, + 0xD9U,0x96U,0x05U,0x5CU,0x36U,0x75U,0xD9U,0xB2U,0x39U,0x35U,0x5BU,0xF6U,0xE4U, + 0xDCU,0x16U,0x97U,0xB9U,0x2CU,0x71U,0x8BU,0x99U,0x53U,0x83U,0x1AU,0xC3U,0x50U, + 0x37U,0x51U,0xA1U,0x08U,0xB1U,0x83U,0x18U,0xC4U,0xBAU,0x42U,0x31U,0x38U,0x61U, + 0x58U,0x88U,0x68U,0x03U,0x18U,0x40U,0x84U,0x36U,0x80U,0x83U,0x22U,0xA5U,0x16U, + 0x0AU,0xADU,0x6DU,0x79U,0x28U,0xD7U,0xA7U,0x3BU,0xEEU,0xDAU,0x7BU,0xE8U,0xF5U, + 0xFAU,0xB0U,0xA2U,0xFDU,0xEFU,0x77U,0x3DU,0x56U,0x8BU,0x85U,0x69U,0x9CU,0xCDU, + 0x37U,0xCDU,0xE5U,0xDAU,0xFFU,0xE7U,0xFFU,0xBDU,0x5FU,0xFFU,0x2FU,0xBAU,0xD2U, + 0xEBU,0x75U,0xC4U,0xE3U,0xF7U,0x56U,0xAFU,0x7EU,0x66U,0xD5U,0xAAU,0xA7U,0x56U, + 0x3CU,0xB9U,0x57U,0x34U,0x1AU,0x21U,0x49U,0xCFU,0x0AU,0x8BU,0x65U,0x38U,0x16U, + 0x0BU,0x27U,0x23U,0x3CU,0x7AU,0xCCU,0x3DU,0x5DU,0x0DU,0x27U,0x8EU,0x69U,0x4EU, + 0x97U,0xDBU,0x0DU,0x43U,0x99U,0xABU,0xA2U,0xD1U,0x50U,0x28U,0x18U,0xA0U,0x29U, + 0xEFU,0x0AU,0x93U,0xE9U,0xAFU,0x48U,0x84U,0x4FU,0x26U,0xB8U,0x64U,0x62U,0x9CU, + 0x6FU,0xFEU,0x96U,0x2AU,0x6EU,0x6EU,0x8AU,0x05U,0xA6U,0x52U,0x5FU,0xD0U,0x1DU, + 0x3FU,0x5AU,0xBCU,0x72U,0xE5U,0x40U,0xCEU,0xD3U,0xEEU,0x83U,0x5FU,0x65U,0xAEU, + 0x0AU,0x87U,0xB9U,0x20U,0x47U,0xFAU,0xE7U,0xB0U,0x87U,0xE8U,0x40U,0x27U,0xAAU, + 0xDEU,0x43U,0x8AU,0xD7U,0xD0U,0x85U,0x37U,0xD1U,0xE5U,0x77U,0x13U,0xDDU,0xDFU, + 0xCEU,0xDBU,0x94U,0x71U,0xAFU,0x4EU,0xFBU,0xF3U,0x81U,0xFFU,0xABU,0x03U,0x7DU, + 0xAFU,0xEEU,0x73U,0x91U,0xBEU,0xB8U,0x0EU,0x68U,0xD4U,0xFEU,0x01U,0xD2U,0x7EU, + 0x86U,0x7AU,0x3EU,0x45U,0x9AU,0x8DU,0xA8U,0xE1U,0x2DU,0x3CU,0xEFU,0x79U,0xF7U, + 0x37U,0xCFU,0x3EU,0x66U,0xF7U,0xBFU,0xDDU,0x23U,0xF7U,0xFEU,0xDCU,0x8AU,0xAAU, + 0x72U,0x50U,0xDDU,0x7AU,0x74U,0x65U,0x03U,0xEAU,0xF8U,0x10U,0xE9U,0xB6U,0xA0U, + 0xEEU,0x4FU,0xD0U,0xD5U,0xF7U,0x51U,0xFDU,0x7AU,0xF1U,0x7EU,0xF9U,0x4BU,0x89U, + 0xE2U,0xE7U,0x88U,0x93U,0x5FU,0x3FU,0x74U,0x32U,0xC1U,0x70U,0x18U,0xC2U,0xA5U, + 0x12U,0x73U,0x19U,0x12U,0xCAU,0xB5U,0xA8U,0x3AU,0x47U,0x84U,0x80U,0xBBU,0xFEU, + 0x91U,0x48U,0xC3U,0x3BU,0x6CU,0x03U,0xCFU,0x01U,0x4FU,0x23U,0x7FU,0x01U,0x55U, + 0x6FU,0x64U,0xD5U,0xB9U,0xE6U,0xDCU,0x97U,0x5DU,0xBAU,0xA6U,0xF4U,0xB5U,0x70U, + 0x2DU,0x08U,0x2CU,0xC7U,0xCEU,0x51U,0xC4U,0xC2U,0xDCU,0x17U,0xE9U,0x31U,0x8FU, + 0x31U,0x51U,0xB5U,0x0EU,0xD5U,0xBCU,0x2EU,0xD2U,0x30U,0x84U,0xAEU,0x8FU,0x45U, + 0x1AU,0xBAU,0xC3U,0x70U,0x60U,0xFAU,0xFFU,0xD2U,0x89U,0x08U,0xC3U,0x47U,0xE7U, + 0x8DU,0x67U,0x0FU,0x36U,0x6DU,0x5BU,0x33U,0xD1U,0xD9U,0x9CU,0xBEU,0xC1U,0x03U, + 0xBAU,0xD4U,0x9AU,0x85U,0xC4U,0x3CU,0x23U,0x89U,0xEAU,0xF5U,0xA8U,0xF6U,0x0DU, + 0xA4U,0x7EU,0x1BU,0xB5U,0x6CU,0x12U,0xA7U,0x0CU,0x34U,0x4CU,0x5CU,0xA2U,0x2BU, + 0x5FU,0x45U,0x25U,0x59U,0x71U,0xE5U,0xA6U,0xBBU,0x82U,0x48U,0xD3U,0xA1U,0x98U, + 0x87U,0x8EU,0xB4U,0x15U,0x1FU,0xAAU,0xFAU,0x72U,0x83U,0xB9U,0xA7U,0x5DU,0x12U, + 0x20U,0x82U,0xC0U,0x70U,0x2CU,0x41U,0x11U,0xB3U,0xD2U,0x99U,0x59U,0xD0U,0x17U, + 0x68U,0x50U,0x1AU,0xDFU,0x41U,0xADU,0x9BU,0xC5U,0xDFU,0x10U,0x02U,0x17U,0xB0U, + 0x13U,0x3CU,0x4AU,0xC5U,0x2BU,0x40U,0x47U,0x14U,0x9BU,0xD3U,0x69U,0x27U,0x25U, + 0xD8U,0x70U,0x5EU,0x2DU,0x2BU,0xAAU,0xFCU,0xFEU,0x87U,0xD1U,0xBEU,0xFEU,0x25U, + 0xF4U,0xD4U,0xADU,0xF8U,0x48U,0x0DU,0xFAU,0x63U,0xADU,0x58U,0xB3U,0x2DU,0x49U, + 0x43U,0x71U,0x89U,0x56U,0xADU,0x11U,0xE9U,0x93U,0x59U,0xA1U,0xCAU,0xCDU,0x89U, + 0x08U,0x1BU,0x89U,0xDDU,0x65U,0x84U,0xB8U,0x8FU,0x89U,0x62U,0x7EU,0xC1U,0x8EU, + 0xF3U,0x13U,0x1EU,0x6EU,0xC8U,0x8EU,0x57U,0x17U,0xC8U,0xCBU,0x0EU,0xC8U,0x8DU, + 0x03U,0x26U,0x28U,0x1EU,0x0AU,0xD1U,0x2CU,0x83U,0x93U,0xB8U,0x53U,0xECU,0x9EU, + 0xD2U,0xE1U,0x83U,0xD3U,0x0DU,0x5AU,0x71U,0x0EU,0x30U,0x0DU,0xE9U,0xE4U,0xA5U, + 0x1DU,0x0FU,0xBAU,0x28U,0x7BU,0x9EU,0x76U,0x66U,0xD2U,0x23U,0x18U,0x33U,0x30U, + 0x4DU,0xF7U,0x98U,0xF1U,0x33U,0x25U,0xEAU,0x92U,0xE3U,0x2DU,0x76U,0xBBU,0x7BU, + 0x59U,0x5DU,0xAEU,0xB6U,0xC2U,0x06U,0x42U,0xE7U,0x17U,0xE2U,0x51U,0x81U,0xB3U, + 0xA8U,0xCCU,0x46U,0x65U,0x2FU,0xCEU,0xCBU,0xB2U,0xA8U,0xA2U,0xECU,0xB8U,0x7BU, + 0x74U,0x39U,0xBAU,0xD7U,0xE1U,0xBFU,0x6EU,0x25U,0x5BU,0x4DU,0x9EU,0x82U,0x82U, + 0xB6U,0xB1U,0xB1U,0xD9U,0xFFU,0xD2U,0x6BU,0x0DU,0xA4U,0xBCU,0x1BU,0xB3U,0x5DU, + 0xFCU,0x4EU,0x3AU,0x1EU,0x71U,0x59U,0x16U,0x71U,0x3CU,0xE7U,0xA1U,0x74U,0xFBU, + 0x04U,0x71U,0xC5U,0xE4U,0x39U,0x72U,0xE4U,0x42U,0xE6U,0x64U,0x98U,0x70U,0x98U, + 0x11U,0x04U,0x1AU,0x02U,0xDDU,0xCFU,0x0FU,0x93U,0xF5U,0xAEU,0x68U,0x69U,0x2FU, + 0xD3U,0x7AU,0xEEU,0x68U,0xA4U,0x30U,0x6BU,0xFAU,0x97U,0xECU,0x7AU,0x4DU,0x7FU, + 0x7CU,0x3EU,0xC1U,0x0AU,0x71U,0x82U,0x8DU,0xBAU,0xE8U,0x88U,0x83U,0x08U,0x75U, + 0xEBU,0xA7U,0xEBU,0x34U,0x06U,0x79U,0x65U,0xC7U,0xB1U,0x52U,0x4DU,0x97U,0x8DU, + 0x6CU,0xB7U,0x10U,0x57U,0x47U,0x7DU,0x4DU,0x46U,0xD0U,0x6BU,0x01U,0x09U,0x85U, + 0x02U,0x2CU,0xE3U,0x23U,0xF1U,0x19U,0x69U,0xEEU,0x8BU,0x74U,0xD5U,0x10U,0x71U, + 0xDEU,0x21U,0xD4U,0xD8U,0x84U,0x72U,0x3DU,0x9BU,0xDFU,0x4CU,0xE4U,0x35U,0x13U, + 0xAAU,0x21U,0x36U,0x9DU,0xB6U,0xF8U,0xB8U,0x2DU,0x5BU,0x8AU,0xA5U,0xFCU,0xB4U, + 0xAFU,0x26U,0x45U,0xD7U,0x0DU,0xBBU,0x96U,0xD0U,0xE1U,0x59U,0xA4U,0xC7U,0x81U, + 0x40U,0x77U,0xE5U,0x4DU,0x1CU,0x68U,0xC5U,0x28U,0x5FU,0x31U,0xC2U,0x95U,0x0DU, + 0xB2U,0xA7U,0xFAU,0x99U,0x5AU,0x03U,0x97U,0x6AU,0x0DU,0xB4U,0x11U,0x63U,0x52U, + 0xFAU,0xAEU,0x7DU,0x35U,0x52U,0x6BU,0xA0U,0xCFU,0xEBU,0x31U,0xD0U,0x01U,0xE1U, + 0xF9U,0x00U,0x43U,0xFBU,0xE6U,0x7CU,0xC9U,0xEEU,0x0FU,0xE8U,0x8AU,0x3EU,0x1CU, + 0xE8U,0x33U,0x46U,0x5EU,0xA2U,0x8BU,0xB5U,0xB4U,0x72U,0x90U,0x71U,0x27U,0x07U, + 0x62U,0xF5U,0xF1U,0x40U,0x0FU,0xCDU,0xD0U,0x29U,0xFDU,0xC7U,0x5CU,0xD5U,0x65U, + 0x93U,0x48U,0xD7U,0xEAU,0xB1U,0x73U,0x37U,0x9DU,0x4BU,0xEAU,0xE2U,0xC4U,0x61U, + 0x58U,0x90U,0xB1U,0x31U,0x27U,0xD4U,0xAFU,0x34U,0xF1U,0x65U,0xFAU,0x05U,0xBAU, + 0xB0U,0xD3U,0xAFU,0xE8U,0xA7U,0x27U,0xC9U,0x90U,0x15U,0xE7U,0x4DU,0x2EU,0x76U, + 0xD8U,0xC9U,0xF4U,0x39U,0xFCU,0x29U,0x7DU,0x67U,0xAEU,0xAAU,0xDEU,0xE0U,0xBAU, + 0x30U,0xE4U,0x52U,0xDEU,0x74U,0x56U,0xF6U,0xCFU,0x24U,0xF5U,0x00U,0xCFU,0xFBU, + 0x19U,0xDAU,0x3BU,0xE7U,0x9BU,0x96U,0xBAU,0xDFU,0xD7U,0xE1U,0x33U,0xBDU,0xDEU, + 0x2EU,0x53U,0x1AU,0xA4U,0xD6U,0x45U,0x5DU,0xFEU,0x82U,0x6BU,0xD4U,0x69U,0xADU, + 0x3FU,0x9DU,0xEEU,0xB1U,0x53U,0xA0U,0x6FU,0xDDU,0x5AU,0xB2U,0x6DU,0x5BU,0xD9U, + 0xDEU,0xBCU,0xFAU,0x14U,0x5DU,0xA6U,0x9BU,0x5EU,0x42U,0x97U,0x5AU,0xC3U,0x86U, + 0xA9U,0x4CU,0x4DU,0xB9U,0x4EU,0x94U,0xF7U,0x15U,0xB6U,0x13U,0x40U,0x1FU,0xD6U, + 0x90U,0xBFU,0x75U,0x51U,0xA9U,0xD6U,0x40U,0x77U,0x58U,0x88U,0xEDU,0xDBU,0x2BU, + 0x76U,0xECU,0x50U,0xEEU,0xDCU,0x59U,0x93U,0x5FU,0xD8U,0x02U,0xADU,0xE5U,0x9AU, + 0xD1U,0xFCU,0x8AU,0xEBU,0xBBU,0xF2U,0xEAU,0x64U,0xB2U,0x06U,0x40U,0x82U,0x41U, + 0x8AU,0x0EU,0x78U,0x08U,0xEFU,0x94U,0xD8U,0x3DU,0x53U,0x87U,0x6FU,0x4CU,0x4EU, + 0x62U,0xA7U,0xCEU,0xEAU,0x0EU,0x5DU,0x72U,0xC2U,0x99U,0x29U,0x69U,0x27U,0x0DU, + 0xC9U,0x81U,0x68U,0x93U,0x74U,0xABU,0x19U,0xDFU,0xB3U,0xE7U,0xE2U,0xFEU,0xFDU, + 0xEAU,0xBCU,0xBCU,0x2BU,0x87U,0x7FU,0x6DU,0x3DU,0x7AU,0xACU,0x59U,0xA9U,0xECU, + 0xBCU,0x71U,0x63U,0x18U,0xC3U,0x30U,0xA9U,0xDFU,0x22U,0x1DU,0x7EU,0x62U,0x48U, + 0x30U,0x08U,0x77U,0x17U,0x85U,0xA2U,0x88U,0xA2U,0x93U,0x2DU,0xFBU,0xAAU,0x6DU, + 0xB2U,0x16U,0xA2U,0x7FU,0xD2U,0xAFU,0xB3U,0x53U,0x97U,0xB4U,0xF6U,0x73U,0x6AU, + 0x43U,0x85U,0x6AU,0xB8U,0xB4U,0xB4U,0xB3U,0xB1U,0xF1U,0x96U,0x5EU,0xEFU,0xF0U, + 0x7AU,0x89U,0xCCU,0x85U,0x1CU,0x47U,0x05U,0xFCU,0x1EU,0xDCU,0x93U,0xECU,0xBEU, + 0x9CU,0x0EU,0xCBU,0x48U,0x92U,0x80U,0x5EU,0xB9U,0x85U,0x1DU,0xF9U,0x05U,0x8DU, + 0xBBU,0xF7U,0xFEU,0xAEU,0x50U,0x5CU,0xEBU,0xEDU,0x1DU,0x5FU,0x52U,0x4CU,0xDFU, + 0xE3U,0x51U,0x75U,0x69U,0x8DU,0xD1U,0x68U,0x75U,0x3AU,0xB1U,0xCCU,0x8EU,0xCBU, + 0xDDU,0xE1U,0x38U,0xF2U,0x7EU,0x77U,0x86U,0xF1U,0xD1U,0x01U,0x2FU,0x04U,0x8EU, + 0x51U,0x32U,0xBEU,0xC7U,0x8EU,0xE4U,0xF8U,0x29U,0x0CU,0xF7U,0x4EU,0xBAU,0x67U, + 0x27U,0xC4U,0xC9U,0x78U,0xDDU,0x76U,0xAFU,0xEBU,0x8EU,0x7BU,0xD6U,0xE2U,0xC1U, + 0xACU,0x10U,0xB8U,0x7EU,0xECU,0x48U,0x82U,0xCBU,0x39U,0x3EU,0xE3U,0xB8U,0x3DU, + 0x69U,0x33U,0x88U,0xBAU,0x65U,0xE2U,0x96U,0x0DU,0x32U,0xAEU,0x7FU,0x12U,0x19U, + 0xB4U,0x8DU,0x0FU,0xDEU,0x31U,0x0FU,0x58U,0xC7U,0x06U,0xC6U,0xC7U,0x06U,0x44U, + 0x7DU,0x6EU,0x6EU,0xC6U,0x6EU,0xBFU,0x0DU,0x17U,0x4FU,0x30U,0xF0U,0x07U,0x12U, + 0xFEU,0xA1U,0xFEU,0x03U,0x0EU,0xD1U,0x46U,0x08U,0xCAU,0xB2U,0x63U,0xBEU,0x00U, + 0x00U,0x00U,0x00U,0x49U,0x45U,0x4EU,0x44U,0xAEU,0x42U,0x60U,0x82U, + + /*-- File: keil.gif, 1138 bytes --*/ + 0x47U,0x49U,0x46U,0x38U,0x39U,0x61U,0x97U,0x00U,0x2FU,0x00U,0xCCU,0x00U,0x00U, + 0xFFU,0xFFU,0xFFU,0x00U,0x7EU,0xA3U,0x00U,0x00U,0x00U,0x40U,0x40U,0x40U,0xC0U, + 0xC0U,0xC0U,0x80U,0x80U,0x80U,0x12U,0x12U,0x12U,0x9AU,0x9CU,0x9DU,0x2FU,0x2FU, + 0x2FU,0xEEU,0xEFU,0xF0U,0x1FU,0x1FU,0x1FU,0x60U,0x60U,0x60U,0xE0U,0xE0U,0xE1U, + 0x8EU,0x8EU,0x8EU,0xD0U,0xD0U,0xD0U,0x6FU,0x6FU,0x6FU,0xB0U,0xB6U,0xB8U,0x51U, + 0x51U,0x51U,0xF3U,0xF7U,0xF8U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U, + 0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U, + 0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U, + 0x00U,0x00U,0x00U,0x00U,0x00U,0x21U,0xF9U,0x04U,0x01U,0x00U,0x00U,0x00U,0x00U, + 0x2CU,0x00U,0x00U,0x00U,0x00U,0x97U,0x00U,0x2FU,0x00U,0x00U,0x05U,0xFFU,0x60U, + 0x00U,0x8CU,0x40U,0x60U,0x9EU,0x68U,0xAAU,0xAEU,0x6CU,0x4AU,0x92U,0xEDU,0x2BU, + 0x4BU,0x63U,0x0CU,0xB7U,0xB8U,0x29U,0x97U,0xECU,0x6EU,0xD7U,0x3AU,0x11U,0x50U, + 0x38U,0xCCU,0x19U,0x8FU,0xC4U,0xDBU,0x6AU,0x27U,0xFBU,0x15U,0x91U,0x28U,0x5FU, + 0xAFU,0x39U,0x85U,0x01U,0x79U,0xA7U,0x17U,0x74U,0x5BU,0x55U,0xAAU,0x98U,0x5EU, + 0x17U,0x95U,0x9BU,0x1DU,0x7FU,0xCDU,0x62U,0x6BU,0x69U,0x9DU,0xC6U,0x26U,0xC1U, + 0xF0U,0x78U,0x59U,0xDBU,0x45U,0x47U,0xA5U,0x64U,0x9DU,0x7DU,0x1EU,0xBEU,0xABU, + 0x45U,0x80U,0x6DU,0x7EU,0x71U,0x84U,0x78U,0x78U,0x67U,0x87U,0x6DU,0x74U,0x79U, + 0x6FU,0x6EU,0x8AU,0x8EU,0x83U,0x6BU,0x92U,0x90U,0x49U,0x91U,0x85U,0x85U,0x7CU, + 0x4FU,0x91U,0x34U,0x4EU,0x7BU,0x50U,0x89U,0x96U,0x9DU,0x60U,0x4BU,0x5EU,0x97U, + 0xA6U,0x58U,0xA0U,0x99U,0x94U,0x7AU,0xA3U,0x75U,0xA6U,0xA2U,0xA2U,0x4CU,0x59U, + 0x83U,0x96U,0xA7U,0x86U,0x9EU,0x6FU,0xB1U,0x8BU,0x88U,0xB6U,0xB0U,0xAEU,0xB2U, + 0x7AU,0xB4U,0xAAU,0xB6U,0x8BU,0xA9U,0xACU,0xABU,0x8DU,0xC6U,0xC9U,0x98U,0xAEU, + 0xBAU,0x63U,0xA5U,0xD0U,0xC4U,0xB7U,0xBBU,0x69U,0xCEU,0xD4U,0xB5U,0xCCU,0xA4U, + 0xD7U,0xC3U,0xD3U,0x6EU,0xBBU,0xD2U,0xDDU,0x9AU,0x59U,0x12U,0xD6U,0xDBU,0xC7U, + 0xA7U,0xBEU,0xDAU,0x72U,0xE7U,0xC2U,0xE7U,0xD2U,0xAAU,0x31U,0xE5U,0xE6U,0x47U, + 0xC0U,0xEAU,0xE2U,0xEEU,0xF5U,0x87U,0xDFU,0xE0U,0x43U,0xCAU,0xF2U,0xF3U,0x46U, + 0xEAU,0xF1U,0xBAU,0xB7U,0xECU,0x99U,0xBEU,0x68U,0xEFU,0xDCU,0x71U,0x21U,0xC6U, + 0x28U,0x59U,0xBAU,0x81U,0xADU,0x96U,0xB5U,0x2BU,0x48U,0x08U,0xDEU,0x42U,0x74U, + 0x8CU,0x04U,0x3EU,0xFAU,0xC7U,0xCDU,0x1BU,0x42U,0x8CU,0x8DU,0xF2U,0x80U,0x24U, + 0xA3U,0x31U,0xD4U,0xAFU,0x70U,0x66U,0xF6U,0xFFU,0xF5U,0x52U,0xD8U,0x03U,0xC7U, + 0xABU,0x8CU,0xCAU,0x62U,0x66U,0xABU,0xC8U,0x07U,0x1BU,0x1CU,0x8BU,0xA4U,0x5CU, + 0x66U,0x83U,0x78U,0xE9U,0xE1U,0xA3U,0x7CU,0x34U,0x8FU,0xD9U,0x04U,0x3AU,0xAFU, + 0xCFU,0x50U,0x82U,0xE0U,0x7CU,0x1EU,0xEDU,0xB7U,0x53U,0xE5U,0x4CU,0x5CU,0x24U, + 0xC8U,0x95U,0xFBU,0x27U,0xB3U,0xE8U,0xD3U,0xA6U,0x34U,0x3CU,0x5EU,0x35U,0xCAU, + 0xCEU,0x1AU,0x55U,0xA8U,0x60U,0x83U,0x8EU,0x04U,0x90U,0x75U,0x29U,0xAAU,0xB0U, + 0x5CU,0xF1U,0x21U,0x4DU,0x68U,0x0FU,0x59U,0x4FU,0xB5U,0x02U,0x9DU,0xDEU,0x64U, + 0xD9U,0x16U,0x99U,0xC4U,0x93U,0x41U,0x21U,0x36U,0x34U,0xABU,0xB5U,0xEFU,0xBAU, + 0x90U,0x27U,0x75U,0xE2U,0xA2U,0x87U,0x96U,0xE0U,0x96U,0xB7U,0x42U,0x3BU,0xA2U, + 0x8CU,0xC5U,0x49U,0xE9U,0xE1U,0xC2U,0x76U,0x3FU,0xE5U,0x95U,0x2BU,0x16U,0x32U, + 0xC0U,0xC1U,0x01U,0x21U,0xEFU,0x55U,0xDCU,0x97U,0xAFU,0x92U,0xAAU,0x11U,0xD5U, + 0xEDU,0x05U,0x6DU,0x58U,0x72U,0xE8U,0x7DU,0x59U,0x11U,0x93U,0x2EU,0xE9U,0x67U, + 0xB4U,0xE6U,0xCDU,0x05U,0x27U,0x8EU,0x48U,0xADU,0xDAU,0xB2U,0xBFU,0xD2U,0x39U, + 0x56U,0xC3U,0xBEU,0x9BU,0x58U,0x0FU,0xEDU,0xDAU,0xFCU,0x82U,0x0BU,0x1FU,0xCEU, + 0x10U,0x9FU,0x6CU,0x7EU,0x9CU,0x89U,0x2BU,0x5FU,0x9EU,0x94U,0x6EU,0xA5U,0xE4U, + 0x7FU,0x99U,0x4BU,0x9FU,0x1EU,0x3CU,0xD3U,0xF1U,0xEAU,0x70U,0xA9U,0x6BU,0xDFU, + 0xFEU,0x19U,0xA1U,0xE7U,0xB9U,0x14U,0xB9U,0x8BU,0x97U,0x3EU,0xE7U,0xBAU,0x70U, + 0xE8U,0xE3U,0xD3U,0x63U,0x17U,0x62U,0xFEU,0x7CU,0x76U,0x00U,0x0EU,0x18U,0x9CU, + 0x62U,0xE0U,0xE0U,0x05U,0x81U,0xFBU,0xF2U,0x47U,0x38U,0xA8U,0x4FU,0x22U,0x01U, + 0x81U,0x04U,0x0EU,0x44U,0x30U,0x40U,0x04U,0xFCU,0xBDU,0xE0U,0xDFU,0x01U,0xFFU, + 0xA9U,0xD7U,0x4FU,0xFFU,0x7BU,0xEEU,0x51U,0x94U,0x80U,0x01U,0x03U,0x9CU,0x12U, + 0x81U,0x00U,0xF9U,0x01U,0x20U,0xC0U,0x85U,0x02U,0x14U,0x30U,0xC2U,0x00U,0x02U, + 0x40U,0x40U,0x02U,0x02U,0x02U,0x10U,0x80U,0x80U,0x80U,0x0FU,0x20U,0x20U,0xC3U, + 0x01U,0x06U,0x60U,0x28U,0xC0U,0x01U,0x0AU,0x8AU,0x86U,0xDEU,0x4BU,0x14U,0x35U, + 0x70U,0x21U,0x01U,0x97U,0x30U,0x70U,0xE1U,0x03U,0x24U,0x64U,0x08U,0xC0U,0x84U, + 0x1BU,0x0AU,0x60U,0x40U,0x7DU,0x0BU,0x5CU,0x58U,0x40U,0x01U,0x03U,0x3CU,0x60U, + 0x24U,0x8DU,0x23U,0x1CU,0x20U,0x40U,0x04U,0xF2U,0x31U,0x50U,0x00U,0x8BU,0xEAU, + 0xF1U,0xF2U,0x1DU,0x70U,0x4CU,0x28U,0xB0U,0x80U,0x95U,0x23U,0x10U,0x50U,0x40U, + 0x03U,0x05U,0x78U,0x28U,0x43U,0x01U,0x06U,0x44U,0x60U,0x40U,0x02U,0x23U,0xE8U, + 0xF8U,0x80U,0x00U,0x1BU,0x22U,0x60U,0x00U,0x02U,0x32U,0x4EU,0x78U,0xC0U,0x02U, + 0x03U,0x34U,0xF0U,0xC0U,0x02U,0x15U,0x2AU,0x10U,0xE1U,0x0EU,0x09U,0x70U,0x89U, + 0xE4U,0x93U,0x43U,0xE6U,0x59U,0x40U,0x7DU,0x07U,0x0CU,0x79U,0x00U,0x99U,0x5AU, + 0xFEU,0x09U,0x00U,0x01U,0x07U,0xE8U,0xA9U,0x25U,0xA1U,0x05U,0x08U,0xF2U,0x22U, + 0x48U,0x70U,0x40U,0x10U,0x62U,0x01U,0x14U,0x02U,0x40U,0xE9U,0x80U,0x95U,0xBEU, + 0x60U,0x00U,0x9DU,0x02U,0x34U,0x50U,0xA6U,0x9DU,0x02U,0xDCU,0x39U,0xC0U,0x00U, + 0x0EU,0xA4U,0xB8U,0x00U,0x01U,0x21U,0x2EU,0x10U,0x01U,0x01U,0x03U,0x2CU,0xF0U, + 0x42U,0xA7U,0x3BU,0x94U,0xAAU,0x00U,0x88U,0x38U,0xFAU,0xF8U,0x40U,0x8AU,0x03U, + 0xA8U,0x09U,0xC0U,0x00U,0x10U,0x0AU,0x80U,0x40U,0x02U,0xBEU,0x2AU,0x60U,0x80U, + 0xA5U,0xA1U,0x72U,0x88U,0xAAU,0x86U,0x76U,0x32U,0xA8U,0x5CU,0x47U,0x1CU,0x16U, + 0x70U,0x26U,0x8EU,0x94U,0x96U,0x89U,0x64U,0x92U,0x02U,0x2CU,0x50U,0x80U,0xEFU, + 0x02U,0x0AU,0x94U,0x39U,0x80U,0x02U,0x1DU,0x6EU,0x18U,0xE1U,0x01U,0xBFU,0xA2U, + 0x4AU,0x23U,0x04U,0x5DU,0xCAU,0x00U,0xABU,0x0CU,0x57U,0x92U,0x29U,0xA3U,0x8DU, + 0x1AU,0x16U,0x60U,0xA2U,0x03U,0x21U,0x8EU,0x0AU,0x5FU,0xA7U,0x1EU,0x2AU,0x69U, + 0xA9U,0x89U,0xC0U,0x12U,0xB0U,0x80U,0x01U,0x4AU,0x12U,0x50U,0xD3U,0x6EU,0x84U, + 0xEDU,0x60U,0x23U,0x02U,0xA3U,0x0AU,0x9BU,0x40U,0xB4U,0x16U,0x4EU,0x0BU,0x00U, + 0x02U,0x76U,0x8EU,0xBAU,0xA2U,0x85U,0x1AU,0xF2U,0x2AU,0x9FU,0xBCU,0x24U,0x88U, + 0x0BU,0xC7U,0xACU,0x3BU,0x14U,0xA9U,0x5FU,0x88U,0x3AU,0x12U,0x29U,0x2DU,0xC5U, + 0x08U,0x74U,0x39U,0x2BU,0x9AU,0x1EU,0x27U,0x6CU,0x23U,0x84U,0x3CU,0x00U,0x04U, + 0x30U,0x36U,0xB7U,0x92U,0x09U,0x80U,0x8DU,0x5CU,0xA2U,0x99U,0x70U,0xC5U,0xDDU, + 0x7AU,0x0BU,0xF1U,0xCBU,0x61U,0xEEU,0x7AU,0x67U,0x96U,0x21U,0x46U,0x1AU,0x2AU, + 0x8DU,0x04U,0x3CU,0x50U,0xC0U,0xBEU,0x0EU,0x24U,0x10U,0x24U,0xB0U,0xEDU,0xDEU, + 0x19U,0x6FU,0x84U,0x92U,0xA2U,0x58U,0x00U,0xAAU,0x96U,0x2AU,0x4DU,0x63U,0x90U, + 0x1EU,0x3EU,0xB7U,0x72U,0x66U,0x32U,0x3CU,0x88U,0x23U,0x09U,0x57U,0x22U,0xDCU, + 0xF3U,0x08U,0x57U,0xBEU,0xD0U,0xAFU,0x8EU,0x00U,0xC8U,0x78U,0x00U,0xC5U,0x3CU, + 0x2BU,0xBCU,0x03U,0x8AU,0x18U,0xF2U,0x9BU,0x00U,0x88U,0x3EU,0xB2U,0xD8U,0xB1U, + 0xD4U,0x1CU,0x5EU,0xE8U,0xAAU,0x9AU,0xB8U,0x96U,0xDCU,0xF3U,0xB6U,0x0AU,0xF6U, + 0xBDU,0xDDU,0x7DU,0xF7U,0x49U,0x93U,0xABU,0xDAU,0x70U,0xD8U,0x08U,0xA5U,0xDFU, + 0x88U,0x27U,0x9EU,0xF1U,0xCEU,0x85U,0x84U,0xADU,0xF8U,0xE3U,0x8FU,0xA3U,0x4DU, + 0x08U,0xCCU,0x24U,0x84U,0x00U,0x00U,0x3BU, + + /*-- File: llblue.jpg, 3008 bytes --*/ + 0xFFU,0xD8U,0xFFU,0xE0U,0x00U,0x10U,0x4AU,0x46U,0x49U,0x46U,0x00U,0x01U,0x01U, + 0x01U,0x00U,0x60U,0x00U,0x60U,0x00U,0x00U,0xFFU,0xDBU,0x00U,0x43U,0x00U,0x03U, + 0x02U,0x02U,0x03U,0x02U,0x02U,0x03U,0x03U,0x03U,0x03U,0x04U,0x03U,0x03U,0x04U, + 0x05U,0x08U,0x05U,0x05U,0x04U,0x04U,0x05U,0x0AU,0x07U,0x07U,0x06U,0x08U,0x0CU, + 0x0AU,0x0CU,0x0CU,0x0BU,0x0AU,0x0BU,0x0BU,0x0DU,0x0EU,0x12U,0x10U,0x0DU,0x0EU, + 0x11U,0x0EU,0x0BU,0x0BU,0x10U,0x16U,0x10U,0x11U,0x13U,0x14U,0x15U,0x15U,0x15U, + 0x0CU,0x0FU,0x17U,0x18U,0x16U,0x14U,0x18U,0x12U,0x14U,0x15U,0x14U,0xFFU,0xDBU, + 0x00U,0x43U,0x01U,0x03U,0x04U,0x04U,0x05U,0x04U,0x05U,0x09U,0x05U,0x05U,0x09U, + 0x14U,0x0DU,0x0BU,0x0DU,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U, + 0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U, + 0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U, + 0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U,0x14U, + 0x14U,0x14U,0xFFU,0xC0U,0x00U,0x11U,0x08U,0x00U,0xC8U,0x01U,0x2CU,0x03U,0x01U, + 0x22U,0x00U,0x02U,0x11U,0x01U,0x03U,0x11U,0x01U,0xFFU,0xC4U,0x00U,0x1FU,0x00U, + 0x00U,0x01U,0x05U,0x01U,0x01U,0x01U,0x01U,0x01U,0x01U,0x00U,0x00U,0x00U,0x00U, + 0x00U,0x00U,0x00U,0x00U,0x01U,0x02U,0x03U,0x04U,0x05U,0x06U,0x07U,0x08U,0x09U, + 0x0AU,0x0BU,0xFFU,0xC4U,0x00U,0xB5U,0x10U,0x00U,0x02U,0x01U,0x03U,0x03U,0x02U, + 0x04U,0x03U,0x05U,0x05U,0x04U,0x04U,0x00U,0x00U,0x01U,0x7DU,0x01U,0x02U,0x03U, + 0x00U,0x04U,0x11U,0x05U,0x12U,0x21U,0x31U,0x41U,0x06U,0x13U,0x51U,0x61U,0x07U, + 0x22U,0x71U,0x14U,0x32U,0x81U,0x91U,0xA1U,0x08U,0x23U,0x42U,0xB1U,0xC1U,0x15U, + 0x52U,0xD1U,0xF0U,0x24U,0x33U,0x62U,0x72U,0x82U,0x09U,0x0AU,0x16U,0x17U,0x18U, + 0x19U,0x1AU,0x25U,0x26U,0x27U,0x28U,0x29U,0x2AU,0x34U,0x35U,0x36U,0x37U,0x38U, + 0x39U,0x3AU,0x43U,0x44U,0x45U,0x46U,0x47U,0x48U,0x49U,0x4AU,0x53U,0x54U,0x55U, + 0x56U,0x57U,0x58U,0x59U,0x5AU,0x63U,0x64U,0x65U,0x66U,0x67U,0x68U,0x69U,0x6AU, + 0x73U,0x74U,0x75U,0x76U,0x77U,0x78U,0x79U,0x7AU,0x83U,0x84U,0x85U,0x86U,0x87U, + 0x88U,0x89U,0x8AU,0x92U,0x93U,0x94U,0x95U,0x96U,0x97U,0x98U,0x99U,0x9AU,0xA2U, + 0xA3U,0xA4U,0xA5U,0xA6U,0xA7U,0xA8U,0xA9U,0xAAU,0xB2U,0xB3U,0xB4U,0xB5U,0xB6U, + 0xB7U,0xB8U,0xB9U,0xBAU,0xC2U,0xC3U,0xC4U,0xC5U,0xC6U,0xC7U,0xC8U,0xC9U,0xCAU, + 0xD2U,0xD3U,0xD4U,0xD5U,0xD6U,0xD7U,0xD8U,0xD9U,0xDAU,0xE1U,0xE2U,0xE3U,0xE4U, + 0xE5U,0xE6U,0xE7U,0xE8U,0xE9U,0xEAU,0xF1U,0xF2U,0xF3U,0xF4U,0xF5U,0xF6U,0xF7U, + 0xF8U,0xF9U,0xFAU,0xFFU,0xC4U,0x00U,0x1FU,0x01U,0x00U,0x03U,0x01U,0x01U,0x01U, + 0x01U,0x01U,0x01U,0x01U,0x01U,0x01U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x01U, + 0x02U,0x03U,0x04U,0x05U,0x06U,0x07U,0x08U,0x09U,0x0AU,0x0BU,0xFFU,0xC4U,0x00U, + 0xB5U,0x11U,0x00U,0x02U,0x01U,0x02U,0x04U,0x04U,0x03U,0x04U,0x07U,0x05U,0x04U, + 0x04U,0x00U,0x01U,0x02U,0x77U,0x00U,0x01U,0x02U,0x03U,0x11U,0x04U,0x05U,0x21U, + 0x31U,0x06U,0x12U,0x41U,0x51U,0x07U,0x61U,0x71U,0x13U,0x22U,0x32U,0x81U,0x08U, + 0x14U,0x42U,0x91U,0xA1U,0xB1U,0xC1U,0x09U,0x23U,0x33U,0x52U,0xF0U,0x15U,0x62U, + 0x72U,0xD1U,0x0AU,0x16U,0x24U,0x34U,0xE1U,0x25U,0xF1U,0x17U,0x18U,0x19U,0x1AU, + 0x26U,0x27U,0x28U,0x29U,0x2AU,0x35U,0x36U,0x37U,0x38U,0x39U,0x3AU,0x43U,0x44U, + 0x45U,0x46U,0x47U,0x48U,0x49U,0x4AU,0x53U,0x54U,0x55U,0x56U,0x57U,0x58U,0x59U, + 0x5AU,0x63U,0x64U,0x65U,0x66U,0x67U,0x68U,0x69U,0x6AU,0x73U,0x74U,0x75U,0x76U, + 0x77U,0x78U,0x79U,0x7AU,0x82U,0x83U,0x84U,0x85U,0x86U,0x87U,0x88U,0x89U,0x8AU, + 0x92U,0x93U,0x94U,0x95U,0x96U,0x97U,0x98U,0x99U,0x9AU,0xA2U,0xA3U,0xA4U,0xA5U, + 0xA6U,0xA7U,0xA8U,0xA9U,0xAAU,0xB2U,0xB3U,0xB4U,0xB5U,0xB6U,0xB7U,0xB8U,0xB9U, + 0xBAU,0xC2U,0xC3U,0xC4U,0xC5U,0xC6U,0xC7U,0xC8U,0xC9U,0xCAU,0xD2U,0xD3U,0xD4U, + 0xD5U,0xD6U,0xD7U,0xD8U,0xD9U,0xDAU,0xE2U,0xE3U,0xE4U,0xE5U,0xE6U,0xE7U,0xE8U, + 0xE9U,0xEAU,0xF2U,0xF3U,0xF4U,0xF5U,0xF6U,0xF7U,0xF8U,0xF9U,0xFAU,0xFFU,0xDAU, + 0x00U,0x0CU,0x03U,0x01U,0x00U,0x02U,0x11U,0x03U,0x11U,0x00U,0x3FU,0x00U,0xFBU, + 0xF9U,0x7AU,0xD2U,0x8EU,0x94U,0x83U,0xADU,0x28U,0xE9U,0x5EU,0xE3U,0x3CU,0xB4U, + 0x48U,0x9DU,0x29U,0x56U,0x91U,0x3AU,0x52U,0xADU,0x48U,0xC7U,0xAFU,0x4AU,0x70U, + 0xEBU,0x4DU,0x5EU,0x94U,0xB4U,0x98U,0x12U,0x2DU,0x3DU,0x69U,0x8BU,0xD2U,0x9EU, + 0xB5U,0x9BU,0x29U,0x12U,0x52U,0xADU,0x34U,0x74U,0xA7U,0x2DU,0x0CU,0xB1U,0x6AU, + 0x64U,0xEDU,0x50U,0xD4U,0xC9U,0x52U,0x31U,0x40U,0xE2U,0x96U,0x90U,0x1EU,0x0DU, + 0x2DU,0x48U,0xD0U,0xF5U,0x1CU,0xD3U,0xC7U,0x5AU,0x62U,0x9EU,0x69U,0xE3U,0xADU, + 0x26U,0x0BU,0x61U,0xD4U,0xE1U,0xD2U,0x9BU,0x4EU,0x1DU,0x2AU,0x59U,0x4CU,0x7FU, + 0x7AU,0x51U,0xD6U,0x8AU,0x29U,0x01U,0x22U,0xD3U,0x87U,0x5AU,0x6AU,0xD3U,0x87U, + 0x5AU,0x97U,0xB8U,0xD0U,0xA3U,0xA5U,0x3CU,0x74U,0xA6U,0x8EU,0xD4U,0xE1U,0xD2U, + 0x93U,0x19U,0x20U,0xE8U,0x69U,0xD4U,0xCFU,0xE1U,0x34U,0xFAU,0x92U,0xC0U,0x75U, + 0xA9U,0x16U,0xA3U,0x1DU,0x69U,0xEBU,0xD6U,0x80U,0x1CU,0x3BU,0x53U,0xC7U,0x5AU, + 0x60U,0xEDU,0x4FU,0xA8U,0x28U,0x70U,0x1DU,0x29U,0xCBU,0xD2U,0x9AU,0x0EU,0x69U, + 0xCBU,0xD2U,0x92U,0x18U,0xE1U,0xDAU,0x9EU,0xB4U,0xC1U,0xDAU,0x9EU,0xBDU,0x69U, + 0x30U,0x1CU,0x3AU,0xD3U,0xA9U,0x94U,0xFAU,0x82U,0x85U,0xFEU,0x2AU,0x75U,0x34U, + 0x75U,0xA7U,0x50U,0x07U,0x95U,0x0EU,0xB4U,0xABU,0xD2U,0x9AU,0x3AU,0x52U,0xA9U, + 0xAFU,0x74U,0xF2U,0xD0U,0xF5U,0x3DU,0xA9U,0xC3U,0xADU,0x30U,0x1CU,0x1CU,0xD3U, + 0xEAU,0x18U,0xC7U,0x83U,0x8AU,0x75U,0x34U,0x73U,0xF8U,0xD3U,0x81U,0xCDU,0x26U, + 0x31U,0xEAU,0x69U,0xE3U,0xADU,0x46U,0xA6U,0x9FU,0x50U,0xC1U,0x12U,0x2DU,0x38U, + 0x75U,0xA6U,0xADU,0x2EU,0x79U,0x14U,0x32U,0xD0U,0xFAU,0x91U,0x0DU,0x47U,0x4FU, + 0x43U,0x50U,0x50U,0xF1U,0xDFU,0xDEU,0x9CU,0x39U,0xA6U,0x29U,0xA7U,0xD4U,0x80U, + 0xE5U,0x38U,0x35U,0x25U,0x43U,0x53U,0x76U,0xCDU,0x0CU,0xA4U,0x3AU,0x9CU,0x0DU, + 0x34U,0x1CU,0x8AU,0x51U,0xD6U,0xA0U,0x6CU,0x90U,0x74U,0xA5U,0xA6U,0xADU,0x3AU, + 0x90U,0x12U,0x03U,0xD2U,0x96U,0x91U,0x4EU,0x45U,0x0BU,0xD2U,0xA0U,0x68U,0x72U, + 0xD3U,0xD7U,0xA5U,0x31U,0x7AU,0xD3U,0x94U,0xD0U,0xC6U,0x3AU,0xA5U,0x07U,0x35U, + 0x15U,0x4AU,0x3BU,0xD2U,0x65U,0x0BU,0x4FU,0x1DU,0x69U,0x94U,0xE0U,0x73U,0x48U, + 0x63U,0x94U,0xD4U,0x95U,0x12U,0xF5U,0xA9U,0x07U,0x4AU,0x81U,0xA1U,0xE3U,0xA5U, + 0x39U,0x4DU,0x31U,0x4DU,0x3AU,0x91U,0x43U,0x81U,0xA7U,0xD3U,0x47U,0x5AU,0x51U, + 0xCDU,0x0CU,0x48U,0x7DU,0x48U,0xA6U,0xA3U,0x1CU,0x8AU,0x7AU,0xF1U,0x52U,0xC6U, + 0x03U,0xADU,0x3EU,0x99U,0x4EU,0x1DU,0x2AU,0x4AU,0x3CU,0xA2U,0x95U,0x4DU,0x25U, + 0x03U,0xADU,0x7BU,0xC7U,0x98U,0x4BU,0x4EU,0x1DU,0x29U,0x8BU,0xD2U,0x9CU,0xB5U, + 0x00U,0x4BU,0xFCU,0x26U,0x94U,0x7EU,0x94U,0xDAU,0x50U,0x71U,0x52U,0xC6U,0x3CU, + 0x75U,0xA9U,0x07U,0x4AU,0x8AU,0x9EU,0xA6U,0xA5U,0x88U,0x91U,0x7AU,0x54U,0x95U, + 0x10U,0xEBU,0x52U,0x03U,0x9AU,0x93U,0x4EU,0x83U,0x81U,0xA5U,0xA6U,0x8EU,0xB4U, + 0xEAU,0x4CU,0xA2U,0x65U,0x19U,0x14U,0xABU,0x4DU,0x53U,0x4AU,0x3BU,0xD4U,0xB0U, + 0x1DU,0x4FU,0x43U,0xC6U,0x29U,0x83U,0x9AU,0x55U,0x38U,0x34U,0xBAU,0x0DU,0x13U, + 0x2FU,0x5AU,0x5AU,0x6DU,0x3AU,0xA7U,0xA9U,0x43U,0xC7U,0x14U,0xFAU,0x8DU,0x69U, + 0xE3U,0xA5U,0x43U,0x04U,0x39U,0x4FU,0x34U,0xFCU,0xE0U,0xD4U,0x74U,0xFCU,0xF3U, + 0x43U,0x1AU,0x1DU,0x4FU,0xA6U,0x53U,0x97U,0xA5U,0x21U,0x8FU,0xA9U,0x17U,0xA7U, + 0xD2U,0xA2U,0x5EU,0x95U,0x22U,0x8CU,0x8AU,0x96U,0x34U,0x3EU,0x95U,0x69U,0xA3U, + 0xA5U,0x2DU,0x22U,0x89U,0x01U,0xCDU,0x39U,0x4DU,0x30U,0x75U,0xA5U,0x5EU,0x94U, + 0x98U,0xD1U,0x25U,0x3AU,0x9BU,0x4EU,0x1DU,0x2AU,0x18U,0xC7U,0x0EU,0x94U,0xE5U, + 0xA6U,0x8AU,0x50U,0x68U,0xE8U,0x1BU,0x32U,0x45U,0xA7U,0x0EU,0xB4U,0xC0U,0x70U, + 0x69U,0xD5U,0x23U,0x63U,0xE9U,0x41U,0xC5U,0x20U,0xE6U,0x8AU,0x4CU,0x68U,0xF2U, + 0xAAU,0x70U,0xE6U,0x9BU,0x4EU,0x1DU,0x2BU,0xDEU,0x67U,0x96U,0x39U,0x69U,0xCBU, + 0xD6U,0x98U,0x9DU,0x45U,0x3AU,0xA1U,0x94U,0x3EU,0x9FU,0x8AU,0x65U,0x3CU,0x75U, + 0xA9U,0x01U,0xD4U,0xE4U,0xA6U,0xD2U,0xADU,0x43U,0x1BU,0x24U,0xA9U,0x16U,0xA3U, + 0xA7U,0xAFU,0x6AU,0x92U,0xD0U,0xF1U,0xD6U,0x9DU,0x4DU,0xA7U,0x0EU,0x94U,0x98U, + 0xD0U,0xF4U,0xA9U,0x07U,0x5AU,0x89U,0x3EU,0xF5U,0x3CU,0xF4U,0x35U,0x2CU,0x63U, + 0xE8U,0xA0U,0x75U,0x34U,0x52U,0x40U,0xB6U,0x26U,0xA7U,0x0EU,0x94U,0xC5U,0xFBU, + 0xA2U,0x9CU,0xBDU,0x2AU,0x4BU,0x43U,0x87U,0x5AU,0x7AU,0xD3U,0x07U,0x5AU,0x7AU, + 0xF5U,0xA4U,0xC0U,0x71U,0xE8U,0x2AU,0x41U,0xD2U,0xA3U,0xA9U,0x17U,0xA5U,0x40U, + 0xD8U,0x2FU,0x4AU,0x7AU,0xF6U,0xA6U,0x0EU,0x94U,0xF1U,0xD2U,0x82U,0x90U,0xE5U, + 0xEBU,0x4BU,0x4DU,0x5EU,0xD4U,0xEAU,0x5DU,0x41U,0x12U,0x8EU,0xF4U,0xB4U,0x83U, + 0xA9U,0xA5U,0xA9U,0x28U,0x70U,0xEDU,0x4AU,0x3AU,0xD3U,0x57U,0xA5U,0x38U,0x75U, + 0xA4U,0xC6U,0x89U,0x07U,0x4AU,0x72U,0xF4U,0xA6U,0xAFU,0x4AU,0x51U,0xD6U,0xA4U, + 0x63U,0xD7U,0xADU,0x3CU,0x75U,0xA8U,0xEAU,0x41U,0xD6U,0x92U,0x18U,0xEAU,0x75U, + 0x31U,0x7EU,0xE8U,0xA7U,0x8EU,0x94U,0x98U,0x21U,0xCBU,0xD2U,0x96U,0x91U,0x69U, + 0x6AU,0x0AU,0x3CU,0xAAU,0x9CU,0x3AU,0x53U,0x69U,0xC0U,0x57U,0xBEU,0xCFU,0x28U, + 0x54U,0xA7U,0x2FU,0x6AU,0x45U,0xA7U,0x2FU,0xDEU,0x15U,0x0CU,0xA1U,0xC3U,0xADU, + 0x3CU,0x1CU,0x53U,0x07U,0x5AU,0x78U,0xE8U,0x6AU,0x40U,0x75U,0x2AU,0xD2U,0x53U, + 0x92U,0xA1U,0x8DU,0x8FU,0xA9U,0x07U,0x5AU,0x60U,0xEBU,0x4FU,0x5AU,0x92U,0xD0U, + 0xEAU,0x75U,0x34U,0x72U,0x69U,0xD4U,0x98U,0xD0U,0xF4U,0xA7U,0xE3U,0x26U,0x9AU, + 0x82U,0x9FU,0xD0U,0xD4U,0xB1U,0x8AU,0x3AU,0x9AU,0x5EU,0x94U,0x83U,0xA5U,0x28U, + 0x19U,0xA4U,0x80U,0x96U,0x95U,0x69U,0x29U,0xD5U,0x25U,0x8AU,0x3AU,0xD3U,0xD6U, + 0x9AU,0xA3U,0x26U,0x9EU,0xBDU,0x29U,0x30U,0x16U,0xA4U,0x5EU,0x94U,0xC1U,0xCEU, + 0x29U,0xE3U,0xA5U,0x40U,0xD8U,0xA3U,0x90U,0x29U,0xC3U,0xA5U,0x34U,0x0CU,0x53U, + 0x87U,0x4AU,0x48U,0xA4U,0x39U,0x7AU,0xD2U,0xD2U,0x2DU,0x38U,0x0EU,0x71U,0x40U, + 0x22U,0x40U,0x3AU,0xD2U,0xD2U,0x03U,0x9AU,0x5AU,0x92U,0x87U,0x0EU,0x94U,0xA0U, + 0xE2U,0x80U,0x3AU,0x50U,0x06U,0x69U,0x31U,0xA2U,0x41U,0xD2U,0x9CU,0xB4U,0x94U, + 0xE1U,0xD2U,0xA4U,0x61U,0x52U,0x0EU,0xB4U,0xC0U,0x32U,0x69U,0xEBU,0xD6U,0x90U, + 0xC5U,0x1DU,0x29U,0xE3U,0xA5U,0x36U,0x9DU,0x48U,0x07U,0x2DU,0x2DU,0x03U,0x8AU, + 0x2AU,0x0AU,0x3CU,0xA8U,0x75U,0xA0U,0x75U,0xA5U,0x5AU,0x55U,0x15U,0xEFU,0x33U, + 0xCBU,0x43U,0x87U,0x4AU,0x7AU,0xF4U,0xCDU,0x36U,0x9FU,0xD2U,0xA0U,0x63U,0xC0U, + 0xE2U,0x95U,0x7DU,0x28U,0xC7U,0xCBU,0x8AU,0x5FU,0x7AU,0x96U,0x30U,0xA9U,0x16U, + 0x98U,0xA2U,0xA4U,0x02U,0xA5U,0x88U,0x72U,0x8AU,0x78U,0xE2U,0x9AU,0xA2U,0x9FU, + 0x52U,0x69U,0xD0U,0x55U,0xA5U,0xA0U,0x0CU,0x0AU,0x50U,0x32U,0x6AU,0x4AU,0x25U, + 0x51U,0x40U,0x1DU,0x7DU,0xE9U,0x40U,0xE2U,0x80U,0x39U,0xA9U,0x60U,0x2DU,0x39U, + 0x06U,0x4FU,0xD2U,0x93U,0x14U,0xF4U,0xE9U,0x40U,0xD0U,0xE1U,0xD6U,0x9DU,0x48U, + 0xA2U,0x9CU,0x07U,0x38U,0xA9U,0x28U,0x55U,0x14U,0xFEU,0xB4U,0x8AU,0x39U,0xA5U, + 0xE9U,0x52U,0x03U,0x90U,0x64U,0xD3U,0x87U,0x5AU,0x44U,0xEBU,0x4EU,0x02U,0xA5U, + 0x8CU,0x5AU,0x70U,0x14U,0xD0U,0x33U,0x4FU,0x03U,0x34U,0x0CU,0x70U,0x18U,0x14U, + 0xE1U,0xD2U,0x9BU,0x52U,0x20U,0xE2U,0xA4U,0xA4U,0x28U,0xE2U,0x94U,0x75U,0xA2U, + 0x95U,0x45U,0x21U,0x80U,0x1CU,0xD4U,0x8AU,0x29U,0x8AU,0x2AU,0x45U,0x18U,0xA8U, + 0x1AU,0x1DU,0x4EU,0x03U,0x14U,0xDAU,0x70U,0xE2U,0x93U,0x18U,0xE5U,0xA7U,0x2DU, + 0x20U,0x14U,0xE0U,0x31U,0x40U,0xFAU,0x8AU,0x06U,0x4DU,0x3AU,0x80U,0x38U,0xA7U, + 0x28U,0xA9U,0x63U,0x16U,0x8AU,0x3AU,0xD2U,0x81U,0x91U,0x52U,0x33U,0xCAU,0xC0U, + 0xE2U,0x9CU,0xA2U,0x90U,0x75U,0xA5U,0x1DU,0x2BU,0xDCU,0x67U,0x96U,0x87U,0x2FU, + 0xDEU,0x14U,0xFFU,0x00U,0xE2U,0xA6U,0x2DU,0x48U,0x3EU,0xF5U,0x43U,0x18U,0xBEU, + 0xB4U,0xECU,0x52U,0x00U,0x29U,0x68U,0x01U,0xC8U,0x2AU,0x41U,0xD6U,0x9AU,0xB4U, + 0xE5U,0xEBU,0x59U,0xB2U,0x90U,0xF5U,0xA7U,0x01U,0xCDU,0x22U,0xF4U,0xA7U,0x2FU, + 0x5AU,0x6CU,0xA4U,0x2DU,0x48U,0x82U,0xA3U,0xA9U,0x54U,0x54U,0x14U,0x2AU,0xD3U, + 0x81U,0xC8U,0xA6U,0x8EU,0xF4U,0xEAU,0x80U,0x0AU,0x9AU,0xA2U,0x5FU,0xBCU,0x2AU, + 0x5AU,0x6CU,0xA4U,0x38U,0x0CU,0x0AU,0x55U,0x18U,0x34U,0x94U,0xE1U,0xD2U,0xA0U, + 0x6CU,0x7AU,0xF4U,0xA5U,0xA4U,0x1DU,0x29U,0x69U,0x01U,0x20U,0xE9U,0x4BU,0x45U, + 0x15U,0x03U,0x42U,0xADU,0x3DU,0x69U,0x8BU,0x52U,0x0EU,0x94U,0xC6U,0x38U,0x0CU, + 0x53U,0xBBU,0x7DU,0x69U,0x29U,0xD8U,0xA9U,0x65U,0x8BU,0x4FU,0x1CU,0xD3U,0x07U, + 0x5AU,0x7AU,0xF5U,0xA4U,0x00U,0x07U,0x35U,0x20U,0xE9U,0x4DU,0x4EU,0xD4U,0xFAU, + 0x82U,0x87U,0x0EU,0x94U,0xABU,0xD6U,0x90U,0x74U,0xA7U,0x2DU,0x2EU,0xA3U,0x16U, + 0x9FU,0x4DU,0x1DU,0xA9U,0xC3U,0xADU,0x0CU,0x48U,0x75U,0x39U,0x7AU,0x53U,0x69U, + 0xF5U,0x2CU,0x68U,0x29U,0xF4U,0xD0U,0x39U,0xA7U,0x54U,0x94U,0x79U,0x52U,0xF5U, + 0xA5U,0x1DU,0x29U,0x07U,0x5AU,0x51U,0xD2U,0xBDU,0xC6U,0x79U,0x68U,0x91U,0x3AU, + 0x52U,0xADU,0x24U,0x67U,0xADU,0x2AU,0x75U,0xA9U,0x1FU,0x41U,0xEBU,0xD2U,0x9CU, + 0x3AU,0xD3U,0x57U,0xA5U,0x28U,0x38U,0xA4U,0xC0U,0x91U,0x7AU,0x53U,0xD6U,0x98U, + 0xB4U,0xF5U,0xACU,0xD9U,0x48U,0x92U,0x95U,0x69U,0xA3U,0xB5U,0x39U,0x68U,0x65U, + 0x8BU,0x53U,0x27U,0x6AU,0x86U,0xA6U,0x5EU,0x2AU,0x46U,0x2AU,0xF4U,0xA5U,0xA6U, + 0x83U,0xD6U,0x9DU,0x52U,0x34U,0x3DU,0x3AU,0x9AU,0x78U,0xEBU,0x4CU,0x53U,0xCDU, + 0x3CU,0x75U,0xA4U,0xC1U,0x6CU,0x38U,0xF4U,0xA7U,0x0EU,0x94U,0xDAU,0x70U,0xE9U, + 0x52U,0x53U,0x24U,0xA0U,0x75U,0xA2U,0x8AU,0x40U,0x48U,0xB4U,0xE1U,0xD6U,0x9AU, + 0xB4U,0xE1U,0xD6U,0xA5U,0xEEU,0x34U,0x28U,0xE9U,0x4FU,0x1DU,0x29U,0xA3U,0xB5U, + 0x38U,0x74U,0xA4U,0xC6U,0x3EU,0x9EU,0x7AU,0xD3U,0x29U,0xF4U,0x99U,0x60U,0x3AU, + 0xD4U,0x8BU,0x51U,0x8EU,0xB4U,0xF5U,0xEBU,0x48U,0x07U,0x27U,0x6AU,0x78U,0xEBU, + 0x4CU,0x1DU,0xA9U,0xF5U,0x05U,0x0EU,0xA7U,0x2FU,0x4AU,0x62U,0xFDU,0xD1U,0x4FU, + 0x5EU,0x94U,0x90U,0xFAU,0x0EU,0x1DU,0xA9U,0xEBU,0x4CU,0x1DU,0xA9U,0xC3U,0xADU, + 0x26U,0x03U,0xC7U,0x5AU,0x75U,0x32U,0x9FU,0x50U,0x50U,0xEFU,0xE2U,0x34U,0xB4U, + 0xD1U,0xD6U,0x9DU,0x40U,0x1EU,0x53U,0x4EU,0x5AU,0x60U,0x39U,0xA7U,0x29U,0xAFU, + 0x74U,0xF2U,0xD0U,0xF5U,0xEBU,0x52U,0x2FU,0x6AU,0x8AU,0xA4U,0x5EU,0x95U,0x23U, + 0x1DU,0xEBU,0x4EU,0xA6U,0x53U,0xEAU,0x58U,0xD0U,0xF4U,0xA7U,0x8EU,0xB5U,0x12U, + 0x9AU,0x92U,0xA1U,0x82U,0x24U,0x5AU,0x70U,0xEBU,0x4CU,0x53U,0x4EU,0xCDU,0x23U, + 0x41U,0xF4U,0xF4U,0xA6U,0x0EU,0x45U,0x3DU,0x0EU,0x2AU,0x46U,0x48U,0x79U,0xFCU, + 0x69U,0x47U,0x4AU,0x69U,0x38U,0x02U,0x9CU,0x3AU,0x9AU,0x96U,0x02U,0x83U,0x83U, + 0x52U,0xD4U,0x35U,0x28U,0xE6U,0x86U,0x52U,0x1FU,0x4EU,0x53U,0x83U,0x4CU,0x53U, + 0x4EU,0x1CU,0x1CU,0xD4U,0xB1U,0xB2U,0x41U,0xD2U,0x97U,0xA5U,0x35U,0x7AU,0xD3U, + 0xAAU,0x40U,0x7AU,0x74U,0xA7U,0x03U,0x9AU,0x6CU,0x7DU,0x0DU,0x0BU,0x52U,0xC6U, + 0x87U,0xADU,0x3DU,0x7AU,0x53U,0x07U,0x5AU,0x7AU,0xF5U,0xA0U,0x63U,0x81U,0xE7U, + 0x35U,0x20U,0x18U,0xA8U,0xAAU,0x6AU,0x96U,0x50U,0x53U,0xC7U,0x5AU,0x65U,0x38U, + 0x1CU,0xD2U,0x18U,0xE0U,0x73U,0x52U,0x54U,0x4AU,0x6AU,0x45U,0xE9U,0x50U,0x34U, + 0x3CU,0x74U,0xA5U,0x5EU,0xB4U,0xD0U,0x69U,0xD5U,0x25U,0x0EU,0x1CU,0x53U,0xE9U, + 0x80U,0xF3U,0x4EU,0x07U,0x81U,0x4DU,0x89U,0x0FU,0xA7U,0xA5U,0x30U,0x74U,0xA7U, + 0x2DU,0x4BU,0x18U,0xA0U,0xE2U,0x9DU,0x81U,0x4DU,0xE9U,0x4EU,0x1DU,0x2AU,0x4AU, + 0x3CU,0xA5U,0x7AU,0xD3U,0xD6U,0xA3U,0xA7U,0x57U,0xBCU,0xF7U,0x3CU,0xA1U,0xE3U, + 0x91U,0x4EU,0x1DU,0x29U,0x8BU,0x4EU,0x5FU,0xBCU,0x2AU,0x0AU,0x25U,0xEAU,0x31U, + 0x4AU,0x0FU,0x7AU,0x6DU,0x28U,0x3DU,0x6AU,0x58U,0xD0U,0xE1U,0xC1U,0xA9U,0x47U, + 0x4AU,0x8AU,0x9EU,0x95U,0x2CU,0x44U,0x8AU,0x69U,0xE0U,0xD4U,0x63U,0xADU,0x3DU, + 0x6AU,0x4DU,0x10U,0xF5U,0xA5U,0xA6U,0x8EU,0xB4U,0xEAU,0x4CU,0xA2U,0x65U,0x34U, + 0xA3U,0xF9U,0x53U,0x10U,0xF1U,0x4EU,0x5EU,0xBFU,0x5AU,0x96U,0x03U,0xE9U,0xC8U, + 0x79U,0xC5U,0x30U,0x76U,0xA5U,0x07U,0x06U,0x91U,0x44U,0xA3U,0xADU,0x3AU,0x9BU, + 0x4EU,0xA9U,0x18U,0xF0U,0x69U,0xF5U,0x1AU,0xD3U,0xC1U,0xE2U,0xA4U,0x42U,0x83U, + 0x83U,0x52U,0xD4U,0x55U,0x28U,0x39U,0xA4U,0xC6U,0x14U,0xE0U,0x69U,0xB4U,0xABU, + 0x48U,0xA2U,0x4EU,0xB4U,0xE1U,0xD2U,0x98U,0xBDU,0x2AU,0x44U,0x35U,0x23U,0x43U, + 0xE8U,0x1DU,0x69U,0x00U,0xC0U,0xA5U,0xA4U,0x51U,0x22U,0xD2U,0xA9U,0xA6U,0x0EU, + 0xD4U,0xE5U,0x34U,0x98U,0xD1U,0x25U,0x3AU,0x9BU,0x4EU,0x1DU,0x2AU,0x46U,0x39U, + 0x7AU,0x53U,0x87U,0x1DU,0x69U,0xAAU,0x69U,0x69U,0x31U,0xF5U,0x24U,0x53U,0x4EU, + 0x1CU,0x1AU,0x65U,0x3AU,0xA4U,0x07U,0xD1U,0x48U,0x3AU,0x52U,0xD2U,0x63U,0x47U, + 0x95U,0x53U,0x87U,0x4AU,0x6DU,0x38U,0x74U,0xAFU,0x79U,0x9EU,0x58U,0xABU,0x4FU, + 0x53U,0xC8U,0xA6U,0x27U,0x51U,0x4EU,0xA8U,0x65U,0x0FU,0xA7U,0x53U,0x69U,0xE3U, + 0xADU,0x48U,0x0EU,0xA7U,0x2DU,0x36U,0x95U,0x6AU,0x18U,0xD9U,0x25U,0x48U,0x3AU, + 0xD4U,0x74U,0xF5U,0xEDU,0x52U,0x54U,0x47U,0xD3U,0xA9U,0xB4U,0xE1U,0xD2U,0x93U, + 0x28U,0x7AU,0x1EU,0x69U,0xE0U,0xF2U,0x2AU,0x34U,0xFBU,0xD4U,0xFFU,0x00U,0x5AU, + 0x96U,0x31U,0xF4U,0x50U,0x3AU,0x9AU,0x29U,0x20U,0x5BU,0x13U,0x53U,0x87U,0x4AU, + 0x62U,0xFDU,0xD1U,0x4EU,0x5EU,0x95U,0x25U,0xA1U,0xC3U,0xADU,0x3DU,0x69U,0x83U, + 0xADU,0x3DU,0x7AU,0xD2U,0x60U,0x3AU,0xA4U,0x5EU,0x95U,0x1DU,0x3DU,0x3EU,0xEDU, + 0x40U,0xD8U,0xE1U,0xD2U,0x9CU,0xBDU,0xA9U,0xA3U,0xA5U,0x38U,0x74U,0xA0U,0xA4U, + 0x39U,0x7AU,0xD3U,0xC7U,0x4AU,0x8DU,0x7BU,0x54U,0x8BU,0x4BU,0xA8U,0x21U,0xE0U, + 0xF5U,0xA5U,0xA4U,0x1DU,0x4DU,0x2DU,0x49U,0x43U,0x87U,0x4AU,0x51U,0xD6U,0x9AU, + 0xBDU,0x29U,0xC3U,0xADU,0x03U,0x44U,0x83U,0xA5U,0x39U,0x7AU,0x53U,0x57U,0xA5U, + 0x28U,0xEBU,0x50U,0x31U,0xD5U,0x20U,0xEBU,0x51U,0xD4U,0x83U,0xADU,0x24U,0x31U, + 0xD4U,0xE1U,0xD2U,0x98U,0xBFU,0x74U,0x53U,0xC7U,0x4AU,0x4CU,0x10U,0xE5U,0xE9U, + 0x4BU,0x48U,0xB4U,0xB5U,0x05U,0x1EU,0x55U,0x4EU,0x1DU,0x29U,0xB4U,0xE0U,0x2BU, + 0xDFU,0x67U,0x94U,0x2AU,0xD3U,0x97U,0xB5U,0x22U,0xD3U,0x97U,0xADU,0x43U,0x28U, + 0x90U,0xF4U,0xA3U,0xD6U,0x8AU,0x50U,0x3AU,0xD4U,0x31U,0x8EU,0xA7U,0x2DU,0x36U, + 0x9EU,0x95U,0x2CU,0x18U,0xEAU,0x91U,0x7AU,0xD3U,0x07U,0x5AU,0x7AU,0xF4U,0xA9U, + 0x2DU,0x0EU,0xA7U,0x53U,0x47U,0x5AU,0x75U,0x26U,0x34U,0x3DU,0x07U,0x34U,0xF0U, + 0x39U,0x14U,0xD4U,0x1CU,0x53U,0x87U,0x04U,0xFBU,0x54U,0xB1U,0x8EU,0xA2U,0x81U, + 0xDAU,0x94U,0x0CU,0x9AU,0x48U,0x68U,0x97U,0x18U,0x14U,0xE1U,0xD2U,0x9BU,0x4EU, + 0xA9U,0x28U,0x51U,0xD6U,0x9EU,0xB4U,0xD5U,0xA7U,0x8EU,0x94U,0x98U,0x0BU,0x52U, + 0x2FU,0x4AU,0x60U,0xE4U,0xD3U,0xC0U,0xE0U,0x54U,0x0DU,0x8AU,0x39U,0x02U,0x9CU, + 0xBDU,0xA9U,0xB4U,0xE1U,0xD2U,0x92U,0x29U,0x0EU,0x5EU,0xB4U,0xB4U,0x8BU,0x4EU, + 0x03U,0x34U,0x02U,0x24U,0x1DU,0xE9U,0x69U,0x01U,0xC8U,0xA5U,0xA9U,0x28U,0x70U, + 0xE9U,0x4AU,0x3AU,0xD2U,0x0EU,0xD4U,0xE5U,0xA4U,0xC6U,0x87U,0x8EU,0x94U,0xE5U, + 0xE9U,0x49U,0x4EU,0x1DU,0x2AU,0x46U,0x15U,0x20U,0xEBU,0x4DU,0x51U,0x4EU,0x1DU, + 0x69U,0x03U,0x1DU,0x4EU,0x1DU,0x29U,0xB4U,0xEAU,0x43U,0x1CU,0xBDU,0x29U,0x69U, + 0x07U,0x4AU,0x5AU,0x96U,0x34U,0x79U,0x50U,0xEBU,0x4EU,0x1DU,0x4DU,0x14U,0x57U, + 0xB8U,0xF7U,0x3CU,0xB4U,0x3CU,0x70U,0x29U,0xC3U,0xA5U,0x14U,0x54U,0x94U,0x49U, + 0xD0U,0x66U,0x94U,0x70U,0x71U,0x45U,0x15U,0x2CU,0x62U,0x8EU,0x4DU,0x4AU,0x3AU, + 0x51U,0x45U,0x4BU,0x10U,0xE5U,0x14U,0xF1U,0xC5U,0x14U,0x54U,0x9AU,0x74U,0x1CU, + 0xB4U,0xB4U,0x51U,0x4BU,0xA9U,0x44U,0xCAU,0x29U,0x47U,0xF3U,0xA2U,0x8AU,0x96U, + 0x03U,0xA9U,0xC8U,0x33U,0x9AU,0x28U,0xA5U,0xD0U,0x6BU,0x71U,0xE3U,0xADU,0x3AU, + 0x8AU,0x2AU,0x7AU,0x95U,0xD0U,0x70U,0xE9U,0x52U,0x51U,0x45U,0x48U,0x85U,0x41U, + 0x93U,0x4EU,0x1DU,0x68U,0xA2U,0xA5U,0x94U,0x87U,0x53U,0x80U,0xA2U,0x8AU,0x06U, + 0x3FU,0xA5U,0x48U,0xB4U,0x51U,0x50U,0x52U,0x14U,0x71U,0x4AU,0x3AU,0xD1U,0x45U, + 0x03U,0x15U,0x6AU,0x45U,0x14U,0x51U,0x50U,0x34U,0x3CU,0x73U,0x4EU,0x03U,0x14U, + 0x51U,0x49U,0x8DU,0x0EU,0x5EU,0x94U,0xE1U,0xCFU,0x5AU,0x28U,0xA1U,0x8FU,0xA8U, + 0xF5U,0x14U,0xE1U,0xC9U,0xA2U,0x8AU,0x96U,0x3EU,0xA4U,0x83U,0xA5U,0x36U,0x8AU, + 0x2AU,0x46U,0x7FU,0xFFU,0xD9U, + + /*-- File: pabb.gif, 121 bytes --*/ + 0x47U,0x49U,0x46U,0x38U,0x39U,0x61U,0x10U,0x00U,0x10U,0x00U,0xB3U,0x0FU,0x00U, + 0x00U,0x00U,0x00U,0x80U,0x00U,0x00U,0x00U,0x80U,0x00U,0x80U,0x80U,0x00U,0x00U, + 0x00U,0x80U,0x80U,0x00U,0x80U,0x00U,0x80U,0x80U,0x80U,0x80U,0x80U,0xC0U,0xC0U, + 0xC0U,0xFFU,0x00U,0x00U,0x00U,0xFFU,0x00U,0xFFU,0xFFU,0x00U,0x00U,0x00U,0xFFU, + 0xFFU,0x00U,0xFFU,0x00U,0xFFU,0xFFU,0xFFU,0xFFU,0xFFU,0x21U,0xF9U,0x04U,0x01U, + 0x00U,0x00U,0x0FU,0x00U,0x2CU,0x00U,0x00U,0x00U,0x00U,0x10U,0x00U,0x10U,0x00U, + 0x40U,0x04U,0x26U,0xF0U,0xC9U,0x49U,0x6BU,0x65U,0x98U,0x01U,0x64U,0x29U,0xE3U, + 0x9DU,0x95U,0x31U,0x61U,0x69U,0x3EU,0xD8U,0x76U,0xA2U,0x23U,0x59U,0x62U,0x6BU, + 0x2CU,0x77U,0x1AU,0x78U,0x66U,0xAAU,0xD9U,0xE6U,0xF4U,0x78U,0xC3U,0x2BU,0x57U, + 0x29U,0x02U,0x00U,0x3BU +}; + +static const imageFileItem imageFileTable[19U+1U] = { + { 0x1B16B2C5U, &imageFileData[0U] }, // "index.htm" + { 0x1D1F9D3EU, &imageFileData[2237U] }, // "pg_header.inc" + { 0x85C7B8E6U, &imageFileData[3285U] }, // "pg_footer.inc" + { 0xF8334615U, &imageFileData[3711U] }, // "ad.cgi" + { 0xB0E380D2U, &imageFileData[5999U] }, // "ad.cgx" + { 0xF46138EAU, &imageFileData[6069U] }, // "buttons.cgi" + { 0xBCB1FE2DU, &imageFileData[7782U] }, // "buttons.cgx" + { 0xD7FABA9AU, &imageFileData[8221U] }, // "language.cgi" + { 0x6314E402U, &imageFileData[9066U] }, // "lcd.cgi" + { 0xD1C9C758U, &imageFileData[10045U] }, // "leds.cgi" + { 0xCEC97D75U, &imageFileData[11985U] }, // "network.cgi" + { 0x69E9F01DU, &imageFileData[13954U] }, // "system.cgi" + { 0x5579E5A7U, &imageFileData[15176U] }, // "tcp.cgi" + { 0xEEA8CB3DU, &imageFileData[15820U] }, // "xml_http.js" + { 0xB857F2BFU, &imageFileData[18636U] }, // "arm.png" + { 0xDE703953U, &imageFileData[21484U] }, // "home.png" + { 0x90CE4E8AU, &imageFileData[22873U] }, // "keil.gif" + { 0x7049A0E1U, &imageFileData[24011U] }, // "llblue.jpg" + { 0x3BDBDB05U, &imageFileData[27019U] }, // "pabb.gif" + { 0x00000000U, &imageFileData[27140U] } +}; + +/* + * Calculate 32-bit CRC (Polynom: 0x04C11DB7) + * Parameters: + * crc32: CRC initial value + * val: Input value + * Return value: Calculated CRC value + */ +static uint32_t crc32_8bit (uint32_t crc32, uint8_t val) { + uint32_t n; + + crc32 ^= ((uint32_t)val) << 24U; + for (n = 8U; n; n--) { + if (crc32 & 0x80000000U) { + crc32 <<= 1U; + crc32 ^= 0x04C11DB7U; + } else { + crc32 <<= 1U; + } + } + return (crc32); +} + +/* + * Get file information from ROM image + * Parameters: + * name: File name + * data: Pointer where file data pointer will be written + * Return value: File size + */ +uint32_t imageFileInfo (const char *name, const uint8_t **data) { + uint32_t id, n; + + if ((name == NULL) || (data == NULL)) return 0U; + + id = 0xFFFFFFFFU; + for (; *name; name++) { + id = crc32_8bit(id, *name); + } + + for (n = 0U; n < IMAGE_FILE_COUNT; n++) { + if (imageFileTable[n].id == id) { + *data = imageFileTable[n].data; + return ((uint32_t)(imageFileTable[n+1].data - imageFileTable[n].data)); + } + } + return 0U; +} diff --git a/Examples/Network/HTTPS_Server/Web/ad.cgi b/Examples/Network/HTTPS_Server/Web/ad.cgi new file mode 100644 index 00000000..9ba03059 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/ad.cgi @@ -0,0 +1,53 @@ +t Analog Input +t +t +i pg_header.inc +t


Analog Input

+t

On this page you can monitor the analog input value in numerical +t and graphical form. The periodic screen update is based on xml technology. This +t results in a smooth, flicker-free screen refresh.

+t The analog value is generated from the simulated analog source, which increments +t at a slow rate and switches to 0 on overflow.

+t
+t +t +t +t +t +t +t +t +t +t +t +t
ItemValueVoltsBargraph
Ain1: +t +c g3
+t
 
+t

+t +t Periodic: +t

+i pg_footer.inc +. End of script must be closed with period diff --git a/Examples/Network/HTTPS_Server/Web/ad.cgx b/Examples/Network/HTTPS_Server/Web/ad.cgx new file mode 100644 index 00000000..6925ee30 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/ad.cgx @@ -0,0 +1,7 @@ +t
+t +t ad_value +c x 0x%03X +t +t
+. diff --git a/Examples/Network/HTTPS_Server/Web/arm.png b/Examples/Network/HTTPS_Server/Web/arm.png new file mode 100644 index 0000000000000000000000000000000000000000..02785315a91857149160448877e582520cef3300 GIT binary patch literal 2848 zcmZ`)c|4T)AAhi=j59+M7TFg$8pgO8#bBKyxfi8S&Ct*>xsnxf#5fz7TrJ8PN_Z$| zyVg@9@^qy!)c60){3 zcLe()_*w7Z1J7C6!xmus?vyFX6oM*KQJ;@*17~?(D@PIpg)2c&R4fF20;#As5Oe_t zLG#BT$S@m%cAv?uKTLoi-c|=YXG8-^c>rZJLFr9UMkAEoj09=TP$tOKLo61=Y=ANz zLg|ehOe2)WK>`3mX@CkILYWN+9ikwiBNPSfnxGVJzZ|uws4ZD=e_A$od1xgDz6q z5tnas0~kO7uv9SZZ|HI54)A~V@y0Zl}N+Z4E}|9Zu(0hu|c zW-cCiBiw2^E*T97IHLt|0bPKr>vf#M00ykBW`Pu)lSh)Ad2$0p6HJWt)e#ZjstS?i z#vC24Z!)JH5Pxequ@&KhHW7T|Rsg=nE$e?BzY1<{ZW;#d3j?3=Jk8PG3EHK5*z+Xq zC{dA5MBh6kIw98oN7)@%duo7}odSGwnb zH162n_@E>xdBdS#EJv(YaA(EYVRwW26DB{*y;^-9kvsWbv@$PcubfrBcF}l-lM4Uz zZ&D+_-;URC?QH&d#rN&NAEOH3rC}=)O(-8tDosTe3SsX=JBz$G=KZ>xzYo0;HO!WEcj=6 z1Vu1n*$GC!K+twyYjacQ(D9j^kKX7LG97X)F4w%owrxAIcgBVw>43wEHcA@kilH4u z%@fcf_grw=6~dK61Mh_eA9dOl+g6uP3{|x(;JUP{7ec>W)z9)Rm}Aa;?BUbM{e3yL zH=?;WVp7YfdTI_6tN-#`L4bx?keS^5<_(A4aqAl!bUwm%DPw*iSH|3oaVu`9BV_c9 zxTT-e%ekP?W3PXWGLguSi8hm!p+8fgC3mvt_hM1+ttS83u@|BEv@ zneofJs5|GCJU*X$W=#yO!tEJ%i;`UpmR@XrdcO6>So8+Ju&m)kXvC@01<7s=$+bQ% zcNHW2Z7+Kyn!sa>^Bt~rY@vMc`dS%R!VG%eNonas)D8aD-|MqPpgOMLEH#6wo)#Nz zM-j)ZYwmQQj%ql@Nj#ESE)8{^?{8xNRf)0hx@$VMgC=FJ(WM6UH5*hF`NR$^N_65q z)LSFl>6g?}Ts&oy{zOxSc3O6e;>g`*xr#AUC*53#WAA2HLog$c-Hs>I6w1V5=5%7L zmkGT=!d1Wt?c^ zdg02+(l;ZjR;xV38t2(~UQ4xZJS=M!R~uc*0`PX#6*QBnc;lLR2@fn+c~oqk(v__` z|1#!rk35|4WI`SGW89>xrxl(!xRCE|v#Lpa{kn2dyt1Tvp3*C?GJc53(gEo`Qg%wN zyaW<@aOsus`0ub&w(7zCit93U>4|et{wk|vLLwX0G0?lz$6`NBbuu0 zX(4HD!u&pOpW17bs8c#|e6aH^k1AP1b^qVTRhW6jt^rGHr7m2KlF);&^O-VohVtfQ)MKouyqKMrc0eAL8H7ncfx_pxA0#H(ZmI;87r!tYyidon!1izF|*B zTEgbhc1OepA}g%N&zpCV`)ZYw?3Wis{PGAgJ}l>wHQlV@MUlVQzP0ugjkLE5kD){F zrp3IglqjX|eJtxnoe~2nKP&v)>2@V+Li~blLt631Px{`vayZnfekE$3&Sa#Z>vyCP z4eX~Y?EKkV{%6WGJiNo1i~w?v&JOB>A1NbFo-}HVeq`kHgcUnmMkmI5lN458iK&fj zuquNuvzOAP^%#>5b?$TUP`S-u6<)4aaP<&O9Twgshv~<3F z5QnX?x}}bRrC~eI$k#^;Eha~n6+K`B*p{+P&XE*am$nOW-h`DgpM1Y`^zo7VJCo!` z7t?~8f+_iu-Jji_)Gw;e?}h0yiM*rmZDXqO6-gKDi%TCEw3{Eh%4N-x`nu;Dj_L4K5zVgH}tH6<7d2#~dfz4=|@ HvFLvQLKYJX literal 0 HcmV?d00001 diff --git a/Examples/Network/HTTPS_Server/Web/buttons.cgi b/Examples/Network/HTTPS_Server/Web/buttons.cgi new file mode 100644 index 00000000..43f133cf --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/buttons.cgi @@ -0,0 +1,46 @@ +t Pushbuttons +t +t +i pg_header.inc +t


Digital input

+t

On this page you can monitor the status of the pushbuttons +t on board. The periodic refresh of the screen is based on xml technology. +t This results in a smooth, flicker-free screen refresh.

+t Press a button on an evaluation board and observe the change on the screen.

+t
+t +t +t +t +t +t +t +t +t +t
ItemStatus
Buttons [7..0]: +t 7 +t 6 +t 5 +t 4 +t 3 +t 2 +t 1 +t 0 +t
+t

+t +t Periodic: +t

+i pg_footer.inc +. End of script must be closed with period. diff --git a/Examples/Network/HTTPS_Server/Web/buttons.cgx b/Examples/Network/HTTPS_Server/Web/buttons.cgx new file mode 100644 index 00000000..bcc497cb --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/buttons.cgx @@ -0,0 +1,27 @@ +t
+t button0 +c y0 %s +t +t button1 +c y1 %s +t +t button2 +c y2 %s +t +t button3 +c y3 %s +t +t button4 +c y4 %s +t +t button5 +c y5 %s +t +t button6 +c y6 %s +t +t button7 +c y7 %s +t +t
+. diff --git a/Examples/Network/HTTPS_Server/Web/home.png b/Examples/Network/HTTPS_Server/Web/home.png new file mode 100644 index 0000000000000000000000000000000000000000..52a0acde8b71b4a09e501a5a8901b3450099572f GIT binary patch literal 1389 zcmV-z1(N!SP)vhEA_g1fdX4R^vRy?^^G#VjE&kBoWI2H>hBRqP{ zJzWhaj%iMp+YLjRtD@0RC>WqA?+TOYuSkSXCb(o`oNxY?DsFCy1*TG8&>cToymIA0 z&eQILUuCWehq)j}`sc8R=s+i`-b0Gl(1kbA<#!X^-_F~Vaj#DM^MU`X1AVXVbCJHd z4rtW=0n&bkdOk&(ji})*Jnwn;H_tw1_rKjE_x{|9s&Y`>dURz2>i7`pwxI4$(AD=* z{d)0!`Ado7=ZKSEKXfv|a2Ud+5_1_6%C)FEM}&a8{*g$-J8T2b0Z$`;0ab5g)w$-} zmtDH1^tEs;2rS3WQN+UB7wIvNF;TS+)x0j!Fodp;MH;%paA5lX(uoMeN9T=a4>oOE zGtt?czQF^!)S89FJR^zf^{Dm@q<$NmXiys8L9Ls`-w*;9uoFB=#VbHZ6r0m&CneZ$UM(xC z{Qig0zWycj)UEhP4fXPFvcDs97U9Psm214f-;!%OKsLV!XFV4%dsG{t+dvrOv*WtfzC0k9Nf`YcOvDyF9 zYYn8l8?#;fPC6cOSr&0T=b?1_1aZaWIdbGe=46;~m=OdT0^QFKll87>X)n`y?r5Yi zYx!<5926<)2u~JQ!jcm6NS4VwKM$l^k355bI<0J7I zY3_@3)ev#sA=KD}ay^^hOyo5asv$O=w)nU$TZ*Opw67*b*A2Ut(BWC6$ALh1oL#);rReV`{sPf?hojSJ{;&XMqZ+e zwX|}OaVH02_3=Ot&Cn_R$6VEAlStRI z$&eN2O)hrW$@Dq=DSc3ho$j$ypl{t;vTa-0-n{x0U8b8}LYG>@hN(`?C9S(9Jb0AJ@X(tWIfoPL-s~O+3=i>hT>b$%whktE7daPNg?7VSf7{f5B-y$7;Vn{FucNc}C zh@z7%`>JiS7NURBud`E^wDxmqLxpO%w6wFa@s?ii@Op{Ng&ao({2tts?7o~1%Se)d zUb%%G`2~%;_x`R>TN_ z_$dtcPP%6&#L0NwcCYJ>d)DH?tPr?<>_~#kIX>gKJ!vzDx@F>)4Kl8O5*f6O58g2k vSjPs&#|A`wZf?eIzYP~pFz^Qw{-OQ@4$(#k%Ccj=00000NkvXXu0mjfW&yW6 literal 0 HcmV?d00001 diff --git a/Examples/Network/HTTPS_Server/Web/index.htm b/Examples/Network/HTTPS_Server/Web/index.htm new file mode 100644 index 00000000..91501f29 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/index.htm @@ -0,0 +1,59 @@ + +Web Server Demo + + + +
+ + + + + + + + + + +
+

Embedded Development Tools

+
+ +
+
+
+ + + + +
+


+ Embedded WEB Server Example

+

+ +

+
+
+ [ + Network | + System | + LED | + LCD | + AD | + Buttons | + Language | + Statistics ] +
+

These web pages are served from a Web server,
+ which is part of a + Network Component in + Keil MDK. +

+
+
+
+

+ Copyright © 2004-2024 KEIL - An ARM Company + All rights reserved.

+
+
+ diff --git a/Examples/Network/HTTPS_Server/Web/keil.gif b/Examples/Network/HTTPS_Server/Web/keil.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1cf6a40626a20c6cc5e74b86976c72403e738be GIT binary patch literal 1138 zcmV-&1daPgNk%w1VV3|e0L%aY|Ns90exm>Y06;)Mz`($OfPfMb5}KTyFE20d@9-ZV zA7Ef$;Nanoj*igK&~I;Vu(r5SQBm{v_y7O^000000000000000000000000000000 z000000000000000A^8LW00000EC2ui0G9wS000I5U;vCjV4i5Iu53z@?JG-T47a!` zm+WrWIuTGf%o&fw+iEBK6_F@kuQ`PQd8Ze2TUDx{9e>SYYiXUvCc*G{S=&WN zrDUCb9=@wZfNg$pgm`#ohi!CuZ*Gc?gKLtINs)zxd{2=yPJ2*^mYrZrUYDj=pqZ3< zqjjdDqD)zXmZyfEZ?TJrwy>_UdbFyxi>a)ujmF8CuDWBT(8Ra9Y0lKO%%s=D({8)c z-I`ev*4xLYzS?rSY1U~x5%^O0Djq-pbqcPO4aAx-Z^-|aa$E%FWVrHwz2OAuVq+Di$cNG(284%FY^9s9=MR1dw$ps<2$~Ax&rx zSx>bBo!(^G7MaA8K_NCYtF`aCkSBHGqKB5?mbXGXqKw5!>EXh5KjoDx7BaxW0U_^I z+?TJCsu9)g1#MVz=zUoclP>9JwC2qPCyq$1+OogWIab5In^+I++WdkGAI=b;Y<`@H zD_@?JZl&aZnM>-JYXb^BOD+= z1oAOZ0E_DJ@*QwYD6oK)BM?wP0|j^}LjeXvU_b&R==gvD8zNu;0y0i`zybp_@W28U zDiGlg32=$zlSAfNKz#=cc>tMO{s{m92k5CKp#=!?B1mvR5Mluo0zm12mA+sAodPsa zrkw)ZIlur8q__Y9AubRB0Rt@XLZ>^FssM;M`uISK1E>kW01yg*KmxuhV1T8ea)_#i zb~313M;sP#CXSSriDZ%jEKq>&0t%ElfC3$E7~uiGqDmtKUCIEf3|EpVqm3FCV4?#d zjtXC=9x7?6iNF%DfB{MpP}6RN?O-DUqY9fqv=&Ya00MT7x}t>|@+zOaB!~;gtUDB` zUx+#qDJ{habU7=U9w%%ggggKQFgCZ634o1UqM2~T-Fgf0%VF+%XOg8BMDa`-17)mzR<6Z0LXX%#XKv#1Bw{( zn*fMDve>cI9A4;Wt@z`QqfH3RB!mC} EJ61dI?EnA( literal 0 HcmV?d00001 diff --git a/Examples/Network/HTTPS_Server/Web/language.cgi b/Examples/Network/HTTPS_Server/Web/language.cgi new file mode 100644 index 00000000..6e6c7e99 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/language.cgi @@ -0,0 +1,20 @@ +t Browser Language Preference +i pg_header.inc +t


Browser Language Preference

+t

You can use this information to create multilingual +t websites.

+t The language preferences can be set in Chrome via Settings / Languages +t and in Mozilla Firefox via Settings / General / Language. You can change +t the setting in your browser and reload this page to check.

+t Your browser currently sends the following language setting:

+t
+t +t +t +t +t +# Here begin data setting which is formatted in HTTP_Server_CGI.C module +c e +t
ItemSetting
Browser Language%s [%s]
+i pg_footer.inc +. End of script must be closed with period. diff --git a/Examples/Network/HTTPS_Server/Web/lcd.cgi b/Examples/Network/HTTPS_Server/Web/lcd.cgi new file mode 100644 index 00000000..c769483c --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/lcd.cgi @@ -0,0 +1,26 @@ +t LCD Control +i pg_header.inc +t


LCD Module Control

+t

On this page you can change a message displayed on the LCD +t module. Simply enter the text to be displayed and click on Send. The message +t will be printed in a serial window in the debugger.

+t This Form uses a POST method to send data to a Web server.

+t +t +t +t +t +t +# Here begin data setting which is formatted in HTTP_CGI.C module +t +c f1 +t +c f2 +t
ItemSetting
Line 1 Text
Line 2 Text
+# Here begin button definitions +t

+t +t +t

+i pg_footer.inc +. End of script must be closed with period. diff --git a/Examples/Network/HTTPS_Server/Web/leds.cgi b/Examples/Network/HTTPS_Server/Web/leds.cgi new file mode 100644 index 00000000..32ec109e --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/leds.cgi @@ -0,0 +1,45 @@ +t LED Control +t +i pg_header.inc +t


Control LEDs on the board

+t

This page shows you how to use the following http form input +t objects: checkbox, select and button. It also uses a simple java script function +t to check/uncheck all checkboxes and submit the data.

+t This form uses a POST method to send data to a web server.

+t
+t +t +t +t +t +t +t +t +t +t +t +t
ItemSetting
LED control:
LED diode ports [7..0]: +# Here begin the 'checkbox' definitions +c b7 +c b6 +c b5 +c b4 +t +c b3 +c b2 +c b1 +c b0 +t
76543210
All LED diodes On or OFF +t
+i pg_footer.inc +. End of script must be closed with period. diff --git a/Examples/Network/HTTPS_Server/Web/llblue.jpg b/Examples/Network/HTTPS_Server/Web/llblue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8de9c0b463e3792d2c895d0033be31df45ba21b GIT binary patch literal 3008 zcmbW2eN^Y#MmGsyG zSxb$T0^T4^0U^mvxVju?7rL%1EzAnE9@cmhQ)N4rmtqN-t7y^}bY)N6+MTn%wmtXW zf9~_#U%ubp%O@+>SEfnHvXVU|Br=&yssa~j<h~csNjDsatzQIPg%7(ArTxHN+!jS zAt)vmimC>ukAr*lTQhs|61Vl>o=xm zX6L?~zxCBZaB=DGy>R54Z@>F~IqHi{g8pgiCujfRD+Tz9iH(I~DN$eKm>0nVrNqW< z;>V{Jt0)KR*Jf^SUPa&4F>rBo_2wPwJ81`xTun&N63k>TMXfz__TL$6`M;d~WbEI* zrbtwX42lP(ke(#n|K3Qnp(ZywsGH08NP9U?b--%3bo_#>E+p5Xp6*m$0dkV)8+x0Q zs&)$+Ts-PU{j;}~{!i5WqS>zYjY&MIH^TIdYY+AzbMBnP1O6G}Z3T<_^xjvDs(_h8 z&h)iv_24=4p4X1$H#pnCfz#_V77+huGlJ#L5d)rXXCa|L6Y~kpxVGwc`5?QF#koRQ zX~-3#lQA>Z=NX;q8%DMh*f@`MJb`|(ElcJFdWQfawZsa*QvW{=3parv9(g?ZUx z%?p!M2i%h+V478d{=@AJn9~inr$R(mheDD_^w%EoeU9;sKGZt~W0br!*%L%fVmS*z zr;kdjQNJZMf>UJ819O;2&X>a-;%1kxRI8e#N{>sOcBa|5q#lFZg>Qk>$ntF#c{b#J zX}r5k!Qz}GdWJ}44|33#(J5uUdMw`n0-5`q*y|m}3QKZG4OvesOwE|H&9k`IR@dj48Q*#E} z^d`Q}Mc8zf%s0$kf&lIQ7`gLtP@|N}#(}0uP{tXU#Q0G}-^9lW>b4$pQs+UC?)W zmjb`h@&*J+KBD+4tdR>7 zn_*wTYR~B#=4?xM=+MzWapr(>dpqY6CZK9sWm1R8NDw?Bt-dI;2qp-~s_ks0q5ZQ> zureOu+lq-E4?06Q4yZw%w}TmIzsv$5cJ@jsJRW4`Cgcwq`VE-2GVSXfSH!I{V|a4s zS)#vsWY%(=J$}XfjInDQp5AS9#9*%9L7<4eo z>Wo>3gFTBHY!=C;CZ^xaF>@u1!3``0M4zggJ zcDVtk)HHNVNY(t|IKsJ(*PJY8{|3v?A5~~f;3Sjj zzxYluaR$pX`py*@8(fg}@bRQX^;oOBzz8PD80oKW{wgnnF?dejr34(W5i$wJ^ig$% zOfLy41^Eq_&f`U{Wz(3NVADMXrCEMrjSJfbDpAJhpY3gy2OokFGx`E{*S-(F%^#TS zh_X=u%ASzD$d|1#KF==D@AuA(;-!F&maV(Z$h5!OU7(jIM}B0Z!2Z1^c}b!BNZSPk zCmJtrdjX@wckH&i0oriJ9VD{BH#+Os6?Iq17CFY~(}?H1)TZ#v5Z%Mv-FchE3oL{* zf;m)~1n#8y=LJ7vu>>?pD+@V?ApA%c$j62n*g?4}h1EoLsRfMs^TLJ;jeYyimun`R zTU3g{nl&yB`0tU@T)dqYJ>y2U6!tenZmTOweK`2F(`@5LWcn^waNoZ|(suE~O4!QD z`1x882^3kOvt$D{6(A;%U7`vGHDnbO-Y&X6L-Y*ec1+mN56I#hmz{d4;$+$2rs)Wn z1UYXHK!hq_9p+qeL%U5FPz;(iq~u@A2&w!gcNX6dY<|?B8JF!%o)4BuJwtIDD?ySy z(~o^|2<7_D3}yPxxW(-DusvW_!hU`m5DzlVSnPNR=rGQsxiqC(Lyn+;BDf=>`dSJejL(_RYCl!z& zCW{qB$P-bb2W2n;67CplZA0gSdq6joq-BKUDg_IHSW%ISV&*Uhp~$pdf<|RX!IIPW zz4vXtC%+ERmR^DG@ji#v)l1U09&D4#V3njSd7i#>nOk4mYg*UR9m5-3eCp{qa_ m9|h1;?Kwr$p);Rp*#mD5M(8u2fS`pA6SmXLEqP_-#yNetwork Settings +t +i pg_header.inc +t


Network Settings

+t

Here you can change the network settings of the system. +t After you have changed the IP address, you must also change the host IP address +t in your Internet browser to re-establish the connection to the target.

+t This form uses a GET method to send data to a web server.

+t
+t +t +t +t +t +t +t +# Here begin data setting which is formatted in HTTP_Server_CGI.c module +t +t +c ai +c aj +t +t +t +c am +c al +t +t +t +c ag +c ah +t +t +t +c ap +c aq +t +t +t +c as +c at +t +t
ItemIPv4IPv6
IP Address
Netmask/Link-local Address
Default Gateway
Primary DNS Server
Secondary DNS Server
+# Here begin button definitions +t

+t +t +t

+i pg_footer.inc +. End of script must be closed with period. + diff --git a/Examples/Network/HTTPS_Server/Web/pabb.gif b/Examples/Network/HTTPS_Server/Web/pabb.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c9b8305754fed8dc8c25a57ae7fdee50787cd34 GIT binary patch literal 121 zcmZ?wbhEHb6krfw*v!uW1Px%^0Hzv%yao_BaNxjyp!k1=|6mG816e?z_>+Z^fq|bv z2Pg?NL4d)5MeV~$&+OD0j47Ir=T0?D%(S~vwn#ZLDO;ypsv>RG&1YXK4r_;NGBH>K E04=>LJpcdz literal 0 HcmV?d00001 diff --git a/Examples/Network/HTTPS_Server/Web/pg_footer.inc b/Examples/Network/HTTPS_Server/Web/pg_footer.inc new file mode 100644 index 00000000..36130952 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/pg_footer.inc @@ -0,0 +1,14 @@ + + +
+ + + + +

+ Copyright © 2004-2024 KEIL - An ARM Company + All rights reserved.

+ + + + diff --git a/Examples/Network/HTTPS_Server/Web/pg_header.inc b/Examples/Network/HTTPS_Server/Web/pg_header.inc new file mode 100644 index 00000000..23176711 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/pg_header.inc @@ -0,0 +1,22 @@ + +
+ + + + + + + + +
+

Embedded Development Tools

+
+ + + +
+
+
+ + +
diff --git a/Examples/Network/HTTPS_Server/Web/system.cgi b/Examples/Network/HTTPS_Server/Web/system.cgi new file mode 100644 index 00000000..4bf0b184 --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/system.cgi @@ -0,0 +1,33 @@ +t System Settings +t +i pg_header.inc +t


System Settings

+t

On this page you can change the system password for the +t user name admin. The default realm, user and password can be defined in the +t configuration file.

+t This Form uses a POST method to send data to a Web server.

+t
+t +t +t +t +t +# Here begin data setting which is formatted in HTTP_Server_CGI.C module +c d1 +t +c d2 +t +c d2 +t
ItemSetting
Authentication%s
Password for user 'admin'
Retype your password
+# Here begin button definitions +t

+t +t +t

+i pg_footer.inc +. End of script must be closed with period. diff --git a/Examples/Network/HTTPS_Server/Web/tcp.cgi b/Examples/Network/HTTPS_Server/Web/tcp.cgi new file mode 100644 index 00000000..4eb534da --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/tcp.cgi @@ -0,0 +1,27 @@ +t TCP Socket Status +t +i pg_header.inc +t


Tcp Socket online Status

+t
+t +t +t +t +t +t +t +t +t +# Create a socket info table with variable size in the CGI handler +c c +t
SocketStatePortTimerRemote AddressPort
+t
+t +t
+t +t
+t
+t +i pg_footer.inc +. End of script must be closed with period. + diff --git a/Examples/Network/HTTPS_Server/Web/xml_http.js b/Examples/Network/HTTPS_Server/Web/xml_http.js new file mode 100644 index 00000000..db0402fa --- /dev/null +++ b/Examples/Network/HTTPS_Server/Web/xml_http.js @@ -0,0 +1,137 @@ +/* Main function, that handles request and responses in background. + * Response functions are handled if response code equals to OK 200. */ +function updateMultiple(formUpd, callBack, userName, userPassword) { + xmlHttp = GetXmlHttpObject(); + if(xmlHttp == null) { + alert("XmlHttp not initialized!"); + return 0; + } + xmlHttp.onreadystatechange = responseHandler; + xmlHttp.open("GET", formUpd.url, true, userName, userPassword); + xmlHttp.send(null); + + function responseHandler(){ + if(xmlHttp.readyState == 4) { //response ready + if(xmlHttp.status == 200) { //handle received data + var xmlDoc = xmlHttp.responseXML; + if(xmlDoc == null) + return 0; + try { //catching IE bug + processResponse(xmlDoc); + } + catch(e) { + return 0; + } + /* Callback function for custom update. */ + if (callBack != undefined) + callBack(); + } + else if(xmlHttp.status == 401) + alert("Error code 401: Unauthorized"); + else if(xmlHttp.status == 403) + alert("Error code 403: Forbidden"); + else if(xmlHttp.status == 404) + alert("Error code 404: URL not found!"); + } + } +} + +function processResponse(xmlDoc) { + textElementArr = xmlDoc.getElementsByTagName("text"); + for(var i = 0; i < textElementArr.length; i++) { + try { + elId = textElementArr[i].childNodes[0].childNodes[0].nodeValue; + elValue = textElementArr[i].childNodes[1].childNodes[0].nodeValue; + document.getElementById(elId).value = elValue; + } + catch(error) { + if(elId == undefined){ + continue; + } + else if(elValue == undefined) { + elValue = ""; + document.getElementById(elId).value = elValue; + } + } + } + checkboxElementArr = xmlDoc.getElementsByTagName("checkbox"); + for(var i = 0; i < checkboxElementArr.length; i++) { + try { + elId = checkboxElementArr[i].childNodes[0].childNodes[0].nodeValue; + elValue = checkboxElementArr[i].childNodes[1].childNodes[0].nodeValue; + if(elValue.match("true")) + document.getElementById(elId).checked = true; + else + document.getElementById(elId).checked = false; + } + catch(error) { + if(elId == undefined) { + continue; + } + else if(elValue == undefined) //we leave current state + continue; + } + } + selectElementArr = xmlDoc.getElementsByTagName("select"); + for(var i = 0; i < selectElementArr.length; i++) { + try { + elId = selectElementArr[i].childNodes[0].childNodes[0].nodeValue; + elValue = selectElementArr[i].childNodes[1].childNodes[0].nodeValue; + document.getElementById(elId).value = elValue; + if(elValue.match("true")) + document.getElementById(elId).selected = true; + else + document.getElementById(elId).selected = false; + } + catch(error) { + if(elId == undefined) { + continue; + } + else if(elValue == undefined) { + elValue = ""; + document.getElementById(elId).value = elValue; + } + } + } + radioElementArr = xmlDoc.getElementsByTagName("radio"); + for(var i = 0; i < radioElementArr.length; i++) { + try { + elId = radioElementArr[i].childNodes[0].childNodes[0].nodeValue; + elValue = radioElementArr[i].childNodes[1].childNodes[0].nodeValue; + if(elValue.match("true")) + document.getElementById(elId).checked = true; + else + document.getElementById(elId).checked = false; + } + catch(error) { + if(elId == undefined) { + continue; + } + else if(elValue == undefined) //we leave current state + continue; + } + } +} + +/* XMLHttpRequest object specific functions */ +function GetXmlHttpObject() { //init XMLHttp object + var xmlHttp=null; + try { + xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari + } + catch (e) { + try { // Internet Explorer + xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); + } + catch (e) { + xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); + } + } + return xmlHttp; +} + +/* Objects templates */ +function periodicObj(url, period) { + this.url = url; + this.period = (typeof period == "undefined") ? 0 : period; +} diff --git a/Examples/Network/Network.csolution.yml b/Examples/Network/Network.csolution.yml index 676fa43c..e01e19bc 100644 --- a/Examples/Network/Network.csolution.yml +++ b/Examples/Network/Network.csolution.yml @@ -24,6 +24,8 @@ solution: - project: FTP_Server/FTP_Server.cproject.yml - project: HTTP_Server/HTTP_Server.cproject.yml - project: HTTP_Upload/HTTP_Upload.cproject.yml + - project: HTTPS_Server/HTTPS_Server.cproject.yml - project: SMTP_Client/SMTP_Client.cproject.yml + - project: SMTPS_Client/SMTPS_Client.cproject.yml - project: SNMP_Agent/SNMP_Agent.cproject.yml - project: Telnet_Server/Telnet_Server.cproject.yml diff --git a/Examples/Network/SMTPS_Client/README.md b/Examples/Network/SMTPS_Client/README.md new file mode 100644 index 00000000..68739cca --- /dev/null +++ b/Examples/Network/SMTPS_Client/README.md @@ -0,0 +1,24 @@ +This program is an example of an **Secure SMTP client**. It shows you how to send e-mails +from an embedded application. + +Detailed description is available on: + + +To test this example, connect the evaluation board to a LAN with a router. +The example will automatically configure the network parameters. + +Note: +For the example to work, you must change *SMTPS_Client.c* +- Change the content of the email information in the SMTP email + descriptor structure (*NET_SMTP_MAIL mail*): + - Email addresses: *From*, *To*, *Cc*, *Bcc* + - Subject and the message (body) of the email + - Optional attachments and encoding type + +- Change the information about the SMTP server and the user credentials + in the SMTP Mail Transfer Agent Descriptor structure (*NET_SMTP_MTA Server*): + - Server name/IP + - Server port + - User name and password + +- Provide an Internet network connection diff --git a/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c new file mode 100644 index 00000000..d21fa0a9 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.2.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration + * + * ----------------------------------------------------------------------------- + */ + +#include "cmsis_compiler.h" +#include "rtx_os.h" + +// OS Idle Thread +__WEAK __NO_RETURN void osRtxIdleThread (void *argument) { + (void)argument; + + for (;;) {} +} + +// OS Error Callback function +__WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) { + (void)object_id; + + switch (code) { + case osRtxErrorStackOverflow: + // Stack overflow detected for thread (thread_id=object_id) + break; + case osRtxErrorISRQueueOverflow: + // ISR Queue overflow detected when inserting object (object_id) + break; + case osRtxErrorTimerQueueOverflow: + // User Timer Callback Queue overflow detected for timer (timer_id=object_id) + break; + case osRtxErrorClibSpace: + // Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM + break; + case osRtxErrorClibMutex: + // Standard C/C++ library mutex initialization failed + break; + case osRtxErrorSVC: + // Invalid SVC function called (function=object_id) + break; + default: + // Reserved + break; + } + for (;;) {} +//return 0U; +} diff --git a/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c.base@5.2.0 b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c.base@5.2.0 new file mode 100644 index 00000000..d21fa0a9 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.c.base@5.2.0 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.2.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration + * + * ----------------------------------------------------------------------------- + */ + +#include "cmsis_compiler.h" +#include "rtx_os.h" + +// OS Idle Thread +__WEAK __NO_RETURN void osRtxIdleThread (void *argument) { + (void)argument; + + for (;;) {} +} + +// OS Error Callback function +__WEAK uint32_t osRtxErrorNotify (uint32_t code, void *object_id) { + (void)object_id; + + switch (code) { + case osRtxErrorStackOverflow: + // Stack overflow detected for thread (thread_id=object_id) + break; + case osRtxErrorISRQueueOverflow: + // ISR Queue overflow detected when inserting object (object_id) + break; + case osRtxErrorTimerQueueOverflow: + // User Timer Callback Queue overflow detected for timer (timer_id=object_id) + break; + case osRtxErrorClibSpace: + // Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM + break; + case osRtxErrorClibMutex: + // Standard C/C++ library mutex initialization failed + break; + case osRtxErrorSVC: + // Invalid SVC function called (function=object_id) + break; + default: + // Reserved + break; + } + for (;;) {} +//return 0U; +} diff --git a/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h new file mode 100644 index 00000000..46cf4bba --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h @@ -0,0 +1,663 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.6.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration definitions + * + * ----------------------------------------------------------------------------- + */ + +#ifndef RTX_CONFIG_H_ +#define RTX_CONFIG_H_ + +#ifdef _RTE_ +#include "RTE_Components.h" +#ifdef RTE_RTX_CONFIG_H +#include RTE_RTX_CONFIG_H +#endif +#endif + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// System Configuration +// ======================= + +// Global Dynamic Memory size [bytes] <0-1073741824:8> +// Defines the combined global dynamic memory size. +// Default: 32768 +#ifndef OS_DYNAMIC_MEM_SIZE +#define OS_DYNAMIC_MEM_SIZE 32768 +#endif + +// Kernel Tick Frequency [Hz] <1-1000000> +// Defines base time unit for delays and timeouts. +// Default: 1000 (1ms tick) +#ifndef OS_TICK_FREQ +#define OS_TICK_FREQ 1000 +#endif + +// Round-Robin Thread switching +// Enables Round-Robin Thread switching. +#ifndef OS_ROBIN_ENABLE +#define OS_ROBIN_ENABLE 1 +#endif + +// Round-Robin Timeout <1-1000> +// Defines how many ticks a thread will execute before a thread switch. +// Default: 5 +#ifndef OS_ROBIN_TIMEOUT +#define OS_ROBIN_TIMEOUT 5 +#endif + +// + +// Safety features (Source variant only) +// Enables FuSa related features. +// Requires RTX Source variant. +// Enables: +// - selected features from this group +// - Thread functions: osThreadProtectPrivileged +#ifndef OS_SAFETY_FEATURES +#define OS_SAFETY_FEATURES 0 +#endif + +// Safety Class +// Threads assigned to lower classes cannot modify higher class threads. +// Enables: +// - Object attributes: osSafetyClass +// - Kernel functions: osKernelProtect, osKernelDestroyClass +// - Thread functions: osThreadGetClass, osThreadSuspendClass, osThreadResumeClass +#ifndef OS_SAFETY_CLASS +#define OS_SAFETY_CLASS 1 +#endif + +// MPU Protected Zone +// Access protection via MPU (Spatial isolation). +// Enables: +// - Thread attributes: osThreadZone +// - Thread functions: osThreadGetZone, osThreadTerminateZone +// - Zone Management: osZoneSetup_Callback +#ifndef OS_EXECUTION_ZONE +#define OS_EXECUTION_ZONE 1 +#endif + +// Thread Watchdog +// Watchdog alerts ensure timing for critical threads (Temporal isolation). +// Enables: +// - Thread functions: osThreadFeedWatchdog +// - Handler functions: osWatchdogAlarm_Handler +#ifndef OS_THREAD_WATCHDOG +#define OS_THREAD_WATCHDOG 1 +#endif + +// Object Pointer checking +// Check object pointer alignment and memory region. +#ifndef OS_OBJ_PTR_CHECK +#define OS_OBJ_PTR_CHECK 0 +#endif + +// SVC Function Pointer checking +// Check SVC function pointer alignment and memory region. +// User needs to define a linker execution region RTX_SVC_VENEERS +// containing input sections: rtx_*.o (.text.os.svc.veneer.*) +#ifndef OS_SVC_PTR_CHECK +#define OS_SVC_PTR_CHECK 0 +#endif + +// + +// ISR FIFO Queue +// <4=> 4 entries <8=> 8 entries <12=> 12 entries <16=> 16 entries +// <24=> 24 entries <32=> 32 entries <48=> 48 entries <64=> 64 entries +// <96=> 96 entries <128=> 128 entries <196=> 196 entries <256=> 256 entries +// RTOS Functions called from ISR store requests to this buffer. +// Default: 16 entries +#ifndef OS_ISR_FIFO_QUEUE +#define OS_ISR_FIFO_QUEUE 16 +#endif + +// Object Memory usage counters +// Enables object memory usage counters (requires RTX source variant). +#ifndef OS_OBJ_MEM_USAGE +#define OS_OBJ_MEM_USAGE 0 +#endif + +// + +// Thread Configuration +// ======================= + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_THREAD_OBJ_MEM +#define OS_THREAD_OBJ_MEM 0 +#endif + +// Number of user Threads <1-1000> +// Defines maximum number of user threads that can be active at the same time. +// Applies to user threads with system provided memory for control blocks. +#ifndef OS_THREAD_NUM +#define OS_THREAD_NUM 1 +#endif + +// Number of user Threads with default Stack size <0-1000> +// Defines maximum number of user threads with default stack size. +// Applies to user threads with zero stack size specified. +#ifndef OS_THREAD_DEF_STACK_NUM +#define OS_THREAD_DEF_STACK_NUM 0 +#endif + +// Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8> +// Defines the combined stack size for user threads with user-provided stack size. +// Applies to user threads with user-provided stack size and system provided memory for stack. +// Default: 0 +#ifndef OS_THREAD_USER_STACK_SIZE +#define OS_THREAD_USER_STACK_SIZE 0 +#endif + +// + +// Default Thread Stack size [bytes] <96-1073741824:8> +// Defines stack size for threads with zero stack size specified. +// Default: 3072 +#ifndef OS_STACK_SIZE +#define OS_STACK_SIZE 3072 +#endif + +// Idle Thread Stack size [bytes] <72-1073741824:8> +// Defines stack size for Idle thread. +// Default: 512 +#ifndef OS_IDLE_THREAD_STACK_SIZE +#define OS_IDLE_THREAD_STACK_SIZE 512 +#endif + +// Idle Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_IDLE_THREAD_TZ_MOD_ID +#define OS_IDLE_THREAD_TZ_MOD_ID 0 +#endif + +// Idle Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_IDLE_THREAD_CLASS +#define OS_IDLE_THREAD_CLASS 0 +#endif + +// Idle Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_IDLE_THREAD_ZONE +#define OS_IDLE_THREAD_ZONE 0 +#endif + +// Stack overrun checking +// Enables stack overrun check at thread switch (requires RTX source variant). +// Enabling this option increases slightly the execution time of a thread switch. +#ifndef OS_STACK_CHECK +#define OS_STACK_CHECK 1 +#endif + +// Stack usage watermark +// Initializes thread stack with watermark pattern for analyzing stack usage. +// Enabling this option increases significantly the execution time of thread creation. +#ifndef OS_STACK_WATERMARK +#define OS_STACK_WATERMARK 0 +#endif + +// Default Processor mode for Thread execution +// <0=> Unprivileged mode +// <1=> Privileged mode +// Default: Unprivileged mode +#ifndef OS_PRIVILEGE_MODE +#define OS_PRIVILEGE_MODE 1 +#endif + +// + +// Timer Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_TIMER_OBJ_MEM +#define OS_TIMER_OBJ_MEM 0 +#endif + +// Number of Timer objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_TIMER_NUM +#define OS_TIMER_NUM 1 +#endif + +// + +// Timer Thread Priority +// <8=> Low +// <16=> Below Normal <24=> Normal <32=> Above Normal +// <40=> High +// <48=> Realtime +// Defines priority for timer thread +// Default: High +#ifndef OS_TIMER_THREAD_PRIO +#define OS_TIMER_THREAD_PRIO 40 +#endif + +// Timer Thread Stack size [bytes] <0-1073741824:8> +// Defines stack size for Timer thread. +// May be set to 0 when timers are not used. +// Default: 512 +#ifndef OS_TIMER_THREAD_STACK_SIZE +#define OS_TIMER_THREAD_STACK_SIZE 512 +#endif + +// Timer Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_TIMER_THREAD_TZ_MOD_ID +#define OS_TIMER_THREAD_TZ_MOD_ID 0 +#endif + +// Timer Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_TIMER_THREAD_CLASS +#define OS_TIMER_THREAD_CLASS 0 +#endif + +// Timer Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_TIMER_THREAD_ZONE +#define OS_TIMER_THREAD_ZONE 0 +#endif + +// Timer Callback Queue entries <0-256> +// Number of concurrent active timer callback functions. +// May be set to 0 when timers are not used. +// Default: 4 +#ifndef OS_TIMER_CB_QUEUE +#define OS_TIMER_CB_QUEUE 4 +#endif + +// + +// Event Flags Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_EVFLAGS_OBJ_MEM +#define OS_EVFLAGS_OBJ_MEM 0 +#endif + +// Number of Event Flags objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_EVFLAGS_NUM +#define OS_EVFLAGS_NUM 1 +#endif + +// + +// + +// Mutex Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MUTEX_OBJ_MEM +#define OS_MUTEX_OBJ_MEM 0 +#endif + +// Number of Mutex objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MUTEX_NUM +#define OS_MUTEX_NUM 1 +#endif + +// + +// + +// Semaphore Configuration +// ========================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_SEMAPHORE_OBJ_MEM +#define OS_SEMAPHORE_OBJ_MEM 0 +#endif + +// Number of Semaphore objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_SEMAPHORE_NUM +#define OS_SEMAPHORE_NUM 1 +#endif + +// + +// + +// Memory Pool Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MEMPOOL_OBJ_MEM +#define OS_MEMPOOL_OBJ_MEM 0 +#endif + +// Number of Memory Pool objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MEMPOOL_NUM +#define OS_MEMPOOL_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MEMPOOL_DATA_SIZE +#define OS_MEMPOOL_DATA_SIZE 0 +#endif + +// + +// + +// Message Queue Configuration +// ============================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MSGQUEUE_OBJ_MEM +#define OS_MSGQUEUE_OBJ_MEM 0 +#endif + +// Number of Message Queue objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MSGQUEUE_NUM +#define OS_MSGQUEUE_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MSGQUEUE_DATA_SIZE +#define OS_MSGQUEUE_DATA_SIZE 0 +#endif + +// + +// + +// Event Recorder Configuration +// =============================== + +// Global Initialization +// Initialize Event Recorder during 'osKernelInitialize'. +#ifndef OS_EVR_INIT +#define OS_EVR_INIT 0 +#endif + +// Start recording +// Start event recording after initialization. +#ifndef OS_EVR_START +#define OS_EVR_START 1 +#endif + +// Global Event Filter Setup +// Initial recording level applied to all components. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_LEVEL +#define OS_EVR_LEVEL 0x00U +#endif + +// RTOS Event Filter Setup +// Recording levels for RTX components. +// Only applicable if events for the respective component are generated. + +// Memory Management +// Recording level for Memory Management events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMORY_LEVEL +#define OS_EVR_MEMORY_LEVEL 0x81U +#endif + +// Kernel +// Recording level for Kernel events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_KERNEL_LEVEL +#define OS_EVR_KERNEL_LEVEL 0x81U +#endif + +// Thread +// Recording level for Thread events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THREAD_LEVEL +#define OS_EVR_THREAD_LEVEL 0x85U +#endif + +// Generic Wait +// Recording level for Generic Wait events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_WAIT_LEVEL +#define OS_EVR_WAIT_LEVEL 0x81U +#endif + +// Thread Flags +// Recording level for Thread Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THFLAGS_LEVEL +#define OS_EVR_THFLAGS_LEVEL 0x81U +#endif + +// Event Flags +// Recording level for Event Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_EVFLAGS_LEVEL +#define OS_EVR_EVFLAGS_LEVEL 0x81U +#endif + +// Timer +// Recording level for Timer events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_TIMER_LEVEL +#define OS_EVR_TIMER_LEVEL 0x81U +#endif + +// Mutex +// Recording level for Mutex events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MUTEX_LEVEL +#define OS_EVR_MUTEX_LEVEL 0x81U +#endif + +// Semaphore +// Recording level for Semaphore events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_SEMAPHORE_LEVEL +#define OS_EVR_SEMAPHORE_LEVEL 0x81U +#endif + +// Memory Pool +// Recording level for Memory Pool events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMPOOL_LEVEL +#define OS_EVR_MEMPOOL_LEVEL 0x81U +#endif + +// Message Queue +// Recording level for Message Queue events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MSGQUEUE_LEVEL +#define OS_EVR_MSGQUEUE_LEVEL 0x81U +#endif + +// + +// + +// RTOS Event Generation +// Enables event generation for RTX components (requires RTX source variant). + +// Memory Management +// Enables Memory Management event generation. +#ifndef OS_EVR_MEMORY +#define OS_EVR_MEMORY 1 +#endif + +// Kernel +// Enables Kernel event generation. +#ifndef OS_EVR_KERNEL +#define OS_EVR_KERNEL 1 +#endif + +// Thread +// Enables Thread event generation. +#ifndef OS_EVR_THREAD +#define OS_EVR_THREAD 1 +#endif + +// Generic Wait +// Enables Generic Wait event generation. +#ifndef OS_EVR_WAIT +#define OS_EVR_WAIT 1 +#endif + +// Thread Flags +// Enables Thread Flags event generation. +#ifndef OS_EVR_THFLAGS +#define OS_EVR_THFLAGS 1 +#endif + +// Event Flags +// Enables Event Flags event generation. +#ifndef OS_EVR_EVFLAGS +#define OS_EVR_EVFLAGS 1 +#endif + +// Timer +// Enables Timer event generation. +#ifndef OS_EVR_TIMER +#define OS_EVR_TIMER 1 +#endif + +// Mutex +// Enables Mutex event generation. +#ifndef OS_EVR_MUTEX +#define OS_EVR_MUTEX 1 +#endif + +// Semaphore +// Enables Semaphore event generation. +#ifndef OS_EVR_SEMAPHORE +#define OS_EVR_SEMAPHORE 1 +#endif + +// Memory Pool +// Enables Memory Pool event generation. +#ifndef OS_EVR_MEMPOOL +#define OS_EVR_MEMPOOL 1 +#endif + +// Message Queue +// Enables Message Queue event generation. +#ifndef OS_EVR_MSGQUEUE +#define OS_EVR_MSGQUEUE 1 +#endif + +// + +// + +// Number of Threads which use standard C/C++ library libspace +// (when thread specific memory allocation is not used). +#if (OS_THREAD_OBJ_MEM == 0) +#ifndef OS_THREAD_LIBSPACE_NUM +#define OS_THREAD_LIBSPACE_NUM 4 +#endif +#else +#define OS_THREAD_LIBSPACE_NUM OS_THREAD_NUM +#endif + +//------------- <<< end of configuration section >>> --------------------------- + +#endif // RTX_CONFIG_H_ diff --git a/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h.base@5.6.0 b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h.base@5.6.0 new file mode 100644 index 00000000..fe0c57b6 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/CMSIS/RTX_Config.h.base@5.6.0 @@ -0,0 +1,663 @@ +/* + * Copyright (c) 2013-2023 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * + * $Revision: V5.6.0 + * + * Project: CMSIS-RTOS RTX + * Title: RTX Configuration definitions + * + * ----------------------------------------------------------------------------- + */ + +#ifndef RTX_CONFIG_H_ +#define RTX_CONFIG_H_ + +#ifdef _RTE_ +#include "RTE_Components.h" +#ifdef RTE_RTX_CONFIG_H +#include RTE_RTX_CONFIG_H +#endif +#endif + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// System Configuration +// ======================= + +// Global Dynamic Memory size [bytes] <0-1073741824:8> +// Defines the combined global dynamic memory size. +// Default: 32768 +#ifndef OS_DYNAMIC_MEM_SIZE +#define OS_DYNAMIC_MEM_SIZE 32768 +#endif + +// Kernel Tick Frequency [Hz] <1-1000000> +// Defines base time unit for delays and timeouts. +// Default: 1000 (1ms tick) +#ifndef OS_TICK_FREQ +#define OS_TICK_FREQ 1000 +#endif + +// Round-Robin Thread switching +// Enables Round-Robin Thread switching. +#ifndef OS_ROBIN_ENABLE +#define OS_ROBIN_ENABLE 1 +#endif + +// Round-Robin Timeout <1-1000> +// Defines how many ticks a thread will execute before a thread switch. +// Default: 5 +#ifndef OS_ROBIN_TIMEOUT +#define OS_ROBIN_TIMEOUT 5 +#endif + +// + +// Safety features (Source variant only) +// Enables FuSa related features. +// Requires RTX Source variant. +// Enables: +// - selected features from this group +// - Thread functions: osThreadProtectPrivileged +#ifndef OS_SAFETY_FEATURES +#define OS_SAFETY_FEATURES 0 +#endif + +// Safety Class +// Threads assigned to lower classes cannot modify higher class threads. +// Enables: +// - Object attributes: osSafetyClass +// - Kernel functions: osKernelProtect, osKernelDestroyClass +// - Thread functions: osThreadGetClass, osThreadSuspendClass, osThreadResumeClass +#ifndef OS_SAFETY_CLASS +#define OS_SAFETY_CLASS 1 +#endif + +// MPU Protected Zone +// Access protection via MPU (Spatial isolation). +// Enables: +// - Thread attributes: osThreadZone +// - Thread functions: osThreadGetZone, osThreadTerminateZone +// - Zone Management: osZoneSetup_Callback +#ifndef OS_EXECUTION_ZONE +#define OS_EXECUTION_ZONE 1 +#endif + +// Thread Watchdog +// Watchdog alerts ensure timing for critical threads (Temporal isolation). +// Enables: +// - Thread functions: osThreadFeedWatchdog +// - Handler functions: osWatchdogAlarm_Handler +#ifndef OS_THREAD_WATCHDOG +#define OS_THREAD_WATCHDOG 1 +#endif + +// Object Pointer checking +// Check object pointer alignment and memory region. +#ifndef OS_OBJ_PTR_CHECK +#define OS_OBJ_PTR_CHECK 0 +#endif + +// SVC Function Pointer checking +// Check SVC function pointer alignment and memory region. +// User needs to define a linker execution region RTX_SVC_VENEERS +// containing input sections: rtx_*.o (.text.os.svc.veneer.*) +#ifndef OS_SVC_PTR_CHECK +#define OS_SVC_PTR_CHECK 0 +#endif + +// + +// ISR FIFO Queue +// <4=> 4 entries <8=> 8 entries <12=> 12 entries <16=> 16 entries +// <24=> 24 entries <32=> 32 entries <48=> 48 entries <64=> 64 entries +// <96=> 96 entries <128=> 128 entries <196=> 196 entries <256=> 256 entries +// RTOS Functions called from ISR store requests to this buffer. +// Default: 16 entries +#ifndef OS_ISR_FIFO_QUEUE +#define OS_ISR_FIFO_QUEUE 16 +#endif + +// Object Memory usage counters +// Enables object memory usage counters (requires RTX source variant). +#ifndef OS_OBJ_MEM_USAGE +#define OS_OBJ_MEM_USAGE 0 +#endif + +// + +// Thread Configuration +// ======================= + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_THREAD_OBJ_MEM +#define OS_THREAD_OBJ_MEM 0 +#endif + +// Number of user Threads <1-1000> +// Defines maximum number of user threads that can be active at the same time. +// Applies to user threads with system provided memory for control blocks. +#ifndef OS_THREAD_NUM +#define OS_THREAD_NUM 1 +#endif + +// Number of user Threads with default Stack size <0-1000> +// Defines maximum number of user threads with default stack size. +// Applies to user threads with zero stack size specified. +#ifndef OS_THREAD_DEF_STACK_NUM +#define OS_THREAD_DEF_STACK_NUM 0 +#endif + +// Total Stack size [bytes] for user Threads with user-provided Stack size <0-1073741824:8> +// Defines the combined stack size for user threads with user-provided stack size. +// Applies to user threads with user-provided stack size and system provided memory for stack. +// Default: 0 +#ifndef OS_THREAD_USER_STACK_SIZE +#define OS_THREAD_USER_STACK_SIZE 0 +#endif + +// + +// Default Thread Stack size [bytes] <96-1073741824:8> +// Defines stack size for threads with zero stack size specified. +// Default: 3072 +#ifndef OS_STACK_SIZE +#define OS_STACK_SIZE 3072 +#endif + +// Idle Thread Stack size [bytes] <72-1073741824:8> +// Defines stack size for Idle thread. +// Default: 512 +#ifndef OS_IDLE_THREAD_STACK_SIZE +#define OS_IDLE_THREAD_STACK_SIZE 512 +#endif + +// Idle Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_IDLE_THREAD_TZ_MOD_ID +#define OS_IDLE_THREAD_TZ_MOD_ID 0 +#endif + +// Idle Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_IDLE_THREAD_CLASS +#define OS_IDLE_THREAD_CLASS 0 +#endif + +// Idle Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_IDLE_THREAD_ZONE +#define OS_IDLE_THREAD_ZONE 0 +#endif + +// Stack overrun checking +// Enables stack overrun check at thread switch (requires RTX source variant). +// Enabling this option increases slightly the execution time of a thread switch. +#ifndef OS_STACK_CHECK +#define OS_STACK_CHECK 1 +#endif + +// Stack usage watermark +// Initializes thread stack with watermark pattern for analyzing stack usage. +// Enabling this option increases significantly the execution time of thread creation. +#ifndef OS_STACK_WATERMARK +#define OS_STACK_WATERMARK 0 +#endif + +// Default Processor mode for Thread execution +// <0=> Unprivileged mode +// <1=> Privileged mode +// Default: Unprivileged mode +#ifndef OS_PRIVILEGE_MODE +#define OS_PRIVILEGE_MODE 0 +#endif + +// + +// Timer Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_TIMER_OBJ_MEM +#define OS_TIMER_OBJ_MEM 0 +#endif + +// Number of Timer objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_TIMER_NUM +#define OS_TIMER_NUM 1 +#endif + +// + +// Timer Thread Priority +// <8=> Low +// <16=> Below Normal <24=> Normal <32=> Above Normal +// <40=> High +// <48=> Realtime +// Defines priority for timer thread +// Default: High +#ifndef OS_TIMER_THREAD_PRIO +#define OS_TIMER_THREAD_PRIO 40 +#endif + +// Timer Thread Stack size [bytes] <0-1073741824:8> +// Defines stack size for Timer thread. +// May be set to 0 when timers are not used. +// Default: 512 +#ifndef OS_TIMER_THREAD_STACK_SIZE +#define OS_TIMER_THREAD_STACK_SIZE 512 +#endif + +// Timer Thread TrustZone Module Identifier +// Defines TrustZone Thread Context Management Identifier. +// Applies only to cores with TrustZone technology. +// Default: 0 (not used) +#ifndef OS_TIMER_THREAD_TZ_MOD_ID +#define OS_TIMER_THREAD_TZ_MOD_ID 0 +#endif + +// Timer Thread Safety Class <0-15> +// Defines the Safety Class number. +// Default: 0 +#ifndef OS_TIMER_THREAD_CLASS +#define OS_TIMER_THREAD_CLASS 0 +#endif + +// Timer Thread Zone <0-127> +// Defines Thread Zone. +// Default: 0 +#ifndef OS_TIMER_THREAD_ZONE +#define OS_TIMER_THREAD_ZONE 0 +#endif + +// Timer Callback Queue entries <0-256> +// Number of concurrent active timer callback functions. +// May be set to 0 when timers are not used. +// Default: 4 +#ifndef OS_TIMER_CB_QUEUE +#define OS_TIMER_CB_QUEUE 4 +#endif + +// + +// Event Flags Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_EVFLAGS_OBJ_MEM +#define OS_EVFLAGS_OBJ_MEM 0 +#endif + +// Number of Event Flags objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_EVFLAGS_NUM +#define OS_EVFLAGS_NUM 1 +#endif + +// + +// + +// Mutex Configuration +// ====================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MUTEX_OBJ_MEM +#define OS_MUTEX_OBJ_MEM 0 +#endif + +// Number of Mutex objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MUTEX_NUM +#define OS_MUTEX_NUM 1 +#endif + +// + +// + +// Semaphore Configuration +// ========================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_SEMAPHORE_OBJ_MEM +#define OS_SEMAPHORE_OBJ_MEM 0 +#endif + +// Number of Semaphore objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_SEMAPHORE_NUM +#define OS_SEMAPHORE_NUM 1 +#endif + +// + +// + +// Memory Pool Configuration +// ============================ + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MEMPOOL_OBJ_MEM +#define OS_MEMPOOL_OBJ_MEM 0 +#endif + +// Number of Memory Pool objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MEMPOOL_NUM +#define OS_MEMPOOL_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MEMPOOL_DATA_SIZE +#define OS_MEMPOOL_DATA_SIZE 0 +#endif + +// + +// + +// Message Queue Configuration +// ============================== + +// Object specific Memory allocation +// Enables object specific memory allocation. +#ifndef OS_MSGQUEUE_OBJ_MEM +#define OS_MSGQUEUE_OBJ_MEM 0 +#endif + +// Number of Message Queue objects <1-1000> +// Defines maximum number of objects that can be active at the same time. +// Applies to objects with system provided memory for control blocks. +#ifndef OS_MSGQUEUE_NUM +#define OS_MSGQUEUE_NUM 1 +#endif + +// Data Storage Memory size [bytes] <0-1073741824:8> +// Defines the combined data storage memory size. +// Applies to objects with system provided memory for data storage. +// Default: 0 +#ifndef OS_MSGQUEUE_DATA_SIZE +#define OS_MSGQUEUE_DATA_SIZE 0 +#endif + +// + +// + +// Event Recorder Configuration +// =============================== + +// Global Initialization +// Initialize Event Recorder during 'osKernelInitialize'. +#ifndef OS_EVR_INIT +#define OS_EVR_INIT 0 +#endif + +// Start recording +// Start event recording after initialization. +#ifndef OS_EVR_START +#define OS_EVR_START 1 +#endif + +// Global Event Filter Setup +// Initial recording level applied to all components. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_LEVEL +#define OS_EVR_LEVEL 0x00U +#endif + +// RTOS Event Filter Setup +// Recording levels for RTX components. +// Only applicable if events for the respective component are generated. + +// Memory Management +// Recording level for Memory Management events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMORY_LEVEL +#define OS_EVR_MEMORY_LEVEL 0x81U +#endif + +// Kernel +// Recording level for Kernel events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_KERNEL_LEVEL +#define OS_EVR_KERNEL_LEVEL 0x81U +#endif + +// Thread +// Recording level for Thread events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THREAD_LEVEL +#define OS_EVR_THREAD_LEVEL 0x85U +#endif + +// Generic Wait +// Recording level for Generic Wait events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_WAIT_LEVEL +#define OS_EVR_WAIT_LEVEL 0x81U +#endif + +// Thread Flags +// Recording level for Thread Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_THFLAGS_LEVEL +#define OS_EVR_THFLAGS_LEVEL 0x81U +#endif + +// Event Flags +// Recording level for Event Flags events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_EVFLAGS_LEVEL +#define OS_EVR_EVFLAGS_LEVEL 0x81U +#endif + +// Timer +// Recording level for Timer events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_TIMER_LEVEL +#define OS_EVR_TIMER_LEVEL 0x81U +#endif + +// Mutex +// Recording level for Mutex events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MUTEX_LEVEL +#define OS_EVR_MUTEX_LEVEL 0x81U +#endif + +// Semaphore +// Recording level for Semaphore events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_SEMAPHORE_LEVEL +#define OS_EVR_SEMAPHORE_LEVEL 0x81U +#endif + +// Memory Pool +// Recording level for Memory Pool events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MEMPOOL_LEVEL +#define OS_EVR_MEMPOOL_LEVEL 0x81U +#endif + +// Message Queue +// Recording level for Message Queue events. +// Error events +// API function call events +// Operation events +// Detailed operation events +// +#ifndef OS_EVR_MSGQUEUE_LEVEL +#define OS_EVR_MSGQUEUE_LEVEL 0x81U +#endif + +// + +// + +// RTOS Event Generation +// Enables event generation for RTX components (requires RTX source variant). + +// Memory Management +// Enables Memory Management event generation. +#ifndef OS_EVR_MEMORY +#define OS_EVR_MEMORY 1 +#endif + +// Kernel +// Enables Kernel event generation. +#ifndef OS_EVR_KERNEL +#define OS_EVR_KERNEL 1 +#endif + +// Thread +// Enables Thread event generation. +#ifndef OS_EVR_THREAD +#define OS_EVR_THREAD 1 +#endif + +// Generic Wait +// Enables Generic Wait event generation. +#ifndef OS_EVR_WAIT +#define OS_EVR_WAIT 1 +#endif + +// Thread Flags +// Enables Thread Flags event generation. +#ifndef OS_EVR_THFLAGS +#define OS_EVR_THFLAGS 1 +#endif + +// Event Flags +// Enables Event Flags event generation. +#ifndef OS_EVR_EVFLAGS +#define OS_EVR_EVFLAGS 1 +#endif + +// Timer +// Enables Timer event generation. +#ifndef OS_EVR_TIMER +#define OS_EVR_TIMER 1 +#endif + +// Mutex +// Enables Mutex event generation. +#ifndef OS_EVR_MUTEX +#define OS_EVR_MUTEX 1 +#endif + +// Semaphore +// Enables Semaphore event generation. +#ifndef OS_EVR_SEMAPHORE +#define OS_EVR_SEMAPHORE 1 +#endif + +// Memory Pool +// Enables Memory Pool event generation. +#ifndef OS_EVR_MEMPOOL +#define OS_EVR_MEMPOOL 1 +#endif + +// Message Queue +// Enables Message Queue event generation. +#ifndef OS_EVR_MSGQUEUE +#define OS_EVR_MSGQUEUE 1 +#endif + +// + +// + +// Number of Threads which use standard C/C++ library libspace +// (when thread specific memory allocation is not used). +#if (OS_THREAD_OBJ_MEM == 0) +#ifndef OS_THREAD_LIBSPACE_NUM +#define OS_THREAD_LIBSPACE_NUM 4 +#endif +#else +#define OS_THREAD_LIBSPACE_NUM OS_THREAD_NUM +#endif + +//------------- <<< end of configuration section >>> --------------------------- + +#endif // RTX_CONFIG_H_ diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h new file mode 100644 index 00000000..f73d165f --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config.h + * Purpose: Network Core Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Core +// Variant <0=>IPv4 only +// <1=>IPv4/IPv6 dual stack +// Configure variant of the network library +#define NET_CORE_VARIANT 1 + +// Local Host Name +// This is the name under which embedded host can be +// accessed on a local area network. +// Default: "my_host" +#define NET_HOST_NAME "my_host" + +// Memory Pool Size <1536-262144:4> +// This is the size of a memory pool in bytes. Buffers for +// network packets are allocated from this memory pool. +// Default: 12000 bytes +#define NET_MEM_POOL_SIZE 12000 + +// Start System Services +// If enabled, the system will automatically start server services +// (HTTP, FTP, TFTP server, ...) when initializing the network system. +// Default: Enabled +#define NET_START_SERVICE 1 + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Core Thread Stack Size <512-65535:4> +// Default: 2048 bytes +#define NET_THREAD_STACK_SIZE 2048 + +// Core Thread Priority +#define NET_THREAD_PRIORITY osPriorityNormal +// +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h.base@8.0.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h.base@8.0.0 new file mode 100644 index 00000000..f73d165f --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config.h.base@8.0.0 @@ -0,0 +1,45 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config.h + * Purpose: Network Core Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Core +// Variant <0=>IPv4 only +// <1=>IPv4/IPv6 dual stack +// Configure variant of the network library +#define NET_CORE_VARIANT 1 + +// Local Host Name +// This is the name under which embedded host can be +// accessed on a local area network. +// Default: "my_host" +#define NET_HOST_NAME "my_host" + +// Memory Pool Size <1536-262144:4> +// This is the size of a memory pool in bytes. Buffers for +// network packets are allocated from this memory pool. +// Default: 12000 bytes +#define NET_MEM_POOL_SIZE 12000 + +// Start System Services +// If enabled, the system will automatically start server services +// (HTTP, FTP, TFTP server, ...) when initializing the network system. +// Default: Enabled +#define NET_START_SERVICE 1 + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Core Thread Stack Size <512-65535:4> +// Default: 2048 bytes +#define NET_THREAD_STACK_SIZE 2048 + +// Core Thread Priority +#define NET_THREAD_PRIORITY osPriorityNormal +// +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h new file mode 100644 index 00000000..c85701e2 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h @@ -0,0 +1,20 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_DNS_Client.h + * Purpose: Network Configuration for DNS Client + * Rev.: V5.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// DNS Client +#define DNS_CLIENT_ENABLE 1 + +// Cache Table size <5-100> +// Number of cached DNS host names/IP addresses +// Default: 10 +#define DNS_CLIENT_TAB_SIZE 10 + +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h.base@5.0.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h.base@5.0.0 new file mode 100644 index 00000000..c85701e2 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_DNS_Client.h.base@5.0.0 @@ -0,0 +1,20 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_DNS_Client.h + * Purpose: Network Configuration for DNS Client + * Rev.: V5.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// DNS Client +#define DNS_CLIENT_ENABLE 1 + +// Cache Table size <5-100> +// Number of cached DNS host names/IP addresses +// Default: 10 +#define DNS_CLIENT_TAB_SIZE 10 + +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h new file mode 100644 index 00000000..faac074f --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h @@ -0,0 +1,279 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Interface + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_ETH_0.h + * Purpose: Network Configuration for ETH Interface + * Rev.: V7.5.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +#ifdef CMSIS_target_header +#include CMSIS_target_header +#else +#define CMSIS_DRIVER_ETH 0 +#endif + +// Ethernet Network Interface 0 +#define ETH0_ENABLE 1 + +// Connect to hardware via Driver_ETH# +// Select driver control block for MAC and PHY interface +#define ETH0_DRIVER CMSIS_DRIVER_ETH + +// MAC Address +// Ethernet MAC Address in text representation +// Value FF-FF-FF-FF-FF-FF is not allowed, +// LSB of first byte must be 0 (an ethernet Multicast bit). +// Default: "1E-30-6C-A2-45-5E" +#define ETH0_MAC_ADDR "1E-30-6C-A2-45-5E" + +// VLAN +// Enable or disable Virtual LAN +#define ETH0_VLAN_ENABLE 0 + +// VLAN Identifier <1-4093> +// A unique 12-bit numeric value +// Default: 1 +#define ETH0_VLAN_ID 1 +// + +// IPv4 +// Enable IPv4 Protocol for Network Interface +#define ETH0_IP4_ENABLE 1 + +// IP Address +// Static IPv4 Address in text representation +// Default: "192.168.0.100" +#define ETH0_IP4_ADDR "192.168.0.100" + +// Subnet mask +// Local Subnet mask in text representation +// Default: "255.255.255.0" +#define ETH0_IP4_MASK "255.255.255.0" + +// Default Gateway +// IP Address of Default Gateway in text representation +// Default: "192.168.0.254" +#define ETH0_IP4_GATEWAY "192.168.0.254" + +// Primary DNS Server +// IP Address of Primary DNS Server in text representation +// Default: "8.8.8.8" +#define ETH0_IP4_PRIMARY_DNS "8.8.8.8" + +// Secondary DNS Server +// IP Address of Secondary DNS Server in text representation +// Default: "8.8.4.4" +#define ETH0_IP4_SECONDARY_DNS "8.8.4.4" + +// IP Fragmentation +// This option enables fragmentation of outgoing IP datagrams, +// and reassembling the fragments of incoming IP datagrams. +// Default: enabled +#define ETH0_IP4_FRAG_ENABLE 1 + +// MTU size <576-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP4_MTU 1500 +// + +// ARP Address Resolution +// ARP cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached MAC/IP addresses +// Default: 10 +#define ETH0_ARP_TAB_SIZE 10 + +// Cache Timeout in seconds <5-255> +// A timeout for cached hardware/IP addresses +// Default: 150 +#define ETH0_ARP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of Retries to resolve an IP address +// before ARP module gives up +// Default: 4 +#define ETH0_ARP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend the ARP Request +// Default: 2 +#define ETH0_ARP_RESEND_TOUT 2 + +// Send Notification on Address changes +// When this option is enabled, the embedded host +// will send a Gratuitous ARP notification at startup, +// or when the device IP address has changed. +// Default: Disabled +#define ETH0_ARP_NOTIFY 0 +// + +// IGMP Group Management +// Enable or disable Internet Group Management Protocol +#define ETH0_IGMP_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this host can join +// Default: 5 +#define ETH0_IGMP_TAB_SIZE 5 +// + +// NetBIOS Name Service +// When this option is enabled, the embedded host can be +// accessed by its name on local LAN using NBNS protocol. +#define ETH0_NBNS_ENABLE 1 + +// Dynamic Host Configuration +// When this option is enabled, local IP address, Net Mask +// and Default Gateway are obtained automatically from +// the DHCP Server on local LAN. +#define ETH0_DHCP_ENABLE 1 + +// Vendor Class Identifier +// This value is optional. If specified, it is added +// to DHCP request message, identifying vendor type. +// Default: "" +#define ETH0_DHCP_VCID "" + +// Bootfile Name +// This value is optional. If enabled, the Bootfile Name +// (option 67) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_BOOTFILE 0 + +// NTP Servers +// This value is optional. If enabled, a list of NTP Servers +// (option 42) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_NTP_SERVERS 0 +// + +// Disable ICMP Echo response +#define ETH0_ICMP_NO_ECHO 0 +// + +// IPv6 +// Enable IPv6 Protocol for Network Interface +#define ETH0_IP6_ENABLE 1 + +// IPv6 Address +// Static IPv6 Address in text representation +// Use unspecified address "::" when static +// IPv6 address is not used. +// Default: "fec0::2" +#define ETH0_IP6_ADDR "fec0::2" + +// Subnet prefix-length <1-128> +// Number of bits that define network address +// Default: 64 +#define ETH0_IP6_PREFIX_LEN 64 + +// Default Gateway +// Default Gateway IPv6 Address in text representation +// Default: "fec0::1" +#define ETH0_IP6_GATEWAY "fec0::1" + +// Primary DNS Server +// Primary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8888" +#define ETH0_IP6_PRIMARY_DNS "2001:4860:4860::8888" + +// Secondary DNS Server +// Secondary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8844" +#define ETH0_IP6_SECONDARY_DNS "2001:4860:4860::8844" + +// IPv6 Fragmentation +// This option enables fragmentation of outgoing IPv6 datagrams, +// and reassembling the fragments of incoming IPv6 datagrams. +// Default: enabled +#define ETH0_IP6_FRAG_ENABLE 1 + +// MTU size <1280-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP6_MTU 1500 +// + +// Neighbor Discovery +// Neighbor cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached node addresses +// Default: 5 +#define ETH0_NDP_TAB_SIZE 5 + +// Cache Timeout in seconds <5-255> +// Timeout for cached node addresses +// Default: 150 +#define ETH0_NDP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of retries to resolve an IP address +// before NDP module gives up +// Default: 4 +#define ETH0_NDP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend Neighbor Solicitation +// Default: 2 +#define ETH0_NDP_RESEND_TOUT 2 +// + +// Multicast Listener Discovery +// Enable or disable Multicast Listener Discovery Protocol +#define ETH0_MLD_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this node can join +// Default: 5 +#define ETH0_MLD_TAB_SIZE 5 +// + +// Dynamic Host Configuration +// When this option is enabled, local IPv6 address is +// automatically configured. +#define ETH0_DHCP6_ENABLE 1 + +// DHCPv6 Client Mode <0=>Stateless Mode <1=>Statefull Mode +// Stateless DHCPv6 Client uses router advertisements +// for IPv6 address autoconfiguration (SLAAC). +// Statefull DHCPv6 Client connects to DHCPv6 server for a +// leased IPv6 address and DNS server IPv6 addresses. +#define ETH0_DHCP6_MODE 1 + +// Vendor Class Option +// If enabled, Vendor Class option is added to DHCPv6 +// request message, identifying vendor type. +// Default: disabled +#define ETH0_DHCP6_VCLASS_ENABLE 0 + +// Enterprise ID +// Enterprise-number as registered with IANA. +// Default: 0 (Reserved) +#define ETH0_DHCP6_VCLASS_EID 0 + +// Vendor Class Data +// This string identifies vendor type. +// Default: "" +#define ETH0_DHCP6_VCLASS_DATA "" +// +// + +// Disable ICMP6 Echo response +#define ETH0_ICMP6_NO_ECHO 0 +// + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Interface Thread Stack Size <512-65535:4> +// Default: 512 bytes +#define ETH0_THREAD_STACK_SIZE 512 + +// Interface Thread Priority +#define ETH0_THREAD_PRIORITY osPriorityAboveNormal + +// +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 new file mode 100644 index 00000000..6b270a74 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_ETH_0.h.base@7.5.0 @@ -0,0 +1,273 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Interface + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_ETH_0.h + * Purpose: Network Configuration for ETH Interface + * Rev.: V7.5.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Ethernet Network Interface 0 +#define ETH0_ENABLE 1 + +// Connect to hardware via Driver_ETH# +// Select driver control block for MAC and PHY interface +#define ETH0_DRIVER 0 + +// MAC Address +// Ethernet MAC Address in text representation +// Value FF-FF-FF-FF-FF-FF is not allowed, +// LSB of first byte must be 0 (an ethernet Multicast bit). +// Default: "1E-30-6C-A2-45-5E" +#define ETH0_MAC_ADDR "1E-30-6C-A2-45-5E" + +// VLAN +// Enable or disable Virtual LAN +#define ETH0_VLAN_ENABLE 0 + +// VLAN Identifier <1-4093> +// A unique 12-bit numeric value +// Default: 1 +#define ETH0_VLAN_ID 1 +// + +// IPv4 +// Enable IPv4 Protocol for Network Interface +#define ETH0_IP4_ENABLE 1 + +// IP Address +// Static IPv4 Address in text representation +// Default: "192.168.0.100" +#define ETH0_IP4_ADDR "192.168.0.100" + +// Subnet mask +// Local Subnet mask in text representation +// Default: "255.255.255.0" +#define ETH0_IP4_MASK "255.255.255.0" + +// Default Gateway +// IP Address of Default Gateway in text representation +// Default: "192.168.0.254" +#define ETH0_IP4_GATEWAY "192.168.0.254" + +// Primary DNS Server +// IP Address of Primary DNS Server in text representation +// Default: "8.8.8.8" +#define ETH0_IP4_PRIMARY_DNS "8.8.8.8" + +// Secondary DNS Server +// IP Address of Secondary DNS Server in text representation +// Default: "8.8.4.4" +#define ETH0_IP4_SECONDARY_DNS "8.8.4.4" + +// IP Fragmentation +// This option enables fragmentation of outgoing IP datagrams, +// and reassembling the fragments of incoming IP datagrams. +// Default: enabled +#define ETH0_IP4_FRAG_ENABLE 1 + +// MTU size <576-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP4_MTU 1500 +// + +// ARP Address Resolution +// ARP cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached MAC/IP addresses +// Default: 10 +#define ETH0_ARP_TAB_SIZE 10 + +// Cache Timeout in seconds <5-255> +// A timeout for cached hardware/IP addresses +// Default: 150 +#define ETH0_ARP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of Retries to resolve an IP address +// before ARP module gives up +// Default: 4 +#define ETH0_ARP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend the ARP Request +// Default: 2 +#define ETH0_ARP_RESEND_TOUT 2 + +// Send Notification on Address changes +// When this option is enabled, the embedded host +// will send a Gratuitous ARP notification at startup, +// or when the device IP address has changed. +// Default: Disabled +#define ETH0_ARP_NOTIFY 0 +// + +// IGMP Group Management +// Enable or disable Internet Group Management Protocol +#define ETH0_IGMP_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this host can join +// Default: 5 +#define ETH0_IGMP_TAB_SIZE 5 +// + +// NetBIOS Name Service +// When this option is enabled, the embedded host can be +// accessed by its name on local LAN using NBNS protocol. +#define ETH0_NBNS_ENABLE 1 + +// Dynamic Host Configuration +// When this option is enabled, local IP address, Net Mask +// and Default Gateway are obtained automatically from +// the DHCP Server on local LAN. +#define ETH0_DHCP_ENABLE 1 + +// Vendor Class Identifier +// This value is optional. If specified, it is added +// to DHCP request message, identifying vendor type. +// Default: "" +#define ETH0_DHCP_VCID "" + +// Bootfile Name +// This value is optional. If enabled, the Bootfile Name +// (option 67) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_BOOTFILE 0 + +// NTP Servers +// This value is optional. If enabled, a list of NTP Servers +// (option 42) is also requested from DHCP server. +// Default: disabled +#define ETH0_DHCP_NTP_SERVERS 0 +// + +// Disable ICMP Echo response +#define ETH0_ICMP_NO_ECHO 0 +// + +// IPv6 +// Enable IPv6 Protocol for Network Interface +#define ETH0_IP6_ENABLE 1 + +// IPv6 Address +// Static IPv6 Address in text representation +// Use unspecified address "::" when static +// IPv6 address is not used. +// Default: "fec0::2" +#define ETH0_IP6_ADDR "fec0::2" + +// Subnet prefix-length <1-128> +// Number of bits that define network address +// Default: 64 +#define ETH0_IP6_PREFIX_LEN 64 + +// Default Gateway +// Default Gateway IPv6 Address in text representation +// Default: "fec0::1" +#define ETH0_IP6_GATEWAY "fec0::1" + +// Primary DNS Server +// Primary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8888" +#define ETH0_IP6_PRIMARY_DNS "2001:4860:4860::8888" + +// Secondary DNS Server +// Secondary DNS Server IPv6 Address in text representation +// Default: "2001:4860:4860::8844" +#define ETH0_IP6_SECONDARY_DNS "2001:4860:4860::8844" + +// IPv6 Fragmentation +// This option enables fragmentation of outgoing IPv6 datagrams, +// and reassembling the fragments of incoming IPv6 datagrams. +// Default: enabled +#define ETH0_IP6_FRAG_ENABLE 1 + +// MTU size <1280-1500> +// Maximum Transmission Unit in bytes +// Default: 1500 +#define ETH0_IP6_MTU 1500 +// + +// Neighbor Discovery +// Neighbor cache and node address resolver settings +// Cache Table size <5-100> +// Number of cached node addresses +// Default: 5 +#define ETH0_NDP_TAB_SIZE 5 + +// Cache Timeout in seconds <5-255> +// Timeout for cached node addresses +// Default: 150 +#define ETH0_NDP_CACHE_TOUT 150 + +// Number of Retries <0-20> +// Number of retries to resolve an IP address +// before NDP module gives up +// Default: 4 +#define ETH0_NDP_MAX_RETRY 4 + +// Resend Timeout in seconds <1-10> +// A timeout to resend Neighbor Solicitation +// Default: 2 +#define ETH0_NDP_RESEND_TOUT 2 +// + +// Multicast Listener Discovery +// Enable or disable Multicast Listener Discovery Protocol +#define ETH0_MLD_ENABLE 0 + +// Membership Table size <2-50> +// Number of Groups this node can join +// Default: 5 +#define ETH0_MLD_TAB_SIZE 5 +// + +// Dynamic Host Configuration +// When this option is enabled, local IPv6 address is +// automatically configured. +#define ETH0_DHCP6_ENABLE 1 + +// DHCPv6 Client Mode <0=>Stateless Mode <1=>Statefull Mode +// Stateless DHCPv6 Client uses router advertisements +// for IPv6 address autoconfiguration (SLAAC). +// Statefull DHCPv6 Client connects to DHCPv6 server for a +// leased IPv6 address and DNS server IPv6 addresses. +#define ETH0_DHCP6_MODE 1 + +// Vendor Class Option +// If enabled, Vendor Class option is added to DHCPv6 +// request message, identifying vendor type. +// Default: disabled +#define ETH0_DHCP6_VCLASS_ENABLE 0 + +// Enterprise ID +// Enterprise-number as registered with IANA. +// Default: 0 (Reserved) +#define ETH0_DHCP6_VCLASS_EID 0 + +// Vendor Class Data +// This string identifies vendor type. +// Default: "" +#define ETH0_DHCP6_VCLASS_DATA "" +// +// + +// Disable ICMP6 Echo response +#define ETH0_ICMP6_NO_ECHO 0 +// + +// OS Resource Settings +// These settings are used to optimize usage of OS resources. +// Interface Thread Stack Size <512-65535:4> +// Default: 512 bytes +#define ETH0_THREAD_STACK_SIZE 512 + +// Interface Thread Priority +#define ETH0_THREAD_PRIORITY osPriorityAboveNormal + +// +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h new file mode 100644 index 00000000..bcc90bb6 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_SMTP_Client.h + * Purpose: Network Configuration for SMTP Client + * Rev.: V5.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// SMTP Client +#define SMTP_CLIENT_ENABLE 1 + +// Response Timeout in seconds <5-120> +// This is a time for SMTP Client to wait for a response from +// SMTP Server. If timeout expires, Client aborts operation. +// Default: 20 +#define SMTP_CLIENT_TOUT 20 + +// Email Attachments +// Enable or disable support for email attachments. +// A File System Component is required if attachments are enabled. +#define SMTP_CLIENT_ATTACH_ENABLE 0 + +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h.base@5.1.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h.base@5.1.0 new file mode 100644 index 00000000..bcc90bb6 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_SMTP_Client.h.base@5.1.0 @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Service + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_SMTP_Client.h + * Purpose: Network Configuration for SMTP Client + * Rev.: V5.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// SMTP Client +#define SMTP_CLIENT_ENABLE 1 + +// Response Timeout in seconds <5-120> +// This is a time for SMTP Client to wait for a response from +// SMTP Server. If timeout expires, Client aborts operation. +// Default: 20 +#define SMTP_CLIENT_TOUT 20 + +// Email Attachments +// Enable or disable support for email attachments. +// A File System Component is required if attachments are enabled. +#define SMTP_CLIENT_ATTACH_ENABLE 0 + +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h new file mode 100644 index 00000000..064cf92e --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h @@ -0,0 +1,67 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_TCP.h + * Purpose: Network Configuration for TCP Sockets + * Rev.: V7.1.1 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// TCP Sockets +#define TCP_ENABLE 1 + +// Number of TCP Sockets <1-20> +// Number of available TCP sockets +// Default: 6 +#define TCP_NUM_SOCKS 6 + +// Number of Retries <0-20> +// How many times TCP module will try to retransmit data +// before giving up. Increase this value for high-latency +// and low throughput networks. +// Default: 5 +#define TCP_MAX_RETRY 5 + +// Retry Timeout in seconds <1-10> +// If data frame not acknowledged within this time frame, +// TCP module will try to resend the data again. +// Default: 4 +#define TCP_RETRY_TOUT 4 + +// Default Connect Timeout in seconds <1-65535> +// If no TCP data frame has been exchanged during this time, +// the TCP connection is either closed or a keep-alive frame +// is sent to verify that the connection still exists. +// Default: 120 +#define TCP_DEFAULT_TOUT 120 + +// Maximum Segment Size <536-1440> +// The Maximum Segment Size specifies the maximum +// number of bytes in the TCP segment's Data field. +// Default: 1440 +#define TCP_MAX_SEG_SIZE 1440 + +// Receive Window Size <536-65535> +// Receive Window Size specifies the size of data, +// that the socket is able to buffer in flow-control mode. +// Default: 4320 +#define TCP_RECEIVE_WIN_SIZE 4320 + +// + +// TCP Initial Retransmit period in seconds +#define TCP_INITIAL_RETRY_TOUT 1 + +// TCP SYN frame retransmit period in seconds +#define TCP_SYN_RETRY_TOUT 2 + +// Number of retries to establish a connection +#define TCP_CONNECT_RETRY 7 + +// Dynamic port start (default 49152) +#define TCP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define TCP_DYN_PORT_END 65535 diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h.base@7.1.1 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h.base@7.1.1 new file mode 100644 index 00000000..064cf92e --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_TCP.h.base@7.1.1 @@ -0,0 +1,67 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_TCP.h + * Purpose: Network Configuration for TCP Sockets + * Rev.: V7.1.1 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// TCP Sockets +#define TCP_ENABLE 1 + +// Number of TCP Sockets <1-20> +// Number of available TCP sockets +// Default: 6 +#define TCP_NUM_SOCKS 6 + +// Number of Retries <0-20> +// How many times TCP module will try to retransmit data +// before giving up. Increase this value for high-latency +// and low throughput networks. +// Default: 5 +#define TCP_MAX_RETRY 5 + +// Retry Timeout in seconds <1-10> +// If data frame not acknowledged within this time frame, +// TCP module will try to resend the data again. +// Default: 4 +#define TCP_RETRY_TOUT 4 + +// Default Connect Timeout in seconds <1-65535> +// If no TCP data frame has been exchanged during this time, +// the TCP connection is either closed or a keep-alive frame +// is sent to verify that the connection still exists. +// Default: 120 +#define TCP_DEFAULT_TOUT 120 + +// Maximum Segment Size <536-1440> +// The Maximum Segment Size specifies the maximum +// number of bytes in the TCP segment's Data field. +// Default: 1440 +#define TCP_MAX_SEG_SIZE 1440 + +// Receive Window Size <536-65535> +// Receive Window Size specifies the size of data, +// that the socket is able to buffer in flow-control mode. +// Default: 4320 +#define TCP_RECEIVE_WIN_SIZE 4320 + +// + +// TCP Initial Retransmit period in seconds +#define TCP_INITIAL_RETRY_TOUT 1 + +// TCP SYN frame retransmit period in seconds +#define TCP_SYN_RETRY_TOUT 2 + +// Number of retries to establish a connection +#define TCP_CONNECT_RETRY 7 + +// Dynamic port start (default 49152) +#define TCP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define TCP_DYN_PORT_END 65535 diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h new file mode 100644 index 00000000..7a2163ff --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_UDP.h + * Purpose: Network Configuration for UDP Sockets + * Rev.: V5.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// UDP Sockets +#define UDP_ENABLE 1 + +// Number of UDP Sockets <1-20> +// Number of available UDP sockets +// Default: 5 +#define UDP_NUM_SOCKS 5 + +// + +// Dynamic port start (default 49152) +#define UDP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define UDP_DYN_PORT_END 65535 diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h.base@5.1.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h.base@5.1.0 new file mode 100644 index 00000000..7a2163ff --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Config_UDP.h.base@5.1.0 @@ -0,0 +1,26 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network:Socket + * Copyright (c) 2004-2019 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Config_UDP.h + * Purpose: Network Configuration for UDP Sockets + * Rev.: V5.1.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// UDP Sockets +#define UDP_ENABLE 1 + +// Number of UDP Sockets <1-20> +// Number of available UDP sockets +// Default: 5 +#define UDP_NUM_SOCKS 5 + +// + +// Dynamic port start (default 49152) +#define UDP_DYN_PORT_START 49152 + +// Dynamic port end (default 65535) +#define UDP_DYN_PORT_END 65535 diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h b/Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h new file mode 100644 index 00000000..494b2341 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h @@ -0,0 +1,166 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Debug.h + * Purpose: Network Debug Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Debug +// Enable generation of diagnostic messages +#define NET_DEBUG_ENABLE 0 + +// Output Channel <0=>Event Recorder +// <1=>STDIO +// <2=>STDIO + Timestamp +// Select output channel for delivery of diagnostic messages +#define NET_DEBUG_CHANNEL 0 + +// System +// Enable generation of system diagnostic messages +#define NET_DEBUG_SYSTEM 1 + +// Memory Management <0=>Off <1=>Errors <2=>All +// Configure Dynamic Memory Management diagnostics +#define NET_DEBUG_MEM 1 + +// ETH Interface <0=>Off <1=>Errors <2=>All +// Configure Ethernet Interface diagnostics +#define NET_DEBUG_ETH 1 + +// WiFi Interface <0=>Off <1=>Errors <2=>All +// Configure WiFi Interface diagnostics +#define NET_DEBUG_WIFI 1 + +// PPP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial PPP Interface diagnostics +#define NET_DEBUG_PPP 0 + +// SLIP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial SLIP Interface diagnostics +#define NET_DEBUG_SLIP 0 + +// Loopback Interface <0=>Off <1=>Errors <2=>All +// Configure Local Loopback Interface diagnostics +#define NET_DEBUG_LOOP 1 +// + +// IPv4 +// Enable generation of IPv4 diagnostic messages +#define NET_DEBUG_IP4 1 + +// IPv4 Core <0=>Off <1=>Errors <2=>All +// Configure IPv4 Core diagnostics +#define NET_DEBUG_CORE_IP4 1 + +// Control Message (ICMP) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message diagnostics +#define NET_DEBUG_ICMP 1 + +// Address Resolution (ARP) <0=>Off <1=>Errors <2=>All +// Configure Ethernet Address Resolution diagnostics +#define NET_DEBUG_ARP 1 + +// Group Management (IGMP) <0=>Off <1=>Errors <2=>All +// Configure Multicast Group Management diagnostics +#define NET_DEBUG_IGMP 1 + +// NBNS Client <0=>Off <1=>Errors <2=>All +// Configure NetBIOS Name Service diagnostics +#define NET_DEBUG_NBNS 1 + +// DHCP Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration diagnostics +#define NET_DEBUG_DHCP 2 +// + +// IPv6 +// Enable generation of IPv6 diagnostic messages +#define NET_DEBUG_IP6 1 + +// IPv6 Core <0=>Off <1=>Errors <2=>All +// Configure IPv6 Core diagnostics +#define NET_DEBUG_CORE_IP6 1 + +// Control Message (ICMP6) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message ver.6 diagnostics +#define NET_DEBUG_ICMP6 1 + +// Neighbor Discovery (NDP) <0=>Off <1=>Errors <2=>All +// Configure Neighbor Discovery in IPv6 diagnostics +#define NET_DEBUG_NDP6 1 + +// Multicast Listener Discovery (MLD) <0=>Off <1=>Errors <2=>All +// Configure Multicast Listener Discovery diagnostics +#define NET_DEBUG_MLD6 1 + +// DHCP6 Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration ver.6 diagnostics +#define NET_DEBUG_DHCP6 2 +// + +// Socket +// Enable generation of socket diagnostic messages +#define NET_DEBUG_SOCKET 1 + +// UDP Socket <0=>Off <1=>Errors <2=>All +// Configure UDP native socket diagnostics +#define NET_DEBUG_UDP 1 + +// TCP Socket <0=>Off <1=>Errors <2=>All +// Configure TCP native socket diagnostics +#define NET_DEBUG_TCP 1 + +// BSD Socket <0=>Off <1=>Errors <2=>All +// Configure BSD interface socket diagnostics +#define NET_DEBUG_BSD 1 +// + +// Service +// Enable generation of network service diagnostic messages +#define NET_DEBUG_SERVICE 1 + +// HTTP Server <0=>Off <1=>Errors <2=>All +// Configure HTTP server diagnostics +#define NET_DEBUG_HTTP_SERVER 1 + +// FTP Server <0=>Off <1=>Errors <2=>All +// Configure FTP Server diagnostics +#define NET_DEBUG_FTP_SERVER 1 + +// FTP Client <0=>Off <1=>Errors <2=>All +// Configure FTP client diagnostics +#define NET_DEBUG_FTP_CLIENT 1 + +// Telnet Server <0=>Off <1=>Errors <2=>All +// Configure Telnet server diagnostics +#define NET_DEBUG_TELNET_SERVER 1 + +// TFTP Server <0=>Off <1=>Errors <2=>All +// Configure TFTP server diagnostics +#define NET_DEBUG_TFTP_SERVER 1 + +// TFTP Client <0=>Off <1=>Errors <2=>All +// Configure TFTP client diagnostics +#define NET_DEBUG_TFTP_CLIENT 1 + +// SMTP Client <0=>Off <1=>Errors <2=>All +// Configure SMTP client diagnostics +#define NET_DEBUG_SMTP_CLIENT 2 + +// DNS Client <0=>Off <1=>Errors <2=>All +// Configure Domain Name Service diagnostics +#define NET_DEBUG_DNS_CLIENT 1 + +// SNMP Agent <0=>Off <1=>Errors <2=>All +// Configure Simple Network Management diagnostics +#define NET_DEBUG_SNMP_AGENT 1 + +// SNTP Client <0=>Off <1=>Errors <2=>All +// Configure Simple Network Time diagnostics +#define NET_DEBUG_SNTP_CLIENT 1 +// +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h.base@8.0.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h.base@8.0.0 new file mode 100644 index 00000000..0994f0ef --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Debug.h.base@8.0.0 @@ -0,0 +1,166 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Debug.h + * Purpose: Network Debug Configuration + * Rev.: V8.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Network Debug +// Enable generation of diagnostic messages +#define NET_DEBUG_ENABLE 0 + +// Output Channel <0=>Event Recorder +// <1=>STDIO +// <2=>STDIO + Timestamp +// Select output channel for delivery of diagnostic messages +#define NET_DEBUG_CHANNEL 0 + +// System +// Enable generation of system diagnostic messages +#define NET_DEBUG_SYSTEM 1 + +// Memory Management <0=>Off <1=>Errors <2=>All +// Configure Dynamic Memory Management diagnostics +#define NET_DEBUG_MEM 1 + +// ETH Interface <0=>Off <1=>Errors <2=>All +// Configure Ethernet Interface diagnostics +#define NET_DEBUG_ETH 1 + +// WiFi Interface <0=>Off <1=>Errors <2=>All +// Configure WiFi Interface diagnostics +#define NET_DEBUG_WIFI 1 + +// PPP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial PPP Interface diagnostics +#define NET_DEBUG_PPP 0 + +// SLIP Interface <0=>Off <1=>Errors <2=>All +// Configure Serial SLIP Interface diagnostics +#define NET_DEBUG_SLIP 0 + +// Loopback Interface <0=>Off <1=>Errors <2=>All +// Configure Local Loopback Interface diagnostics +#define NET_DEBUG_LOOP 1 +// + +// IPv4 +// Enable generation of IPv4 diagnostic messages +#define NET_DEBUG_IP4 1 + +// IPv4 Core <0=>Off <1=>Errors <2=>All +// Configure IPv4 Core diagnostics +#define NET_DEBUG_CORE_IP4 1 + +// Control Message (ICMP) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message diagnostics +#define NET_DEBUG_ICMP 1 + +// Address Resolution (ARP) <0=>Off <1=>Errors <2=>All +// Configure Ethernet Address Resolution diagnostics +#define NET_DEBUG_ARP 1 + +// Group Management (IGMP) <0=>Off <1=>Errors <2=>All +// Configure Multicast Group Management diagnostics +#define NET_DEBUG_IGMP 1 + +// NBNS Client <0=>Off <1=>Errors <2=>All +// Configure NetBIOS Name Service diagnostics +#define NET_DEBUG_NBNS 1 + +// DHCP Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration diagnostics +#define NET_DEBUG_DHCP 1 +// + +// IPv6 +// Enable generation of IPv6 diagnostic messages +#define NET_DEBUG_IP6 1 + +// IPv6 Core <0=>Off <1=>Errors <2=>All +// Configure IPv6 Core diagnostics +#define NET_DEBUG_CORE_IP6 1 + +// Control Message (ICMP6) <0=>Off <1=>Errors <2=>All +// Configure Internet Control Message ver.6 diagnostics +#define NET_DEBUG_ICMP6 1 + +// Neighbor Discovery (NDP) <0=>Off <1=>Errors <2=>All +// Configure Neighbor Discovery in IPv6 diagnostics +#define NET_DEBUG_NDP6 1 + +// Multicast Listener Discovery (MLD) <0=>Off <1=>Errors <2=>All +// Configure Multicast Listener Discovery diagnostics +#define NET_DEBUG_MLD6 1 + +// DHCP6 Client <0=>Off <1=>Errors <2=>All +// Configure Dynamic Host Configuration ver.6 diagnostics +#define NET_DEBUG_DHCP6 1 +// + +// Socket +// Enable generation of socket diagnostic messages +#define NET_DEBUG_SOCKET 1 + +// UDP Socket <0=>Off <1=>Errors <2=>All +// Configure UDP native socket diagnostics +#define NET_DEBUG_UDP 1 + +// TCP Socket <0=>Off <1=>Errors <2=>All +// Configure TCP native socket diagnostics +#define NET_DEBUG_TCP 1 + +// BSD Socket <0=>Off <1=>Errors <2=>All +// Configure BSD interface socket diagnostics +#define NET_DEBUG_BSD 1 +// + +// Service +// Enable generation of network service diagnostic messages +#define NET_DEBUG_SERVICE 1 + +// HTTP Server <0=>Off <1=>Errors <2=>All +// Configure HTTP server diagnostics +#define NET_DEBUG_HTTP_SERVER 1 + +// FTP Server <0=>Off <1=>Errors <2=>All +// Configure FTP Server diagnostics +#define NET_DEBUG_FTP_SERVER 1 + +// FTP Client <0=>Off <1=>Errors <2=>All +// Configure FTP client diagnostics +#define NET_DEBUG_FTP_CLIENT 1 + +// Telnet Server <0=>Off <1=>Errors <2=>All +// Configure Telnet server diagnostics +#define NET_DEBUG_TELNET_SERVER 1 + +// TFTP Server <0=>Off <1=>Errors <2=>All +// Configure TFTP server diagnostics +#define NET_DEBUG_TFTP_SERVER 1 + +// TFTP Client <0=>Off <1=>Errors <2=>All +// Configure TFTP client diagnostics +#define NET_DEBUG_TFTP_CLIENT 1 + +// SMTP Client <0=>Off <1=>Errors <2=>All +// Configure SMTP client diagnostics +#define NET_DEBUG_SMTP_CLIENT 1 + +// DNS Client <0=>Off <1=>Errors <2=>All +// Configure Domain Name Service diagnostics +#define NET_DEBUG_DNS_CLIENT 1 + +// SNMP Agent <0=>Off <1=>Errors <2=>All +// Configure Simple Network Management diagnostics +#define NET_DEBUG_SNMP_AGENT 1 + +// SNTP Client <0=>Off <1=>Errors <2=>All +// Configure Simple Network Time diagnostics +#define NET_DEBUG_SNTP_CLIENT 1 +// +// diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c b/Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c new file mode 100644 index 00000000..7265b139 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c @@ -0,0 +1,167 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Security.c + * Purpose: Network Security Credentials + * Rev.: V7.2.0 + *----------------------------------------------------------------------------*/ + +#include "rl_net.h" + + +#if defined(RTE_Network_Web_Server_RO_TLS) || \ + defined(RTE_Network_Web_Server_FS_TLS) + +// Web Server (HTTPS) + +// Server CA certificate(s) +extern const uint8_t NetSecurity_ServerCA[]; + const uint8_t NetSecurity_ServerCA[] = +//NS_SERVER_CA_START +#warning "Using a test Server CA certificate!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +// Issuer: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Subject: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Valid To: Feb 12 14:44:00 2021 GMT +// Serial No: 0 +// CA Cert: Yes +// Key Size: 2048-bit (RSA) +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" +"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" +"MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" +"A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" +"CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" +"mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" +"50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" +"YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" +"R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" +"KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" +"gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH\r\n" +"/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV\r\n" +"BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz\r\n" +"dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ\r\n" +"SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H\r\n" +"DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF\r\n" +"pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf\r\n" +"m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ\r\n" +"7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==\r\n" +"-----END CERTIFICATE-----\r\n"; +//NS_SERVER_CA_END + +// Server certificate +extern const uint8_t NetSecurity_ServerCert[]; + const uint8_t NetSecurity_ServerCert[] = +//NS_SERVER_CERT_START +#warning "Using a test Server certificate!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +// Issuer: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Subject: CN="localhost", O="PolarSSL", C="NL" +// Valid To: Feb 12 14:44:06 2021 GMT +// Serial No: 2 +// CA Cert: No +// Key Size: 2048-bit (RSA) +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" +"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" +"MTEwMjEyMTQ0NDA2WhcNMjEwMjEyMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" +"A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN\r\n" +"AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN\r\n" +"owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz\r\n" +"NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM\r\n" +"tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P\r\n" +"hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya\r\n" +"HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD\r\n" +"VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw\r\n" +"FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQEFBQADggEBAJxnXClY\r\n" +"oHkbp70cqBrsGXLybA74czbO5RdLEgFs7rHVS9r+c293luS/KdliLScZqAzYVylw\r\n" +"UfRWvKMoWhHYKp3dEIS4xTXk6/5zXxhv9Rw8SGc8qn6vITHk1S1mPevtekgasY5Y\r\n" +"iWQuM3h4YVlRH3HHEMAD1TnAexfXHHDFQGe+Bd1iAbz1/sH9H8l4StwX6egvTK3M\r\n" +"wXRwkKkvjKaEDA9ATbZx0mI8LGsxSuCqe9r9dyjmttd47J1p1Rulz3CLzaRcVIuS\r\n" +"RRQfaD8neM9c1S/iJ/amTVqJxA1KOdOS5780WhPfSArA+g4qAmSjelc3p4wWpha8\r\n" +"zhuYwjVuX6JHG0c=\r\n" +"-----END CERTIFICATE-----\r\n"; +//NS_SERVER_CERT_END + +// Server private key +extern const uint8_t NetSecurity_ServerKey[]; + const uint8_t NetSecurity_ServerKey[] = +//NS_SERVER_KEY_START +#warning "Using a test Server private key!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +"-----BEGIN RSA PRIVATE KEY-----\r\n" +"MIIEpAIBAAKCAQEAwU2j3efNHdEE10lyuJmsDnjkOjxKzzoTFtBa5M2jAIin7h5r\r\n" +"lqdStJDvLXJ6PiSa/LY0rCT1d+AmZIycsCh9odrqjObJHJa8/sEEUrM21KP64bF2\r\n" +"2JDBYbRmUjaiJlOqq3ReB30Zgtsq2B+g2Q0cLUlm91slc0boC4pPaQy1AJDh2oIQ\r\n" +"Zn2uVCuLZXmRoeJhw81ASQjuaAzxi4bSRr/QuKoRAx5/VqgaHkQYDw+Fi9qLRF7i\r\n" +"GMZiL8dmjfpd2H3zJ4kpAcWQDj8n8TDISg7v1t7HxydrxwU9esQCPJodPg/oNJhb\r\n" +"y3NLUpbYEaIsgIhpOVrTD7DeWS8Rx/fqEgEwlwIDAQABAoIBAQCXR0S8EIHFGORZ\r\n" +"++AtOg6eENxD+xVs0f1IeGz57Tjo3QnXX7VBZNdj+p1ECvhCE/G7XnkgU5hLZX+G\r\n" +"Z0jkz/tqJOI0vRSdLBbipHnWouyBQ4e/A1yIJdlBtqXxJ1KE/ituHRbNc4j4kL8Z\r\n" +"/r6pvwnTI0PSx2Eqs048YdS92LT6qAv4flbNDxMn2uY7s4ycS4Q8w1JXnCeaAnYm\r\n" +"WYI5wxO+bvRELR2Mcz5DmVnL8jRyml6l6582bSv5oufReFIbyPZbQWlXgYnpu6He\r\n" +"GTc7E1zKYQGG/9+DQUl/1vQuCPqQwny0tQoX2w5tdYpdMdVm+zkLtbajzdTviJJa\r\n" +"TWzL6lt5AoGBAN86+SVeJDcmQJcv4Eq6UhtRr4QGMiQMz0Sod6ettYxYzMgxtw28\r\n" +"CIrgpozCc+UaZJLo7UxvC6an85r1b2nKPCLQFaggJ0H4Q0J/sZOhBIXaoBzWxveK\r\n" +"nupceKdVxGsFi8CDy86DBfiyFivfBj+47BbaQzPBj7C4rK7UlLjab2rDAoGBAN2u\r\n" +"AM2gchoFiu4v1HFL8D7lweEpi6ZnMJjnEu/dEgGQJFjwdpLnPbsj4c75odQ4Gz8g\r\n" +"sw9lao9VVzbusoRE/JGI4aTdO0pATXyG7eG1Qu+5Yc1YGXcCrliA2xM9xx+d7f+s\r\n" +"mPzN+WIEg5GJDYZDjAzHG5BNvi/FfM1C9dOtjv2dAoGAF0t5KmwbjWHBhcVqO4Ic\r\n" +"BVvN3BIlc1ue2YRXEDlxY5b0r8N4XceMgKmW18OHApZxfl8uPDauWZLXOgl4uepv\r\n" +"whZC3EuWrSyyICNhLY21Ah7hbIEBPF3L3ZsOwC+UErL+dXWLdB56Jgy3gZaBeW7b\r\n" +"vDrEnocJbqCm7IukhXHOBK8CgYEAwqdHB0hqyNSzIOGY7v9abzB6pUdA3BZiQvEs\r\n" +"3LjHVd4HPJ2x0N8CgrBIWOE0q8+0hSMmeE96WW/7jD3fPWwCR5zlXknxBQsfv0gP\r\n" +"3BC5PR0Qdypz+d+9zfMf625kyit4T/hzwhDveZUzHnk1Cf+IG7Q+TOEnLnWAWBED\r\n" +"ISOWmrUCgYAFEmRxgwAc/u+D6t0syCwAYh6POtscq9Y0i9GyWk89NzgC4NdwwbBH\r\n" +"4AgahOxIxXx2gxJnq3yfkJfIjwf0s2DyP0kY2y6Ua1OeomPeY9mrIS4tCuDQ6LrE\r\n" +"TB6l9VGoxJL4fyHnZb8L5gGvnB1bbD8cL6YPaDiOhcRseC9vBiEuVg==\r\n" +"-----END RSA PRIVATE KEY-----\r\n"; +//NS_SERVER_KEY_END + +extern const uint32_t NetSecurity_ServerCA_Len; + const uint32_t NetSecurity_ServerCA_Len = sizeof(NetSecurity_ServerCA); +extern const uint32_t NetSecurity_ServerCert_Len; + const uint32_t NetSecurity_ServerCert_Len = sizeof(NetSecurity_ServerCert); +extern const uint32_t NetSecurity_ServerKey_Len; + const uint32_t NetSecurity_ServerKey_Len = sizeof(NetSecurity_ServerKey); + +#endif + + +#if defined(RTE_Network_SMTP_Client_TLS) && \ + !defined(SMTPS_SERVER_VERIFY_NONE) + +// Email Client (SMTPS) + +// Email Server root CA certificate +extern const uint8_t NetSecurity_EmailServerCA[]; + const uint8_t NetSecurity_EmailServerCA[] = +"-----BEGIN CERTIFICATE-----\r\n" +#error "Email Server CA certificate is missing!" +/* + This certificate is used to verify the identity of the email server. It must + be PEM-encoded. Provide a certificate or disable server verification with + the following SMTPS_SERVER_VERIFY_NONE macro definition. +*/ +/* +"...base64 data...\n" +*/ +"-----END CERTIFICATE-----\r\n"; + +extern const uint32_t NetSecurity_EmailServerCA_Len; + const uint32_t NetSecurity_EmailServerCA_Len = sizeof(NetSecurity_EmailServerCA); + +#endif diff --git a/Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c.base@7.2.0 b/Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c.base@7.2.0 new file mode 100644 index 00000000..7265b139 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Network/Net_Security.c.base@7.2.0 @@ -0,0 +1,167 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: Net_Security.c + * Purpose: Network Security Credentials + * Rev.: V7.2.0 + *----------------------------------------------------------------------------*/ + +#include "rl_net.h" + + +#if defined(RTE_Network_Web_Server_RO_TLS) || \ + defined(RTE_Network_Web_Server_FS_TLS) + +// Web Server (HTTPS) + +// Server CA certificate(s) +extern const uint8_t NetSecurity_ServerCA[]; + const uint8_t NetSecurity_ServerCA[] = +//NS_SERVER_CA_START +#warning "Using a test Server CA certificate!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +// Issuer: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Subject: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Valid To: Feb 12 14:44:00 2021 GMT +// Serial No: 0 +// CA Cert: Yes +// Key Size: 2048-bit (RSA) +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" +"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" +"MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G\r\n" +"A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G\r\n" +"CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx\r\n" +"mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny\r\n" +"50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n\r\n" +"YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL\r\n" +"R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu\r\n" +"KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj\r\n" +"gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH\r\n" +"/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV\r\n" +"BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz\r\n" +"dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ\r\n" +"SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H\r\n" +"DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF\r\n" +"pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf\r\n" +"m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ\r\n" +"7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA==\r\n" +"-----END CERTIFICATE-----\r\n"; +//NS_SERVER_CA_END + +// Server certificate +extern const uint8_t NetSecurity_ServerCert[]; + const uint8_t NetSecurity_ServerCert[] = +//NS_SERVER_CERT_START +#warning "Using a test Server certificate!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +// Issuer: CN="PolarSSL Test CA", O="PolarSSL", C="NL" +// Subject: CN="localhost", O="PolarSSL", C="NL" +// Valid To: Feb 12 14:44:06 2021 GMT +// Serial No: 2 +// CA Cert: No +// Key Size: 2048-bit (RSA) +"-----BEGIN CERTIFICATE-----\r\n" +"MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER\r\n" +"MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN\r\n" +"MTEwMjEyMTQ0NDA2WhcNMjEwMjEyMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G\r\n" +"A1UEChMIUG9sYXJTU0wxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN\r\n" +"AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN\r\n" +"owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz\r\n" +"NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM\r\n" +"tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P\r\n" +"hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya\r\n" +"HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD\r\n" +"VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw\r\n" +"FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQEFBQADggEBAJxnXClY\r\n" +"oHkbp70cqBrsGXLybA74czbO5RdLEgFs7rHVS9r+c293luS/KdliLScZqAzYVylw\r\n" +"UfRWvKMoWhHYKp3dEIS4xTXk6/5zXxhv9Rw8SGc8qn6vITHk1S1mPevtekgasY5Y\r\n" +"iWQuM3h4YVlRH3HHEMAD1TnAexfXHHDFQGe+Bd1iAbz1/sH9H8l4StwX6egvTK3M\r\n" +"wXRwkKkvjKaEDA9ATbZx0mI8LGsxSuCqe9r9dyjmttd47J1p1Rulz3CLzaRcVIuS\r\n" +"RRQfaD8neM9c1S/iJ/amTVqJxA1KOdOS5780WhPfSArA+g4qAmSjelc3p4wWpha8\r\n" +"zhuYwjVuX6JHG0c=\r\n" +"-----END CERTIFICATE-----\r\n"; +//NS_SERVER_CERT_END + +// Server private key +extern const uint8_t NetSecurity_ServerKey[]; + const uint8_t NetSecurity_ServerKey[] = +//NS_SERVER_KEY_START +#warning "Using a test Server private key!" +/* + To disable this warning, either provide your own certificates and keys, + or run the "Net_Security.bat" batch file that regenerates the server + certificates and keys in this file. +*/ +"-----BEGIN RSA PRIVATE KEY-----\r\n" +"MIIEpAIBAAKCAQEAwU2j3efNHdEE10lyuJmsDnjkOjxKzzoTFtBa5M2jAIin7h5r\r\n" +"lqdStJDvLXJ6PiSa/LY0rCT1d+AmZIycsCh9odrqjObJHJa8/sEEUrM21KP64bF2\r\n" +"2JDBYbRmUjaiJlOqq3ReB30Zgtsq2B+g2Q0cLUlm91slc0boC4pPaQy1AJDh2oIQ\r\n" +"Zn2uVCuLZXmRoeJhw81ASQjuaAzxi4bSRr/QuKoRAx5/VqgaHkQYDw+Fi9qLRF7i\r\n" +"GMZiL8dmjfpd2H3zJ4kpAcWQDj8n8TDISg7v1t7HxydrxwU9esQCPJodPg/oNJhb\r\n" +"y3NLUpbYEaIsgIhpOVrTD7DeWS8Rx/fqEgEwlwIDAQABAoIBAQCXR0S8EIHFGORZ\r\n" +"++AtOg6eENxD+xVs0f1IeGz57Tjo3QnXX7VBZNdj+p1ECvhCE/G7XnkgU5hLZX+G\r\n" +"Z0jkz/tqJOI0vRSdLBbipHnWouyBQ4e/A1yIJdlBtqXxJ1KE/ituHRbNc4j4kL8Z\r\n" +"/r6pvwnTI0PSx2Eqs048YdS92LT6qAv4flbNDxMn2uY7s4ycS4Q8w1JXnCeaAnYm\r\n" +"WYI5wxO+bvRELR2Mcz5DmVnL8jRyml6l6582bSv5oufReFIbyPZbQWlXgYnpu6He\r\n" +"GTc7E1zKYQGG/9+DQUl/1vQuCPqQwny0tQoX2w5tdYpdMdVm+zkLtbajzdTviJJa\r\n" +"TWzL6lt5AoGBAN86+SVeJDcmQJcv4Eq6UhtRr4QGMiQMz0Sod6ettYxYzMgxtw28\r\n" +"CIrgpozCc+UaZJLo7UxvC6an85r1b2nKPCLQFaggJ0H4Q0J/sZOhBIXaoBzWxveK\r\n" +"nupceKdVxGsFi8CDy86DBfiyFivfBj+47BbaQzPBj7C4rK7UlLjab2rDAoGBAN2u\r\n" +"AM2gchoFiu4v1HFL8D7lweEpi6ZnMJjnEu/dEgGQJFjwdpLnPbsj4c75odQ4Gz8g\r\n" +"sw9lao9VVzbusoRE/JGI4aTdO0pATXyG7eG1Qu+5Yc1YGXcCrliA2xM9xx+d7f+s\r\n" +"mPzN+WIEg5GJDYZDjAzHG5BNvi/FfM1C9dOtjv2dAoGAF0t5KmwbjWHBhcVqO4Ic\r\n" +"BVvN3BIlc1ue2YRXEDlxY5b0r8N4XceMgKmW18OHApZxfl8uPDauWZLXOgl4uepv\r\n" +"whZC3EuWrSyyICNhLY21Ah7hbIEBPF3L3ZsOwC+UErL+dXWLdB56Jgy3gZaBeW7b\r\n" +"vDrEnocJbqCm7IukhXHOBK8CgYEAwqdHB0hqyNSzIOGY7v9abzB6pUdA3BZiQvEs\r\n" +"3LjHVd4HPJ2x0N8CgrBIWOE0q8+0hSMmeE96WW/7jD3fPWwCR5zlXknxBQsfv0gP\r\n" +"3BC5PR0Qdypz+d+9zfMf625kyit4T/hzwhDveZUzHnk1Cf+IG7Q+TOEnLnWAWBED\r\n" +"ISOWmrUCgYAFEmRxgwAc/u+D6t0syCwAYh6POtscq9Y0i9GyWk89NzgC4NdwwbBH\r\n" +"4AgahOxIxXx2gxJnq3yfkJfIjwf0s2DyP0kY2y6Ua1OeomPeY9mrIS4tCuDQ6LrE\r\n" +"TB6l9VGoxJL4fyHnZb8L5gGvnB1bbD8cL6YPaDiOhcRseC9vBiEuVg==\r\n" +"-----END RSA PRIVATE KEY-----\r\n"; +//NS_SERVER_KEY_END + +extern const uint32_t NetSecurity_ServerCA_Len; + const uint32_t NetSecurity_ServerCA_Len = sizeof(NetSecurity_ServerCA); +extern const uint32_t NetSecurity_ServerCert_Len; + const uint32_t NetSecurity_ServerCert_Len = sizeof(NetSecurity_ServerCert); +extern const uint32_t NetSecurity_ServerKey_Len; + const uint32_t NetSecurity_ServerKey_Len = sizeof(NetSecurity_ServerKey); + +#endif + + +#if defined(RTE_Network_SMTP_Client_TLS) && \ + !defined(SMTPS_SERVER_VERIFY_NONE) + +// Email Client (SMTPS) + +// Email Server root CA certificate +extern const uint8_t NetSecurity_EmailServerCA[]; + const uint8_t NetSecurity_EmailServerCA[] = +"-----BEGIN CERTIFICATE-----\r\n" +#error "Email Server CA certificate is missing!" +/* + This certificate is used to verify the identity of the email server. It must + be PEM-encoded. Provide a certificate or disable server verification with + the following SMTPS_SERVER_VERIFY_NONE macro definition. +*/ +/* +"...base64 data...\n" +*/ +"-----END CERTIFICATE-----\r\n"; + +extern const uint32_t NetSecurity_EmailServerCA_Len; + const uint32_t NetSecurity_EmailServerCA_Len = sizeof(NetSecurity_EmailServerCA); + +#endif diff --git a/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h new file mode 100644 index 00000000..72fa05ce --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h @@ -0,0 +1,80 @@ +/** + * Configuration template for SMTPS + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +#define MBEDTLS_CONFIG_VERSION 0x03060000 + +/* System support */ + +/* mbed TLS feature support */ +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_AES_ROM_TABLES +#define MBEDTLS_CIPHER_MODE_CBC +#define MBEDTLS_CIPHER_PADDING_PKCS7 +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_NIST_OPTIM +#define MBEDTLS_ECDSA_DETERMINISTIC +#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED +#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#define MBEDTLS_ERROR_STRERROR_DUMMY +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_PK_RSA_ALT_SUPPORT +#define MBEDTLS_PKCS1_V15 +#define MBEDTLS_PKCS1_V21 +#define MBEDTLS_SSL_ALL_ALERT_MESSAGES +#define MBEDTLS_SSL_ENCRYPT_THEN_MAC +#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET +#define MBEDTLS_SSL_RENEGOTIATION +#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#define MBEDTLS_SSL_PROTO_TLS1_2 +#define MBEDTLS_SSL_ALPN +#define MBEDTLS_SSL_SESSION_TICKETS +#define MBEDTLS_SSL_SERVER_NAME_INDICATION + +/* mbed TLS modules */ +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_CCM_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_CTR_DRBG_C +#define MBEDTLS_DEBUG_C +#define MBEDTLS_ECDH_C +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ECP_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_GCM_C +#define MBEDTLS_HMAC_DRBG_C +#define MBEDTLS_MD_C +#define MBEDTLS_OID_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PLATFORM_C +#define MBEDTLS_RSA_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_SSL_CACHE_C +#define MBEDTLS_SSL_COOKIE_C +#define MBEDTLS_SSL_TICKET_C +#define MBEDTLS_SSL_CLI_C +#define MBEDTLS_SSL_TLS_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CRL_PARSE_C + +/* SSL options */ +#define MBEDTLS_SSL_IN_CONTENT_LEN 4096 /**< Maximum length (in bytes) of incoming plaintext fragments. */ +#define MBEDTLS_SSL_OUT_CONTENT_LEN 4096 /**< Maximum length (in bytes) of outgoing plaintext fragments. */ diff --git a/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h.base@3.6.0 b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h.base@3.6.0 new file mode 100644 index 00000000..f45ac4f8 --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_config.h.base@3.6.0 @@ -0,0 +1,190 @@ +/** + * Configuration template + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +#define MBEDTLS_CONFIG_VERSION 0x03060000 + +/* System support */ +//#define MBEDTLS_HAVE_ASM +//#define MBEDTLS_HAVE_TIME +//#define MBEDTLS_HAVE_TIME_DATE +//#define MBEDTLS_PLATFORM_MEMORY +//#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS + +/* mbed TLS feature support */ +//#define MBEDTLS_AES_ROM_TABLES +//#define MBEDTLS_AES_FEWER_TABLES +//#define MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH +//#define MBEDTLS_BLOCK_CIPHER_NO_DECRYPT +//#define MBEDTLS_CAMELLIA_SMALL_MEMORY +//#define MBEDTLS_CHECK_RETURN_WARNING +//#define MBEDTLS_CIPHER_MODE_CBC +//#define MBEDTLS_CIPHER_MODE_CFB +//#define MBEDTLS_CIPHER_MODE_CTR +//#define MBEDTLS_CIPHER_MODE_OFB +//#define MBEDTLS_CIPHER_MODE_XTS +//#define MBEDTLS_CIPHER_PADDING_PKCS7 +//#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS +//#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN +//#define MBEDTLS_CIPHER_PADDING_ZEROS +//#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP224R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +//#define MBEDTLS_ECP_DP_SECP192K1_ENABLED +//#define MBEDTLS_ECP_DP_SECP224K1_ENABLED +//#define MBEDTLS_ECP_DP_SECP256K1_ENABLED +//#define MBEDTLS_ECP_DP_BP256R1_ENABLED +//#define MBEDTLS_ECP_DP_BP384R1_ENABLED +//#define MBEDTLS_ECP_DP_BP512R1_ENABLED +//#define MBEDTLS_ECP_DP_CURVE25519_ENABLED +//#define MBEDTLS_ECP_DP_CURVE448_ENABLED +//#define MBEDTLS_ECP_NIST_OPTIM +//#define MBEDTLS_ECP_RESTARTABLE +//#define MBEDTLS_ECDSA_DETERMINISTIC +//#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED +//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED +//#define MBEDTLS_PK_PARSE_EC_EXTENDED +//#define MBEDTLS_ERROR_STRERROR_DUMMY +//#define MBEDTLS_GCM_LARGE_TABLE +//#define MBEDTLS_GENPRIME +//#define MBEDTLS_FS_IO +//#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES +//#define MBEDTLS_NO_PLATFORM_ENTROPY +//#define MBEDTLS_ENTROPY_FORCE_SHA256 +//#define MBEDTLS_ENTROPY_NV_SEED +//#define MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER +//#define MBEDTLS_MEMORY_DEBUG +//#define MBEDTLS_MEMORY_BACKTRACE +//#define MBEDTLS_PK_RSA_ALT_SUPPORT +//#define MBEDTLS_PKCS1_V15 +//#define MBEDTLS_PKCS1_V21 +//#define MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS +//#define MBEDTLS_PSA_CRYPTO_CLIENT +//#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +//#define MBEDTLS_PSA_CRYPTO_SPM +//#define MBEDTLS_PSA_P256M_DRIVER_ENABLED +//#define MBEDTLS_PSA_INJECT_ENTROPY +//#define MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS +//#define MBEDTLS_RSA_NO_CRT +//#define MBEDTLS_SELF_TEST +//#define MBEDTLS_SHA256_SMALLER +//#define MBEDTLS_SHA512_SMALLER +//#define MBEDTLS_SSL_ALL_ALERT_MESSAGES +//#define MBEDTLS_SSL_DTLS_CONNECTION_ID +//#define MBEDTLS_SSL_ASYNC_PRIVATE +//#define MBEDTLS_SSL_CONTEXT_SERIALIZATION +//#define MBEDTLS_SSL_DEBUG_ALL +//#define MBEDTLS_SSL_ENCRYPT_THEN_MAC +//#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET +//#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE +//#define MBEDTLS_SSL_RENEGOTIATION +//#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +//#define MBEDTLS_SSL_PROTO_TLS1_2 +//#define MBEDTLS_SSL_PROTO_TLS1_3 +//#define MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE +//#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED +//#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_EPHEMERAL_ENABLED +//#define MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED +//#define MBEDTLS_SSL_EARLY_DATA +//#define MBEDTLS_SSL_PROTO_DTLS +//#define MBEDTLS_SSL_ALPN +//#define MBEDTLS_SSL_DTLS_ANTI_REPLAY +//#define MBEDTLS_SSL_DTLS_HELLO_VERIFY +//#define MBEDTLS_SSL_DTLS_SRTP +//#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE +//#define MBEDTLS_SSL_SESSION_TICKETS +//#define MBEDTLS_SSL_SERVER_NAME_INDICATION +//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH +//#define MBEDTLS_USE_PSA_CRYPTO +//#define MBEDTLS_PSA_CRYPTO_CONFIG +//#define MBEDTLS_VERSION_FEATURES +//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK +//#define MBEDTLS_X509_RSASSA_PSS_SUPPORT + +/* mbed TLS modules */ +//#define MBEDTLS_AESCE_C +//#define MBEDTLS_AES_C +//#define MBEDTLS_ASN1_PARSE_C +//#define MBEDTLS_ASN1_WRITE_C +//#define MBEDTLS_BASE64_C +//#define MBEDTLS_BIGNUM_C +//#define MBEDTLS_CAMELLIA_C +//#define MBEDTLS_ARIA_C +//#define MBEDTLS_CCM_C +//#define MBEDTLS_CHACHA20_C +//#define MBEDTLS_CHACHAPOLY_C +//#define MBEDTLS_CIPHER_C +//#define MBEDTLS_CMAC_C +//#define MBEDTLS_CTR_DRBG_C +//#define MBEDTLS_DEBUG_C +//#define MBEDTLS_DES_C +//#define MBEDTLS_DHM_C +//#define MBEDTLS_ECDH_C +//#define MBEDTLS_ECDSA_C +//#define MBEDTLS_ECJPAKE_C +//#define MBEDTLS_ECP_C +//#define MBEDTLS_ENTROPY_C +//#define MBEDTLS_ERROR_C +//#define MBEDTLS_GCM_C +//#define MBEDTLS_HKDF_C +//#define MBEDTLS_HMAC_DRBG_C +//#define MBEDTLS_LMS_C +//#define MBEDTLS_NIST_KW_C +//#define MBEDTLS_MD_C +//#define MBEDTLS_MD5_C +//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C +//#define MBEDTLS_NET_C +//#define MBEDTLS_OID_C +//#define MBEDTLS_PEM_PARSE_C +//#define MBEDTLS_PEM_WRITE_C +//#define MBEDTLS_PK_C +//#define MBEDTLS_PK_PARSE_C +//#define MBEDTLS_PK_WRITE_C +//#define MBEDTLS_PKCS5_C +//#define MBEDTLS_PKCS7_C +//#define MBEDTLS_PKCS12_C +//#define MBEDTLS_PLATFORM_C +//#define MBEDTLS_POLY1305_C +//#define MBEDTLS_PSA_CRYPTO_C +//#define MBEDTLS_PSA_CRYPTO_SE_C +//#define MBEDTLS_PSA_CRYPTO_STORAGE_C +//#define MBEDTLS_PSA_ITS_FILE_C +//#define MBEDTLS_RIPEMD160_C +//#define MBEDTLS_RSA_C +//#define MBEDTLS_SHA1_C +//#define MBEDTLS_SHA224_C +//#define MBEDTLS_SHA256_C +//#define MBEDTLS_SHA384_C +//#define MBEDTLS_SHA512_C +//#define MBEDTLS_SHA3_C +//#define MBEDTLS_SSL_CACHE_C +//#define MBEDTLS_SSL_COOKIE_C +//#define MBEDTLS_SSL_TICKET_C +//#define MBEDTLS_SSL_CLI_C +//#define MBEDTLS_SSL_SRV_C +//#define MBEDTLS_SSL_TLS_C +//#define MBEDTLS_THREADING_C +//#define MBEDTLS_TIMING_C +//#define MBEDTLS_VERSION_C +//#define MBEDTLS_X509_USE_C +//#define MBEDTLS_X509_CRT_PARSE_C +//#define MBEDTLS_X509_CRL_PARSE_C +//#define MBEDTLS_X509_CSR_PARSE_C +//#define MBEDTLS_X509_CREATE_C +//#define MBEDTLS_X509_CRT_WRITE_C +//#define MBEDTLS_X509_CSR_WRITE_C diff --git a/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h new file mode 100644 index 00000000..78ad02dc --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h @@ -0,0 +1,90 @@ +/** + * PSA crypto configuration template + */ +/* + * Copyright (C) 2022, Arm Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * CBC-MAC is not yet supported via the PSA API in Mbed TLS. + */ +//#define PSA_WANT_ALG_CBC_MAC 1 +#define PSA_WANT_ALG_CBC_NO_PADDING 1 +#define PSA_WANT_ALG_CBC_PKCS7 1 +#define PSA_WANT_ALG_CCM 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CFB 1 +#define PSA_WANT_ALG_CHACHA20_POLY1305 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CTR 1 +#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1 +#define PSA_WANT_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_ECDH 1 +#define PSA_WANT_ALG_ECDSA 1 +#define PSA_WANT_ALG_GCM 1 +#define PSA_WANT_ALG_HKDF 1 +#define PSA_WANT_ALG_HMAC 1 +#define PSA_WANT_ALG_MD5 1 +#define PSA_WANT_ALG_OFB 1 +/* PBKDF2-HMAC is not yet supported via the PSA API in Mbed TLS. + * Note: when adding support, also adjust include/mbedtls/config_psa.h */ +//#define PSA_WANT_ALG_PBKDF2_HMAC 1 +#define PSA_WANT_ALG_RIPEMD160 1 +#define PSA_WANT_ALG_RSA_OAEP 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PSS 1 +#define PSA_WANT_ALG_SHA_1 1 +#define PSA_WANT_ALG_SHA_224 1 +#define PSA_WANT_ALG_SHA_256 1 +#define PSA_WANT_ALG_SHA_384 1 +#define PSA_WANT_ALG_SHA_512 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define PSA_WANT_ALG_TLS12_PRF 1 +#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1 +#define PSA_WANT_ALG_XTS 1 + +#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 1 +#define PSA_WANT_ECC_MONTGOMERY_255 1 +#define PSA_WANT_ECC_MONTGOMERY_448 1 +#define PSA_WANT_ECC_SECP_K1_192 1 +/* + * SECP224K1 is buggy via the PSA API in Mbed TLS + * (https://github.com/ARMmbed/mbedtls/issues/3541). Thus, do not enable it by + * default. + */ +//#define PSA_WANT_ECC_SECP_K1_224 1 +#define PSA_WANT_ECC_SECP_K1_256 1 +#define PSA_WANT_ECC_SECP_R1_192 1 +#define PSA_WANT_ECC_SECP_R1_224 1 +#define PSA_WANT_ECC_SECP_R1_256 1 +#define PSA_WANT_ECC_SECP_R1_384 1 +#define PSA_WANT_ECC_SECP_R1_521 1 + +#define PSA_WANT_KEY_TYPE_DERIVE 1 +#define PSA_WANT_KEY_TYPE_HMAC 1 +#define PSA_WANT_KEY_TYPE_AES 1 +#define PSA_WANT_KEY_TYPE_ARIA 1 +#define PSA_WANT_KEY_TYPE_CAMELLIA 1 +#define PSA_WANT_KEY_TYPE_CHACHA20 1 +#define PSA_WANT_KEY_TYPE_DES 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1 +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_RAW_DATA 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1 +#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1 diff --git a/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 new file mode 100644 index 00000000..3dd0496d --- /dev/null +++ b/Examples/Network/SMTPS_Client/RTE/Security/mbedTLS_crypto_config.h.base@3.6.0 @@ -0,0 +1,125 @@ +/** + * PSA crypto configuration template + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + */ + +/* + * CBC-MAC is not yet supported via the PSA API in Mbed TLS. + */ +//#define PSA_WANT_ALG_CBC_MAC 1 +#define PSA_WANT_ALG_CBC_NO_PADDING 1 +#define PSA_WANT_ALG_CBC_PKCS7 1 +#define PSA_WANT_ALG_CCM 1 +#define PSA_WANT_ALG_CCM_STAR_NO_TAG 1 +#define PSA_WANT_ALG_CMAC 1 +#define PSA_WANT_ALG_CFB 1 +#define PSA_WANT_ALG_CHACHA20_POLY1305 1 +#define PSA_WANT_ALG_CTR 1 +#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1 +#define PSA_WANT_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_ECDH 1 +#define PSA_WANT_ALG_FFDH 1 +#define PSA_WANT_ALG_ECDSA 1 +#define PSA_WANT_ALG_JPAKE 1 +#define PSA_WANT_ALG_GCM 1 +#define PSA_WANT_ALG_HKDF 1 +#define PSA_WANT_ALG_HKDF_EXTRACT 1 +#define PSA_WANT_ALG_HKDF_EXPAND 1 +#define PSA_WANT_ALG_HMAC 1 +#define PSA_WANT_ALG_MD5 1 +#define PSA_WANT_ALG_OFB 1 +#define PSA_WANT_ALG_PBKDF2_HMAC 1 +#define PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128 1 +#define PSA_WANT_ALG_RIPEMD160 1 +#define PSA_WANT_ALG_RSA_OAEP 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1 +#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1 +#define PSA_WANT_ALG_RSA_PSS 1 +#define PSA_WANT_ALG_SHA_1 1 +#define PSA_WANT_ALG_SHA_224 1 +#define PSA_WANT_ALG_SHA_256 1 +#define PSA_WANT_ALG_SHA_384 1 +#define PSA_WANT_ALG_SHA_512 1 +#define PSA_WANT_ALG_SHA3_224 1 +#define PSA_WANT_ALG_SHA3_256 1 +#define PSA_WANT_ALG_SHA3_384 1 +#define PSA_WANT_ALG_SHA3_512 1 +#define PSA_WANT_ALG_STREAM_CIPHER 1 +#define PSA_WANT_ALG_TLS12_PRF 1 +#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1 +#define PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS 1 + +/* XTS is not yet supported via the PSA API in Mbed TLS. + * Note: when adding support, also adjust include/mbedtls/config_psa.h */ +//#define PSA_WANT_ALG_XTS 1 + +#define PSA_WANT_ECC_BRAINPOOL_P_R1_256 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_384 1 +#define PSA_WANT_ECC_BRAINPOOL_P_R1_512 1 +#define PSA_WANT_ECC_MONTGOMERY_255 1 +#define PSA_WANT_ECC_MONTGOMERY_448 1 +#define PSA_WANT_ECC_SECP_K1_192 1 +/* + * SECP224K1 is buggy via the PSA API in Mbed TLS + * (https://github.com/Mbed-TLS/mbedtls/issues/3541). Thus, do not enable it by + * default. + */ +//#define PSA_WANT_ECC_SECP_K1_224 1 +#define PSA_WANT_ECC_SECP_K1_256 1 +#define PSA_WANT_ECC_SECP_R1_192 1 +#define PSA_WANT_ECC_SECP_R1_224 1 +/* For secp256r1, consider enabling #MBEDTLS_PSA_P256M_DRIVER_ENABLED + * (see the description in mbedtls/mbedtls_config.h for details). */ +#define PSA_WANT_ECC_SECP_R1_256 1 +#define PSA_WANT_ECC_SECP_R1_384 1 +#define PSA_WANT_ECC_SECP_R1_521 1 + +#define PSA_WANT_DH_RFC7919_2048 1 +#define PSA_WANT_DH_RFC7919_3072 1 +#define PSA_WANT_DH_RFC7919_4096 1 +#define PSA_WANT_DH_RFC7919_6144 1 +#define PSA_WANT_DH_RFC7919_8192 1 + +#define PSA_WANT_KEY_TYPE_DERIVE 1 +#define PSA_WANT_KEY_TYPE_PASSWORD 1 +#define PSA_WANT_KEY_TYPE_PASSWORD_HASH 1 +#define PSA_WANT_KEY_TYPE_HMAC 1 +#define PSA_WANT_KEY_TYPE_AES 1 +#define PSA_WANT_KEY_TYPE_ARIA 1 +#define PSA_WANT_KEY_TYPE_CAMELLIA 1 +#define PSA_WANT_KEY_TYPE_CHACHA20 1 +#define PSA_WANT_KEY_TYPE_DES 1 +//#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1 /* Deprecated */ +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY 1 +#define PSA_WANT_KEY_TYPE_RAW_DATA 1 +//#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1 /* Deprecated */ +#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1 + +/* + * The following symbols extend and deprecate the legacy + * PSA_WANT_KEY_TYPE_xxx_KEY_PAIR ones. They include the usage of that key in + * the name's suffix. "_USE" is the most generic and it can be used to describe + * a generic suport, whereas other ones add more features on top of that and + * they are more specific. + */ +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE 1 +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_DERIVE 1 + +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE 1 +//#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE 1 /* Not supported */ + +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT 1 +#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE 1 +//#define PSA_WANT_KEY_TYPE_DH_KEY_PAIR_DERIVE 1 /* Not supported */ diff --git a/Examples/Network/SMTPS_Client/SMTPS_Client.c b/Examples/Network/SMTPS_Client/SMTPS_Client.c new file mode 100644 index 00000000..7a38d7a1 --- /dev/null +++ b/Examples/Network/SMTPS_Client/SMTPS_Client.c @@ -0,0 +1,81 @@ +/*------------------------------------------------------------------------------ + * MDK Middleware - Component ::Network + * Copyright (c) 2004-2024 Arm Limited (or its affiliates). All rights reserved. + *------------------------------------------------------------------------------ + * Name: SMTP_Client.c + * Purpose: SMTP Client example + *----------------------------------------------------------------------------*/ + +#include + +#include "main.h" + +#include "cmsis_os2.h" // ::CMSIS:RTOS2 + +#include "rl_net.h" // Keil::Network&MDK:CORE + +static const NET_SMTP_MAIL mail = { + /* Addresses: From */ + "Alex ;", + /* Addresses: To */ + "Alister ;" + "Susan ;", + /* Cc */ + NULL, + /* Bcc */ + NULL, + /* Subject */ + "Subject text", + /* Message */ + "This is email body.", + /* Attachments */ + NULL, + /* Encoding */ + NULL +}; + +static const NET_SMTP_MTA server = { + /* Server address (FQDN or IP address) */ + "smtp.gmail.com", + /* Server port */ + 25, + /* Service control flags */ + 0, + /* Account user name, can be NULL */ + "username", + /* Account password, can be NULL */ + "password" +}; + +/*----------------------------------------------------------------------------- + Application Main Thread 'app_main_thread': Run Network + *----------------------------------------------------------------------------*/ +__NO_RETURN void app_main_thread (void *argument) { + netStatus retv; + (void)argument; + + printf("MW Network \n"); + printf("SMTP Client \n"); + printf("Sending email...\n"); + + netInitialize(); + + retv = netSMTPc_SendMail(&mail, &server); + if (retv == netOK) { + printf("Success, email sent.\n"); + } else { + printf("Send email failed.\n"); + } + + osThreadExit(); +} + +/*----------------------------------------------------------------------------- + * Application main function + *----------------------------------------------------------------------------*/ +int app_main (void) { + osKernelInitialize(); + osThreadNew(app_main_thread, NULL, NULL); + osKernelStart(); + return 0; +} diff --git a/Examples/Network/SMTPS_Client/SMTPS_Client.cproject.yml b/Examples/Network/SMTPS_Client/SMTPS_Client.cproject.yml new file mode 100644 index 00000000..3641e2d9 --- /dev/null +++ b/Examples/Network/SMTPS_Client/SMTPS_Client.cproject.yml @@ -0,0 +1,43 @@ +project: + description: SMTPS Client example + + packs: + - pack: Keil::MDK-Middleware@>=8.0.0-0 + - pack: ARM::CMSIS@>=6.1.0 + - pack: ARM::CMSIS-RTX@>=5.9.0 + - pack: ARM::mbedTLS@>=3.6.0 + + connections: + - connect: SMTPS Client + provides: + - CMSIS-RTOS2 + consumes: + - CMSIS_ETH + - CMSIS_VIO + - STDOUT + + define: + - SMTPS_SERVER_VERIFY_NONE + + groups: + - group: Documentation + files: + - file: README.md + - group: Network + files: + - file: SMTPS_Client.c + + components: + - component: ARM::CMSIS:OS Tick:SysTick + - component: ARM::CMSIS:RTOS2:Keil RTX5&Source + - component: Keil::Network&MDK:CORE + - component: Keil::Network&MDK:Interface:ETH + - component: Keil::Network&MDK:Socket:TCP + - component: Keil::Network&MDK:Socket:UDP + - component: Keil::Network&MDK:Service:DNS Client + - component: Keil::Network&MDK:Service:SMTP Client&SMTPS + - component: ARM::Security:mbed TLS + + layers: + - layer: $Board-Layer$ + type: Board