From fb9ef2751fe1c6d03c47aa5305277bc878da3474 Mon Sep 17 00:00:00 2001 From: solosky Date: Tue, 5 Mar 2024 00:14:40 +0800 Subject: [PATCH 001/101] fixed #219, check file name restriction before create file --- .../src/mod/vfs/vfs_driver_spiffs.c | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/fw/application/src/mod/vfs/vfs_driver_spiffs.c b/fw/application/src/mod/vfs/vfs_driver_spiffs.c index 6499e3ae..078d92ab 100644 --- a/fw/application/src/mod/vfs/vfs_driver_spiffs.c +++ b/fw/application/src/mod/vfs/vfs_driver_spiffs.c @@ -49,6 +49,19 @@ static s32_t vfs_spiffs_map_error_code(s32_t err) { return VFS_ERR_FAIL; } +static int32_t vfs_check_file_path(const char* file_path){ + if(strlen(file_path) >= VFS_MAX_PATH_LEN){ + return VFS_ERR_MAXNM; + } + const char* basename; + size_t length; + cwk_path_get_basename(file_path, &basename, &length); + if(length <= 0 || length >= VFS_MAX_NAME_LEN){ + return VFS_ERR_MAXNM; + } + return VFS_OK; +} + static s32_t spiffs_block_read(u32_t addr, u32_t size, u8_t *dst) { return hal_spi_flash_read(addr, dst, size); } static s32_t spiffs_block_write(u32_t addr, u32_t size, u8_t *src) { return hal_spi_flash_prog(addr, src, size); } @@ -277,8 +290,12 @@ int32_t vfs_spiffs_create_dir(const char *dir) { char path[VFS_MAX_PATH_LEN]; NRF_LOG_INFO("create dir %s\n", nrf_log_push(dir)); + int res = vfs_check_file_path(dir); + if(res != VFS_OK){ + return res; + } snprintf(path, sizeof(path), "%s/%s", dir, VFS_SPIFFS_FOLDER_NAME); - int res = SPIFFS_creat(&fs, path, 0); + res = SPIFFS_creat(&fs, path, 0); return vfs_spiffs_map_error_code(res); } @@ -318,6 +335,16 @@ int32_t vfs_spiffs_rename_dir_internal(const char *dir_name, const char *new_dir vfs_spiffs_dir_t *p_dir = &dir; int32_t err_code = VFS_OK; + int ret = vfs_check_file_path(dir_name); + if( ret != VFS_OK){ + return ret; + } + + int ret2 = vfs_check_file_path(new_dir_name); + if( ret2 != VFS_OK){ + return ret; + } + p_dir->pe = &p_dir->e; cwalk_dir_prefix_match(p_dir->dir, dir_name); @@ -368,6 +395,10 @@ int32_t vfs_spiffs_rename_dir(const char *dir_name, const char *new_dir_name) { /**file operations*/ int32_t vfs_spiffs_open_file(const char *file, vfs_file_t *fd, uint32_t flags) { + int ret = vfs_check_file_path(file); + if( ret != VFS_OK){ + return ret; + } fd->handle = SPIFFS_open(&fs, file, flags, 0); if (fd->handle < 0) { return vfs_spiffs_map_error_code(fd->handle); @@ -431,6 +462,12 @@ int32_t vfs_spiffs_update_file_meta(const char *file, void *meta, size_t meta_si int32_t vfs_spiffs_write_file_data(const char *file, void *buff, size_t buff_size) { NRF_LOG_INFO("write file data %s\n", nrf_log_push(file)); + + int ret = vfs_check_file_path(file); + if( ret != VFS_OK){ + return ret; + } + spiffs_file fd = SPIFFS_open(&fs, file, SPIFFS_WRONLY | SPIFFS_CREAT | SPIFFS_TRUNC, 0); if (fd < 0) { return vfs_spiffs_map_error_code(fd); From a7615c6f889e4b8073dc47e44f079a484c5c30ef Mon Sep 17 00:00:00 2001 From: Cristian Nirca Date: Wed, 20 Mar 2024 18:58:33 +0200 Subject: [PATCH 002/101] Add Russian language support Russian language has been added to the language options in the internationalization files. New entries for Russian (ru) have been made in each of the existing language files and a new language file has been created specifically for Russian (ru_RU.js). The dropdown for language selection in the App has been updated to include this new option. --- web/src/App.vue | 3 ++ web/src/i18n/en_US.js | 1 + web/src/i18n/es_ES.js | 1 + web/src/i18n/index.js | 6 +++ web/src/i18n/ru_RU.js | 113 ++++++++++++++++++++++++++++++++++++++++ web/src/i18n/zh_Hans.js | 1 + web/src/i18n/zh_TW.js | 1 + 7 files changed, 126 insertions(+) create mode 100644 web/src/i18n/ru_RU.js diff --git a/web/src/App.vue b/web/src/App.vue index be2e052c..5b7f5483 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -19,6 +19,9 @@ {{ $t('lang.es') }} + + {{ $t('lang.ru') }} + diff --git a/web/src/i18n/en_US.js b/web/src/i18n/en_US.js index bf44db39..6b95f196 100644 --- a/web/src/i18n/en_US.js +++ b/web/src/i18n/en_US.js @@ -5,6 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', + ru: 'Russian', changeok: 'Switch Language Success' }, btn: { diff --git a/web/src/i18n/es_ES.js b/web/src/i18n/es_ES.js index c6826535..1510a043 100644 --- a/web/src/i18n/es_ES.js +++ b/web/src/i18n/es_ES.js @@ -5,6 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', + ru: 'Ruso', changeok: 'Cambio Idioma Satisfactorio' }, btn: { diff --git a/web/src/i18n/index.js b/web/src/i18n/index.js index 8293af56..23019b95 100644 --- a/web/src/i18n/index.js +++ b/web/src/i18n/index.js @@ -4,10 +4,12 @@ import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang import elementZhCnLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang import elementEsLocale from 'element-ui/lib/locale/lang/es'// element-ui lang import elementZhTwLocale from 'element-ui/lib/locale/lang/zh-TW'// element-ui lang +import elementRuLocale from 'element-ui/lib/locale/lang/ru-RU'// element-ui lang import enLocale from './en_US' import zhTWLocale from './zh_TW' import zhCNLocale from './zh_Hans' import esLocale from './es_ES' +import ruLocale from "./ru_RU"; Vue.use(VueI18n) @@ -28,6 +30,10 @@ const messages = { zh_CN: { ...zhCNLocale, ...elementZhCnLocale + }, + ru_RU: { + ... ruLocale, + ... elementRuLocale } } export function getLanguage() { diff --git a/web/src/i18n/ru_RU.js b/web/src/i18n/ru_RU.js new file mode 100644 index 00000000..10e185e8 --- /dev/null +++ b/web/src/i18n/ru_RU.js @@ -0,0 +1,113 @@ +export default { + lang: { + choose: 'Выбор языка/Language', + zhcn: 'Китайский (упрощенный)', + zhtw: 'Китайский (традиционный, Тайвань)', + en: 'Английский', + es: 'Испанский', + ru: 'Русский', + changeok: 'Успешно сменить язык', + + }, + btn: { + ok: 'OK', + cancel: 'Отмена', + cont: 'Продолжить' + }, + menu: { + upload: 'Загрузить', + newfolder: 'Новая папка', + del: 'Удалить', + up: 'Родительская папка', + refresh: 'Обновить', + dfu: 'DFU' + }, + status: { + connected: 'Подключено, Версия: ', + version: 'Версия:', + mac: 'MAC-адрес:', + loading: 'загрузка…' + }, + conn: { + connect: 'Подключиться', + connecting: 'Подключение…', + disconnect: 'Отключиться…', + consuccess: 'Успешное подключение к Pixl.js!', + disconnected: 'Pixl.js был отключен!', + connfailed: 'Ошибка подключения к Pixl.js!' + }, + labels: { + name: 'Имя', + size: 'Размер', + type: 'Тип', + remark: 'Примечание' + }, + contxmenu: { + del: 'Удалить…', + rename: 'Переименовать…', + prop: 'Свойства…', + format: 'Форматировать…' + }, + properties: { + title: 'Свойства', + remark: 'Примечание', + entermsg: 'Пожалуйста, введите примечание', + attrib: 'Атрибуты', + hide: 'Скрыть', + errupdate: 'Не удалось обновить свойства!', + remarktoolong: 'Примечания могут быть длиной до 90 байт!, то есть 90 символов или 30 китайских символов (текущее значение: ', + remarktoolongend: ' Байт)' + }, + upload: { + title: 'Загрузка', + drag: 'Перетащите файлы сюда или ', + click: 'нажмите для загрузки.', + maxsize: 'Общая длина пути к файлу не может превышать 63 байта.', + maxname: 'Имя файла не может превышать 47 байт.', + closetitle: 'Подтвердить закрытие?', + closemessage: 'Закрытие диалога очистит список загрузок и прервёт очередь загрузки.', + errupload: 'Ошибка загрузки: ' + }, + format: { + title: 'Форматирование', + messrow1a: 'Вы уверены, что хотите отформатировать ', + messrow1b: ' ?', + messrow2: 'Форматирование приведет к удалению всех данных!', + messrow3: 'Форматирование может занять около 10 секунд, пожалуйста, подождите.', + formatok: 'Форматирование завершено!', + formaterr: 'Ошибка форматирования!: ' + }, + del: { + title: 'Удаление', + message: 'Удалить файл: ', + messageend: ' ?', + error: 'Ошибка удаления файла!: ', + deleteok: 'Файл успешно удален!' + }, + dfumode: { + title: 'Режим DFU', + startconfirm: 'Войти в режим DFU?', + updateconfirm: 'Вход в режим DFU выполнен успешно. Хотите открыть страницу обновления по DFU?', + updatetitle: 'Режим DFU принят' + }, + oldfirm: { + title: 'Советы по обновлению', + message: 'Версия встроенного ПО вашего устройства слишком низкая. Пожалуйста, обновите последнюю версию ПО перед использованием функции загрузки.' + }, + newfolder: { + title: 'Новая папка', + message: 'Пожалуйста, введите название папки', + newfoldererr: 'Ошибка создания папки!:' + }, + rename: { + title: 'Переименовать', + message: 'Пожалуйста, введите новое имя файла: ', + errrename: 'Ошибка переименования!: ', + nametoolong: 'Максимальная длина пути к файлу не должна превышать 63 байта', + pathtoolong: 'Максимальная длина имени файла не должна превышать 47 байт' + }, + drive: { + message: '(Диск недоступен [код ошибки: ', + messageend: '])' + } +} diff --git a/web/src/i18n/zh_Hans.js b/web/src/i18n/zh_Hans.js index 6b96e213..891dfd43 100644 --- a/web/src/i18n/zh_Hans.js +++ b/web/src/i18n/zh_Hans.js @@ -5,6 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', + ru: 'Russian', changeok: '语言切换成功!' }, btn: { diff --git a/web/src/i18n/zh_TW.js b/web/src/i18n/zh_TW.js index 4e1d92d9..998c20ae 100644 --- a/web/src/i18n/zh_TW.js +++ b/web/src/i18n/zh_TW.js @@ -5,6 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', + ru: 'Russian', changeok: '語言切換成功!' }, btn: { From 08eda65e76fd42938299215a7007899a71f1a83c Mon Sep 17 00:00:00 2001 From: Cristian Nirca Date: Sun, 24 Mar 2024 17:26:25 +0200 Subject: [PATCH 003/101] Update Russian language label across locales MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit updates the language label for Russian across all language files from English and localized variations to Russian ('Русский'). This change is done to ensure proper language representation in every locale. --- web/src/i18n/en_US.js | 2 +- web/src/i18n/es_ES.js | 2 +- web/src/i18n/zh_Hans.js | 2 +- web/src/i18n/zh_TW.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web/src/i18n/en_US.js b/web/src/i18n/en_US.js index 6b95f196..a24532d7 100644 --- a/web/src/i18n/en_US.js +++ b/web/src/i18n/en_US.js @@ -5,7 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', - ru: 'Russian', + ru: 'Русский', changeok: 'Switch Language Success' }, btn: { diff --git a/web/src/i18n/es_ES.js b/web/src/i18n/es_ES.js index 1510a043..6e9d94b2 100644 --- a/web/src/i18n/es_ES.js +++ b/web/src/i18n/es_ES.js @@ -5,7 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', - ru: 'Ruso', + ru: 'Русский', changeok: 'Cambio Idioma Satisfactorio' }, btn: { diff --git a/web/src/i18n/zh_Hans.js b/web/src/i18n/zh_Hans.js index 891dfd43..9eb1c8c0 100644 --- a/web/src/i18n/zh_Hans.js +++ b/web/src/i18n/zh_Hans.js @@ -5,7 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', - ru: 'Russian', + ru: 'Русский', changeok: '语言切换成功!' }, btn: { diff --git a/web/src/i18n/zh_TW.js b/web/src/i18n/zh_TW.js index 998c20ae..c41fc784 100644 --- a/web/src/i18n/zh_TW.js +++ b/web/src/i18n/zh_TW.js @@ -5,7 +5,7 @@ export default { zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', - ru: 'Russian', + ru: 'Русский', changeok: '語言切換成功!' }, btn: { From 302da3f3d4b9e2bac6bf84e10b031bb86d5d89d1 Mon Sep 17 00:00:00 2001 From: Cristian Nirca Date: Sun, 24 Mar 2024 17:28:11 +0200 Subject: [PATCH 004/101] Update language labels in Russian locale This commit updates the language labels in the Russian locale file (ru_RU.js) from Russian to their native representation. The languages affected are Simplified Chinese, Traditional Chinese (Taiwan), English, and Spanish. This enhances readability and user experience for speakers of these languages. --- web/src/i18n/ru_RU.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/src/i18n/ru_RU.js b/web/src/i18n/ru_RU.js index 10e185e8..931ee2b3 100644 --- a/web/src/i18n/ru_RU.js +++ b/web/src/i18n/ru_RU.js @@ -1,10 +1,10 @@ export default { lang: { choose: 'Выбор языка/Language', - zhcn: 'Китайский (упрощенный)', - zhtw: 'Китайский (традиционный, Тайвань)', - en: 'Английский', - es: 'Испанский', + zhcn: '简体中文', + zhtw: '繁體中文(臺灣)', + en: 'English', + es: 'Español', ru: 'Русский', changeok: 'Успешно сменить язык', From 3b06abc381d6d67f580faba979a1cb86ff5f1148 Mon Sep 17 00:00:00 2001 From: solosky Date: Sun, 24 Mar 2024 23:58:18 +0800 Subject: [PATCH 005/101] enable CI for push request --- .github/workflows/pixl.js-fw.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pixl.js-fw.yml b/.github/workflows/pixl.js-fw.yml index 7603f5ba..0628a7bf 100644 --- a/.github/workflows/pixl.js-fw.yml +++ b/.github/workflows/pixl.js-fw.yml @@ -4,6 +4,9 @@ on: push: branches: [ "develop"] tags: ["*"] + pull_request: + types: ["opened"] + branches: ["develop"] workflow_dispatch: jobs: From c1cff913381efd84a97d9352d3aadf0992e87e00 Mon Sep 17 00:00:00 2001 From: John Veness Date: Mon, 25 Mar 2024 21:12:04 +0000 Subject: [PATCH 006/101] Fix links in 01-Hardware.md --- docs/en/01-Hardware.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/01-Hardware.md b/docs/en/01-Hardware.md index 9888a062..7cf29f0c 100644 --- a/docs/en/01-Hardware.md +++ b/docs/en/01-Hardware.md @@ -7,8 +7,8 @@ You can use [Kicad 6](https://www.kicad.org/download/) to open and edit the PCB ![pixl.js PCB](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-pcb-revc.png) # BOM -* The BoM is summaried on the doc: [RevC Bill of Materials Buying Guide](01+1-RevC-bom) -* The Bill of Materials in interactive format are also available, you can download it from: [RevC InteractiveHtmlBom](docs/RevC-ibom.html) +* The BoM is summaried on the doc: [RevC Bill of Materials Buying Guide](01+1-RevC-bom.md) +* The Bill of Materials in interactive format are also available, you can download it from: [RevC InteractiveHtmlBom]([docs/RevC-ibom.html](https://github.com/JohnVeness/pixl.js/blob/main/docs/RevC-ibom.html)) # Pictures From 9fba888b24e15dcde998248293b17a9cfbc920d1 Mon Sep 17 00:00:00 2001 From: Cristian Nirca Date: Wed, 27 Mar 2024 12:20:01 +0200 Subject: [PATCH 007/101] Update Russian translations in ru_RU.js This commit updates the translation for successful language change feedback and an outdated firmware warning message in Russian. It ensures clearer and more accurate messages are shown to the user. --- web/src/i18n/ru_RU.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/i18n/ru_RU.js b/web/src/i18n/ru_RU.js index 931ee2b3..71134018 100644 --- a/web/src/i18n/ru_RU.js +++ b/web/src/i18n/ru_RU.js @@ -6,7 +6,7 @@ export default { en: 'English', es: 'Español', ru: 'Русский', - changeok: 'Успешно сменить язык', + changeok: 'Язык изменен успешно!', }, btn: { @@ -92,7 +92,7 @@ export default { }, oldfirm: { title: 'Советы по обновлению', - message: 'Версия встроенного ПО вашего устройства слишком низкая. Пожалуйста, обновите последнюю версию ПО перед использованием функции загрузки.' + message: 'Версия встроенного ПО вашего устройства слишком старая. Пожалуйста, обновитесь до последней версии ПО перед использованием функции загрузки.' }, newfolder: { title: 'Новая папка', From e89d24c636b61be2e5e083078e7d04aeb3e04bfb Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Sat, 30 Mar 2024 00:00:51 +0100 Subject: [PATCH 008/101] added Italian Language --- fw/application/Makefile | 3 +- fw/application/src/i18n/it_IT.c | 169 +++++++++++++++ fw/application/src/i18n/language.c | 10 +- fw/application/src/i18n/language.h | 2 + fw/data/i18n.csv | 334 ++++++++++++++--------------- 5 files changed, 346 insertions(+), 172 deletions(-) create mode 100644 fw/application/src/i18n/it_IT.c diff --git a/fw/application/Makefile b/fw/application/Makefile index f2e36bcb..523a3e72 100644 --- a/fw/application/Makefile +++ b/fw/application/Makefile @@ -297,9 +297,10 @@ SRC_FILES += \ $(PROJ_DIR)/i18n/zh_Hans.c \ $(PROJ_DIR)/i18n/zh_TW.c \ $(PROJ_DIR)/i18n/es_ES.c \ - $(PROJ_DIR)/i18n/hu_HU.c \ + $(PROJ_DIR)/i18n/it_IT.c \ $(PROJ_DIR)/i18n/de_DE.c \ $(PROJ_DIR)/i18n/fr_FR.c \ + $(PROJ_DIR)/i18n/hu_HU.c \ $(PROJ_DIR)/i18n/ja_JP.c \ $(PROJ_DIR)/i18n/nl_NL.c \ $(PROJ_DIR)/i18n/pt_BR.c \ diff --git a/fw/application/src/i18n/it_IT.c b/fw/application/src/i18n/it_IT.c new file mode 100644 index 00000000..92e41261 --- /dev/null +++ b/fw/application/src/i18n/it_IT.c @@ -0,0 +1,169 @@ +#include "string_id.h" +const char * const lang_it_IT[_L_COUNT] = { + [_L_ON] = "SI", + [_L_OFF] = "NO", + [_L_ON_F] = "[SI]", + [_L_OFF_F] = "[NO]", + [_L_BACK] = "Indietro", + [_L_ERR] = "Errore", + [_L_ERR_CODE] = "Codice errore", + [_L_APP_AMIIBO] = "Emulatore Amiibo", + [_L_APP_AMIIBOLINK] = "AmiiboLink", + [_L_APP_BLE] = "Trasferimento file BLE", + [_L_APP_BLE_TITLE] = "Trasferimento file BLE", + [_L_APP_PLAYER] = "Lettore video", + [_L_APP_SET] = "Impostazioni", + [_L_APP_SET_VERSION] = "Versione", + [_L_APP_SET_STORAGE_USED] = "Usato", + [_L_APP_SET_STORAGE] = "Memoria esterna", + [_L_APP_SET_OLED_CONTRAST] = "Contrasto OLED", + [_L_APP_SET_OLED_CONTRAST_TITLE] = "Contrasto OLED", + [_L_APP_SET_LCD_BACKLIGHT] = "Luminosità", + [_L_APP_SET_LCD_BACKLIGHT_TITLE] = "Luminosità schermo", + [_L_APP_SET_ANIM] = "Animazione menu", + [_L_APP_SET_LIPO_BAT] = "Batteria LiPO", + [_L_APP_SET_SHOW_MEM_USAGE] = "Memoria usata", + [_L_APP_SET_HIBERNATE] = "Risveglio rapido", + [_L_APP_SET_SLEEP_TIMEOUT] = "Timeout di sospensione", + [_L_APP_SET_LANGUAGE] = "Lingua", + [_L_APP_SET_DFU] = "Aggiornamento firmware", + [_L_APP_SET_REBOOT] = "Riavvio del sistema", + [_L_APP_SET_RESET_DEFAULT] = "Ripristina impostazioni predefinite", + [_L_APP_SET_RESET_DEFAULT_SUCCESS] = "Ripristino riuscito!", + [_L_APP_SET_RESET_DEFAULT_CONFIRM] = "Conferma il ripristino delle impostazioni?", + [_L_15S] = "15 secondi", + [_L_30S] = "30 secondi", + [_L_45S] = "45 secondi", + [_L_1MIN] = "1 minuto", + [_L_2MIN] = "2 minuti", + [_L_3MIN] = "3 minuti", + [_L_AMIIBO_KEY_UNLOADED] = "Chiave Amiibo non caricata", + [_L_UPLOAD_KEY_RETAIL_BIN] = "Carica il file key_retail.bin nella directory root della memoria.", + [_L_KNOW] = "Ho Capito", + [_L_RANDOM_GENERATION] = "Tag casuale", + [_L_AUTO_RANDOM_GENERATION] = "Casuale automatico", + [_L_SHOW_QRCODE] = "Mostra codice QR", + [_L_DELETE_TAG] = "Elimina tag", + [_L_DELETE_TAG_CONFIRM] = "Conferma eliminazione %s\n?", + [_L_BACK_TO_DETAILS] = "[Torna ai dettagli del tag]", + [_L_BACK_TO_FILE_LIST] = "[Torna alla lista dei file]", + [_L_BACK_TO_MAIN_MENU] = "[Torna al menu principale]", + [_L_FORMAT] = "Formatta..", + [_L_FORMAT_STORAGE] = "Formatta memoria", + [_L_DELETE_ALL_DATA] = "Questo cancellerà tutti i dati.\nConferma la formattazione?", + [_L_DELETING_MESSAGE] = "Formattazione in corso ..", + [_L_MESSAGE] = "Messaggio", + [_L_CONFIRM] = "Conferma", + [_L_CANCEL] = "Annulla", + [_L_BACK_TO_LIST] = "[Torna alla lista]", + [_L_NOT_MOUNTED] = "Non montato", + [_L_MOUNTED_LFS] = "===Montato[LFS]===", + [_L_MOUNTED_FFS] = "===Montato[FFS]===", + [_L_TOTAL_SPACE] = "Totale", + [_L_AVAILABLE_SPACE] = "Libero", + [_L_NOT_AMIIBO_FILE] = "Questo non è un file\nAmiibo valido", + [_L_READ_FILE_FAILED] = "Errore nella lettura del file", + [_L_INPUT_FOLDER_NAME] = "Nome cartella:", + [_L_INPUT_AMIIBO_NAME] = "Nome Amiibo:", + [_L_DELETE] = "Elimina", + [_L_INPUT_NEW_NAME] = "Nuovo nome:", + [_L_INVALID_INPUT] = "Input non valido", + [_L_CREATE_NEW_FOLDER] = "Crea cartella..", + [_L_CREATE_NEW_TAG] = "Crea Amiibo..", + [_L_CREATE_NEW_TAG_BATCH] = "Crea Amiibo in serie..", + [_L_INPUT_TAG_NUM] = "Numero di tag:", + [_L_CREATE_TOO_MANY_NUM] = "Numero max di %d tag in serie.", + [_L_CREATING_TAG_BATCH] = "Creazione tag", + [_L_CREATING_TAG_FAILED] = "Creazione tag %s fallita!", + [_L_RENAME] = "Rinomina", + [_L_OPEN_FOLDER_FAILED] = "Errore nell'apertura della cartella", + [_L_RENAME_FAILED] = "Errore nella rinomina\nCodice errore", + [_L_MAIN_RETURN] = "[Torna indietro]", + [_L_RANDOM_MODE_MANUAL] = "Casuale (Manuale)", + [_L_RANDOM_MODE_AUTO] = "Casuale (Automatico)", + [_L_SEQUENCE_MODE] = "Modo sequenziale", + [_L_READ_WRITE_MODE] = "Modo lettura/scrittura", + [_L_AMIIBOLINK_V1] = "V1", + [_L_AMIIBOLINK_V2] = "V2", + [_L_AMILOOP] = "AmiLoop", + [_L_MODE] = "Modalità", + [_L_AUTO_RANDOM] = "Auto. casuale", + [_L_COMPATIBLE_MODE] = "Mod. Compatibilità", + [_L_TAG_DETAILS] = "[Torna ai dettagli]", + [_L_MAIN_MENU] = "[Menu principale]", + [_L_MODE_RANDOM] = "Casuale man.", + [_L_MODE_CYCLE] = "Sequenziale", + [_L_MODE_NTAG] = "Lett./Scritt.", + [_L_MODE_RANDOM_AUTO_GEN] = "Auto. casuale", + [_L_BLANK_TAG] = "Amiibo non assegnato", + [_L_APP_AMIIDB] = "Database Amiibo", + [_L_APP_AMMIDB_BROWSER] = "Esplora..", + [_L_APP_AMIIDB_SEARCH] = "Cerca..", + [_L_APP_AMIIDB_MY_FAVORITES] = "I miei preferiti..", + [_L_APP_AMIIDB_MY_TAGS] = "I miei Amiibo..", + [_L_APP_AMIIDB_SETTINGS] = "Impostazioni..", + [_L_APP_AMIIDB_EXIT] = "[Menu principale]", + [_L_APP_AMIIDB_BACK] = "[Torna indietro]", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Chiavi", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Caricate", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NON caricate", + [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Num. slot", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Preferito..", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Assegna a..", + [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Torna ai dettagli]", + [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Torna alla lista]", + [_L_APP_AMIIDB_SEARCH_HEAD] = "Cerca:", + [_L_APP_AMIIDB_MORE] = "[Più..]", + [_L_APP_AMIIDB_EMPTY_TAG] = "", + [_L_APP_AMIIDB_SLOT_DELETE] = "Elimina..", + [_L_APP_AMIIDB_CONFIRM] = "Conferma", + [_L_APP_AMIIDB_CANCEL] = "Annulla", + [_L_APP_AMIIDB_TIPS] = "Conferma", + [_L_APP_AMIIDB_NEW] = "Nuovo..", + [_L_APP_AMIIDB_EMPTY] = "Svuota..", + [_L_APP_AMIIDB_DELETE] = "Cancella..", + [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nuova cart. preferiti:", + [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Svuotare cart. preferiti?", + [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Conferma cancellazione?", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selez. cart. preferiti..", + [_L_APP_AMIIDB_FAV_SUCCESS] = "Preferito aggiunto!", + [_L_APP_AMIIDB_FAV_FAILED] = "Preferito non aggiunto!", + [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Assegnazione corretta", + [_L_APP_AMIIDB_SLOT_SAVE_FAILED] = "Assegnazione fallita!", + [_L_APP_CHAMELEON] = "Emula tag RFID", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Normale", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Nega", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignora", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", + [_L_APP_CHAMELEON_INITIALIZING] = "Inizializzazione ambiente.\nPer favore attendi..", + [_L_APP_CHAMELEON_CARD_SLOT] = "Slot", + [_L_APP_CHAMELEON_CARD_NICK] = "Nickname", + [_L_APP_CHAMELEON_CARD_ID] = "ID", + [_L_APP_CHAMELEON_CARD_TYPE] = "Tipo", + [_L_APP_CHAMELEON_CARD_DATA] = "Dati..", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzato..", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Impostazioni..", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Num. slot..", + [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Cambio nickname riuscito.", + [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Cambio nickname fallito!", + [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Nickname:", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carica..", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salva..", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inizializza..", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Dati inizializzati!", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "File non trovato", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dimensione file non corretta", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Caricamento file fallito", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Caricamento file riuscito", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Nome file:", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Errore nel salvataggio!", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Salvataggio riuscito", + [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Modalità personalizzata", + [_L_APP_CHAMELEON_CARD_GEN1A_MODE] = "Gen1A abilitata", + [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Genera nuovo UID", + [_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS] = "UID generato", + [_L_APP_CHAMELEON_CARD_GEN2_MODE] = "Gen2 abilitata", + [_L_APP_CHAMELEON_CARD_WRITE_MODE] = "Modalità scrittura", + [_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT] = "Input non valido!", + [_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM] = "Tipo di carta modificato\nInizializzare carta?", +}; diff --git a/fw/application/src/i18n/language.c b/fw/application/src/i18n/language.c index 877bf5d5..7e861989 100644 --- a/fw/application/src/i18n/language.c +++ b/fw/application/src/i18n/language.c @@ -8,10 +8,10 @@ typedef struct { const LanguageData const languageData[LANGUAGE_COUNT] = { [LANGUAGE_ZH_HANS] = {.strings = lang_zh_Hans}, [LANGUAGE_EN_US] = {.strings = lang_en_US}, [LANGUAGE_ZH_TW] = {.strings = lang_zh_TW}, [LANGUAGE_ES_ES] = {.strings = lang_es_ES}, - [LANGUAGE_HU_HU] = {.strings = lang_hu_HU}, [LANGUAGE_DE_DE] = {.strings = lang_de_DE}, - [LANGUAGE_FR_FR] = {.strings = lang_fr_FR}, [LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, - [LANGUAGE_PT_BR] = {.strings = lang_pt_BR}, [LANGUAGE_JA_JP] = {.strings = lang_ja_JP}, - [LANGUAGE_PT_PT] = {.strings = lang_pt_PT}, + [LANGUAGE_IT_IT] = {.strings = lang_it_IT}, [LANGUAGE_HU_HU] = {.strings = lang_hu_HU}, + [LANGUAGE_DE_DE] = {.strings = lang_de_DE}, [LANGUAGE_FR_FR] = {.strings = lang_fr_FR}, + [LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, [LANGUAGE_PT_BR] = {.strings = lang_pt_BR}, + [LANGUAGE_JA_JP] = {.strings = lang_ja_JP}, [LANGUAGE_PT_PT] = {.strings = lang_pt_PT}, }; // 当前语言设置 (Current language setting) @@ -39,6 +39,8 @@ const char *getLangDesc(Language lang) { return "繁體中文(臺灣)"; } else if (lang == LANGUAGE_ES_ES) { return "Español"; + } else if (lang == LANGUAGE_IT_IT) { + return "Italiano"; } else if (lang == LANGUAGE_HU_HU) { return "Magyar"; } else if (lang == LANGUAGE_DE_DE) { diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index 2828b9e0..fa3cad30 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -15,6 +15,7 @@ typedef enum { LANGUAGE_EN_US, LANGUAGE_ZH_TW, LANGUAGE_ES_ES, + LANGUAGE_IT_IT, LANGUAGE_HU_HU, LANGUAGE_DE_DE, LANGUAGE_FR_FR, @@ -29,6 +30,7 @@ extern const char* lang_en_US[_L_COUNT]; extern const char* lang_zh_Hans[_L_COUNT]; extern const char* lang_zh_TW[_L_COUNT]; extern const char* lang_es_ES[_L_COUNT]; +extern const char* lang_it_IT[_L_COUNT]; extern const char* lang_hu_HU[_L_COUNT]; extern const char* lang_de_DE[_L_COUNT]; extern const char* lang_fr_FR[_L_COUNT]; diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 2a1de92a..396eb223 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -1,167 +1,167 @@ -CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP -_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン -_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ -_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン] -_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ] -_L_BACK,Back,返回,返回,[Atrás],Vissza,[Zurück],Retour,Terug,Voltar,戻る -_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー -_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード -_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo-Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ -_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink -_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送 -_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送 -_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videospieler,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー -_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定 -_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン -_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ -_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ -_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト -_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト -_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト -_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ -_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü-Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション -_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO-Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー -_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ -_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnell-Wecken,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動 -_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Schlaf-Timeout,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト -_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語 -_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw.-Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新 -_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System-Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動 -_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す -_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化 -_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,, -_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒 -_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒 -_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒 -_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分 -_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分 -_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Min,3 min.,3 min.,3 min.,3分 -_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Schlüssel nicht gefunden,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない -_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。 -_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解 -_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige Tag-Nummer,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化 -_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Autom. random.,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化 -_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR-Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示 -_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除 -_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Bestätigen Sie das\nLöschen %s?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか? -_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る -_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,[Zurück zur Liste],Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る -_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,[Hauptmenü],Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る -_L_FORMAT,Format,格式化,格式化,Formatear..,"Formátum ",Formatieren,Format,Formatteren,Formatar,フォーマット -_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット -_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか? -_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formázás ..,Formatierung..,Formatage ..,Formatteren ..,Formatando ..,書式設定 .. -_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Nachricht,Message,Bericht,Mensagem,メッセージ -_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認 -_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル -_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,[Zurück zur Liste],Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト -_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht ausgerüstet,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません -_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]=== -_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]=== -_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量 -_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量 -_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Dies ist keine Amiibo-Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません -_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました -_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名: -_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo-Name eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名: -_L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除 -_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください: -_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力 -_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成.. -_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成.. -_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Kötegelt Új Címke Létrehozása..,Mehrere Tags..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成.. -_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag-Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力: -_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Nur maximal %d Tags in einem Stapel erstellt.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。 -_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成 -_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました! -_L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更 -_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,"Mappa megnyitása sikertelen ",Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした -_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード -_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン] -_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動) -_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動) -_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード -_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreib-Modus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード -_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1 -_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2 -_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop -_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード -_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Autom. randomisieren,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化 -_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompat. Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード -_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細] -_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー] -_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Manuell,Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動) -_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル -_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lese/Schreib,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト -_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Automatisch,Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動) -_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC-Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ -_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo-Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース -_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Böngésző..,Browser..,Naviguer..,Browser..,Navegador..,ブラウザ.. -_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索.. -_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り.. -_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo.. -_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定.. -_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了] -_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る] -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,fehlend,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません -_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号 -_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り.. -_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存.. -_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る] -_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る] -_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する: -_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..] -_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,, -_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット.. -_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する -_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする -_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する -_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規.. -_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空.. -_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除.. -_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Favoriten-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ: -_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Favoritenordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか? -_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Favoritenordner löschen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか? -_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択.. -_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,"Favorit erstellt ",Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました -_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorit fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした! -_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました -_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました! -_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten-Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ -_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常 -_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否 -_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視 -_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Zwischenspeicher,Cache,Cache,キャッシュ -_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 .. -_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット -_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム -_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID -_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ -_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ.. -_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定.. -_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Cella Beállításai..,Steckplätze..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定.. -_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Cella Száma..,Steckplätze,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号.. -_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました -_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした! -_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitzname eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください: -_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード.. -_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功 -_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません -_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße inkorrekt,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません -_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗 -_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Laden erfolgreich,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功 -_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Dateinamen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名: -_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました! -_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Speichern erfolgreich,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました -_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzermodus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード -_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効 -_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Randomisierte UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化 -_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成 -_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効 -_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード -_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力 -_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか? \ No newline at end of file +CODE,en_US,zh_Hans,zh_TW,es_ES,it_IT,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP +_L_ON,ON,开,開,SI,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン +_L_OFF,OFF,关,關,NO,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ +_L_ON_F,[ON],[开],[開],[SI],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン] +_L_OFF_F,[OFF],[关],[關],[NO],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ] +_L_BACK,Back,返回,返回,[Atrás],Indietro,Vissza,[Zurück],Retour,Terug,Voltar,戻る +_L_ERR,Error,错误,錯誤,Error,Errore,Hiba,Fehler,Erreur,Fout,Erro,エラー +_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Codice errore,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード +_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Emulatore Amiibo,Amiibo Emulátor,Amiibo-Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ +_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink +_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,Trasferimento file BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送 +_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,Trasferimento file BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送 +_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Lettore video,Video Lejátszó,Videospieler,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー +_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Impostazioni,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定 +_L_APP_SET_VERSION,Version,版本,版本,Versión,Versione,Verzió,Version,Version,Versie,Versão,バージョン +_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Usato,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ +_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Memoria esterna,Külső Tároló,Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ +_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,Contrasto OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト +_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,Contrasto OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト +_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Luminosità,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト +_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Luminosità schermo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ +_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Animazione menu,Menü Animáció,Menü-Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション +_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,Batteria LiPO,LiPO Akkumulátor,LiPO-Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー +_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Memoria usata,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ +_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Risveglio rapido,Gyors Ébresztés,Schnell-Wecken,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動 +_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Timeout di sospensione,Alvási Időkorlát,Schlaf-Timeout,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト +_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Lingua,Nyelv,Sprache,Langue,Taal,Idioma,言語 +_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Aggiornamento firmware,Firmware Frissítés,Firmw.-Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新 +_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Riavvio del sistema,Rendszer Újraindítása,System-Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動 +_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Ripristina impostazioni predefinite,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す +_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Ripristino riuscito!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化 +_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,Conferma il ripristino delle impostazioni?,,Auf Standardeinstellungen zurücksetzen?,,,, +_L_15S,15 Seconds,15秒,15秒,15 segundos,15 secondi,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒 +_L_30S,30 Seconds,30秒,30秒,30 segundos,30 secondi,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒 +_L_45S,45 Seconds,45秒,45秒,45 segundos,45 secondi,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒 +_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分 +_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 minuti,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分 +_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 minuti,3 min.,3 Min,3 min.,3 min.,3 min.,3分 +_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Chiave Amiibo non caricata,Amiibo kulcs nincs betöltve,Schlüssel nicht gefunden,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない +_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Carica il file key_retail.bin nella directory root della memoria.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。 +_L_KNOW,Got it,知道了,知道了,Entendido,Ho Capito,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解 +_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Tag casuale,Véletlengenerátor,Zufällige Tag-Nummer,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化 +_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Casuale automatico,Automat. Véletlengenerátor,Autom. random.,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化 +_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,Mostra codice QR,QR-kód Megjelenítése,QR-Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示 +_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Elimina tag,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除 +_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Conferma eliminazione %s\n?,Törlés Megerősítése?,Bestätigen Sie das\nLöschen %s?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか? +_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],[Torna ai dettagli del tag],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る +_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],[Torna alla lista dei file],Vissza a Fájl Listához,[Zurück zur Liste],Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る +_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],[Torna al menu principale],Vissza a Főmenübe,[Hauptmenü],Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る +_L_FORMAT,Format,格式化,格式化,Formatear..,Formatta..,"Formátum ",Formatieren,Format,Formatteren,Formatar,フォーマット +_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formatta memoria,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット +_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Questo cancellerà tutti i dati.\nConferma la formattazione?,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか? +_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formattazione in corso ..,Formázás ..,Formatierung..,Formatage ..,Formatteren ..,Formatando ..,書式設定 .. +_L_MESSAGE,Message,提示,提示,Inicializar,Messaggio,Üzenet,Nachricht,Message,Bericht,Mensagem,メッセージ +_L_CONFIRM,Confirm,确定,確定,Confirmar,Conferma,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認 +_L_CANCEL,Cancel,取消,取消,Cancelar,Annulla,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル +_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],[Torna alla lista],Vissza a Listához,[Zurück zur Liste],Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト +_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Non montato,Nincs Felszerelve,Speicher nicht ausgerüstet,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません +_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Montato[LFS]===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]=== +_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Montato[FFS]===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]=== +_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Totale,Össz.,Gesamt,Total,Totaal,Total,トータル容量 +_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Libero,Ingyenes,Frei,Libre,Vrij,Livre,空き容量 +_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Questo non è un file\nAmiibo valido,Ez nem Amiibo Fájl,Dies ist keine Amiibo-Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません +_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Errore nella lettura del file,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました +_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Nome cartella:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名: +_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Nome Amiibo:,Amiibo Neve:,Amiibo-Name eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名: +_L_DELETE,Delete,删除,刪除,Borrar,Elimina,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除 +_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Nuovo nome:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください: +_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Input non valido,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力 +_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Crea cartella..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成.. +_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Crea Amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成.. +_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Crea Amiibo in serie..,Kötegelt Új Címke Létrehozása..,Mehrere Tags..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成.. +_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Numero di tag:,Beviteli Címke Száma:,Tag-Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力: +_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Numero max di %d tag in serie.,Max. létrehozható címke egy kötegben %d,Nur maximal %d Tags in einem Stapel erstellt.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。 +_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Creazione tag,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成 +_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Creazione tag %s fallita!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました! +_L_RENAME,Rename,重命名,重新命名,Renombrar,Rinomina,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更 +_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Errore nell'apertura della cartella,"Mappa megnyitása sikertelen ",Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした +_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Errore nella rinomina\nCodice errore,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード +_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[Torna indietro],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン] +_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Casuale (Manuale),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動) +_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Casuale (Automatico),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動) +_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Modo sequenziale,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード +_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Modo lettura/scrittura,Olvasás-írás Mód,Lese-Schreib-Modus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード +_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1 +_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2 +_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop +_L_MODE,Mode,模式,模式,Modo,Modalità,Mód,Modus,Mode,Modus,Modo,モード +_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Auto. casuale,Automat. Randomizálás,Autom. randomisieren,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化 +_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Mod. Compatibilità,Kompatibilis Mód,Kompat. Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード +_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Torna ai dettagli],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細] +_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Menu principale],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー] +_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Casuale man.,Random (Kézi),Manuell,Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動) +_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Sequenziale,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル +_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Lett./Scritt.,Olvasás/Írás,Lese/Schreib,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト +_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Auto. casuale,Random (Automat.),Automatisch,Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動) +_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Amiibo non assegnato,Üres NFC Címke,Leerer NFC-Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ +_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Database Amiibo,Amiibo Adatbázis,Amiibo-Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース +_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Esplora..,Böngésző..,Browser..,Naviguer..,Browser..,Navegador..,ブラウザ.. +_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Cerca..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索.. +_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,I miei preferiti..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り.. +_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,I miei Amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo.. +_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Impostazioni..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定.. +_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Menu principale],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了] +_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Torna indietro],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る] +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Chiavi,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Caricate,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NON caricate,NINCS betöltve,fehlend,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません +_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Num. slot,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号 +_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Preferito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り.. +_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Assegna a..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存.. +_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Torna ai dettagli],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る] +_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Torna alla lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る] +_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Cerca:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する: +_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Più..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..] +_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,,<Üres Amiibo>,,,,, +_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Elimina..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット.. +_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Conferma,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する +_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Annulla,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする +_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Conferma,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する +_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Nuovo..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規.. +_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Svuota..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空.. +_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Cancella..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除.. +_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Nuova cart. preferiti:,Új Kedvenc Mappa:,Neuer Favoriten-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ: +_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Svuotare cart. preferiti?,Üres Kedvenc Mappa?,Favoritenordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか? +_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Conferma cancellazione?,Törlés Megerősítése?,Favoritenordner löschen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか? +_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Selez. cart. preferiti..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択.. +_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Preferito aggiunto!,Kedvenc Sikeres,"Favorit erstellt ",Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました +_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Preferito non aggiunto!,Kedvenc Sikertelen!,Favorit fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした! +_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Assegnazione corretta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました +_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Assegnazione fallita!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました! +_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Emula tag RFID,Kártya Emulátor,Karten-Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ +_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normale,Normál,Normal,Normal,Normaal,Normal,通常 +_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Nega,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否 +_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Ignora,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視 +_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Cache,Elrejt,Cache,Zwischenspeicher,Cache,Cache,キャッシュ +_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Inizializzazione ambiente.\nPer favore attendi..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 .. +_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Slot,Cella,Steckplatz,Fente,Slot,Slot,スロット +_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Nickname,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム +_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID +_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ +_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Dati..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ.. +_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Avanzato..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定.. +_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Impostazioni..,Cella Beállításai..,Steckplätze..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定.. +_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Num. slot..,Cella Száma..,Steckplätze,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号.. +_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Cambio nickname riuscito.,Becenév Beállítása Sikeres,Spitzname erfolgreich,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました +_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Cambio nickname fallito!,Becenév Beállítása Sikertelen!,Spitzname fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした! +_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Nickname:,Becenév Bevitele:,Spitzname eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください: +_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Carica..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード.. +_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Salva..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存.. +_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Inizializza..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化.. +_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Dati inizializzati!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功 +_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,File non trovato,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません +_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Dimensione file non corretta,Fájl Mérete Nem Egyezik,Dateigröße inkorrekt,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません +_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Caricamento file fallito,Fájl betöltése Sikertelen,Laden fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗 +_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Caricamento file riuscito,Fájl Betöltése Sikeres,Laden erfolgreich,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功 +_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Nome file:,Bemeneti Fájl Neve:,Dateinamen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名: +_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Errore nel salvataggio!,Fájl Mentése Sikertelen!,Speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました! +_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Salvataggio riuscito,Fájl Mentése Sikeres,Speichern erfolgreich,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました +_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Modalità personalizzata,Egyéni Mód,Benutzermodus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード +_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A abilitata,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効 +_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Genera nuovo UID,Véletlen UID,Randomisierte UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化 +_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,UID generato,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成 +_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 abilitata,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効 +_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Modalità scrittura,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード +_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Input non valido!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力 +_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,Tipo di carta modificato\nInizializzare carta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか? \ No newline at end of file From 7ec8d572518c7903e437cb581ef55a0cb2bb8375 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Sat, 30 Mar 2024 09:30:54 +0100 Subject: [PATCH 009/101] changed it_IT language index --- fw/application/src/i18n/language.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index fa3cad30..ede93412 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -30,7 +30,6 @@ extern const char* lang_en_US[_L_COUNT]; extern const char* lang_zh_Hans[_L_COUNT]; extern const char* lang_zh_TW[_L_COUNT]; extern const char* lang_es_ES[_L_COUNT]; -extern const char* lang_it_IT[_L_COUNT]; extern const char* lang_hu_HU[_L_COUNT]; extern const char* lang_de_DE[_L_COUNT]; extern const char* lang_fr_FR[_L_COUNT]; @@ -38,7 +37,7 @@ extern const char* lang_nl_NL[_L_COUNT]; extern const char* lang_pt_BR[_L_COUNT]; extern const char* lang_ja_JP[_L_COUNT]; extern const char* lang_pt_PT[_L_COUNT]; - +extern const char* lang_it_IT[_L_COUNT]; // 获取字符串的函数 (Get language string function) const char* getLangString(L_StringID stringID); From 2388165d37a9a727945a4f59d6e21e6abbc3dae4 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Sat, 30 Mar 2024 14:22:49 +0100 Subject: [PATCH 010/101] lang IT index moved after French --- fw/application/src/i18n/language.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index ede93412..0ba2b0d7 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -15,10 +15,10 @@ typedef enum { LANGUAGE_EN_US, LANGUAGE_ZH_TW, LANGUAGE_ES_ES, - LANGUAGE_IT_IT, LANGUAGE_HU_HU, LANGUAGE_DE_DE, LANGUAGE_FR_FR, + LANGUAGE_IT_IT, LANGUAGE_NL_NL, LANGUAGE_PT_BR, LANGUAGE_JA_JP, From 76b9b4e7eb0adb8d28cefa9b4062d3ad67ce33ab Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Sat, 30 Mar 2024 14:34:32 +0100 Subject: [PATCH 011/101] lang IT index moved after last --- fw/application/src/i18n/language.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index 0ba2b0d7..42a2bb72 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -18,11 +18,11 @@ typedef enum { LANGUAGE_HU_HU, LANGUAGE_DE_DE, LANGUAGE_FR_FR, - LANGUAGE_IT_IT, LANGUAGE_NL_NL, LANGUAGE_PT_BR, LANGUAGE_JA_JP, - LANGUAGE_PT_PT, + LANGUAGE_PT_PT, + LANGUAGE_IT_IT, LANGUAGE_COUNT } Language; From 95dfce1c7b34dc88dd72787e14ae47e42569de9a Mon Sep 17 00:00:00 2001 From: John Veness Date: Sat, 30 Mar 2024 14:26:42 +0000 Subject: [PATCH 012/101] Fix links again in 01-Hardware.md --- docs/en/01-Hardware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/01-Hardware.md b/docs/en/01-Hardware.md index 7cf29f0c..60649113 100644 --- a/docs/en/01-Hardware.md +++ b/docs/en/01-Hardware.md @@ -8,7 +8,7 @@ You can use [Kicad 6](https://www.kicad.org/download/) to open and edit the PCB # BOM * The BoM is summaried on the doc: [RevC Bill of Materials Buying Guide](01+1-RevC-bom.md) -* The Bill of Materials in interactive format are also available, you can download it from: [RevC InteractiveHtmlBom]([docs/RevC-ibom.html](https://github.com/JohnVeness/pixl.js/blob/main/docs/RevC-ibom.html)) +* The Bill of Materials in interactive format are also available, you can download it from: [RevC InteractiveHtmlBom](https://github.com/solosky/pixl.js/blob/main/docs/RevC-ibom.html) # Pictures From c75cedfa91cacc399d1ffe5980debbe049bdc7a3 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Sat, 30 Mar 2024 21:43:07 +0100 Subject: [PATCH 013/101] prime traduzioni del database amiibo, zelda botw-totk --- fw/application/.gitignore | 1 + fw/application/src/amiidb/db_amiibo.c | 2 +- fw/application/src/amiidb/db_link.c | 52 +++++++++++++-------------- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/fw/application/.gitignore b/fw/application/.gitignore index 90493825..59967ff3 100644 --- a/fw/application/.gitignore +++ b/fw/application/.gitignore @@ -1,3 +1,4 @@ src/amiibo_private.c src/version.inc.h src/version.json +**/.DS_Store \ No newline at end of file diff --git a/fw/application/src/amiidb/db_amiibo.c b/fw/application/src/amiidb/db_amiibo.c index 7fc7acc1..cbbbd602 100644 --- a/fw/application/src/amiidb/db_amiibo.c +++ b/fw/application/src/amiidb/db_amiibo.c @@ -2,7 +2,7 @@ const db_amiibo_t amiibo_list[] = { {0x01000000, 0x00040002, "Link", "林克"}, {0x01000000, 0x034b0902, "Link - Ocarina of Time", "林克 - 时之笛"}, -{0x01000000, 0x034c0902, "Link - Majora's Mask", "林克 - 假面"}, +{0x01000000, 0x034c0902, "Link - Maschera di Majora", "林克 - 假面"}, {0x01000000, 0x034d0902, "Link - Twilight Princess", "林克 - 黄昏公主"}, {0x01000000, 0x034e0902, "Link - Skyward Sword", "林克 - 天空之剑"}, {0x01000000, 0x034f0902, "8-Bit Link", "像素林克"}, diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index c3bd7674..acd804b0 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -1,33 +1,29 @@ #include "db_header.h" const db_link_t link_list[] = { -{1, 0x01000000, 0x034f0902, "Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比"}, -{1, 0x01410000, 0x035c0902, "Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, -{1, 0x01050000, 0x03580902, "Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石"}, -{1, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, -{1, 0x01020100, 0x041a0902, "Gerudo-King Fabric", "沼气之枪/滑翔伞皮肤布料"}, -{1, 0x01400000, 0x03550902, "Dragonbone Boko related gear/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, -{1, 0x01000000, 0x00040002, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, -{1, 0x01000000, 0x03530902, "Falcon Bow/Paraglider Skin Material/Fish & Meat/Knight's & Royal Bow/Various Arrows", "游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭"}, -{1, 0x01000000, 0x03990902, "Dream Weaver Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish", "织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼"}, -{1, 0x01000000, 0x034c0902, "Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇"}, -{1, 0x01000000, 0x034b0902, "Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉"}, -{1, 0x01000000, 0x03540902, "Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇"}, -{1, 0x01000000, 0x034e0902, "Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比"}, -{1, 0x01000000, 0x04180902, "Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, -{1, 0x01000000, 0x034d0902, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, -{1, 0x01030000, 0x024f0902, "Meat/Paraglider Skin Material", "肉/滑翔伞皮肤布料"}, -{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼"}, -{1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石"}, -{1, 0x01010100, 0x00170002, "Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇"}, -{1, 0x01000100, 0x00160002, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼"}, -{1, 0x01000100, 0x03500902, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼"}, -{1, 0x01010000, 0x03520902, "Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜"}, -{1, 0x01060000, 0x03590902, "Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉"}, -{1, 0x01000000, 0x037c0002, "Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish", "时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼"}, -{1, 0x01010000, 0x000e0002, "Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜"}, -{1, 0x01010000, 0x03560902, "Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜"}, -{1, 0x01010300, 0x04140902, "Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜"}, -{1, 0x01010000, 0x04190902, "Princess Zelda Fabric", "塞尔达公主滑翔伞布料"}, +{1, 0x01000000, 0x034f0902, "Set Abito del Campione Iniziale/Tessuto della Paravela/Spada & Scudo del Viaggiatore e del Soldato/Rupia", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比"}, +{1, 0x01410000, 0x035c0902, "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, +{1, 0x01050000, 0x03580902, "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石"}, +{1, 0x01020100, 0x001b0002, "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, +{1, 0x01020100, 0x041a0902, "Tessuto del Re Gerudo", "沼气之枪/滑翔伞皮肤布料"}, +{1, 0x01400000, 0x03550902, "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, +{1, 0x01000000, 0x00040002, "Set Abito del Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, +{1, 0x01000000, 0x03530902, "Arco Falcone/Tessuto della Paravela/Carne & Pesce/Arco del Cavaliere & Reale/Vari tipi di frecce", "游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭"}, +{1, 0x01000000, 0x03990902, "Set Abito del Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spada a due mani del Cavaliere & Reale/Pesce", "织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼"}, +{1, 0x01000000, 0x034c0902, "Set Abito della Divinità Feroce/Spada della Divinità Feroce/Tessuto della Paravela/Funghi", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇"}, +{1, 0x01000000, 0x034b0902, "Set Abito dell'Eroe del Tempo/Spada Suprema/Tessuto della Paravela/Carne", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉"}, +{1, 0x01000000, 0x03540902, "Redini & Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇"}, +{1, 0x01000000, 0x034e0902, "Set Abito della Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比"}, +{1, 0x01000000, 0x04180902, "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, +{1, 0x01000000, 0x034d0902, "Set Abito del Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, +{1, 0x01030000, 0x024f0902, "Carne/Tessuto della Paravela", "肉/滑翔伞皮肤布料"}, +{1, 0x01070000, 0x035a0902, "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼"}, +{1, 0x01080000, 0x035b0902, "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石"}, +{1, 0x01010100, 0x00170002, "Set Abito Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇"}, +{1, 0x01000100, 0x00160002, "Set Abito dell'Eroe del Vento/Tessuto della Paravela/Boomerang Brezza Marina/Spada & Scudo del Viaggiatore/Pesce", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼"}, +{1, 0x01000100, 0x03500902, "Set Abito dell'Eroe del Vento/Tessuto della Paravela/Boomerang Brezza Marina/Spada & Scudo del Viaggiatore/Pesce", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼"}, +{1, 0x01010000, 0x03520902, "Scudo dell'Eroe/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota", "勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜"}, +{1, 0x01060000, 0x03590902, "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉"}, +{1, 0x01010000, 0x04190902, "Tessuto della Principessa Zelda", "塞尔达公主滑翔伞布料"}, {2, 0x01010300, 0x04140902, "", "随时随地传送"}, {3, 0x01020100, 0x001b0002, "", "暂无简介"}, {3, 0x01030000, 0x024f0902, "", "暂无简介"}, From a5e4827d27e20ab76e8949d9cdbf6923d0be69c9 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Mon, 1 Apr 2024 18:29:05 +0200 Subject: [PATCH 014/101] tradotti dettagli effetti amiibo su botw e totk --- fw/application/src/amiidb/db_link.c | 56 +- fw/data/amiidb_link.csv | 2457 ++++++++++++++------------- fw/data/i18n.csv | 324 ++-- 3 files changed, 1419 insertions(+), 1418 deletions(-) diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index acd804b0..a39357af 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -1,9 +1,9 @@ #include "db_header.h" const db_link_t link_list[] = { -{1, 0x01000000, 0x034f0902, "Set Abito del Campione Iniziale/Tessuto della Paravela/Spada & Scudo del Viaggiatore e del Soldato/Rupia", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比"}, +{1, 0x01000000, 0x034f0902, "Set Abito delle Origini/Tessuto della Paravela/Spada & Scudo del Viaggiatore e del Soldato/Rupie", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比"}, {1, 0x01410000, 0x035c0902, "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, {1, 0x01050000, 0x03580902, "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石"}, -{1, 0x01020100, 0x001b0002, "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, +{1, 0x01020100, 0x001b0002, "Spada del Crepuscolo/rupie/Gemma/Frammento di Stella Bomba", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, {1, 0x01020100, 0x041a0902, "Tessuto del Re Gerudo", "沼气之枪/滑翔伞皮肤布料"}, {1, 0x01400000, 0x03550902, "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, {1, 0x01000000, 0x00040002, "Set Abito del Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, @@ -12,7 +12,7 @@ const db_link_t link_list[] = { {1, 0x01000000, 0x034c0902, "Set Abito della Divinità Feroce/Spada della Divinità Feroce/Tessuto della Paravela/Funghi", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇"}, {1, 0x01000000, 0x034b0902, "Set Abito dell'Eroe del Tempo/Spada Suprema/Tessuto della Paravela/Carne", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉"}, {1, 0x01000000, 0x03540902, "Redini & Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇"}, -{1, 0x01000000, 0x034e0902, "Set Abito della Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比"}, +{1, 0x01000000, 0x034e0902, "Set Abito della Spada del Cielo/Spada del Cielo/Tessuto della Paravela/rupie", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比"}, {1, 0x01000000, 0x04180902, "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, {1, 0x01000000, 0x034d0902, "Set Abito del Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, {1, 0x01030000, 0x024f0902, "Carne/Tessuto della Paravela", "肉/滑翔伞皮肤布料"}, @@ -31,31 +31,31 @@ const db_link_t link_list[] = { {3, 0x01000100, 0x00160002, "", "暂无简介"}, {3, 0x01000000, 0x037c0002, "", "暂无简介"}, {3, 0x01010000, 0x000e0002, "", "暂无简介"}, -{4, 0x01000000, 0x034f0902, "Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee", "初始勇者服套装/旅人&士兵剑&盾/卢比"}, -{4, 0x01410000, 0x035c0902, "Champion's Tunic Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, -{4, 0x01050000, 0x03580902, "Rudania's Divine Helm/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/劈石剑/钻石"}, -{4, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, -{4, 0x01400000, 0x03550902, "Guardian Weapons/Shields/Spears/Core/Treasure/Arrow", "守护者枪 盾 剑/古代兵装 核心/宝石 箭"}, -{4, 0x01000000, 0x00040002, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马"}, -{4, 0x01000000, 0x03530902, "Falcon Bow/Fish & Meat/Knight's and Royal Bow/Various Arrows", "游隼弓/鱼&肉/骑士&王族之弓/各种箭"}, -{4, 0x01000000, 0x03990902, "Dreamweaver Set/Knight's and Royal Spear/Sword/and Claymore/Fish", "织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼"}, -{4, 0x01000000, 0x034c0902, "Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom", "鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇"}, -{4, 0x01000000, 0x034b0902, "Time Traveler Set/Biggoron Sword/Meat", "时之勇者服套装/大鼓隆之剑/肉"}, -{4, 0x01000000, 0x03540902, "Bridle and Saddle/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/月光匕首/蘑菇"}, -{4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比"}, -{4, 0x01000000, 0x034d0902, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马"}, -{4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼"}, -{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼"}, -{4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石"}, -{4, 0x01010100, 0x00170002, "Sheik Set/Eightfold Blade/Mushroom", "希克服套装/戒心刀/蘑菇"}, -{4, 0x01000100, 0x00160002, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼"}, -{4, 0x01000100, 0x03500902, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼"}, -{4, 0x01010000, 0x03520902, "Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/星星碎片&宝石/草 果实 胡萝卜"}, -{4, 0x01060000, 0x03590902, "Naydra's Divine Helm/Gurudo related gear/Meat", "娜波力斯*神兽兵装/格鲁德相关装备/肉"}, -{4, 0x01000000, 0x037c0002, "Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish", "时之勇者服套装/骑士&王族枪 剑 双手剑/鱼"}, -{4, 0x01010000, 0x000e0002, "Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/星星碎片&宝石/草 果实 胡萝卜"}, -{4, 0x01010000, 0x03560902, "Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/星星碎片&宝石/草 果实 胡萝卜"}, -{4, 0x01010300, 0x04140902, "Star Fragment & Gem/Grass/Fruit/Carrot", "星星碎片&宝石/草 果实 胡萝卜"}, +{4, 0x01000000, 0x034f0902, "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/rupie", "初始勇者服套装/旅人&士兵剑&盾/卢比"}, +{4, 0x01410000, 0x035c0902, "Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, +{4, 0x01050000, 0x03580902, "Elmo Divino di Rudania/Rompisassi/Diamante", "鲁达尼亚*神兽兵装/劈石剑/钻石"}, +{4, 0x01020100, 0x001b0002, "Spada del Crepuscolo/rupie/Gemma/Frammento di Stella Bomba", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, +{4, 0x01400000, 0x03550902, "Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano", "守护者枪 盾 剑/古代兵装 核心/宝石 箭"}, +{4, 0x01000000, 0x00040002, "Set Crepuscolo/Spada & Scudo del Viaggiatore/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/水果/马"}, +{4, 0x01000000, 0x03530902, "Arco Falcone/Pesce & Carne/Arco del Cavaliere e Reale/Vari tipi di frecce", "游隼弓/鱼&肉/骑士&王族之弓/各种箭"}, +{4, 0x01000000, 0x03990902, "Set Tessitore di Sogni/Lancia & Spada & Spadone del Cavaliere e Reale/Pesce", "织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼"}, +{4, 0x01000000, 0x034c0902, "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi", "鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇"}, +{4, 0x01000000, 0x034b0902, "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne", "时之勇者服套装/大鼓隆之剑/肉"}, +{4, 0x01000000, 0x03540902, "Redini e Sella/Scimitarra di Luce/Funghi", "马缰绳&马鞍/月光匕首/蘑菇"}, +{4, 0x01000000, 0x034e0902, "Set Spada del Cielo/Spada del Cielo/Spada & Scudo del Soldato e del Viaggiatore/rupie", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比"}, +{4, 0x01000000, 0x034d0902, "Set Crepuscolo/Spada & Scudo del Viaggiatore/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/水果/马"}, +{4, 0x01030000, 0x024f0902, "Link Lupo a 20 Cuori", "20心林克狼"}, +{4, 0x01070000, 0x035a0902, "Elmo Divino di Ruto/Lancia Lunga d'Argento/Pesce", "露塔*神兽兵装/银鳞之枪/鱼"}, +{4, 0x01080000, 0x035b0902, "Elmo Divino di Medoh/Arco Falcone/Frutto/Diamante", "梅德*神兽兵装/游隼弓/水果 钻石"}, +{4, 0x01010100, 0x00170002, "Set Sheikah/Lama a Otto Facce/Funghi", "希克服套装/戒心刀/蘑菇"}, +{4, 0x01000100, 0x00160002, "Set Eroe del Vento/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼"}, +{4, 0x01000100, 0x03500902, "Set Eroe del Vento/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼"}, +{4, 0x01010000, 0x03520902, "Scudo Hyliano/Frammento di Stella & Gemma/Erba/Frutto/Carota", "勇者盾/星星碎片&宝石/草 果实 胡萝卜"}, +{4, 0x01060000, 0x03590902, "Elmo Divino di Naydra/Equipaggiamento correlato a Gurudo/Carne", "娜波力斯*神兽兵装/格鲁德相关装备/肉"}, +{4, 0x01000000, 0x037c0002, "Set Viaggiatore nel Tempo/Lancia & Spada & Spadone del Cavaliere e Reale/Pesce", "时之勇者服套装/骑士&王族枪 剑 双手剑/鱼"}, +{4, 0x01010000, 0x000e0002, "Arco del Crepuscolo/Frammento di Stella & Gemma/Erba/Frutto/Carota", "黄昏弓/星星碎片&宝石/草 果实 胡萝卜"}, +{4, 0x01010000, 0x03560902, "Scudo dell'Alba/Frammento di Stella & Gemma/Erba/Frutto/Carota", "太阳盾/星星碎片&宝石/草 果实 胡萝卜"}, +{4, 0x01010300, 0x04140902, "Frammento di Stella & Gemma/Erba/Frutto/Carota", "星星碎片&宝石/草 果实 胡萝卜"}, {5, 0x01000000, 0x034f0902, "", "暂无简介"}, {5, 0x01410000, 0x035c0902, "", "暂无简介"}, {5, 0x01050000, 0x03580902, "", "暂无简介"}, diff --git a/fw/data/amiidb_link.csv b/fw/data/amiidb_link.csv index 921841db..0b772de6 100644 --- a/fw/data/amiidb_link.csv +++ b/fw/data/amiidb_link.csv @@ -1,1228 +1,1229 @@ -1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比 -1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料 -1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石 -1,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb,黄昏剑/卢比/宝石/星星碎片炸药桶 -1,01020100041a0902,Gerudo-King Fabric,沼气之枪/滑翔伞皮肤布料 -1,0140000003550902,Dragonbone Boko related gear/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料 -1,0100000000040002,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马 -1,0100000003530902,Falcon Bow/Paraglider Skin Material/Fish & Meat/Knight's & Royal Bow/Various Arrows,游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭 -1,0100000003990902,Dream Weaver Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼 -1,01000000034c0902,Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom,鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇 -1,01000000034b0902,Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat,时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉 -1,0100000003540902,Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom,马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇 -1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比 -1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇 -1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马 -1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料 -1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼 -1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石 -1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇 -1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼 -1,0100010003500902,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼 -1,0101000003520902,Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜 -1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉 -1,01000000037c0002,Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼 -1,01010000000e0002,Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜 -1,0101000003560902,Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜 -1,0101030004140902,Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜 -1,0101000004190902,Princess Zelda Fabric,塞尔达公主滑翔伞布料 -2,0101030004140902,,随时随地传送 -3,01020100001b0002,,暂无简介 -3,01030000024f0902,,暂无简介 -3,0101010000170002,,暂无简介 -3,0100010000160002,,暂无简介 -3,01000000037c0002,,暂无简介 -3,01010000000e0002,,暂无简介 -4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比 -4,01410000035c0902,Champion's Tunic Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇 -4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石 -4,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel,黄昏剑/卢比/宝石/星星碎片炸药桶 -4,0140000003550902,Guardian Weapons/Shields/Spears/Core/Treasure/Arrow,守护者枪 盾 剑/古代兵装 核心/宝石 箭 -4,0100000000040002,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马 -4,0100000003530902,Falcon Bow/Fish & Meat/Knight's and Royal Bow/Various Arrows,游隼弓/鱼&肉/骑士&王族之弓/各种箭 -4,0100000003990902,Dreamweaver Set/Knight's and Royal Spear/Sword/and Claymore/Fish,织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼 -4,01000000034c0902,Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom,鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇 -4,01000000034b0902,Time Traveler Set/Biggoron Sword/Meat,时之勇者服套装/大鼓隆之剑/肉 -4,0100000003540902,Bridle and Saddle/Moonlight Scimitar/Mushroom,马缰绳&马鞍/月光匕首/蘑菇 -4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比 -4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马 -4,01030000024f0902,20 Heart Wolf Link,20心林克狼 -4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼 -4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石 -4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇 -4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼 -4,0100010003500902,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼 -4,0101000003520902,Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/星星碎片&宝石/草 果实 胡萝卜 -4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉 -4,01000000037c0002,Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish,时之勇者服套装/骑士&王族枪 剑 双手剑/鱼 -4,01010000000e0002,Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/星星碎片&宝石/草 果实 胡萝卜 -4,0101000003560902,Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/星星碎片&宝石/草 果实 胡萝卜 -4,0101030004140902,Star Fragment & Gem/Grass/Fruit/Carrot,星星碎片&宝石/草 果实 胡萝卜 -5,01000000034f0902,,暂无简介 -5,01410000035c0902,,暂无简介 -5,0105000003580902,,暂无简介 -5,01020100001b0002,,暂无简介 -5,0140000003550902,,暂无简介 -5,0100000000040002,,暂无简介 -5,0100000003530902,,暂无简介 -5,0100000003990902,,暂无简介 -5,01000000034c0902,,暂无简介 -5,01000000034b0902,,暂无简介 -5,0100000003540902,,暂无简介 -5,01000000034e0902,,暂无简介 -5,01000000034d0902,,暂无简介 -5,01030000024f0902,,暂无简介 -5,01070000035a0902,,暂无简介 -5,01080000035b0902,,暂无简介 -5,0101010000170002,,暂无简介 -5,0100010000160002,,暂无简介 -5,0100010003500902,,暂无简介 -5,0101000003520902,,暂无简介 -5,0106000003590902,,暂无简介 -5,01000000037c0002,,暂无简介 -5,01010000000e0002,,暂无简介 -5,0101000003560902,,暂无简介 -5,0101030004140902,,暂无简介 -6,01410000035c0902,,暂无简介 -6,0105000003580902,,暂无简介 -6,01020100001b0002,,暂无简介 -6,0140000003550902,,暂无简介 -6,0100000003530902,,暂无简介 -6,01030000024f0902,,暂无简介 -6,01070000035a0902,,暂无简介 -6,01080000035b0902,,暂无简介 -6,0106000003590902,,暂无简介 -6,01010000000e0002,,暂无简介 -7,01410000035c0902,,暂无简介 -7,0105000003580902,,暂无简介 -7,01020100001b0002,,暂无简介 -7,0140000003550902,,暂无简介 -7,01030000024f0902,,暂无简介 -7,01070000035a0902,,暂无简介 -7,01080000035b0902,,暂无简介 -7,0101010000170002,,暂无简介 -7,0100010003500902,,暂无简介 -7,0106000003590902,,暂无简介 -8,35c0000002500a02,,暂无简介 -8,35c0000003920a02,,暂无简介 -9,0005000003730102,,解锁奥德赛主题关卡 -9,0000000003710102,,解锁奥德赛主题关卡 -9,0002000003720102,,解锁奥德赛主题关卡 -9,000a000000380102,,无敌蘑菇 -10,32400000025b0002,,获得服装Super Mirror I -10,3240010003640002,,获得服装Super Mirror II -10,0017000002680102,,暂无简介 -10,0005000000140002,,暂无简介 -10,0006000000150002,,暂无简介 -10,0013000002660102,,获得黛西公主装 -10,05810000001c0002,,获得星际火狐装 -10,0580000000050002,,获得星际火狐装 -10,0015000003670102,,暂无简介 -10,0023000003680102,,暂无简介 -10,01000000034b0902,,获得林克装 -10,0002000000010002,,获得碧姬公主装 -10,05c0000000060002,,获得萨姆斯装甲 -12,08010000025d0402,,暂无简介 -12,0800010003820002,,暂无简介 -12,0800010004150402,,暂无简介 -12,08000200003f0402,,暂无简介 -12,08000200036a0402,,暂无简介 -12,0800020002600402,,暂无简介 -12,08000100003e0402,,暂无简介 -12,08000100025f0402,,暂无简介 -12,0800010003690402,,暂无简介 -12,0800030000400402,,暂无简介 -12,08000300036b0402,,暂无简介 -12,0800030002610402,,暂无简介 -12,08020000025e0402,,暂无简介 -12,0804000003770402,,暂无简介 -12,08050200041b0402,,暂无简介 -12,08050200038f0402,,暂无简介 -12,08050100038e0402,,暂无简介 -12,0805030003900402,,暂无简介 -12,0803000003760402,,暂无简介 -12,08060100041c0402,,暂无简介 -12,0807000004330402,,暂无简介 -12,0808000004340402,,暂无简介 -12,0809000004350402,,暂无简介 -13,2106000003601202,,暂无简介 -13,210b000003a50002,,暂无简介 -13,2107000003611202,,暂无简介 -13,21080000036f1202,,暂无简介 -13,2108000003880002,,暂无简介 -13,21050000025a0002,,暂无简介 -13,2105010003630002,,暂无简介 -13,2101000000180002,,暂无简介 -13,2102000000290002,,暂无简介 -13,21000000000b0002,,暂无简介 -13,21030000002a0002,,暂无简介 -13,2104000002520002,,暂无简介 -13,2109000003701202,,暂无简介 -14,2106000003601202,,暂无简介 -14,210b000003a50002,,暂无简介 -14,2107000003611202,,暂无简介 -14,21080000036f1202,,暂无简介 -14,2108000003880002,,暂无简介 -14,21050000025a0002,,暂无简介 -14,2105010003630002,,暂无简介 -14,2101000000180002,,暂无简介 -14,2102000000290002,,暂无简介 -14,21000000000b0002,,暂无简介 -14,21030000002a0002,,暂无简介 -14,2104000002520002,,暂无简介 -14,2109000003701202,,暂无简介 -15,2106000003601202,,暂无简介 -15,210b000003a50002,,暂无简介 -15,2107000003611202,,暂无简介 -15,21080000036f1202,,暂无简介 -15,2108000003880002,,暂无简介 -15,21050000025a0002,,暂无简介 -15,2105010003630002,,暂无简介 -15,2101000000180002,,暂无简介 -15,2102000000290002,,暂无简介 -15,21000000000b0002,,暂无简介 -15,21030000002a0002,,暂无简介 -15,2104000002520002,,暂无简介 -15,2109000003701202,,暂无简介 -16,2106000003601202,,暂无简介 -16,210b000003a50002,,暂无简介 -16,2107000003611202,,暂无简介 -16,21080000036f1202,,暂无简介 -16,2108000003880002,,暂无简介 -16,21050000025a0002,,暂无简介 -16,2105010003630002,,暂无简介 -16,2101000000180002,,暂无简介 -16,2102000000290002,,暂无简介 -16,21000000000b0002,,暂无简介 -16,21030000002a0002,,暂无简介 -16,2104000002520002,,暂无简介 -16,2109000003701202,,暂无简介 -17,0000000002380602,,暂无简介 -17,08010000025d0402,,暂无简介 -17,01c1000002440502,,暂无简介 -17,01030000024f0902,,暂无简介 -17,00800102035d0302,,暂无简介 -17,05c0000004121302,,暂无简介 -17,0007000002630102,,暂无简介 -17,0182010100460502,,暂无简介 -17,019d000100ac0502,,暂无简介 -17,019f000101110502,,暂无简介 -17,0193000101740502,,暂无简介 -17,02ea000101d50502,,暂无简介 -17,0513000102e70502,,暂无简介 -17,028f0101031a0502,,暂无简介 -18,38c0000003911602,,暂无简介 -19,22420000041f0002,,解锁光之圣杯 -19,22410000041e0002,,解锁天之圣杯 -19,22400000002b0002,,解锁蒙那多 -19,22430000043d1b02,,解锁执政官N服装/诺亚、兰兹、优妮的休闲装 -19,22440000043e1b02,,解锁执政官M服装/弥央、圣奈、泰恩的休闲装 -20,35c30000036e0a02,,暂无简介 -20,35c10000036c0a02,,暂无简介 -20,35c0000002500a02,,暂无简介 -20,35c0000003920a02,,暂无简介 -20,35c20000036d0a02,,暂无简介 -21,35c30000036e0a02,,暂无简介 -21,35c10000036c0a02,,暂无简介 -21,35c0000002500a02,,暂无简介 -21,35c0000003920a02,,暂无简介 -21,35c20000036d0a02,,暂无简介 -22,1f02000000280002,,暂无简介 -22,1f00000002540c02,,暂无简介 -22,1f01000002550c02,,暂无简介 -22,1f400000035e1002,,暂无简介 -22,1f03000002570c02,,暂无简介 -23,1f02000000280002,,暂无简介 -23,1f00000002540c02,,暂无简介 -23,1f01000002550c02,,暂无简介 -23,1f400000035e1002,,暂无简介 -23,1f03000002570c02,,暂无简介 -24,1f02000000280002,,暂无简介 -24,1f00000002540c02,,暂无简介 -24,1f01000002550c02,,暂无简介 -24,1f400000035e1002,,暂无简介 -24,1f03000002570c02,,暂无简介 -25,3340000000320002,,暂无简介 -26,0600000000120002,,暂无简介 -26,0008000000030002,,暂无简介 -26,0580000000050002,,暂无简介 -26,0005ff00023a0702,,暂无简介 -26,08000100025f0402,,暂无简介 -26,1f000000000a0002,,暂无简介 -26,00010000000c0002,,暂无简介 -26,0188000002410502,,暂无简介 -26,0000000000000002,,暂无简介 -26,3480000000310002,,暂无简介 -26,06400100001e0002,,暂无简介 -26,3340000000320002,,暂无简介 -26,0002000003720102,,暂无简介 -26,0002000000010002,,暂无简介 -26,00130000037a0002,,暂无简介 -26,06420000035f1102,,暂无简介 -26,0004000002620102,,暂无简介 -26,05c0000000060002,,暂无简介 -26,3200000000300002,,暂无简介 -26,000a000000380102,,暂无简介 -26,0100010000160002,,暂无简介 -26,0180000000080002,,暂无简介 -26,00070000001a0002,,暂无简介 -26,0003000000020002,,暂无简介 -26,0181000100440502,,暂无简介 -26,0194000100aa0502,,暂无简介 -26,01920001010d0502,,暂无简介 -26,019c000101730502,,暂无简介 -26,0282000101d60502,,暂无简介 -26,04a2000102e80502,,暂无简介 -26,0374010103190502,,暂无简介 -27,0003010200430302,,暂无简介 -27,0001000000350102,,暂无简介 -27,0000000003710102,,暂无简介 -27,0002010003a70102,,暂无简介 -28,01010000000e0002,,暂无简介 -29,3480000003791502,,暂无简介 -30,3480000003791502,,暂无简介 -31,3480000002580002,,暂无简介 -32,05c0000004121302,,能量罐1个/补充能量 -32,05c3000003800002,,导弹包1个/补充弹药 -32,05c0000003651302,,补充能量 -32,05c0000000060002,,补充能量 -32,05c00100001d0002,,补充能量 -32,05c1000003661302,,补充弹药 -32,05c20000037f0002,,补充弹药 -32,05c4000004131302,,暂无简介 -33,0005000000390102,,暂无简介 -33,08010000025d0402,,暂无简介 -33,0013000002660102,,暂无简介 -33,0008000000030002,,暂无简介 -33,01020100001b0002,,暂无简介 -33,0003010200410302,,暂无简介 -33,0800010003820002,,暂无简介 -33,08000200036a0402,,暂无简介 -33,0800030000400402,,暂无简介 -33,01810100023f0502,,暂无简介 -33,0182000002400502,,暂无简介 -33,1f000000000a0002,,暂无简介 -33,01000000034e0902,,暂无简介 -33,00010000000c0002,,暂无简介 -33,08020000025e0402,,暂无简介 -33,00000000003d0102,,暂无简介 -33,22800000002c0002,,暂无简介 -33,00020003039dff02,,暂无简介 -33,018e000002490502,,暂无简介 -33,0004000002620102,,暂无简介 -33,05c0000000060002,,暂无简介 -33,0101010000170002,,暂无简介 -33,000a000000380102,,暂无简介 -33,0183000002420502,,暂无简介 -33,0101000003520902,,暂无简介 -33,05c00100001d0002,,暂无简介 -34,3503010002e50f02,,暂无简介 -34,35060000040d0f02,,暂无简介 -34,35080000040f1802,,暂无简介 -34,350b0000042d1802,,暂无简介 -34,3501000002e30f02,,暂无简介 -34,3500020002e20f02,,暂无简介 -34,3500010002e10f02,,暂无简介 -34,350a000004111802,,暂无简介 -34,350a0100042c1802,,暂无简介 -34,3509000004101802,,暂无简介 -34,35090100042b1802,,暂无简介 -34,3504010002e60f02,,暂无简介 -34,3502010002e40f02,,暂无简介 -34,35050000040c0f02,,暂无简介 -34,35070000040e0f02,,暂无简介 -35,35060000040d0f02,,暂无简介 -35,35050000040c0f02,,暂无简介 -35,35070000040e0f02,,暂无简介 -36,1906000000240002,,暂无简介 -36,1d01000003750d02,,暂无简介 -36,1b92000000250002,,暂无简介 -36,1bd7000003860002,,暂无简介 -36,1902000003830002,,暂无简介 -36,1927000000260002,,暂无简介 -36,1ac0000000110002,,暂无简介 -36,19960000023d0002,,暂无简介 -36,19ac000003850002,,暂无简介 -36,1919000000090002,,暂无简介 -36,1d000001025c0d02,,暂无简介 -36,1907000003840002,,暂无简介 -37,3802000103951702,,暂无简介 -37,3805000103981702,,暂无简介 -37,3803000103961702,,暂无简介 -37,3801000103941702,,暂无简介 -37,3800000103931702,,暂无简介 -37,3804000103971702,,暂无简介 -38,3503010002e50f02,,暂无简介 -38,3480000000310002,,暂无简介 -38,3501000002e30f02,,暂无简介 -38,3500010002e10f02,,暂无简介 -38,3504010002e60f02,,暂无简介 -38,3502010002e40f02,,暂无简介 -38,34c0000002530002,,暂无简介 -39,3503010002e50f02,,暂无简介 -39,3480000000310002,,暂无简介 -39,3501000002e30f02,,暂无简介 -39,3500010002e10f02,,暂无简介 -39,3504010002e60f02,,暂无简介 -39,3502010002e40f02,,暂无简介 -39,34c0000002530002,,暂无简介 -40,35c30000036e0a02,,暂无简介 -40,35c10000036c0a02,,暂无简介 -40,35c0000002500a02,,暂无简介 -40,35c0000003920a02,,暂无简介 -40,35c20000036d0a02,,暂无简介 -41,35c30000036e0a02,,暂无简介 -41,35c10000036c0a02,,暂无简介 -41,35c0000002500a02,,暂无简介 -41,35c0000003920a02,,暂无简介 -41,35c20000036d0a02,,暂无简介 -42,35c30000036e0a02,,暂无简介 -42,35c10000036c0a02,,暂无简介 -42,35c0000002500a02,,暂无简介 -42,35c0000003920a02,,暂无简介 -42,35c20000036d0a02,,暂无简介 -43,08010000025d0402,,暂无简介 -43,0800010003820002,,暂无简介 -43,0800010004150402,,暂无简介 -43,08000200003f0402,,暂无简介 -43,08000200036a0402,,暂无简介 -43,0800020002600402,,暂无简介 -43,08000100003e0402,,暂无简介 -43,08000100025f0402,,暂无简介 -43,0800010003690402,,暂无简介 -43,0800030000400402,,暂无简介 -43,08000300036b0402,,暂无简介 -43,0800030002610402,,暂无简介 -43,08020000025e0402,,暂无简介 -43,0804000003770402,,暂无简介 -43,08050200041b0402,,暂无简介 -43,08050200038f0402,,暂无简介 -43,08050100038e0402,,暂无简介 -43,0805030003900402,,暂无简介 -43,0803000003760402,,暂无简介 -44,1f02000002560c02,,暂无简介 -44,1f02000000280002,,暂无简介 -44,1f00000002540c02,,暂无简介 -44,1f000000000a0002,,暂无简介 -44,1f01000002550c02,,暂无简介 -44,1f01000000270002,,暂无简介 -44,1f400000035e1002,,暂无简介 -44,1f03000002570c02,,暂无简介 -45,0017000002680102,,暂无简介 -45,0005000000140002,,使狂怒酷霸王立即现身 -45,0006000000150002,,使酷霸王Jr.释放冲击波 -45,0013000002660102,,暂无简介 -45,00090000000d0002,,暂无简介 -45,0008000000030002,,暂无简介 -45,0015000003670102,,暂无简介 -45,0023000003680102,,暂无简介 -45,00010000000c0002,,暂无简介 -45,0000000000340102,,暂无简介 -45,0000030003a60102,,获得无敌铃铛 -45,00030102023e0302,,暂无简介 -45,0002000000360102,,暂无简介 -45,0002010003a70102,,随机获得一个增强道具 -45,00240000038d0002,,暂无简介 -45,0004000002620102,,暂无简介 -45,000a000000380102,,暂无简介 -45,0014000002670102,,暂无简介 -45,0007000002630102,,暂无简介 -46,0005000000140002,,暂无简介 -46,0005000000390102,,暂无简介 -46,0005000003730102,,显示紫金币位置/解锁酷霸王的礼服 -46,0009000002650102,,解锁迪迪刚套装 -46,0000010000190002,,解锁医生套装 -46,0001000000350102,,解锁路易吉套装 -46,0000000000000002,,解锁经典套装 -46,00000000003c0102,,解锁金色马力欧套装 -46,00000000003d0102,,解锁金色马力欧套装 -46,0000000003710102,,短时间无敌/解锁马力欧的礼服 -46,0002000003720102,,血上限+3/解锁婚纱 -46,3740000103741402,,暂无简介 -46,0014000002670102,,解锁瓦路易吉套装 -46,00070000001a0002,,解锁瓦力欧套装 -46,000a000303a0ff02,, -46,00000003039bff02,, -46,000000030430ff02,, -46,00010003039cff02,, -46,00030003039fff02,, -46,00130003039eff02,, -47,3dc1000004230002,,暂无简介 -47,3b40000003a30002,,暂无简介 -47,32400000025b0002,,暂无简介 -47,3240010003640002,,暂无简介 -47,0005000000140002,,暂无简介 -47,0006000000150002,,暂无简介 -47,210b000003a50002,,暂无简介 -47,0600000000120002,,暂无简介 -47,1906000000240002,,暂无简介 -47,2108000003880002,,暂无简介 -47,3600000002590002,,暂无简介 -47,3600010003620002,,暂无简介 -47,21050000025a0002,,暂无简介 -47,2105010003630002,,暂无简介 -47,00130000037a0002,,暂无简介 -47,0741000000200002,,暂无简介 -47,05c3000003800002,,暂无简介 -47,00090000000d0002,,暂无简介 -47,0008000000030002,,暂无简介 -47,0000010000190002,,暂无简介 -47,07820000002f0002,,暂无简介 -47,05810000001c0002,,暂无简介 -47,0580000000050002,,暂无简介 -47,01020100001b0002,,暂无简介 -47,1b92000000250002,,暂无简介 -47,3640000003a20002,,暂无简介 -47,078f000003810002,,暂无简介 -47,2101000000180002,,暂无简介 -47,1bd7000003860002,,暂无简介 -47,0800010003820002,,暂无简介 -47,01810000037d0002,,暂无简介 -47,1902000003830002,,暂无简介 -47,1927000000260002,,暂无简介 -47,3a00000003a10002,,暂无简介 -47,33c0000004200002,,暂无简介 -47,34c1000003890002,,暂无简介 -47,1f02000000280002,,暂无简介 -47,00c00000037b0002,,暂无简介 -47,1f000000000a0002,,暂无简介 -47,0100000000040002,,暂无简介 -47,06c00000000f0002,,暂无简介 -47,1ac0000000110002,,暂无简介 -47,2281000002510002,,暂无简介 -47,2102000000290002,,暂无简介 -47,00010000000c0002,,暂无简介 -47,0000000000000002,,暂无简介 -47,21000000000b0002,,暂无简介 -47,3480000000310002,,暂无简介 -47,3480000002580002,,暂无简介 -47,1f01000000270002,,暂无简介 -47,19960000023d0002,,暂无简介 -47,07c0000000210002,,暂无简介 -47,07c0020000230002,,暂无简介 -47,07c0010000220002,,暂无简介 -47,0a400000041d0002,,暂无简介 -47,07800000002d0002,,暂无简介 -47,22420000041f0002,,暂无简介 -47,22800000002c0002,,暂无简介 -47,06400100001e0002,,暂无简介 -47,3340000000320002,,暂无简介 -47,07420000001f0002,,暂无简介 -47,0002000000010002,,暂无简介 -47,19ac000003850002,,暂无简介 -47,1919000000090002,,暂无简介 -47,00240000038d0002,,暂无简介 -47,0740000000100002,,暂无简介 -47,1d40000003870002,,暂无简介 -47,22410000041e0002,,暂无简介 -47,07810000002e0002,,暂无简介 -47,0781000000330002,,暂无简介 -47,37c10000038c0002,,暂无简介 -47,05c20000037f0002,,暂无简介 -47,21030000002a0002,,暂无简介 -47,0004010000130002,,暂无简介 -47,2104000002520002,,暂无简介 -47,34c0000002530002,,暂无简介 -47,05c0000000060002,,暂无简介 -47,3601000004210002,,暂无简介 -47,0101010000170002,,暂无简介 -47,22400000002b0002,,暂无简介 -47,37c00000038b0002,,暂无简介 -47,37800000038a0002,,暂无简介 -47,3200000000300002,,暂无简介 -47,1907000003840002,,暂无简介 -47,3dc0000004220002,,暂无简介 -47,3c80000003a40002,,暂无简介 -47,0100010000160002,,暂无简介 -47,0180000000080002,,暂无简介 -47,00070000001a0002,,暂无简介 -47,0700000000070002,,暂无简介 -47,05840000037e0002,,暂无简介 -47,0003000000020002,,暂无简介 -47,01000000037c0002,,暂无简介 -47,01010000000e0002,,暂无简介 -47,05c00100001d0002,,暂无简介 -47,3f000000042e0002,,暂无简介 -48,0003010200410302,,暂无简介 -48,0005ff00023a0702,,暂无简介 -48,0023000003680102,,暂无简介 -48,0003010200430302,,暂无简介 -48,0001000000350102,,暂无简介 -48,0000000000000002,,暂无简介 -48,0002000000360102,,暂无简介 -48,0003010200420302,,暂无简介 -48,00800102035d0302,,暂无简介 -48,000a000000380102,,暂无简介 -48,0003000000020002,,暂无简介 -49,38460001042a1902,,暂无简介 -49,3842000104261902,,暂无简介 -49,3845000104291902,,暂无简介 -49,3844000104281902,,暂无简介 -49,3843000104271902,,暂无简介 -49,3841000104251902,,暂无简介 -49,3840000104241902,,暂无简介 -50,3380000003781402,,暂无简介 -51,0017000002680102,,暂无简介 -51,0005000000140002,,暂无简介 -51,0006000000150002,,暂无简介 -51,00130000037a0002,,暂无简介 -51,00090000000d0002,,暂无简介 -51,0008000002640102,,暂无简介 -51,0015000003670102,,暂无简介 -51,0023000003680102,,暂无简介 -51,00010000000c0002,,暂无简介 -51,0000000000340102,,暂无简介 -51,0002000000010002,,暂无简介 -51,0003010200420302,,暂无简介 -51,0004010000130002,,暂无简介 -51,0014000002670102,,暂无简介 -51,0007000002630102,,暂无简介 -53,0192000002470502,, -53,0193000002480502,, -53,018b000002460502,, -53,018c000002430502,, -53,01810100023f0502,, -53,0182000002400502,, -53,01960000024e0502,, -53,01940000024a0502,, -53,01c1000002440502,, -53,0188000002410502,, -53,018a000002450502,, -53,018e000002490502,, -53,018d0000024c0502,, -53,01810000024b0502,, -53,01840000024d0502,, -53,0183000002420502,, -54,0282000101d60502,, -54,025f000101d70502,, -54,02ea000101d50502,, -55,0374010103190502,, -55,028f0101031a0502,, -55,04d30101031b0502,, -55,032e0101031c0502,, -55,02e00101031d0502,, -55,04a80101031e0502,, -56,0181000100440502,, -56,0183000100450502,, -56,0182010100460502,, -56,0187000100470502,, -56,0196000100480502,, -56,018e000100490502,, -56,01a30001004a0502,, -56,01850001004b0502,, -56,018c0001004c0502,, -56,01a40001004d0502,, -56,01910001004e0502,, -56,01a80001004f0502,, -56,01a6000100500502,, -56,01b5000100510502,, -56,01b0000100520502,, -56,01aa000100530502,, -56,01c1000100540502,, -56,025d000100550502,, -56,02d6000100560502,, -56,0216000100570502,, -56,02ef000100580502,, -56,04fe000100590502,, -56,02870001005a0502,, -56,05150001005b0502,, -56,03710001005c0502,, -56,04ba0001005d0502,, -56,02db0001005e0502,, -56,03450001005f0502,, -56,047a000100600502,, -56,049b000100610502,, -56,04ed000100620502,, -56,027d000100630502,, -56,0307000100640502,, -56,0261000100650502,, -56,0401000100660502,, -56,02c4000100670502,, -56,0266000100680502,, -56,02b1000100690502,, -56,02310001006a0502,, -56,03480001006b0502,, -56,03180001006c0502,, -56,03db0001006d0502,, -56,04650001006e0502,, -56,04000001006f0502,, -56,0429000100700502,, -56,03a9000100710502,, -56,02a4000100720502,, -56,0452000100730502,, -56,04a5000100740502,, -56,0263000100750502,, -56,0323000100760502,, -56,04ec000100770502,, -56,040d000100780502,, -56,030b000100790502,, -56,04970001007a0502,, -56,04fd0001007b0502,, -56,043d0001007c0502,, -56,02680001007d0502,, -56,02190001007e0502,, -56,04100001007f0502,, -56,021b000100800502,, -56,024f000100810502,, -56,04e6000100820502,, -56,0280000100830502,, -56,0235000100840502,, -56,035a000100850502,, -56,0384000100860502,, -56,03ae000100870502,, -56,040e000100880502,, -56,0394000100890502,, -56,03bc0001008a0502,, -56,03ee0001008b0502,, -56,046c0001008c0502,, -56,04800001008d0502,, -56,044c0001008e0502,, -56,033f0001008f0502,, -56,02fb000100900502,, -56,03a8000100910502,, -56,0479000100920502,, -56,03c6000100930502,, -56,04c7000100940502,, -56,0299000100950502,, -56,0208000100960502,, -56,02fa000100970502,, -56,0488000100980502,, -56,050b000100990502,, -56,04940001009a0502,, -56,03830001009b0502,, -56,02de0001009c0502,, -56,03290001009d0502,, -56,04d10001009e0502,, -56,034b0001009f0502,, -56,0393000100a00502,, -56,0200000100a10502,, -56,04dd000100a20502,, -56,04a6000100a30502,, -56,04cc000100a40502,, -56,0460000100a50502,, -56,0317000100a60502,, -56,02f0000100a70502,, -57,0182000100a80502,, -57,018a000100a90502,, -57,0194000100aa0502,, -57,0189000100ab0502,, -57,019d000100ac0502,, -57,019e000100ad0502,, -57,01b6000100ae0502,, -57,0186010100af0502,, -57,0195000100b00502,, -57,0198000100b10502,, -57,01b1000100b20502,, -57,018f000100b30502,, -57,0181010100b40502,, -57,01b3000100b50502,, -57,019b000100b60502,, -57,019a000100b70502,, -57,01ad000100b80502,, -57,027f000100b90502,, -57,026e000100ba0502,, -57,03c1000100bb0502,, -57,032d000100bc0502,, -57,023c000100bd0502,, -57,02dc000100be0502,, -57,0398000100bf0502,, -57,0464000100c00502,, -57,0251000100c10502,, -57,03d1000100c20502,, -57,026c000100c30502,, -57,02b2000100c40502,, -57,0344000100c50502,, -57,0309000100c60502,, -57,0283000100c70502,, -57,03a6000100c80502,, -57,035d000100c90502,, -57,0440000100ca0502,, -57,029b000100cb0502,, -57,02f2000100cc0502,, -57,02c9000100cd0502,, -57,04de000100ce0502,, -57,0450000100cf0502,, -57,03fa000100d00502,, -57,023e000100d10502,, -57,0260000100d20502,, -57,0369000100d30502,, -57,04a4000100d40502,, -57,0381000100d50502,, -57,0311000100d60502,, -57,050e000100d70502,, -57,0418000100d80502,, -57,0496000100d90502,, -57,021a000100da0502,, -57,04ce000100db0502,, -57,02c3000100dc0502,, -57,04b3000100dd0502,, -57,02eb000100de0502,, -57,0499000100df0502,, -57,041a000100e00502,, -57,04cf000100e10502,, -57,02d8000100e20502,, -57,028b000100e30502,, -57,0214000100e40502,, -57,03d2000100e50502,, -57,03aa000100e60502,, -57,0500000100e70502,, -57,04df000100e80502,, -57,026b000100e90502,, -57,02dd000100ea0502,, -57,0357000100eb0502,, -57,03e6000100ec0502,, -57,049d000100ed0502,, -57,029a000100ee0502,, -57,0489000100ef0502,, -57,03b1000100f00502,, -57,041b000100f10502,, -57,022d000100f20502,, -57,046d000100f30502,, -57,03ff000100f40502,, -57,047b000100f50502,, -57,0462000100f60502,, -57,04e0000100f70502,, -57,0310000100f80502,, -57,03bd000100f90502,, -57,033b000100fa0502,, -57,0416000100fb0502,, -57,0486000100fc0502,, -57,0220000100fd0502,, -57,0252000100fe0502,, -57,0270000100ff0502,, -57,033c000101000502,, -57,04c5000101010502,, -57,02f9000101020502,, -57,0202000101030502,, -57,0453000101040502,, -57,0437000101050502,, -57,0385000101060502,, -57,0510000101070502,, -57,0267000101080502,, -57,04e2000101090502,, -57,03250001010a0502,, -57,03720001010b0502,, -58,018d0001010c0502,, -58,01920001010d0502,, -58,01830101010e0502,, -58,01a00001010f0502,, -58,01a1000101100502,, -58,019f000101110502,, -58,0188000101120502,, -58,01b4000101130502,, -58,01a7000101140502,, -58,018b000101150502,, -58,0199000101160502,, -58,0185020101170502,, -58,018c010101180502,, -58,018f010101190502,, -58,01810201011a0502,, -58,01ae0001011b0502,, -58,01af0001011c0502,, -58,03380001011d0502,, -58,022f0001011e0502,, -58,02690001011f0502,, -58,0281000101200502,, -58,0313000101210502,, -58,02c7000101220502,, -58,021e000101230502,, -58,02a6000101240502,, -58,025e000101250502,, -58,024b000101260502,, -58,0392000101270502,, -58,0342000101280502,, -58,035c000101290502,, -58,03e70001012a0502,, -58,03c40001012b0502,, -58,03af0001012c0502,, -58,042a0001012d0502,, -58,047d0001012e0502,, -58,030e0001012f0502,, -58,02d7000101300502,, -58,0463000101310502,, -58,04e7000101320502,, -58,02da000101330502,, -58,0373000101340502,, -58,0356000101350502,, -58,02cb000101360502,, -58,0262000101370502,, -58,02f8000101380502,, -58,0326000101390502,, -58,033d0001013a0502,, -58,04ef0001013b0502,, -58,02210001013c0502,, -58,029e0001013d0502,, -58,028c0001013e0502,, -58,026d0001013f0502,, -58,049c000101400502,, -58,041c000101410502,, -58,050d000101420502,, -58,034a000101430502,, -58,0222000101440502,, -58,02f1000101450502,, -58,026a000101460502,, -58,03fc000101470502,, -58,032c000101480502,, -58,043e000101490502,, -58,04980001014a0502,, -58,04ee0001014b0502,, -58,04850001014c0502,, -58,03080001014d0502,, -58,049a0001014e0502,, -58,03a40001014f0502,, -58,040f000101500502,, -58,03da000101510502,, -58,04cd000101520502,, -58,0514000101530502,, -58,0265000101540502,, -58,043f000101550502,, -58,037e000101560502,, -58,03d6000101570502,, -58,03fd000101580502,, -58,040c000101590502,, -58,02ed0001015a0502,, -58,03a50001015b0502,, -58,03c50001015c0502,, -58,03700001015d0502,, -58,04510001015e0502,, -58,041e0001015f0502,, -58,04b9000101600502,, -58,0461000101610502,, -58,04ff000101620502,, -58,0478000101630502,, -58,0469000101640502,, -58,04e3000101650502,, -58,023f000101660502,, -58,04c6000101670502,, -58,04fa000101680502,, -58,027e000101690502,, -58,02010001016a0502,, -58,03820001016b0502,, -58,044b0001016c0502,, -58,030f0001016d0502,, -58,04a00001016e0502,, -58,04a10001016f0502,, -59,0181030101700502,, -59,0190000101710502,, -59,01a5000101720502,, -59,019c000101730502,, -59,0193000101740502,, -59,0186030101750502,, -59,01a9000101760502,, -59,0197000101770502,, -59,018e010101780502,, -59,0185040101790502,, -59,01c10101017a0502,, -59,01b10101017b0502,, -59,01ab0001017c0502,, -59,01a20001017d0502,, -59,01a80101017e0502,, -59,01ac0001017f0502,, -59,02ea000101800502,, -59,0282000101810502,, -59,0215000101820502,, -59,03ec000101830502,, -59,030d000101840502,, -59,0390000101850502,, -59,0272000101860502,, -59,0380000101870502,, -59,03ac000101880502,, -59,0324000101890502,, -59,041d0001018a0502,, -59,036b0001018b0502,, -59,02a50001018c0502,, -59,03490001018d0502,, -59,035e0001018e0502,, -59,02fc0001018f0502,, -59,026f000101900502,, -59,02df000101910502,, -59,0495000101920502,, -59,044d000101930502,, -59,0436000101940502,, -59,0511000101950502,, -59,04d0000101960502,, -59,046b000101970502,, -59,03be000101980502,, -59,02ee000101990502,, -59,02030001019a0502,, -59,02710001019b0502,, -59,02b80001019c0502,, -59,036a0001019d0502,, -59,028e0001019e0502,, -59,02090001019f0502,, -59,047c000101a00502,, -59,03a7000101a10502,, -59,033e000101a20502,, -59,03ed000101a30502,, -59,03fe000101a40502,, -59,03d9000101a50502,, -59,04a7000101a60502,, -59,04d2000101a70502,, -59,045f000101a80502,, -59,03b0000101a90502,, -59,037f000101aa0502,, -59,0411000101ab0502,, -59,0264000101ac0502,, -59,04e5000101ad0502,, -59,0454000101ae0502,, -59,042b000101af0502,, -59,0483000101b00502,, -59,0339000101b10502,, -59,03ad000101b20502,, -59,0217000101b30502,, -59,03d7000101b40502,, -59,023d000101b50502,, -59,04e4000101b60502,, -59,049e000101b70502,, -59,030c000101b80502,, -59,04b2000101b90502,, -59,02a2000101ba0502,, -59,0415000101bb0502,, -59,03bf000101bc0502,, -59,028d000101bd0502,, -59,04e1000101be0502,, -59,0487000101bf0502,, -59,0316000101c00502,, -59,050c000101c10502,, -59,0399000101c20502,, -59,0327000101c30502,, -59,02ec000101c40502,, -59,025f000101c50502,, -59,04fb000101c60502,, -59,030a000101c70502,, -59,02d9000101c80502,, -59,04a3000101c90502,, -59,02ca000101ca0502,, -59,043c000101cb0502,, -59,033a000101cc0502,, -59,021d000101cd0502,, -59,04e8000101ce0502,, -59,03fb000101cf0502,, -59,046a000101d00502,, -59,024a000101d10502,, -59,0230000101d20502,, -59,022e000101d30502,, -60,0183020103a80502,, -60,0184050103a90502,, -60,0181040103aa0502,, -60,0a00000103ab0502,, -60,0a01000103ac0502,, -60,0192000103ad0502,, -60,0193000103ae0502,, -60,0188000103af0502,, -60,0187000103b00502,, -60,0189010103b10502,, -60,0182000103b20502,, -60,0a02000103b30502,, -60,0a03000103b40502,, -60,0a04000103b50502,, -60,0194000103b60502,, -60,01a6000103b70502,, -60,0a05000103b80502,, -60,01a2000103b90502,, -60,0a06000103ba0502,, -60,01c1020103bb0502,, -60,0a07000103bc0502,, -60,0a08000103bd0502,, -60,0183030103be0502,, -60,0181050103bf0502,, -60,0a09000103c00502,, -60,0a0a000103c10502,, -60,0a0b000103c20502,, -60,0a0c000103c30502,, -60,0a0d000103c40502,, -60,0a0e000103c50502,, -60,0a0f000103c60502,, -60,0a10000103c70502,, -60,0a11000103c80502,, -60,0a12000103c90502,, -60,0a13000103ca0502,, -60,0a14000103cb0502,, -60,0a15000103cc0502,, -60,0a16000103cd0502,, -60,0a17000103ce0502,, -60,0a18000103cf0502,, -60,0a19000103d00502,, -60,0a1a000103d10502,, -60,0a1b000103d20502,, -60,0a1c000103d30502,, -60,0a1d000103d40502,, -60,0a1e000103d50502,, -60,0a1f000103d60502,, -60,0a20000103d70502,, -61,0181000101d40502,, -61,0182000101d80502,, -62,0513000102e70502,, -62,04a2000102e80502,, -62,028a000102e90502,, -62,0232000102ea0502,, -62,0328000102eb0502,, -62,04b6000102ec0502,, -62,04c8000102ed0502,, -62,04fc000102ee0502,, -62,0343000102ef0502,, -62,04eb000102f00502,, -62,0481000102f10502,, -62,0468000102f20502,, -62,03d3000102f30502,, -62,0314000102f40502,, -62,03e8000102f50502,, -62,024d000102f60502,, -62,021c000102f70502,, -62,0238000102f80502,, -62,02f3000102f90502,, -62,0358000102fa0502,, -62,036e000102fb0502,, -62,0395000102fc0502,, -62,0482000102fd0502,, -62,0284000102fe0502,, -62,02a3000102ff0502,, -62,0438000103000502,, -62,049f000103010502,, -62,0347000103020502,, -62,043b000103030502,, -62,036d000103040502,, -62,02f4000103050502,, -62,0233000103060502,, -62,032a000103070502,, -62,02c5000103080502,, -62,0312000103090502,, -62,04140001030a0502,, -62,03ea0001030b0502,, -62,04b40001030c0502,, -62,04c90001030d0502,, -62,03410001030e0502,, -62,02b70001030f0502,, -62,03c0000103100502,, -62,0439000103110502,, -62,0206000103120502,, -62,0286000103130502,, -62,050f000103140502,, -62,044e000103150502,, -62,03ab000103160502,, -62,021f000103170502,, -62,04ea000103180502,, -63,05c1000003661302,,解锁密特罗德搜寻/解锁融合模式 -63,05c0000003651302,,解锁备用能量罐/通关解锁美术画廊 -63,05c0000000060002,,解锁备用导弹罐/通关解锁美术画廊 -63,05c00100001d0002,,解锁备用弹药罐/通关解锁BGM -64,21000000000b0002,,马尔斯可入队 -64,2101000000180002,,艾克可入队 -64,2102000000290002,,露琪娜可入队 -64,21030000002a0002,,鲁弗莱可入队 -65,2106000003601202,,解锁迷宫/召唤幻影骑士 -65,2107000003611202,,解锁迷宫/召唤幻影骑士 -65,2108000003880002,,召唤幻影骑士 -65,21050000025a0002,,召唤幻影骑士 -65,2101000000180002,,召唤幻影骑士 -65,2102000000290002,,召唤幻影骑士 -65,21000000000b0002,,召唤幻影骑士 -65,21030000002a0002,,召唤幻影骑士 -65,2104000002520002,,召唤幻影骑士 -66,1d01000003750d02,,显示章节的皮卡丘提示数 -67,06400100001e0002,,随时叫出皮克敏 -67,06420000035f1102,,随时叫出皮克敏 -68,01030000024f0902,,解锁可获得9999钱包的新迷宫 -68,0100000000040002,,恢复箭数量 -68,0100010000160002,,恢复箭数量 -68,01010000000e0002,,恢复心心 -68,0101010000170002,,恢复心心 -68,01020100001b0002,,受到2倍伤害 -68,01000000034f0902,,暂无简介 -68,0101000003520902,,暂无简介 -68,0100010003500902,,暂无简介 -68,01000000034b0902,,暂无简介 -69,0000000000340102,,毒蘑菇变成红蘑菇 -69,000a000000380102,,与奇诺比奥对话会回血 -69,0017000002680102,,显示嘘嘘鬼位置 -69,00010000000c0002,,可原地复活一次 -70,09d1010102be0e02,, -70,09d1020102bf0e02,, -70,09d1030102c00e02,, -70,09d1040102c10e02,, -70,09d1050102c20e02,, -70,09c0010102690e02,, -70,09c00201026a0e02,, -70,09c00301026b0e02,, -70,09c00401026c0e02,, -70,09c00501026d0e02,, -70,09c10101026e0e02,, -70,09c10201026f0e02,, -70,09c1030102700e02,, -70,09c1040102710e02,, -70,09c1050102720e02,, -70,09c2010102730e02,, -70,09c2020102740e02,, -70,09c2030102750e02,, -70,09c2040102760e02,, -70,09c2050102770e02,, -70,09c3010102780e02,, -70,09c3020102790e02,, -70,09c30301027a0e02,, -70,09c30401027b0e02,, -70,09c30501027c0e02,, -70,09c40101027d0e02,, -70,09c40201027e0e02,, -70,09c40301027f0e02,, -70,09c4040102800e02,, -70,09c4050102810e02,, -70,09c5010102820e02,, -70,09c5020102830e02,, -70,09c5030102840e02,, -70,09c5040102850e02,, -70,09c5050102860e02,, -70,09c6010102870e02,, -70,09c6020102880e02,, -70,09c6030102890e02,, -70,09c60401028a0e02,, -70,09c60501028b0e02,, -70,09c70101028c0e02,, -70,09c70201028d0e02,, -70,09c70301028e0e02,, -70,09c70401028f0e02,, -70,09c7050102900e02,, -70,09c8010102910e02,, -70,09c8020102920e02,, -70,09c8030102930e02,, -70,09c8040102940e02,, -70,09c8050102950e02,, -70,09c9010102960e02,, -70,09c9020102970e02,, -70,09c9030102980e02,, -70,09c9040102990e02,, -70,09c90501029a0e02,, -70,09ca0101029b0e02,, -70,09ca0201029c0e02,, -70,09ca0301029d0e02,, -70,09ca0401029e0e02,, -70,09ca0501029f0e02,, -70,09cb010102a00e02,, -70,09cb020102a10e02,, -70,09cb030102a20e02,, -70,09cb040102a30e02,, -70,09cb050102a40e02,, -70,09cc010102a50e02,, -70,09cc020102a60e02,, -70,09cc030102a70e02,, -70,09cc040102a80e02,, -70,09cc050102a90e02,, -70,09cd010102aa0e02,, -70,09cd020102ab0e02,, -70,09cd030102ac0e02,, -70,09cd040102ad0e02,, -70,09cd050102ae0e02,, -70,09ce010102af0e02,, -70,09ce020102b00e02,, -70,09ce030102b10e02,, -70,09ce040102b20e02,, -70,09ce050102b30e02,, -70,09cf010102b40e02,, -70,09cf020102b50e02,, -70,09cf030102b60e02,, -70,09cf040102b70e02,, -70,09cf050102b80e02,, -70,09d0010102b90e02,, -70,09d0020102ba0e02,, -70,09d0030102bb0e02,, -70,09d0040102bc0e02,, -70,09d0050102bd0e02,, \ No newline at end of file +,,,,,,,,,,,, +1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,,,,,,,,,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia +1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,,,,,,,,,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela +1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,,,,,,,,,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +1,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb,黄昏剑/卢比/宝石/星星碎片炸药桶,,,,,,,,,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba +1,01020100041a0902,Gerudo-King Fabric,沼气之枪/滑翔伞皮肤布料,,,,,,,,,Tessuto del Re Gerudo +1,0140000003550902,Dragonbone Boko related gear/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,,,,,,,,,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela +1,0100000000040002,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +1,0100000003530902,Falcon Bow/Paraglider Skin Material/Fish & Meat/Knight's & Royal Bow/Various Arrows,游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭,,,,,,,,,Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce +1,0100000003990902,Dream Weaver Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +1,01000000034c0902,Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom,鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇,,,,,,,,,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi +1,01000000034b0902,Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat,时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉,,,,,,,,,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne +1,0100000003540902,Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom,马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇,,,,,,,,,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi +1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,,,,,,,,,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,,,,,,,,,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi +1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,,,,,,,,,Carne/Tessuto della Paravela +1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,,,,,,,,,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,,,,,,,,,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,,,,,,,,,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi +1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +1,0100010003500902,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +1,0101000003520902,Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,,,,,,,,,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +1,01000000037c0002,Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +1,01010000000e0002,Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0101000003560902,Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0101030004140902,Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0101000004190902,Princess Zelda Fabric,塞尔达公主滑翔伞布料,,,,,,,,,Tessuto della Principessa Zelda +2,0101030004140902,,随时随地传送,,,,,,,,, +3,01020100001b0002,,暂无简介,,,,,,,,, +3,01030000024f0902,,暂无简介,,,,,,,,, +3,0101010000170002,,暂无简介,,,,,,,,, +3,0100010000160002,,暂无简介,,,,,,,,, +3,01000000037c0002,,暂无简介,,,,,,,,, +3,01010000000e0002,,暂无简介,,,,,,,,, +4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,,,,,,,,,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia +4,01410000035c0902,Champion's Tunic Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,,,,,,,,,Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi +4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,,,,,,,,,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +4,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel,黄昏剑/卢比/宝石/星星碎片炸药桶,,,,,,,,,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba +4,0140000003550902,Guardian Weapons/Shields/Spears/Core/Treasure/Arrow,守护者枪 盾 剑/古代兵装 核心/宝石 箭,,,,,,,,,Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano +4,0100000000040002,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +4,0100000003530902,Falcon Bow/Fish & Meat/Knight's and Royal Bow/Various Arrows,游隼弓/鱼&肉/骑士&王族之弓/各种箭,,,,,,,,,Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce +4,0100000003990902,Dreamweaver Set/Knight's and Royal Spear/Sword/and Claymore/Fish,织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +4,01000000034c0902,Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom,鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇,,,,,,,,,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi +4,01000000034b0902,Time Traveler Set/Biggoron Sword/Meat,时之勇者服套装/大鼓隆之剑/肉,,,,,,,,,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne +4,0100000003540902,Bridle and Saddle/Moonlight Scimitar/Mushroom,马缰绳&马鞍/月光匕首/蘑菇,,,,,,,,,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi +4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,,,,,,,,,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +4,01030000024f0902,20 Heart Wolf Link,20心林克狼,,,,,,,,,Link Lupo a 20 Cuori +4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,,,,,,,,,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,,,,,,,,,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,,,,,,,,,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi +4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +4,0100010003500902,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +4,0101000003520902,Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,,,,,,,,,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +4,01000000037c0002,Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish,时之勇者服套装/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +4,01010000000e0002,Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +4,0101000003560902,Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +4,0101030004140902,Star Fragment & Gem/Grass/Fruit/Carrot,星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Frammento di Stella & Gemma/Erba/Frutto/Carota +5,01000000034f0902,,暂无简介,,,,,,,,, +5,01410000035c0902,,暂无简介,,,,,,,,, +5,0105000003580902,,暂无简介,,,,,,,,, +5,01020100001b0002,,暂无简介,,,,,,,,, +5,0140000003550902,,暂无简介,,,,,,,,, +5,0100000000040002,,暂无简介,,,,,,,,, +5,0100000003530902,,暂无简介,,,,,,,,, +5,0100000003990902,,暂无简介,,,,,,,,, +5,01000000034c0902,,暂无简介,,,,,,,,, +5,01000000034b0902,,暂无简介,,,,,,,,, +5,0100000003540902,,暂无简介,,,,,,,,, +5,01000000034e0902,,暂无简介,,,,,,,,, +5,01000000034d0902,,暂无简介,,,,,,,,, +5,01030000024f0902,,暂无简介,,,,,,,,, +5,01070000035a0902,,暂无简介,,,,,,,,, +5,01080000035b0902,,暂无简介,,,,,,,,, +5,0101010000170002,,暂无简介,,,,,,,,, +5,0100010000160002,,暂无简介,,,,,,,,, +5,0100010003500902,,暂无简介,,,,,,,,, +5,0101000003520902,,暂无简介,,,,,,,,, +5,0106000003590902,,暂无简介,,,,,,,,, +5,01000000037c0002,,暂无简介,,,,,,,,, +5,01010000000e0002,,暂无简介,,,,,,,,, +5,0101000003560902,,暂无简介,,,,,,,,, +5,0101030004140902,,暂无简介,,,,,,,,, +6,01410000035c0902,,暂无简介,,,,,,,,, +6,0105000003580902,,暂无简介,,,,,,,,, +6,01020100001b0002,,暂无简介,,,,,,,,, +6,0140000003550902,,暂无简介,,,,,,,,, +6,0100000003530902,,暂无简介,,,,,,,,, +6,01030000024f0902,,暂无简介,,,,,,,,, +6,01070000035a0902,,暂无简介,,,,,,,,, +6,01080000035b0902,,暂无简介,,,,,,,,, +6,0106000003590902,,暂无简介,,,,,,,,, +6,01010000000e0002,,暂无简介,,,,,,,,, +7,01410000035c0902,,暂无简介,,,,,,,,, +7,0105000003580902,,暂无简介,,,,,,,,, +7,01020100001b0002,,暂无简介,,,,,,,,, +7,0140000003550902,,暂无简介,,,,,,,,, +7,01030000024f0902,,暂无简介,,,,,,,,, +7,01070000035a0902,,暂无简介,,,,,,,,, +7,01080000035b0902,,暂无简介,,,,,,,,, +7,0101010000170002,,暂无简介,,,,,,,,, +7,0100010003500902,,暂无简介,,,,,,,,, +7,0106000003590902,,暂无简介,,,,,,,,, +8,35c0000002500a02,,暂无简介,,,,,,,,, +8,35c0000003920a02,,暂无简介,,,,,,,,, +9,0005000003730102,,解锁奥德赛主题关卡,,,,,,,,, +9,0000000003710102,,解锁奥德赛主题关卡,,,,,,,,, +9,0002000003720102,,解锁奥德赛主题关卡,,,,,,,,, +9,000a000000380102,,无敌蘑菇,,,,,,,,, +10,32400000025b0002,,获得服装Super Mirror I,,,,,,,,, +10,3240010003640002,,获得服装Super Mirror II,,,,,,,,, +10,0017000002680102,,暂无简介,,,,,,,,, +10,0005000000140002,,暂无简介,,,,,,,,, +10,0006000000150002,,暂无简介,,,,,,,,, +10,0013000002660102,,获得黛西公主装,,,,,,,,, +10,05810000001c0002,,获得星际火狐装,,,,,,,,, +10,0580000000050002,,获得星际火狐装,,,,,,,,, +10,0015000003670102,,暂无简介,,,,,,,,, +10,0023000003680102,,暂无简介,,,,,,,,, +10,01000000034b0902,,获得林克装,,,,,,,,, +10,0002000000010002,,获得碧姬公主装,,,,,,,,, +10,05c0000000060002,,获得萨姆斯装甲,,,,,,,,, +12,08010000025d0402,,暂无简介,,,,,,,,, +12,0800010003820002,,暂无简介,,,,,,,,, +12,0800010004150402,,暂无简介,,,,,,,,, +12,08000200003f0402,,暂无简介,,,,,,,,, +12,08000200036a0402,,暂无简介,,,,,,,,, +12,0800020002600402,,暂无简介,,,,,,,,, +12,08000100003e0402,,暂无简介,,,,,,,,, +12,08000100025f0402,,暂无简介,,,,,,,,, +12,0800010003690402,,暂无简介,,,,,,,,, +12,0800030000400402,,暂无简介,,,,,,,,, +12,08000300036b0402,,暂无简介,,,,,,,,, +12,0800030002610402,,暂无简介,,,,,,,,, +12,08020000025e0402,,暂无简介,,,,,,,,, +12,0804000003770402,,暂无简介,,,,,,,,, +12,08050200041b0402,,暂无简介,,,,,,,,, +12,08050200038f0402,,暂无简介,,,,,,,,, +12,08050100038e0402,,暂无简介,,,,,,,,, +12,0805030003900402,,暂无简介,,,,,,,,, +12,0803000003760402,,暂无简介,,,,,,,,, +12,08060100041c0402,,暂无简介,,,,,,,,, +12,0807000004330402,,暂无简介,,,,,,,,, +12,0808000004340402,,暂无简介,,,,,,,,, +12,0809000004350402,,暂无简介,,,,,,,,, +13,2106000003601202,,暂无简介,,,,,,,,, +13,210b000003a50002,,暂无简介,,,,,,,,, +13,2107000003611202,,暂无简介,,,,,,,,, +13,21080000036f1202,,暂无简介,,,,,,,,, +13,2108000003880002,,暂无简介,,,,,,,,, +13,21050000025a0002,,暂无简介,,,,,,,,, +13,2105010003630002,,暂无简介,,,,,,,,, +13,2101000000180002,,暂无简介,,,,,,,,, +13,2102000000290002,,暂无简介,,,,,,,,, +13,21000000000b0002,,暂无简介,,,,,,,,, +13,21030000002a0002,,暂无简介,,,,,,,,, +13,2104000002520002,,暂无简介,,,,,,,,, +13,2109000003701202,,暂无简介,,,,,,,,, +14,2106000003601202,,暂无简介,,,,,,,,, +14,210b000003a50002,,暂无简介,,,,,,,,, +14,2107000003611202,,暂无简介,,,,,,,,, +14,21080000036f1202,,暂无简介,,,,,,,,, +14,2108000003880002,,暂无简介,,,,,,,,, +14,21050000025a0002,,暂无简介,,,,,,,,, +14,2105010003630002,,暂无简介,,,,,,,,, +14,2101000000180002,,暂无简介,,,,,,,,, +14,2102000000290002,,暂无简介,,,,,,,,, +14,21000000000b0002,,暂无简介,,,,,,,,, +14,21030000002a0002,,暂无简介,,,,,,,,, +14,2104000002520002,,暂无简介,,,,,,,,, +14,2109000003701202,,暂无简介,,,,,,,,, +15,2106000003601202,,暂无简介,,,,,,,,, +15,210b000003a50002,,暂无简介,,,,,,,,, +15,2107000003611202,,暂无简介,,,,,,,,, +15,21080000036f1202,,暂无简介,,,,,,,,, +15,2108000003880002,,暂无简介,,,,,,,,, +15,21050000025a0002,,暂无简介,,,,,,,,, +15,2105010003630002,,暂无简介,,,,,,,,, +15,2101000000180002,,暂无简介,,,,,,,,, +15,2102000000290002,,暂无简介,,,,,,,,, +15,21000000000b0002,,暂无简介,,,,,,,,, +15,21030000002a0002,,暂无简介,,,,,,,,, +15,2104000002520002,,暂无简介,,,,,,,,, +15,2109000003701202,,暂无简介,,,,,,,,, +16,2106000003601202,,暂无简介,,,,,,,,, +16,210b000003a50002,,暂无简介,,,,,,,,, +16,2107000003611202,,暂无简介,,,,,,,,, +16,21080000036f1202,,暂无简介,,,,,,,,, +16,2108000003880002,,暂无简介,,,,,,,,, +16,21050000025a0002,,暂无简介,,,,,,,,, +16,2105010003630002,,暂无简介,,,,,,,,, +16,2101000000180002,,暂无简介,,,,,,,,, +16,2102000000290002,,暂无简介,,,,,,,,, +16,21000000000b0002,,暂无简介,,,,,,,,, +16,21030000002a0002,,暂无简介,,,,,,,,, +16,2104000002520002,,暂无简介,,,,,,,,, +16,2109000003701202,,暂无简介,,,,,,,,, +17,0000000002380602,,暂无简介,,,,,,,,, +17,08010000025d0402,,暂无简介,,,,,,,,, +17,01c1000002440502,,暂无简介,,,,,,,,, +17,01030000024f0902,,暂无简介,,,,,,,,, +17,00800102035d0302,,暂无简介,,,,,,,,, +17,05c0000004121302,,暂无简介,,,,,,,,, +17,0007000002630102,,暂无简介,,,,,,,,, +17,0182010100460502,,暂无简介,,,,,,,,, +17,019d000100ac0502,,暂无简介,,,,,,,,, +17,019f000101110502,,暂无简介,,,,,,,,, +17,0193000101740502,,暂无简介,,,,,,,,, +17,02ea000101d50502,,暂无简介,,,,,,,,, +17,0513000102e70502,,暂无简介,,,,,,,,, +17,028f0101031a0502,,暂无简介,,,,,,,,, +18,38c0000003911602,,暂无简介,,,,,,,,, +19,22420000041f0002,,解锁光之圣杯,,,,,,,,, +19,22410000041e0002,,解锁天之圣杯,,,,,,,,, +19,22400000002b0002,,解锁蒙那多,,,,,,,,, +19,22430000043d1b02,,解锁执政官N服装/诺亚、兰兹、优妮的休闲装,,,,,,,,, +19,22440000043e1b02,,解锁执政官M服装/弥央、圣奈、泰恩的休闲装,,,,,,,,, +20,35c30000036e0a02,,暂无简介,,,,,,,,, +20,35c10000036c0a02,,暂无简介,,,,,,,,, +20,35c0000002500a02,,暂无简介,,,,,,,,, +20,35c0000003920a02,,暂无简介,,,,,,,,, +20,35c20000036d0a02,,暂无简介,,,,,,,,, +21,35c30000036e0a02,,暂无简介,,,,,,,,, +21,35c10000036c0a02,,暂无简介,,,,,,,,, +21,35c0000002500a02,,暂无简介,,,,,,,,, +21,35c0000003920a02,,暂无简介,,,,,,,,, +21,35c20000036d0a02,,暂无简介,,,,,,,,, +22,1f02000000280002,,暂无简介,,,,,,,,, +22,1f00000002540c02,,暂无简介,,,,,,,,, +22,1f01000002550c02,,暂无简介,,,,,,,,, +22,1f400000035e1002,,暂无简介,,,,,,,,, +22,1f03000002570c02,,暂无简介,,,,,,,,, +23,1f02000000280002,,暂无简介,,,,,,,,, +23,1f00000002540c02,,暂无简介,,,,,,,,, +23,1f01000002550c02,,暂无简介,,,,,,,,, +23,1f400000035e1002,,暂无简介,,,,,,,,, +23,1f03000002570c02,,暂无简介,,,,,,,,, +24,1f02000000280002,,暂无简介,,,,,,,,, +24,1f00000002540c02,,暂无简介,,,,,,,,, +24,1f01000002550c02,,暂无简介,,,,,,,,, +24,1f400000035e1002,,暂无简介,,,,,,,,, +24,1f03000002570c02,,暂无简介,,,,,,,,, +25,3340000000320002,,暂无简介,,,,,,,,, +26,0600000000120002,,暂无简介,,,,,,,,, +26,0008000000030002,,暂无简介,,,,,,,,, +26,0580000000050002,,暂无简介,,,,,,,,, +26,0005ff00023a0702,,暂无简介,,,,,,,,, +26,08000100025f0402,,暂无简介,,,,,,,,, +26,1f000000000a0002,,暂无简介,,,,,,,,, +26,00010000000c0002,,暂无简介,,,,,,,,, +26,0188000002410502,,暂无简介,,,,,,,,, +26,0000000000000002,,暂无简介,,,,,,,,, +26,3480000000310002,,暂无简介,,,,,,,,, +26,06400100001e0002,,暂无简介,,,,,,,,, +26,3340000000320002,,暂无简介,,,,,,,,, +26,0002000003720102,,暂无简介,,,,,,,,, +26,0002000000010002,,暂无简介,,,,,,,,, +26,00130000037a0002,,暂无简介,,,,,,,,, +26,06420000035f1102,,暂无简介,,,,,,,,, +26,0004000002620102,,暂无简介,,,,,,,,, +26,05c0000000060002,,暂无简介,,,,,,,,, +26,3200000000300002,,暂无简介,,,,,,,,, +26,000a000000380102,,暂无简介,,,,,,,,, +26,0100010000160002,,暂无简介,,,,,,,,, +26,0180000000080002,,暂无简介,,,,,,,,, +26,00070000001a0002,,暂无简介,,,,,,,,, +26,0003000000020002,,暂无简介,,,,,,,,, +26,0181000100440502,,暂无简介,,,,,,,,, +26,0194000100aa0502,,暂无简介,,,,,,,,, +26,01920001010d0502,,暂无简介,,,,,,,,, +26,019c000101730502,,暂无简介,,,,,,,,, +26,0282000101d60502,,暂无简介,,,,,,,,, +26,04a2000102e80502,,暂无简介,,,,,,,,, +26,0374010103190502,,暂无简介,,,,,,,,, +27,0003010200430302,,暂无简介,,,,,,,,, +27,0001000000350102,,暂无简介,,,,,,,,, +27,0000000003710102,,暂无简介,,,,,,,,, +27,0002010003a70102,,暂无简介,,,,,,,,, +28,01010000000e0002,,暂无简介,,,,,,,,, +29,3480000003791502,,暂无简介,,,,,,,,, +30,3480000003791502,,暂无简介,,,,,,,,, +31,3480000002580002,,暂无简介,,,,,,,,, +32,05c0000004121302,,能量罐1个/补充能量,,,,,,,,, +32,05c3000003800002,,导弹包1个/补充弹药,,,,,,,,, +32,05c0000003651302,,补充能量,,,,,,,,, +32,05c0000000060002,,补充能量,,,,,,,,, +32,05c00100001d0002,,补充能量,,,,,,,,, +32,05c1000003661302,,补充弹药,,,,,,,,, +32,05c20000037f0002,,补充弹药,,,,,,,,, +32,05c4000004131302,,暂无简介,,,,,,,,, +33,0005000000390102,,暂无简介,,,,,,,,, +33,08010000025d0402,,暂无简介,,,,,,,,, +33,0013000002660102,,暂无简介,,,,,,,,, +33,0008000000030002,,暂无简介,,,,,,,,, +33,01020100001b0002,,暂无简介,,,,,,,,, +33,0003010200410302,,暂无简介,,,,,,,,, +33,0800010003820002,,暂无简介,,,,,,,,, +33,08000200036a0402,,暂无简介,,,,,,,,, +33,0800030000400402,,暂无简介,,,,,,,,, +33,01810100023f0502,,暂无简介,,,,,,,,, +33,0182000002400502,,暂无简介,,,,,,,,, +33,1f000000000a0002,,暂无简介,,,,,,,,, +33,01000000034e0902,,暂无简介,,,,,,,,, +33,00010000000c0002,,暂无简介,,,,,,,,, +33,08020000025e0402,,暂无简介,,,,,,,,, +33,00000000003d0102,,暂无简介,,,,,,,,, +33,22800000002c0002,,暂无简介,,,,,,,,, +33,00020003039dff02,,暂无简介,,,,,,,,, +33,018e000002490502,,暂无简介,,,,,,,,, +33,0004000002620102,,暂无简介,,,,,,,,, +33,05c0000000060002,,暂无简介,,,,,,,,, +33,0101010000170002,,暂无简介,,,,,,,,, +33,000a000000380102,,暂无简介,,,,,,,,, +33,0183000002420502,,暂无简介,,,,,,,,, +33,0101000003520902,,暂无简介,,,,,,,,, +33,05c00100001d0002,,暂无简介,,,,,,,,, +34,3503010002e50f02,,暂无简介,,,,,,,,, +34,35060000040d0f02,,暂无简介,,,,,,,,, +34,35080000040f1802,,暂无简介,,,,,,,,, +34,350b0000042d1802,,暂无简介,,,,,,,,, +34,3501000002e30f02,,暂无简介,,,,,,,,, +34,3500020002e20f02,,暂无简介,,,,,,,,, +34,3500010002e10f02,,暂无简介,,,,,,,,, +34,350a000004111802,,暂无简介,,,,,,,,, +34,350a0100042c1802,,暂无简介,,,,,,,,, +34,3509000004101802,,暂无简介,,,,,,,,, +34,35090100042b1802,,暂无简介,,,,,,,,, +34,3504010002e60f02,,暂无简介,,,,,,,,, +34,3502010002e40f02,,暂无简介,,,,,,,,, +34,35050000040c0f02,,暂无简介,,,,,,,,, +34,35070000040e0f02,,暂无简介,,,,,,,,, +35,35060000040d0f02,,暂无简介,,,,,,,,, +35,35050000040c0f02,,暂无简介,,,,,,,,, +35,35070000040e0f02,,暂无简介,,,,,,,,, +36,1906000000240002,,暂无简介,,,,,,,,, +36,1d01000003750d02,,暂无简介,,,,,,,,, +36,1b92000000250002,,暂无简介,,,,,,,,, +36,1bd7000003860002,,暂无简介,,,,,,,,, +36,1902000003830002,,暂无简介,,,,,,,,, +36,1927000000260002,,暂无简介,,,,,,,,, +36,1ac0000000110002,,暂无简介,,,,,,,,, +36,19960000023d0002,,暂无简介,,,,,,,,, +36,19ac000003850002,,暂无简介,,,,,,,,, +36,1919000000090002,,暂无简介,,,,,,,,, +36,1d000001025c0d02,,暂无简介,,,,,,,,, +36,1907000003840002,,暂无简介,,,,,,,,, +37,3802000103951702,,暂无简介,,,,,,,,, +37,3805000103981702,,暂无简介,,,,,,,,, +37,3803000103961702,,暂无简介,,,,,,,,, +37,3801000103941702,,暂无简介,,,,,,,,, +37,3800000103931702,,暂无简介,,,,,,,,, +37,3804000103971702,,暂无简介,,,,,,,,, +38,3503010002e50f02,,暂无简介,,,,,,,,, +38,3480000000310002,,暂无简介,,,,,,,,, +38,3501000002e30f02,,暂无简介,,,,,,,,, +38,3500010002e10f02,,暂无简介,,,,,,,,, +38,3504010002e60f02,,暂无简介,,,,,,,,, +38,3502010002e40f02,,暂无简介,,,,,,,,, +38,34c0000002530002,,暂无简介,,,,,,,,, +39,3503010002e50f02,,暂无简介,,,,,,,,, +39,3480000000310002,,暂无简介,,,,,,,,, +39,3501000002e30f02,,暂无简介,,,,,,,,, +39,3500010002e10f02,,暂无简介,,,,,,,,, +39,3504010002e60f02,,暂无简介,,,,,,,,, +39,3502010002e40f02,,暂无简介,,,,,,,,, +39,34c0000002530002,,暂无简介,,,,,,,,, +40,35c30000036e0a02,,暂无简介,,,,,,,,, +40,35c10000036c0a02,,暂无简介,,,,,,,,, +40,35c0000002500a02,,暂无简介,,,,,,,,, +40,35c0000003920a02,,暂无简介,,,,,,,,, +40,35c20000036d0a02,,暂无简介,,,,,,,,, +41,35c30000036e0a02,,暂无简介,,,,,,,,, +41,35c10000036c0a02,,暂无简介,,,,,,,,, +41,35c0000002500a02,,暂无简介,,,,,,,,, +41,35c0000003920a02,,暂无简介,,,,,,,,, +41,35c20000036d0a02,,暂无简介,,,,,,,,, +42,35c30000036e0a02,,暂无简介,,,,,,,,, +42,35c10000036c0a02,,暂无简介,,,,,,,,, +42,35c0000002500a02,,暂无简介,,,,,,,,, +42,35c0000003920a02,,暂无简介,,,,,,,,, +42,35c20000036d0a02,,暂无简介,,,,,,,,, +43,08010000025d0402,,暂无简介,,,,,,,,, +43,0800010003820002,,暂无简介,,,,,,,,, +43,0800010004150402,,暂无简介,,,,,,,,, +43,08000200003f0402,,暂无简介,,,,,,,,, +43,08000200036a0402,,暂无简介,,,,,,,,, +43,0800020002600402,,暂无简介,,,,,,,,, +43,08000100003e0402,,暂无简介,,,,,,,,, +43,08000100025f0402,,暂无简介,,,,,,,,, +43,0800010003690402,,暂无简介,,,,,,,,, +43,0800030000400402,,暂无简介,,,,,,,,, +43,08000300036b0402,,暂无简介,,,,,,,,, +43,0800030002610402,,暂无简介,,,,,,,,, +43,08020000025e0402,,暂无简介,,,,,,,,, +43,0804000003770402,,暂无简介,,,,,,,,, +43,08050200041b0402,,暂无简介,,,,,,,,, +43,08050200038f0402,,暂无简介,,,,,,,,, +43,08050100038e0402,,暂无简介,,,,,,,,, +43,0805030003900402,,暂无简介,,,,,,,,, +43,0803000003760402,,暂无简介,,,,,,,,, +44,1f02000002560c02,,暂无简介,,,,,,,,, +44,1f02000000280002,,暂无简介,,,,,,,,, +44,1f00000002540c02,,暂无简介,,,,,,,,, +44,1f000000000a0002,,暂无简介,,,,,,,,, +44,1f01000002550c02,,暂无简介,,,,,,,,, +44,1f01000000270002,,暂无简介,,,,,,,,, +44,1f400000035e1002,,暂无简介,,,,,,,,, +44,1f03000002570c02,,暂无简介,,,,,,,,, +45,0017000002680102,,暂无简介,,,,,,,,, +45,0005000000140002,,使狂怒酷霸王立即现身,,,,,,,,, +45,0006000000150002,,使酷霸王Jr.释放冲击波,,,,,,,,, +45,0013000002660102,,暂无简介,,,,,,,,, +45,00090000000d0002,,暂无简介,,,,,,,,, +45,0008000000030002,,暂无简介,,,,,,,,, +45,0015000003670102,,暂无简介,,,,,,,,, +45,0023000003680102,,暂无简介,,,,,,,,, +45,00010000000c0002,,暂无简介,,,,,,,,, +45,0000000000340102,,暂无简介,,,,,,,,, +45,0000030003a60102,,获得无敌铃铛,,,,,,,,, +45,00030102023e0302,,暂无简介,,,,,,,,, +45,0002000000360102,,暂无简介,,,,,,,,, +45,0002010003a70102,,随机获得一个增强道具,,,,,,,,, +45,00240000038d0002,,暂无简介,,,,,,,,, +45,0004000002620102,,暂无简介,,,,,,,,, +45,000a000000380102,,暂无简介,,,,,,,,, +45,0014000002670102,,暂无简介,,,,,,,,, +45,0007000002630102,,暂无简介,,,,,,,,, +46,0005000000140002,,暂无简介,,,,,,,,, +46,0005000000390102,,暂无简介,,,,,,,,, +46,0005000003730102,,显示紫金币位置/解锁酷霸王的礼服,,,,,,,,, +46,0009000002650102,,解锁迪迪刚套装,,,,,,,,, +46,0000010000190002,,解锁医生套装,,,,,,,,, +46,0001000000350102,,解锁路易吉套装,,,,,,,,, +46,0000000000000002,,解锁经典套装,,,,,,,,, +46,00000000003c0102,,解锁金色马力欧套装,,,,,,,,, +46,00000000003d0102,,解锁金色马力欧套装,,,,,,,,, +46,0000000003710102,,短时间无敌/解锁马力欧的礼服,,,,,,,,, +46,0002000003720102,,血上限+3/解锁婚纱,,,,,,,,, +46,3740000103741402,,暂无简介,,,,,,,,, +46,0014000002670102,,解锁瓦路易吉套装,,,,,,,,, +46,00070000001a0002,,解锁瓦力欧套装,,,,,,,,, +46,000a000303a0ff02,,,,,,,,,,, +46,00000003039bff02,,,,,,,,,,, +46,000000030430ff02,,,,,,,,,,, +46,00010003039cff02,,,,,,,,,,, +46,00030003039fff02,,,,,,,,,,, +46,00130003039eff02,,,,,,,,,,, +47,3dc1000004230002,,暂无简介,,,,,,,,, +47,3b40000003a30002,,暂无简介,,,,,,,,, +47,32400000025b0002,,暂无简介,,,,,,,,, +47,3240010003640002,,暂无简介,,,,,,,,, +47,0005000000140002,,暂无简介,,,,,,,,, +47,0006000000150002,,暂无简介,,,,,,,,, +47,210b000003a50002,,暂无简介,,,,,,,,, +47,0600000000120002,,暂无简介,,,,,,,,, +47,1906000000240002,,暂无简介,,,,,,,,, +47,2108000003880002,,暂无简介,,,,,,,,, +47,3600000002590002,,暂无简介,,,,,,,,, +47,3600010003620002,,暂无简介,,,,,,,,, +47,21050000025a0002,,暂无简介,,,,,,,,, +47,2105010003630002,,暂无简介,,,,,,,,, +47,00130000037a0002,,暂无简介,,,,,,,,, +47,0741000000200002,,暂无简介,,,,,,,,, +47,05c3000003800002,,暂无简介,,,,,,,,, +47,00090000000d0002,,暂无简介,,,,,,,,, +47,0008000000030002,,暂无简介,,,,,,,,, +47,0000010000190002,,暂无简介,,,,,,,,, +47,07820000002f0002,,暂无简介,,,,,,,,, +47,05810000001c0002,,暂无简介,,,,,,,,, +47,0580000000050002,,暂无简介,,,,,,,,, +47,01020100001b0002,,暂无简介,,,,,,,,, +47,1b92000000250002,,暂无简介,,,,,,,,, +47,3640000003a20002,,暂无简介,,,,,,,,, +47,078f000003810002,,暂无简介,,,,,,,,, +47,2101000000180002,,暂无简介,,,,,,,,, +47,1bd7000003860002,,暂无简介,,,,,,,,, +47,0800010003820002,,暂无简介,,,,,,,,, +47,01810000037d0002,,暂无简介,,,,,,,,, +47,1902000003830002,,暂无简介,,,,,,,,, +47,1927000000260002,,暂无简介,,,,,,,,, +47,3a00000003a10002,,暂无简介,,,,,,,,, +47,33c0000004200002,,暂无简介,,,,,,,,, +47,34c1000003890002,,暂无简介,,,,,,,,, +47,1f02000000280002,,暂无简介,,,,,,,,, +47,00c00000037b0002,,暂无简介,,,,,,,,, +47,1f000000000a0002,,暂无简介,,,,,,,,, +47,0100000000040002,,暂无简介,,,,,,,,, +47,06c00000000f0002,,暂无简介,,,,,,,,, +47,1ac0000000110002,,暂无简介,,,,,,,,, +47,2281000002510002,,暂无简介,,,,,,,,, +47,2102000000290002,,暂无简介,,,,,,,,, +47,00010000000c0002,,暂无简介,,,,,,,,, +47,0000000000000002,,暂无简介,,,,,,,,, +47,21000000000b0002,,暂无简介,,,,,,,,, +47,3480000000310002,,暂无简介,,,,,,,,, +47,3480000002580002,,暂无简介,,,,,,,,, +47,1f01000000270002,,暂无简介,,,,,,,,, +47,19960000023d0002,,暂无简介,,,,,,,,, +47,07c0000000210002,,暂无简介,,,,,,,,, +47,07c0020000230002,,暂无简介,,,,,,,,, +47,07c0010000220002,,暂无简介,,,,,,,,, +47,0a400000041d0002,,暂无简介,,,,,,,,, +47,07800000002d0002,,暂无简介,,,,,,,,, +47,22420000041f0002,,暂无简介,,,,,,,,, +47,22800000002c0002,,暂无简介,,,,,,,,, +47,06400100001e0002,,暂无简介,,,,,,,,, +47,3340000000320002,,暂无简介,,,,,,,,, +47,07420000001f0002,,暂无简介,,,,,,,,, +47,0002000000010002,,暂无简介,,,,,,,,, +47,19ac000003850002,,暂无简介,,,,,,,,, +47,1919000000090002,,暂无简介,,,,,,,,, +47,00240000038d0002,,暂无简介,,,,,,,,, +47,0740000000100002,,暂无简介,,,,,,,,, +47,1d40000003870002,,暂无简介,,,,,,,,, +47,22410000041e0002,,暂无简介,,,,,,,,, +47,07810000002e0002,,暂无简介,,,,,,,,, +47,0781000000330002,,暂无简介,,,,,,,,, +47,37c10000038c0002,,暂无简介,,,,,,,,, +47,05c20000037f0002,,暂无简介,,,,,,,,, +47,21030000002a0002,,暂无简介,,,,,,,,, +47,0004010000130002,,暂无简介,,,,,,,,, +47,2104000002520002,,暂无简介,,,,,,,,, +47,34c0000002530002,,暂无简介,,,,,,,,, +47,05c0000000060002,,暂无简介,,,,,,,,, +47,3601000004210002,,暂无简介,,,,,,,,, +47,0101010000170002,,暂无简介,,,,,,,,, +47,22400000002b0002,,暂无简介,,,,,,,,, +47,37c00000038b0002,,暂无简介,,,,,,,,, +47,37800000038a0002,,暂无简介,,,,,,,,, +47,3200000000300002,,暂无简介,,,,,,,,, +47,1907000003840002,,暂无简介,,,,,,,,, +47,3dc0000004220002,,暂无简介,,,,,,,,, +47,3c80000003a40002,,暂无简介,,,,,,,,, +47,0100010000160002,,暂无简介,,,,,,,,, +47,0180000000080002,,暂无简介,,,,,,,,, +47,00070000001a0002,,暂无简介,,,,,,,,, +47,0700000000070002,,暂无简介,,,,,,,,, +47,05840000037e0002,,暂无简介,,,,,,,,, +47,0003000000020002,,暂无简介,,,,,,,,, +47,01000000037c0002,,暂无简介,,,,,,,,, +47,01010000000e0002,,暂无简介,,,,,,,,, +47,05c00100001d0002,,暂无简介,,,,,,,,, +47,3f000000042e0002,,暂无简介,,,,,,,,, +48,0003010200410302,,暂无简介,,,,,,,,, +48,0005ff00023a0702,,暂无简介,,,,,,,,, +48,0023000003680102,,暂无简介,,,,,,,,, +48,0003010200430302,,暂无简介,,,,,,,,, +48,0001000000350102,,暂无简介,,,,,,,,, +48,0000000000000002,,暂无简介,,,,,,,,, +48,0002000000360102,,暂无简介,,,,,,,,, +48,0003010200420302,,暂无简介,,,,,,,,, +48,00800102035d0302,,暂无简介,,,,,,,,, +48,000a000000380102,,暂无简介,,,,,,,,, +48,0003000000020002,,暂无简介,,,,,,,,, +49,38460001042a1902,,暂无简介,,,,,,,,, +49,3842000104261902,,暂无简介,,,,,,,,, +49,3845000104291902,,暂无简介,,,,,,,,, +49,3844000104281902,,暂无简介,,,,,,,,, +49,3843000104271902,,暂无简介,,,,,,,,, +49,3841000104251902,,暂无简介,,,,,,,,, +49,3840000104241902,,暂无简介,,,,,,,,, +50,3380000003781402,,暂无简介,,,,,,,,, +51,0017000002680102,,暂无简介,,,,,,,,, +51,0005000000140002,,暂无简介,,,,,,,,, +51,0006000000150002,,暂无简介,,,,,,,,, +51,00130000037a0002,,暂无简介,,,,,,,,, +51,00090000000d0002,,暂无简介,,,,,,,,, +51,0008000002640102,,暂无简介,,,,,,,,, +51,0015000003670102,,暂无简介,,,,,,,,, +51,0023000003680102,,暂无简介,,,,,,,,, +51,00010000000c0002,,暂无简介,,,,,,,,, +51,0000000000340102,,暂无简介,,,,,,,,, +51,0002000000010002,,暂无简介,,,,,,,,, +51,0003010200420302,,暂无简介,,,,,,,,, +51,0004010000130002,,暂无简介,,,,,,,,, +51,0014000002670102,,暂无简介,,,,,,,,, +51,0007000002630102,,暂无简介,,,,,,,,, +53,0192000002470502,,,,,,,,,,, +53,0193000002480502,,,,,,,,,,, +53,018b000002460502,,,,,,,,,,, +53,018c000002430502,,,,,,,,,,, +53,01810100023f0502,,,,,,,,,,, +53,0182000002400502,,,,,,,,,,, +53,01960000024e0502,,,,,,,,,,, +53,01940000024a0502,,,,,,,,,,, +53,01c1000002440502,,,,,,,,,,, +53,0188000002410502,,,,,,,,,,, +53,018a000002450502,,,,,,,,,,, +53,018e000002490502,,,,,,,,,,, +53,018d0000024c0502,,,,,,,,,,, +53,01810000024b0502,,,,,,,,,,, +53,01840000024d0502,,,,,,,,,,, +53,0183000002420502,,,,,,,,,,, +54,0282000101d60502,,,,,,,,,,, +54,025f000101d70502,,,,,,,,,,, +54,02ea000101d50502,,,,,,,,,,, +55,0374010103190502,,,,,,,,,,, +55,028f0101031a0502,,,,,,,,,,, +55,04d30101031b0502,,,,,,,,,,, +55,032e0101031c0502,,,,,,,,,,, +55,02e00101031d0502,,,,,,,,,,, +55,04a80101031e0502,,,,,,,,,,, +56,0181000100440502,,,,,,,,,,, +56,0183000100450502,,,,,,,,,,, +56,0182010100460502,,,,,,,,,,, +56,0187000100470502,,,,,,,,,,, +56,0196000100480502,,,,,,,,,,, +56,018e000100490502,,,,,,,,,,, +56,01a30001004a0502,,,,,,,,,,, +56,01850001004b0502,,,,,,,,,,, +56,018c0001004c0502,,,,,,,,,,, +56,01a40001004d0502,,,,,,,,,,, +56,01910001004e0502,,,,,,,,,,, +56,01a80001004f0502,,,,,,,,,,, +56,01a6000100500502,,,,,,,,,,, +56,01b5000100510502,,,,,,,,,,, +56,01b0000100520502,,,,,,,,,,, +56,01aa000100530502,,,,,,,,,,, +56,01c1000100540502,,,,,,,,,,, +56,025d000100550502,,,,,,,,,,, +56,02d6000100560502,,,,,,,,,,, +56,0216000100570502,,,,,,,,,,, +56,02ef000100580502,,,,,,,,,,, +56,04fe000100590502,,,,,,,,,,, +56,02870001005a0502,,,,,,,,,,, +56,05150001005b0502,,,,,,,,,,, +56,03710001005c0502,,,,,,,,,,, +56,04ba0001005d0502,,,,,,,,,,, +56,02db0001005e0502,,,,,,,,,,, +56,03450001005f0502,,,,,,,,,,, +56,047a000100600502,,,,,,,,,,, +56,049b000100610502,,,,,,,,,,, +56,04ed000100620502,,,,,,,,,,, +56,027d000100630502,,,,,,,,,,, +56,0307000100640502,,,,,,,,,,, +56,0261000100650502,,,,,,,,,,, +56,0401000100660502,,,,,,,,,,, +56,02c4000100670502,,,,,,,,,,, +56,0266000100680502,,,,,,,,,,, +56,02b1000100690502,,,,,,,,,,, +56,02310001006a0502,,,,,,,,,,, +56,03480001006b0502,,,,,,,,,,, +56,03180001006c0502,,,,,,,,,,, +56,03db0001006d0502,,,,,,,,,,, +56,04650001006e0502,,,,,,,,,,, +56,04000001006f0502,,,,,,,,,,, +56,0429000100700502,,,,,,,,,,, +56,03a9000100710502,,,,,,,,,,, +56,02a4000100720502,,,,,,,,,,, +56,0452000100730502,,,,,,,,,,, +56,04a5000100740502,,,,,,,,,,, +56,0263000100750502,,,,,,,,,,, +56,0323000100760502,,,,,,,,,,, +56,04ec000100770502,,,,,,,,,,, +56,040d000100780502,,,,,,,,,,, +56,030b000100790502,,,,,,,,,,, +56,04970001007a0502,,,,,,,,,,, +56,04fd0001007b0502,,,,,,,,,,, +56,043d0001007c0502,,,,,,,,,,, +56,02680001007d0502,,,,,,,,,,, +56,02190001007e0502,,,,,,,,,,, +56,04100001007f0502,,,,,,,,,,, +56,021b000100800502,,,,,,,,,,, +56,024f000100810502,,,,,,,,,,, +56,04e6000100820502,,,,,,,,,,, +56,0280000100830502,,,,,,,,,,, +56,0235000100840502,,,,,,,,,,, +56,035a000100850502,,,,,,,,,,, +56,0384000100860502,,,,,,,,,,, +56,03ae000100870502,,,,,,,,,,, +56,040e000100880502,,,,,,,,,,, +56,0394000100890502,,,,,,,,,,, +56,03bc0001008a0502,,,,,,,,,,, +56,03ee0001008b0502,,,,,,,,,,, +56,046c0001008c0502,,,,,,,,,,, +56,04800001008d0502,,,,,,,,,,, +56,044c0001008e0502,,,,,,,,,,, +56,033f0001008f0502,,,,,,,,,,, +56,02fb000100900502,,,,,,,,,,, +56,03a8000100910502,,,,,,,,,,, +56,0479000100920502,,,,,,,,,,, +56,03c6000100930502,,,,,,,,,,, +56,04c7000100940502,,,,,,,,,,, +56,0299000100950502,,,,,,,,,,, +56,0208000100960502,,,,,,,,,,, +56,02fa000100970502,,,,,,,,,,, +56,0488000100980502,,,,,,,,,,, +56,050b000100990502,,,,,,,,,,, +56,04940001009a0502,,,,,,,,,,, +56,03830001009b0502,,,,,,,,,,, +56,02de0001009c0502,,,,,,,,,,, +56,03290001009d0502,,,,,,,,,,, +56,04d10001009e0502,,,,,,,,,,, +56,034b0001009f0502,,,,,,,,,,, +56,0393000100a00502,,,,,,,,,,, +56,0200000100a10502,,,,,,,,,,, +56,04dd000100a20502,,,,,,,,,,, +56,04a6000100a30502,,,,,,,,,,, +56,04cc000100a40502,,,,,,,,,,, +56,0460000100a50502,,,,,,,,,,, +56,0317000100a60502,,,,,,,,,,, +56,02f0000100a70502,,,,,,,,,,, +57,0182000100a80502,,,,,,,,,,, +57,018a000100a90502,,,,,,,,,,, +57,0194000100aa0502,,,,,,,,,,, +57,0189000100ab0502,,,,,,,,,,, +57,019d000100ac0502,,,,,,,,,,, +57,019e000100ad0502,,,,,,,,,,, +57,01b6000100ae0502,,,,,,,,,,, +57,0186010100af0502,,,,,,,,,,, +57,0195000100b00502,,,,,,,,,,, +57,0198000100b10502,,,,,,,,,,, +57,01b1000100b20502,,,,,,,,,,, +57,018f000100b30502,,,,,,,,,,, +57,0181010100b40502,,,,,,,,,,, +57,01b3000100b50502,,,,,,,,,,, +57,019b000100b60502,,,,,,,,,,, +57,019a000100b70502,,,,,,,,,,, +57,01ad000100b80502,,,,,,,,,,, +57,027f000100b90502,,,,,,,,,,, +57,026e000100ba0502,,,,,,,,,,, +57,03c1000100bb0502,,,,,,,,,,, +57,032d000100bc0502,,,,,,,,,,, +57,023c000100bd0502,,,,,,,,,,, +57,02dc000100be0502,,,,,,,,,,, +57,0398000100bf0502,,,,,,,,,,, +57,0464000100c00502,,,,,,,,,,, +57,0251000100c10502,,,,,,,,,,, +57,03d1000100c20502,,,,,,,,,,, +57,026c000100c30502,,,,,,,,,,, +57,02b2000100c40502,,,,,,,,,,, +57,0344000100c50502,,,,,,,,,,, +57,0309000100c60502,,,,,,,,,,, +57,0283000100c70502,,,,,,,,,,, +57,03a6000100c80502,,,,,,,,,,, +57,035d000100c90502,,,,,,,,,,, +57,0440000100ca0502,,,,,,,,,,, +57,029b000100cb0502,,,,,,,,,,, +57,02f2000100cc0502,,,,,,,,,,, +57,02c9000100cd0502,,,,,,,,,,, +57,04de000100ce0502,,,,,,,,,,, +57,0450000100cf0502,,,,,,,,,,, +57,03fa000100d00502,,,,,,,,,,, +57,023e000100d10502,,,,,,,,,,, +57,0260000100d20502,,,,,,,,,,, +57,0369000100d30502,,,,,,,,,,, +57,04a4000100d40502,,,,,,,,,,, +57,0381000100d50502,,,,,,,,,,, +57,0311000100d60502,,,,,,,,,,, +57,050e000100d70502,,,,,,,,,,, +57,0418000100d80502,,,,,,,,,,, +57,0496000100d90502,,,,,,,,,,, +57,021a000100da0502,,,,,,,,,,, +57,04ce000100db0502,,,,,,,,,,, +57,02c3000100dc0502,,,,,,,,,,, +57,04b3000100dd0502,,,,,,,,,,, +57,02eb000100de0502,,,,,,,,,,, +57,0499000100df0502,,,,,,,,,,, +57,041a000100e00502,,,,,,,,,,, +57,04cf000100e10502,,,,,,,,,,, +57,02d8000100e20502,,,,,,,,,,, +57,028b000100e30502,,,,,,,,,,, +57,0214000100e40502,,,,,,,,,,, +57,03d2000100e50502,,,,,,,,,,, +57,03aa000100e60502,,,,,,,,,,, +57,0500000100e70502,,,,,,,,,,, +57,04df000100e80502,,,,,,,,,,, +57,026b000100e90502,,,,,,,,,,, +57,02dd000100ea0502,,,,,,,,,,, +57,0357000100eb0502,,,,,,,,,,, +57,03e6000100ec0502,,,,,,,,,,, +57,049d000100ed0502,,,,,,,,,,, +57,029a000100ee0502,,,,,,,,,,, +57,0489000100ef0502,,,,,,,,,,, +57,03b1000100f00502,,,,,,,,,,, +57,041b000100f10502,,,,,,,,,,, +57,022d000100f20502,,,,,,,,,,, +57,046d000100f30502,,,,,,,,,,, +57,03ff000100f40502,,,,,,,,,,, +57,047b000100f50502,,,,,,,,,,, +57,0462000100f60502,,,,,,,,,,, +57,04e0000100f70502,,,,,,,,,,, +57,0310000100f80502,,,,,,,,,,, +57,03bd000100f90502,,,,,,,,,,, +57,033b000100fa0502,,,,,,,,,,, +57,0416000100fb0502,,,,,,,,,,, +57,0486000100fc0502,,,,,,,,,,, +57,0220000100fd0502,,,,,,,,,,, +57,0252000100fe0502,,,,,,,,,,, +57,0270000100ff0502,,,,,,,,,,, +57,033c000101000502,,,,,,,,,,, +57,04c5000101010502,,,,,,,,,,, +57,02f9000101020502,,,,,,,,,,, +57,0202000101030502,,,,,,,,,,, +57,0453000101040502,,,,,,,,,,, +57,0437000101050502,,,,,,,,,,, +57,0385000101060502,,,,,,,,,,, +57,0510000101070502,,,,,,,,,,, +57,0267000101080502,,,,,,,,,,, +57,04e2000101090502,,,,,,,,,,, +57,03250001010a0502,,,,,,,,,,, +57,03720001010b0502,,,,,,,,,,, +58,018d0001010c0502,,,,,,,,,,, +58,01920001010d0502,,,,,,,,,,, +58,01830101010e0502,,,,,,,,,,, +58,01a00001010f0502,,,,,,,,,,, +58,01a1000101100502,,,,,,,,,,, +58,019f000101110502,,,,,,,,,,, +58,0188000101120502,,,,,,,,,,, +58,01b4000101130502,,,,,,,,,,, +58,01a7000101140502,,,,,,,,,,, +58,018b000101150502,,,,,,,,,,, +58,0199000101160502,,,,,,,,,,, +58,0185020101170502,,,,,,,,,,, +58,018c010101180502,,,,,,,,,,, +58,018f010101190502,,,,,,,,,,, +58,01810201011a0502,,,,,,,,,,, +58,01ae0001011b0502,,,,,,,,,,, +58,01af0001011c0502,,,,,,,,,,, +58,03380001011d0502,,,,,,,,,,, +58,022f0001011e0502,,,,,,,,,,, +58,02690001011f0502,,,,,,,,,,, +58,0281000101200502,,,,,,,,,,, +58,0313000101210502,,,,,,,,,,, +58,02c7000101220502,,,,,,,,,,, +58,021e000101230502,,,,,,,,,,, +58,02a6000101240502,,,,,,,,,,, +58,025e000101250502,,,,,,,,,,, +58,024b000101260502,,,,,,,,,,, +58,0392000101270502,,,,,,,,,,, +58,0342000101280502,,,,,,,,,,, +58,035c000101290502,,,,,,,,,,, +58,03e70001012a0502,,,,,,,,,,, +58,03c40001012b0502,,,,,,,,,,, +58,03af0001012c0502,,,,,,,,,,, +58,042a0001012d0502,,,,,,,,,,, +58,047d0001012e0502,,,,,,,,,,, +58,030e0001012f0502,,,,,,,,,,, +58,02d7000101300502,,,,,,,,,,, +58,0463000101310502,,,,,,,,,,, +58,04e7000101320502,,,,,,,,,,, +58,02da000101330502,,,,,,,,,,, +58,0373000101340502,,,,,,,,,,, +58,0356000101350502,,,,,,,,,,, +58,02cb000101360502,,,,,,,,,,, +58,0262000101370502,,,,,,,,,,, +58,02f8000101380502,,,,,,,,,,, +58,0326000101390502,,,,,,,,,,, +58,033d0001013a0502,,,,,,,,,,, +58,04ef0001013b0502,,,,,,,,,,, +58,02210001013c0502,,,,,,,,,,, +58,029e0001013d0502,,,,,,,,,,, +58,028c0001013e0502,,,,,,,,,,, +58,026d0001013f0502,,,,,,,,,,, +58,049c000101400502,,,,,,,,,,, +58,041c000101410502,,,,,,,,,,, +58,050d000101420502,,,,,,,,,,, +58,034a000101430502,,,,,,,,,,, +58,0222000101440502,,,,,,,,,,, +58,02f1000101450502,,,,,,,,,,, +58,026a000101460502,,,,,,,,,,, +58,03fc000101470502,,,,,,,,,,, +58,032c000101480502,,,,,,,,,,, +58,043e000101490502,,,,,,,,,,, +58,04980001014a0502,,,,,,,,,,, +58,04ee0001014b0502,,,,,,,,,,, +58,04850001014c0502,,,,,,,,,,, +58,03080001014d0502,,,,,,,,,,, +58,049a0001014e0502,,,,,,,,,,, +58,03a40001014f0502,,,,,,,,,,, +58,040f000101500502,,,,,,,,,,, +58,03da000101510502,,,,,,,,,,, +58,04cd000101520502,,,,,,,,,,, +58,0514000101530502,,,,,,,,,,, +58,0265000101540502,,,,,,,,,,, +58,043f000101550502,,,,,,,,,,, +58,037e000101560502,,,,,,,,,,, +58,03d6000101570502,,,,,,,,,,, +58,03fd000101580502,,,,,,,,,,, +58,040c000101590502,,,,,,,,,,, +58,02ed0001015a0502,,,,,,,,,,, +58,03a50001015b0502,,,,,,,,,,, +58,03c50001015c0502,,,,,,,,,,, +58,03700001015d0502,,,,,,,,,,, +58,04510001015e0502,,,,,,,,,,, +58,041e0001015f0502,,,,,,,,,,, +58,04b9000101600502,,,,,,,,,,, +58,0461000101610502,,,,,,,,,,, +58,04ff000101620502,,,,,,,,,,, +58,0478000101630502,,,,,,,,,,, +58,0469000101640502,,,,,,,,,,, +58,04e3000101650502,,,,,,,,,,, +58,023f000101660502,,,,,,,,,,, +58,04c6000101670502,,,,,,,,,,, +58,04fa000101680502,,,,,,,,,,, +58,027e000101690502,,,,,,,,,,, +58,02010001016a0502,,,,,,,,,,, +58,03820001016b0502,,,,,,,,,,, +58,044b0001016c0502,,,,,,,,,,, +58,030f0001016d0502,,,,,,,,,,, +58,04a00001016e0502,,,,,,,,,,, +58,04a10001016f0502,,,,,,,,,,, +59,0181030101700502,,,,,,,,,,, +59,0190000101710502,,,,,,,,,,, +59,01a5000101720502,,,,,,,,,,, +59,019c000101730502,,,,,,,,,,, +59,0193000101740502,,,,,,,,,,, +59,0186030101750502,,,,,,,,,,, +59,01a9000101760502,,,,,,,,,,, +59,0197000101770502,,,,,,,,,,, +59,018e010101780502,,,,,,,,,,, +59,0185040101790502,,,,,,,,,,, +59,01c10101017a0502,,,,,,,,,,, +59,01b10101017b0502,,,,,,,,,,, +59,01ab0001017c0502,,,,,,,,,,, +59,01a20001017d0502,,,,,,,,,,, +59,01a80101017e0502,,,,,,,,,,, +59,01ac0001017f0502,,,,,,,,,,, +59,02ea000101800502,,,,,,,,,,, +59,0282000101810502,,,,,,,,,,, +59,0215000101820502,,,,,,,,,,, +59,03ec000101830502,,,,,,,,,,, +59,030d000101840502,,,,,,,,,,, +59,0390000101850502,,,,,,,,,,, +59,0272000101860502,,,,,,,,,,, +59,0380000101870502,,,,,,,,,,, +59,03ac000101880502,,,,,,,,,,, +59,0324000101890502,,,,,,,,,,, +59,041d0001018a0502,,,,,,,,,,, +59,036b0001018b0502,,,,,,,,,,, +59,02a50001018c0502,,,,,,,,,,, +59,03490001018d0502,,,,,,,,,,, +59,035e0001018e0502,,,,,,,,,,, +59,02fc0001018f0502,,,,,,,,,,, +59,026f000101900502,,,,,,,,,,, +59,02df000101910502,,,,,,,,,,, +59,0495000101920502,,,,,,,,,,, +59,044d000101930502,,,,,,,,,,, +59,0436000101940502,,,,,,,,,,, +59,0511000101950502,,,,,,,,,,, +59,04d0000101960502,,,,,,,,,,, +59,046b000101970502,,,,,,,,,,, +59,03be000101980502,,,,,,,,,,, +59,02ee000101990502,,,,,,,,,,, +59,02030001019a0502,,,,,,,,,,, +59,02710001019b0502,,,,,,,,,,, +59,02b80001019c0502,,,,,,,,,,, +59,036a0001019d0502,,,,,,,,,,, +59,028e0001019e0502,,,,,,,,,,, +59,02090001019f0502,,,,,,,,,,, +59,047c000101a00502,,,,,,,,,,, +59,03a7000101a10502,,,,,,,,,,, +59,033e000101a20502,,,,,,,,,,, +59,03ed000101a30502,,,,,,,,,,, +59,03fe000101a40502,,,,,,,,,,, +59,03d9000101a50502,,,,,,,,,,, +59,04a7000101a60502,,,,,,,,,,, +59,04d2000101a70502,,,,,,,,,,, +59,045f000101a80502,,,,,,,,,,, +59,03b0000101a90502,,,,,,,,,,, +59,037f000101aa0502,,,,,,,,,,, +59,0411000101ab0502,,,,,,,,,,, +59,0264000101ac0502,,,,,,,,,,, +59,04e5000101ad0502,,,,,,,,,,, +59,0454000101ae0502,,,,,,,,,,, +59,042b000101af0502,,,,,,,,,,, +59,0483000101b00502,,,,,,,,,,, +59,0339000101b10502,,,,,,,,,,, +59,03ad000101b20502,,,,,,,,,,, +59,0217000101b30502,,,,,,,,,,, +59,03d7000101b40502,,,,,,,,,,, +59,023d000101b50502,,,,,,,,,,, +59,04e4000101b60502,,,,,,,,,,, +59,049e000101b70502,,,,,,,,,,, +59,030c000101b80502,,,,,,,,,,, +59,04b2000101b90502,,,,,,,,,,, +59,02a2000101ba0502,,,,,,,,,,, +59,0415000101bb0502,,,,,,,,,,, +59,03bf000101bc0502,,,,,,,,,,, +59,028d000101bd0502,,,,,,,,,,, +59,04e1000101be0502,,,,,,,,,,, +59,0487000101bf0502,,,,,,,,,,, +59,0316000101c00502,,,,,,,,,,, +59,050c000101c10502,,,,,,,,,,, +59,0399000101c20502,,,,,,,,,,, +59,0327000101c30502,,,,,,,,,,, +59,02ec000101c40502,,,,,,,,,,, +59,025f000101c50502,,,,,,,,,,, +59,04fb000101c60502,,,,,,,,,,, +59,030a000101c70502,,,,,,,,,,, +59,02d9000101c80502,,,,,,,,,,, +59,04a3000101c90502,,,,,,,,,,, +59,02ca000101ca0502,,,,,,,,,,, +59,043c000101cb0502,,,,,,,,,,, +59,033a000101cc0502,,,,,,,,,,, +59,021d000101cd0502,,,,,,,,,,, +59,04e8000101ce0502,,,,,,,,,,, +59,03fb000101cf0502,,,,,,,,,,, +59,046a000101d00502,,,,,,,,,,, +59,024a000101d10502,,,,,,,,,,, +59,0230000101d20502,,,,,,,,,,, +59,022e000101d30502,,,,,,,,,,, +60,0183020103a80502,,,,,,,,,,, +60,0184050103a90502,,,,,,,,,,, +60,0181040103aa0502,,,,,,,,,,, +60,0a00000103ab0502,,,,,,,,,,, +60,0a01000103ac0502,,,,,,,,,,, +60,0192000103ad0502,,,,,,,,,,, +60,0193000103ae0502,,,,,,,,,,, +60,0188000103af0502,,,,,,,,,,, +60,0187000103b00502,,,,,,,,,,, +60,0189010103b10502,,,,,,,,,,, +60,0182000103b20502,,,,,,,,,,, +60,0a02000103b30502,,,,,,,,,,, +60,0a03000103b40502,,,,,,,,,,, +60,0a04000103b50502,,,,,,,,,,, +60,0194000103b60502,,,,,,,,,,, +60,01a6000103b70502,,,,,,,,,,, +60,0a05000103b80502,,,,,,,,,,, +60,01a2000103b90502,,,,,,,,,,, +60,0a06000103ba0502,,,,,,,,,,, +60,01c1020103bb0502,,,,,,,,,,, +60,0a07000103bc0502,,,,,,,,,,, +60,0a08000103bd0502,,,,,,,,,,, +60,0183030103be0502,,,,,,,,,,, +60,0181050103bf0502,,,,,,,,,,, +60,0a09000103c00502,,,,,,,,,,, +60,0a0a000103c10502,,,,,,,,,,, +60,0a0b000103c20502,,,,,,,,,,, +60,0a0c000103c30502,,,,,,,,,,, +60,0a0d000103c40502,,,,,,,,,,, +60,0a0e000103c50502,,,,,,,,,,, +60,0a0f000103c60502,,,,,,,,,,, +60,0a10000103c70502,,,,,,,,,,, +60,0a11000103c80502,,,,,,,,,,, +60,0a12000103c90502,,,,,,,,,,, +60,0a13000103ca0502,,,,,,,,,,, +60,0a14000103cb0502,,,,,,,,,,, +60,0a15000103cc0502,,,,,,,,,,, +60,0a16000103cd0502,,,,,,,,,,, +60,0a17000103ce0502,,,,,,,,,,, +60,0a18000103cf0502,,,,,,,,,,, +60,0a19000103d00502,,,,,,,,,,, +60,0a1a000103d10502,,,,,,,,,,, +60,0a1b000103d20502,,,,,,,,,,, +60,0a1c000103d30502,,,,,,,,,,, +60,0a1d000103d40502,,,,,,,,,,, +60,0a1e000103d50502,,,,,,,,,,, +60,0a1f000103d60502,,,,,,,,,,, +60,0a20000103d70502,,,,,,,,,,, +61,0181000101d40502,,,,,,,,,,, +61,0182000101d80502,,,,,,,,,,, +62,0513000102e70502,,,,,,,,,,, +62,04a2000102e80502,,,,,,,,,,, +62,028a000102e90502,,,,,,,,,,, +62,0232000102ea0502,,,,,,,,,,, +62,0328000102eb0502,,,,,,,,,,, +62,04b6000102ec0502,,,,,,,,,,, +62,04c8000102ed0502,,,,,,,,,,, +62,04fc000102ee0502,,,,,,,,,,, +62,0343000102ef0502,,,,,,,,,,, +62,04eb000102f00502,,,,,,,,,,, +62,0481000102f10502,,,,,,,,,,, +62,0468000102f20502,,,,,,,,,,, +62,03d3000102f30502,,,,,,,,,,, +62,0314000102f40502,,,,,,,,,,, +62,03e8000102f50502,,,,,,,,,,, +62,024d000102f60502,,,,,,,,,,, +62,021c000102f70502,,,,,,,,,,, +62,0238000102f80502,,,,,,,,,,, +62,02f3000102f90502,,,,,,,,,,, +62,0358000102fa0502,,,,,,,,,,, +62,036e000102fb0502,,,,,,,,,,, +62,0395000102fc0502,,,,,,,,,,, +62,0482000102fd0502,,,,,,,,,,, +62,0284000102fe0502,,,,,,,,,,, +62,02a3000102ff0502,,,,,,,,,,, +62,0438000103000502,,,,,,,,,,, +62,049f000103010502,,,,,,,,,,, +62,0347000103020502,,,,,,,,,,, +62,043b000103030502,,,,,,,,,,, +62,036d000103040502,,,,,,,,,,, +62,02f4000103050502,,,,,,,,,,, +62,0233000103060502,,,,,,,,,,, +62,032a000103070502,,,,,,,,,,, +62,02c5000103080502,,,,,,,,,,, +62,0312000103090502,,,,,,,,,,, +62,04140001030a0502,,,,,,,,,,, +62,03ea0001030b0502,,,,,,,,,,, +62,04b40001030c0502,,,,,,,,,,, +62,04c90001030d0502,,,,,,,,,,, +62,03410001030e0502,,,,,,,,,,, +62,02b70001030f0502,,,,,,,,,,, +62,03c0000103100502,,,,,,,,,,, +62,0439000103110502,,,,,,,,,,, +62,0206000103120502,,,,,,,,,,, +62,0286000103130502,,,,,,,,,,, +62,050f000103140502,,,,,,,,,,, +62,044e000103150502,,,,,,,,,,, +62,03ab000103160502,,,,,,,,,,, +62,021f000103170502,,,,,,,,,,, +62,04ea000103180502,,,,,,,,,,, +63,05c1000003661302,,解锁密特罗德搜寻/解锁融合模式,,,,,,,,, +63,05c0000003651302,,解锁备用能量罐/通关解锁美术画廊,,,,,,,,, +63,05c0000000060002,,解锁备用导弹罐/通关解锁美术画廊,,,,,,,,, +63,05c00100001d0002,,解锁备用弹药罐/通关解锁BGM,,,,,,,,, +64,21000000000b0002,,马尔斯可入队,,,,,,,,, +64,2101000000180002,,艾克可入队,,,,,,,,, +64,2102000000290002,,露琪娜可入队,,,,,,,,, +64,21030000002a0002,,鲁弗莱可入队,,,,,,,,, +65,2106000003601202,,解锁迷宫/召唤幻影骑士,,,,,,,,, +65,2107000003611202,,解锁迷宫/召唤幻影骑士,,,,,,,,, +65,2108000003880002,,召唤幻影骑士,,,,,,,,, +65,21050000025a0002,,召唤幻影骑士,,,,,,,,, +65,2101000000180002,,召唤幻影骑士,,,,,,,,, +65,2102000000290002,,召唤幻影骑士,,,,,,,,, +65,21000000000b0002,,召唤幻影骑士,,,,,,,,, +65,21030000002a0002,,召唤幻影骑士,,,,,,,,, +65,2104000002520002,,召唤幻影骑士,,,,,,,,, +66,1d01000003750d02,,显示章节的皮卡丘提示数,,,,,,,,, +67,06400100001e0002,,随时叫出皮克敏,,,,,,,,, +67,06420000035f1102,,随时叫出皮克敏,,,,,,,,, +68,01030000024f0902,,解锁可获得9999钱包的新迷宫,,,,,,,,, +68,0100000000040002,,恢复箭数量,,,,,,,,, +68,0100010000160002,,恢复箭数量,,,,,,,,, +68,01010000000e0002,,恢复心心,,,,,,,,, +68,0101010000170002,,恢复心心,,,,,,,,, +68,01020100001b0002,,受到2倍伤害,,,,,,,,, +68,01000000034f0902,,暂无简介,,,,,,,,, +68,0101000003520902,,暂无简介,,,,,,,,, +68,0100010003500902,,暂无简介,,,,,,,,, +68,01000000034b0902,,暂无简介,,,,,,,,, +69,0000000000340102,,毒蘑菇变成红蘑菇,,,,,,,,, +69,000a000000380102,,与奇诺比奥对话会回血,,,,,,,,, +69,0017000002680102,,显示嘘嘘鬼位置,,,,,,,,, +69,00010000000c0002,,可原地复活一次,,,,,,,,, +70,09d1010102be0e02,,,,,,,,,,, +70,09d1020102bf0e02,,,,,,,,,,, +70,09d1030102c00e02,,,,,,,,,,, +70,09d1040102c10e02,,,,,,,,,,, +70,09d1050102c20e02,,,,,,,,,,, +70,09c0010102690e02,,,,,,,,,,, +70,09c00201026a0e02,,,,,,,,,,, +70,09c00301026b0e02,,,,,,,,,,, +70,09c00401026c0e02,,,,,,,,,,, +70,09c00501026d0e02,,,,,,,,,,, +70,09c10101026e0e02,,,,,,,,,,, +70,09c10201026f0e02,,,,,,,,,,, +70,09c1030102700e02,,,,,,,,,,, +70,09c1040102710e02,,,,,,,,,,, +70,09c1050102720e02,,,,,,,,,,, +70,09c2010102730e02,,,,,,,,,,, +70,09c2020102740e02,,,,,,,,,,, +70,09c2030102750e02,,,,,,,,,,, +70,09c2040102760e02,,,,,,,,,,, +70,09c2050102770e02,,,,,,,,,,, +70,09c3010102780e02,,,,,,,,,,, +70,09c3020102790e02,,,,,,,,,,, +70,09c30301027a0e02,,,,,,,,,,, +70,09c30401027b0e02,,,,,,,,,,, +70,09c30501027c0e02,,,,,,,,,,, +70,09c40101027d0e02,,,,,,,,,,, +70,09c40201027e0e02,,,,,,,,,,, +70,09c40301027f0e02,,,,,,,,,,, +70,09c4040102800e02,,,,,,,,,,, +70,09c4050102810e02,,,,,,,,,,, +70,09c5010102820e02,,,,,,,,,,, +70,09c5020102830e02,,,,,,,,,,, +70,09c5030102840e02,,,,,,,,,,, +70,09c5040102850e02,,,,,,,,,,, +70,09c5050102860e02,,,,,,,,,,, +70,09c6010102870e02,,,,,,,,,,, +70,09c6020102880e02,,,,,,,,,,, +70,09c6030102890e02,,,,,,,,,,, +70,09c60401028a0e02,,,,,,,,,,, +70,09c60501028b0e02,,,,,,,,,,, +70,09c70101028c0e02,,,,,,,,,,, +70,09c70201028d0e02,,,,,,,,,,, +70,09c70301028e0e02,,,,,,,,,,, +70,09c70401028f0e02,,,,,,,,,,, +70,09c7050102900e02,,,,,,,,,,, +70,09c8010102910e02,,,,,,,,,,, +70,09c8020102920e02,,,,,,,,,,, +70,09c8030102930e02,,,,,,,,,,, +70,09c8040102940e02,,,,,,,,,,, +70,09c8050102950e02,,,,,,,,,,, +70,09c9010102960e02,,,,,,,,,,, +70,09c9020102970e02,,,,,,,,,,, +70,09c9030102980e02,,,,,,,,,,, +70,09c9040102990e02,,,,,,,,,,, +70,09c90501029a0e02,,,,,,,,,,, +70,09ca0101029b0e02,,,,,,,,,,, +70,09ca0201029c0e02,,,,,,,,,,, +70,09ca0301029d0e02,,,,,,,,,,, +70,09ca0401029e0e02,,,,,,,,,,, +70,09ca0501029f0e02,,,,,,,,,,, +70,09cb010102a00e02,,,,,,,,,,, +70,09cb020102a10e02,,,,,,,,,,, +70,09cb030102a20e02,,,,,,,,,,, +70,09cb040102a30e02,,,,,,,,,,, +70,09cb050102a40e02,,,,,,,,,,, +70,09cc010102a50e02,,,,,,,,,,, +70,09cc020102a60e02,,,,,,,,,,, +70,09cc030102a70e02,,,,,,,,,,, +70,09cc040102a80e02,,,,,,,,,,, +70,09cc050102a90e02,,,,,,,,,,, +70,09cd010102aa0e02,,,,,,,,,,, +70,09cd020102ab0e02,,,,,,,,,,, +70,09cd030102ac0e02,,,,,,,,,,, +70,09cd040102ad0e02,,,,,,,,,,, +70,09cd050102ae0e02,,,,,,,,,,, +70,09ce010102af0e02,,,,,,,,,,, +70,09ce020102b00e02,,,,,,,,,,, +70,09ce030102b10e02,,,,,,,,,,, +70,09ce040102b20e02,,,,,,,,,,, +70,09ce050102b30e02,,,,,,,,,,, +70,09cf010102b40e02,,,,,,,,,,, +70,09cf020102b50e02,,,,,,,,,,, +70,09cf030102b60e02,,,,,,,,,,, +70,09cf040102b70e02,,,,,,,,,,, +70,09cf050102b80e02,,,,,,,,,,, +70,09d0010102b90e02,,,,,,,,,,, +70,09d0020102ba0e02,,,,,,,,,,, +70,09d0030102bb0e02,,,,,,,,,,, +70,09d0040102bc0e02,,,,,,,,,,, +70,09d0050102bd0e02,,,,,,,,,,, \ No newline at end of file diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 396eb223..f852973c 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -1,167 +1,167 @@ -CODE,en_US,zh_Hans,zh_TW,es_ES,it_IT,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP -_L_ON,ON,开,開,SI,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン -_L_OFF,OFF,关,關,NO,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ -_L_ON_F,[ON],[开],[開],[SI],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン] -_L_OFF_F,[OFF],[关],[關],[NO],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ] -_L_BACK,Back,返回,返回,[Atrás],Indietro,Vissza,[Zurück],Retour,Terug,Voltar,戻る -_L_ERR,Error,错误,錯誤,Error,Errore,Hiba,Fehler,Erreur,Fout,Erro,エラー -_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Codice errore,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード -_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Emulatore Amiibo,Amiibo Emulátor,Amiibo-Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ +CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP,it_IT +_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン,SI +_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ,NO +_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン],[SI] +_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ],[NO] +_L_BACK,Back,返回,返回,[Atrás],Vissza,[Zurück],Retour,Terug,Voltar,戻る,Indietro +_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー,Errore +_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード,Codice errore +_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo-Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ,Emulatore Amiibo _L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink -_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,Trasferimento file BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送 -_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,Trasferimento file BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送 -_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Lettore video,Video Lejátszó,Videospieler,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー -_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Impostazioni,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定 -_L_APP_SET_VERSION,Version,版本,版本,Versión,Versione,Verzió,Version,Version,Versie,Versão,バージョン -_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Usato,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ -_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Memoria esterna,Külső Tároló,Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ -_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,Contrasto OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト -_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,Contrasto OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト -_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Luminosità,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト -_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Luminosità schermo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ -_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Animazione menu,Menü Animáció,Menü-Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション -_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,Batteria LiPO,LiPO Akkumulátor,LiPO-Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー -_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Memoria usata,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ -_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Risveglio rapido,Gyors Ébresztés,Schnell-Wecken,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動 -_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Timeout di sospensione,Alvási Időkorlát,Schlaf-Timeout,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト -_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Lingua,Nyelv,Sprache,Langue,Taal,Idioma,言語 -_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Aggiornamento firmware,Firmware Frissítés,Firmw.-Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新 -_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Riavvio del sistema,Rendszer Újraindítása,System-Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動 -_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Ripristina impostazioni predefinite,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す -_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Ripristino riuscito!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化 -_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,Conferma il ripristino delle impostazioni?,,Auf Standardeinstellungen zurücksetzen?,,,, -_L_15S,15 Seconds,15秒,15秒,15 segundos,15 secondi,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒 -_L_30S,30 Seconds,30秒,30秒,30 segundos,30 secondi,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒 -_L_45S,45 Seconds,45秒,45秒,45 segundos,45 secondi,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒 -_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分 -_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 minuti,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分 -_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 minuti,3 min.,3 Min,3 min.,3 min.,3 min.,3分 -_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Chiave Amiibo non caricata,Amiibo kulcs nincs betöltve,Schlüssel nicht gefunden,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない -_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Carica il file key_retail.bin nella directory root della memoria.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。 -_L_KNOW,Got it,知道了,知道了,Entendido,Ho Capito,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解 -_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Tag casuale,Véletlengenerátor,Zufällige Tag-Nummer,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化 -_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Casuale automatico,Automat. Véletlengenerátor,Autom. random.,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化 -_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,Mostra codice QR,QR-kód Megjelenítése,QR-Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示 -_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Elimina tag,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除 -_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Conferma eliminazione %s\n?,Törlés Megerősítése?,Bestätigen Sie das\nLöschen %s?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか? -_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],[Torna ai dettagli del tag],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る -_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],[Torna alla lista dei file],Vissza a Fájl Listához,[Zurück zur Liste],Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る -_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],[Torna al menu principale],Vissza a Főmenübe,[Hauptmenü],Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る -_L_FORMAT,Format,格式化,格式化,Formatear..,Formatta..,"Formátum ",Formatieren,Format,Formatteren,Formatar,フォーマット -_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formatta memoria,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット -_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Questo cancellerà tutti i dati.\nConferma la formattazione?,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか? -_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formattazione in corso ..,Formázás ..,Formatierung..,Formatage ..,Formatteren ..,Formatando ..,書式設定 .. -_L_MESSAGE,Message,提示,提示,Inicializar,Messaggio,Üzenet,Nachricht,Message,Bericht,Mensagem,メッセージ -_L_CONFIRM,Confirm,确定,確定,Confirmar,Conferma,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認 -_L_CANCEL,Cancel,取消,取消,Cancelar,Annulla,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル -_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],[Torna alla lista],Vissza a Listához,[Zurück zur Liste],Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト -_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Non montato,Nincs Felszerelve,Speicher nicht ausgerüstet,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません -_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Montato[LFS]===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]=== -_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Montato[FFS]===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]=== -_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Totale,Össz.,Gesamt,Total,Totaal,Total,トータル容量 -_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Libero,Ingyenes,Frei,Libre,Vrij,Livre,空き容量 -_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Questo non è un file\nAmiibo valido,Ez nem Amiibo Fájl,Dies ist keine Amiibo-Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません -_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Errore nella lettura del file,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました -_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Nome cartella:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名: -_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Nome Amiibo:,Amiibo Neve:,Amiibo-Name eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名: -_L_DELETE,Delete,删除,刪除,Borrar,Elimina,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除 -_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Nuovo nome:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください: -_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Input non valido,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力 -_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Crea cartella..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成.. -_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Crea Amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成.. -_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Crea Amiibo in serie..,Kötegelt Új Címke Létrehozása..,Mehrere Tags..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成.. -_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Numero di tag:,Beviteli Címke Száma:,Tag-Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力: -_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Numero max di %d tag in serie.,Max. létrehozható címke egy kötegben %d,Nur maximal %d Tags in einem Stapel erstellt.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。 -_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Creazione tag,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成 -_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Creazione tag %s fallita!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました! -_L_RENAME,Rename,重命名,重新命名,Renombrar,Rinomina,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更 -_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Errore nell'apertura della cartella,"Mappa megnyitása sikertelen ",Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした -_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Errore nella rinomina\nCodice errore,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード -_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[Torna indietro],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン] -_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Casuale (Manuale),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動) -_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Casuale (Automatico),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動) -_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Modo sequenziale,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード -_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Modo lettura/scrittura,Olvasás-írás Mód,Lese-Schreib-Modus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード +_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE +_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE +_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videospieler,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー,Lettore video +_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定,Impostazioni +_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン,Versione +_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ,Usato +_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ,Memoria esterna +_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED +_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED +_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト,Luminosità +_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ,Luminosità schermo +_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü-Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション,Animazione menu +_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO-Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO +_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata +_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnell-Wecken,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido +_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Schlaf-Timeout,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione +_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua +_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw.-Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware +_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System-Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema +_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す,Ripristina impostazioni predefinite +_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化,Ripristino riuscito! +_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,,,Conferma il ripristino delle impostazioni? +_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒,15 secondi +_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒,30 secondi +_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒,45 secondi +_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto +_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti +_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Min,3 min.,3 min.,3 min.,3分,3 minuti +_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Schlüssel nicht gefunden,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata +_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria. +_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito +_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige Tag-Nummer,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale +_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Autom. random.,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico +_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR-Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR +_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag +_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Bestätigen Sie das\nLöschen %s?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n? +_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag] +_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,[Zurück zur Liste],Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file] +_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,[Hauptmenü],Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale] +_L_FORMAT,Format,格式化,格式化,Formatear..,"Formátum ",Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta.. +_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria +_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione? +_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formázás ..,Formatierung..,Formatage ..,Formatteren ..,Formatando ..,書式設定 ..,Formattazione in corso .. +_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Nachricht,Message,Bericht,Mensagem,メッセージ,Messaggio +_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma +_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla +_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,[Zurück zur Liste],Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト,[Torna alla lista] +_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht ausgerüstet,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません,Non montato +_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]===,===Montato[LFS]=== +_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]=== +_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale +_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero +_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Dies ist keine Amiibo-Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido +_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file +_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella: +_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo-Name eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo: +_L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除,Elimina +_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome: +_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido +_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成..,Crea cartella.. +_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成..,Crea Amiibo.. +_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Kötegelt Új Címke Létrehozása..,Mehrere Tags..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成..,Crea Amiibo in serie.. +_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag-Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag: +_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Nur maximal %d Tags in einem Stapel erstellt.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie. +_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag +_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita! +_L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更,Rinomina +_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,"Mappa megnyitása sikertelen ",Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella +_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore +_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro] +_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale) +_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico) +_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale +_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreib-Modus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura _L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1 _L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2 _L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop -_L_MODE,Mode,模式,模式,Modo,Modalità,Mód,Modus,Mode,Modus,Modo,モード -_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Auto. casuale,Automat. Randomizálás,Autom. randomisieren,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化 -_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Mod. Compatibilità,Kompatibilis Mód,Kompat. Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード -_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Torna ai dettagli],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細] -_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Menu principale],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー] -_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Casuale man.,Random (Kézi),Manuell,Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動) -_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Sequenziale,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル -_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Lett./Scritt.,Olvasás/Írás,Lese/Schreib,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト -_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Auto. casuale,Random (Automat.),Automatisch,Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動) -_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Amiibo non assegnato,Üres NFC Címke,Leerer NFC-Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ -_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Database Amiibo,Amiibo Adatbázis,Amiibo-Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース -_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Esplora..,Böngésző..,Browser..,Naviguer..,Browser..,Navegador..,ブラウザ.. -_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Cerca..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索.. -_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,I miei preferiti..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り.. -_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,I miei Amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo.. -_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Impostazioni..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定.. -_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Menu principale],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了] -_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Torna indietro],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る] -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Chiavi,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Caricate,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NON caricate,NINCS betöltve,fehlend,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません -_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Num. slot,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号 -_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Preferito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り.. -_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Assegna a..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存.. -_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Torna ai dettagli],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る] -_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Torna alla lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る] -_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Cerca:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する: -_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Più..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..] -_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,,<Üres Amiibo>,,,,, -_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Elimina..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット.. -_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Conferma,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する -_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Annulla,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする -_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Conferma,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する -_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Nuovo..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規.. -_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Svuota..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空.. -_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Cancella..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除.. -_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Nuova cart. preferiti:,Új Kedvenc Mappa:,Neuer Favoriten-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ: -_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Svuotare cart. preferiti?,Üres Kedvenc Mappa?,Favoritenordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか? -_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Conferma cancellazione?,Törlés Megerősítése?,Favoritenordner löschen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか? -_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Selez. cart. preferiti..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択.. -_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Preferito aggiunto!,Kedvenc Sikeres,"Favorit erstellt ",Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました -_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Preferito non aggiunto!,Kedvenc Sikertelen!,Favorit fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした! -_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Assegnazione corretta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました -_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Assegnazione fallita!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました! -_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Emula tag RFID,Kártya Emulátor,Karten-Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ -_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normale,Normál,Normal,Normal,Normaal,Normal,通常 -_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Nega,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否 -_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Ignora,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視 -_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Cache,Elrejt,Cache,Zwischenspeicher,Cache,Cache,キャッシュ -_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Inizializzazione ambiente.\nPer favore attendi..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 .. -_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Slot,Cella,Steckplatz,Fente,Slot,Slot,スロット -_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Nickname,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム +_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità +_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Autom. randomisieren,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale +_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompat. Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità +_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli] +_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale] +_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Manuell,Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man. +_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale +_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lese/Schreib,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt. +_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Automatisch,Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale +_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC-Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato +_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo-Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo +_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Böngésző..,Browser..,Naviguer..,Browser..,Navegador..,ブラウザ..,Esplora.. +_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索..,Cerca.. +_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り..,I miei preferiti.. +_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo..,I miei Amiibo.. +_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定..,Impostazioni.. +_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale] +_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro] +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,fehlend,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate +_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot +_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り..,Preferito.. +_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存..,Assegna a.. +_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli] +_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista] +_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca: +_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..],[Più..] +_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,, +_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット..,Elimina.. +_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma +_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla +_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma +_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規..,Nuovo.. +_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空..,Svuota.. +_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除..,Cancella.. +_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Favoriten-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti: +_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Favoritenordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti? +_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Favoritenordner löschen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione? +_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択..,Selez. cart. preferiti.. +_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,"Favorit erstellt ",Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto! +_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorit fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto! +_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta +_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita! +_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten-Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID +_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale +_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega +_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora +_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Zwischenspeicher,Cache,Cache,キャッシュ,Cache +_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 ..,Inizializzazione ambiente.\nPer favore attendi.. +_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot +_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname _L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID -_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ -_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Dati..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ.. -_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Avanzato..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定.. -_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Impostazioni..,Cella Beállításai..,Steckplätze..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定.. -_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Num. slot..,Cella Száma..,Steckplätze,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号.. -_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Cambio nickname riuscito.,Becenév Beállítása Sikeres,Spitzname erfolgreich,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました -_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Cambio nickname fallito!,Becenév Beállítása Sikertelen!,Spitzname fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした! -_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Nickname:,Becenév Bevitele:,Spitzname eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください: -_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Carica..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード.. -_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Salva..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Inizializza..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Dati inizializzati!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功 -_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,File non trovato,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません -_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Dimensione file non corretta,Fájl Mérete Nem Egyezik,Dateigröße inkorrekt,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません -_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Caricamento file fallito,Fájl betöltése Sikertelen,Laden fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗 -_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Caricamento file riuscito,Fájl Betöltése Sikeres,Laden erfolgreich,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功 -_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Nome file:,Bemeneti Fájl Neve:,Dateinamen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名: -_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Errore nel salvataggio!,Fájl Mentése Sikertelen!,Speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました! -_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Salvataggio riuscito,Fájl Mentése Sikeres,Speichern erfolgreich,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました -_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Modalità personalizzata,Egyéni Mód,Benutzermodus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード -_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A abilitata,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効 -_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Genera nuovo UID,Véletlen UID,Randomisierte UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化 -_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,UID generato,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成 -_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 abilitata,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効 -_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Modalità scrittura,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード -_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Input non valido!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力 -_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,Tipo di carta modificato\nInizializzare carta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか? \ No newline at end of file +_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo +_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ..,Dati.. +_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定..,Avanzato.. +_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Cella Beállításai..,Steckplätze..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定..,Impostazioni.. +_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Cella Száma..,Steckplätze,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号..,Num. slot.. +_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito. +_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito! +_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitzname eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname: +_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード..,Carica.. +_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存..,Salva.. +_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化..,Inizializza.. +_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati! +_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato +_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße inkorrekt,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta +_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito +_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Laden erfolgreich,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito +_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Dateinamen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file: +_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio! +_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Speichern erfolgreich,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito +_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzermodus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata +_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata +_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Randomisierte UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID +_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato +_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata +_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura +_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido! +_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta? \ No newline at end of file From 2dd4db58e81fe4ae2909c935c746264e80a2caba Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 11:57:17 +0200 Subject: [PATCH 015/101] added support for italian note on amiidb, added comment on auto-generated file --- fw/application/src/amiidb/db_amiibo.c | 3 +- fw/application/src/amiidb/db_game.c | 1 + fw/application/src/amiidb/db_header.h | 4 + fw/application/src/amiidb/db_link.c | 2463 +++++++++++++------------ fw/data/amiidb_amiibo.csv | 1698 ++++++++--------- fw/data/amiidb_link.csv | 2457 ++++++++++++------------ fw/scripts/amiibo_db_gen.py | 33 +- fw/scripts/amiibo_tree_gen.py | 4 + 8 files changed, 3342 insertions(+), 3321 deletions(-) diff --git a/fw/application/src/amiidb/db_amiibo.c b/fw/application/src/amiidb/db_amiibo.c index cbbbd602..d37ff7ed 100644 --- a/fw/application/src/amiidb/db_amiibo.c +++ b/fw/application/src/amiidb/db_amiibo.c @@ -1,8 +1,9 @@ +/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */ #include "db_header.h" const db_amiibo_t amiibo_list[] = { {0x01000000, 0x00040002, "Link", "林克"}, {0x01000000, 0x034b0902, "Link - Ocarina of Time", "林克 - 时之笛"}, -{0x01000000, 0x034c0902, "Link - Maschera di Majora", "林克 - 假面"}, +{0x01000000, 0x034c0902, "Link - Majora's Mask", "林克 - 假面"}, {0x01000000, 0x034d0902, "Link - Twilight Princess", "林克 - 黄昏公主"}, {0x01000000, 0x034e0902, "Link - Skyward Sword", "林克 - 天空之剑"}, {0x01000000, 0x034f0902, "8-Bit Link", "像素林克"}, diff --git a/fw/application/src/amiidb/db_game.c b/fw/application/src/amiidb/db_game.c index 58d8d3fa..5b784808 100644 --- a/fw/application/src/amiidb/db_game.c +++ b/fw/application/src/amiidb/db_game.c @@ -1,3 +1,4 @@ +/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */ #include "db_header.h" const db_game_t game_list[] = { {1, 0, "The Legend of Zelda: Tears of the Kingdom", "塞尔达传说:王国之泪", 100, 28}, diff --git a/fw/application/src/amiidb/db_header.h b/fw/application/src/amiidb/db_header.h index 8348ca84..0fc9e38f 100644 --- a/fw/application/src/amiidb/db_header.h +++ b/fw/application/src/amiidb/db_header.h @@ -8,6 +8,7 @@ typedef struct { uint32_t tail; const char *name_en; const char *name_cn; + } db_amiibo_t; struct _db_link_t; @@ -17,6 +18,7 @@ typedef struct _db_game_t { uint8_t parent_game_id; const char *name_en; const char *name_cn; + uint8_t order; uint16_t link_cnt; } db_game_t; @@ -27,6 +29,8 @@ typedef struct _db_link_t { uint32_t tail; const char *note_en; const char *note_cn; + const char *note_it; + } db_link_t; extern const db_amiibo_t amiibo_list[]; diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index a39357af..7a70c8ed 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -1,1232 +1,1237 @@ +/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */ #include "db_header.h" const db_link_t link_list[] = { -{1, 0x01000000, 0x034f0902, "Set Abito delle Origini/Tessuto della Paravela/Spada & Scudo del Viaggiatore e del Soldato/Rupie", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比"}, -{1, 0x01410000, 0x035c0902, "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, -{1, 0x01050000, 0x03580902, "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石"}, -{1, 0x01020100, 0x001b0002, "Spada del Crepuscolo/rupie/Gemma/Frammento di Stella Bomba", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, -{1, 0x01020100, 0x041a0902, "Tessuto del Re Gerudo", "沼气之枪/滑翔伞皮肤布料"}, -{1, 0x01400000, 0x03550902, "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela", "龙骨波克相关装备/肉/滑翔伞皮肤布料"}, -{1, 0x01000000, 0x00040002, "Set Abito del Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, -{1, 0x01000000, 0x03530902, "Arco Falcone/Tessuto della Paravela/Carne & Pesce/Arco del Cavaliere & Reale/Vari tipi di frecce", "游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭"}, -{1, 0x01000000, 0x03990902, "Set Abito del Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spada a due mani del Cavaliere & Reale/Pesce", "织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼"}, -{1, 0x01000000, 0x034c0902, "Set Abito della Divinità Feroce/Spada della Divinità Feroce/Tessuto della Paravela/Funghi", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇"}, -{1, 0x01000000, 0x034b0902, "Set Abito dell'Eroe del Tempo/Spada Suprema/Tessuto della Paravela/Carne", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉"}, -{1, 0x01000000, 0x03540902, "Redini & Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇"}, -{1, 0x01000000, 0x034e0902, "Set Abito della Spada del Cielo/Spada del Cielo/Tessuto della Paravela/rupie", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比"}, -{1, 0x01000000, 0x04180902, "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, -{1, 0x01000000, 0x034d0902, "Set Abito del Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马"}, -{1, 0x01030000, 0x024f0902, "Carne/Tessuto della Paravela", "肉/滑翔伞皮肤布料"}, -{1, 0x01070000, 0x035a0902, "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼"}, -{1, 0x01080000, 0x035b0902, "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石"}, -{1, 0x01010100, 0x00170002, "Set Abito Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇"}, -{1, 0x01000100, 0x00160002, "Set Abito dell'Eroe del Vento/Tessuto della Paravela/Boomerang Brezza Marina/Spada & Scudo del Viaggiatore/Pesce", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼"}, -{1, 0x01000100, 0x03500902, "Set Abito dell'Eroe del Vento/Tessuto della Paravela/Boomerang Brezza Marina/Spada & Scudo del Viaggiatore/Pesce", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼"}, -{1, 0x01010000, 0x03520902, "Scudo dell'Eroe/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota", "勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜"}, -{1, 0x01060000, 0x03590902, "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉"}, -{1, 0x01010000, 0x04190902, "Tessuto della Principessa Zelda", "塞尔达公主滑翔伞布料"}, -{2, 0x01010300, 0x04140902, "", "随时随地传送"}, -{3, 0x01020100, 0x001b0002, "", "暂无简介"}, -{3, 0x01030000, 0x024f0902, "", "暂无简介"}, -{3, 0x01010100, 0x00170002, "", "暂无简介"}, -{3, 0x01000100, 0x00160002, "", "暂无简介"}, -{3, 0x01000000, 0x037c0002, "", "暂无简介"}, -{3, 0x01010000, 0x000e0002, "", "暂无简介"}, -{4, 0x01000000, 0x034f0902, "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/rupie", "初始勇者服套装/旅人&士兵剑&盾/卢比"}, -{4, 0x01410000, 0x035c0902, "Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi", "新式英杰服布料/滑翔伞皮肤布料/蘑菇"}, -{4, 0x01050000, 0x03580902, "Elmo Divino di Rudania/Rompisassi/Diamante", "鲁达尼亚*神兽兵装/劈石剑/钻石"}, -{4, 0x01020100, 0x001b0002, "Spada del Crepuscolo/rupie/Gemma/Frammento di Stella Bomba", "黄昏剑/卢比/宝石/星星碎片炸药桶"}, -{4, 0x01400000, 0x03550902, "Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano", "守护者枪 盾 剑/古代兵装 核心/宝石 箭"}, -{4, 0x01000000, 0x00040002, "Set Crepuscolo/Spada & Scudo del Viaggiatore/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/水果/马"}, -{4, 0x01000000, 0x03530902, "Arco Falcone/Pesce & Carne/Arco del Cavaliere e Reale/Vari tipi di frecce", "游隼弓/鱼&肉/骑士&王族之弓/各种箭"}, -{4, 0x01000000, 0x03990902, "Set Tessitore di Sogni/Lancia & Spada & Spadone del Cavaliere e Reale/Pesce", "织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼"}, -{4, 0x01000000, 0x034c0902, "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi", "鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇"}, -{4, 0x01000000, 0x034b0902, "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne", "时之勇者服套装/大鼓隆之剑/肉"}, -{4, 0x01000000, 0x03540902, "Redini e Sella/Scimitarra di Luce/Funghi", "马缰绳&马鞍/月光匕首/蘑菇"}, -{4, 0x01000000, 0x034e0902, "Set Spada del Cielo/Spada del Cielo/Spada & Scudo del Soldato e del Viaggiatore/rupie", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比"}, -{4, 0x01000000, 0x034d0902, "Set Crepuscolo/Spada & Scudo del Viaggiatore/Frutto/Cavallo", "黄昏服套装/旅人剑&盾/水果/马"}, -{4, 0x01030000, 0x024f0902, "Link Lupo a 20 Cuori", "20心林克狼"}, -{4, 0x01070000, 0x035a0902, "Elmo Divino di Ruto/Lancia Lunga d'Argento/Pesce", "露塔*神兽兵装/银鳞之枪/鱼"}, -{4, 0x01080000, 0x035b0902, "Elmo Divino di Medoh/Arco Falcone/Frutto/Diamante", "梅德*神兽兵装/游隼弓/水果 钻石"}, -{4, 0x01010100, 0x00170002, "Set Sheikah/Lama a Otto Facce/Funghi", "希克服套装/戒心刀/蘑菇"}, -{4, 0x01000100, 0x00160002, "Set Eroe del Vento/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼"}, -{4, 0x01000100, 0x03500902, "Set Eroe del Vento/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼"}, -{4, 0x01010000, 0x03520902, "Scudo Hyliano/Frammento di Stella & Gemma/Erba/Frutto/Carota", "勇者盾/星星碎片&宝石/草 果实 胡萝卜"}, -{4, 0x01060000, 0x03590902, "Elmo Divino di Naydra/Equipaggiamento correlato a Gurudo/Carne", "娜波力斯*神兽兵装/格鲁德相关装备/肉"}, -{4, 0x01000000, 0x037c0002, "Set Viaggiatore nel Tempo/Lancia & Spada & Spadone del Cavaliere e Reale/Pesce", "时之勇者服套装/骑士&王族枪 剑 双手剑/鱼"}, -{4, 0x01010000, 0x000e0002, "Arco del Crepuscolo/Frammento di Stella & Gemma/Erba/Frutto/Carota", "黄昏弓/星星碎片&宝石/草 果实 胡萝卜"}, -{4, 0x01010000, 0x03560902, "Scudo dell'Alba/Frammento di Stella & Gemma/Erba/Frutto/Carota", "太阳盾/星星碎片&宝石/草 果实 胡萝卜"}, -{4, 0x01010300, 0x04140902, "Frammento di Stella & Gemma/Erba/Frutto/Carota", "星星碎片&宝石/草 果实 胡萝卜"}, -{5, 0x01000000, 0x034f0902, "", "暂无简介"}, -{5, 0x01410000, 0x035c0902, "", "暂无简介"}, -{5, 0x01050000, 0x03580902, "", "暂无简介"}, -{5, 0x01020100, 0x001b0002, "", "暂无简介"}, -{5, 0x01400000, 0x03550902, "", "暂无简介"}, -{5, 0x01000000, 0x00040002, "", "暂无简介"}, -{5, 0x01000000, 0x03530902, "", "暂无简介"}, -{5, 0x01000000, 0x03990902, "", "暂无简介"}, -{5, 0x01000000, 0x034c0902, "", "暂无简介"}, -{5, 0x01000000, 0x034b0902, "", "暂无简介"}, -{5, 0x01000000, 0x03540902, "", "暂无简介"}, -{5, 0x01000000, 0x034e0902, "", "暂无简介"}, -{5, 0x01000000, 0x034d0902, "", "暂无简介"}, -{5, 0x01030000, 0x024f0902, "", "暂无简介"}, -{5, 0x01070000, 0x035a0902, "", "暂无简介"}, -{5, 0x01080000, 0x035b0902, "", "暂无简介"}, -{5, 0x01010100, 0x00170002, "", "暂无简介"}, -{5, 0x01000100, 0x00160002, "", "暂无简介"}, -{5, 0x01000100, 0x03500902, "", "暂无简介"}, -{5, 0x01010000, 0x03520902, "", "暂无简介"}, -{5, 0x01060000, 0x03590902, "", "暂无简介"}, -{5, 0x01000000, 0x037c0002, "", "暂无简介"}, -{5, 0x01010000, 0x000e0002, "", "暂无简介"}, -{5, 0x01010000, 0x03560902, "", "暂无简介"}, -{5, 0x01010300, 0x04140902, "", "暂无简介"}, -{6, 0x01410000, 0x035c0902, "", "暂无简介"}, -{6, 0x01050000, 0x03580902, "", "暂无简介"}, -{6, 0x01020100, 0x001b0002, "", "暂无简介"}, -{6, 0x01400000, 0x03550902, "", "暂无简介"}, -{6, 0x01000000, 0x03530902, "", "暂无简介"}, -{6, 0x01030000, 0x024f0902, "", "暂无简介"}, -{6, 0x01070000, 0x035a0902, "", "暂无简介"}, -{6, 0x01080000, 0x035b0902, "", "暂无简介"}, -{6, 0x01060000, 0x03590902, "", "暂无简介"}, -{6, 0x01010000, 0x000e0002, "", "暂无简介"}, -{7, 0x01410000, 0x035c0902, "", "暂无简介"}, -{7, 0x01050000, 0x03580902, "", "暂无简介"}, -{7, 0x01020100, 0x001b0002, "", "暂无简介"}, -{7, 0x01400000, 0x03550902, "", "暂无简介"}, -{7, 0x01030000, 0x024f0902, "", "暂无简介"}, -{7, 0x01070000, 0x035a0902, "", "暂无简介"}, -{7, 0x01080000, 0x035b0902, "", "暂无简介"}, -{7, 0x01010100, 0x00170002, "", "暂无简介"}, -{7, 0x01000100, 0x03500902, "", "暂无简介"}, -{7, 0x01060000, 0x03590902, "", "暂无简介"}, -{8, 0x35c00000, 0x02500a02, "", "暂无简介"}, -{8, 0x35c00000, 0x03920a02, "", "暂无简介"}, -{9, 0x00050000, 0x03730102, "", "解锁奥德赛主题关卡"}, -{9, 0x00000000, 0x03710102, "", "解锁奥德赛主题关卡"}, -{9, 0x00020000, 0x03720102, "", "解锁奥德赛主题关卡"}, -{9, 0x000a0000, 0x00380102, "", "无敌蘑菇"}, -{10, 0x32400000, 0x025b0002, "", "获得服装Super Mirror I"}, -{10, 0x32400100, 0x03640002, "", "获得服装Super Mirror II"}, -{10, 0x00170000, 0x02680102, "", "暂无简介"}, -{10, 0x00050000, 0x00140002, "", "暂无简介"}, -{10, 0x00060000, 0x00150002, "", "暂无简介"}, -{10, 0x00130000, 0x02660102, "", "获得黛西公主装"}, -{10, 0x05810000, 0x001c0002, "", "获得星际火狐装"}, -{10, 0x05800000, 0x00050002, "", "获得星际火狐装"}, -{10, 0x00150000, 0x03670102, "", "暂无简介"}, -{10, 0x00230000, 0x03680102, "", "暂无简介"}, -{10, 0x01000000, 0x034b0902, "", "获得林克装"}, -{10, 0x00020000, 0x00010002, "", "获得碧姬公主装"}, -{10, 0x05c00000, 0x00060002, "", "获得萨姆斯装甲"}, -{12, 0x08010000, 0x025d0402, "", "暂无简介"}, -{12, 0x08000100, 0x03820002, "", "暂无简介"}, -{12, 0x08000100, 0x04150402, "", "暂无简介"}, -{12, 0x08000200, 0x003f0402, "", "暂无简介"}, -{12, 0x08000200, 0x036a0402, "", "暂无简介"}, -{12, 0x08000200, 0x02600402, "", "暂无简介"}, -{12, 0x08000100, 0x003e0402, "", "暂无简介"}, -{12, 0x08000100, 0x025f0402, "", "暂无简介"}, -{12, 0x08000100, 0x03690402, "", "暂无简介"}, -{12, 0x08000300, 0x00400402, "", "暂无简介"}, -{12, 0x08000300, 0x036b0402, "", "暂无简介"}, -{12, 0x08000300, 0x02610402, "", "暂无简介"}, -{12, 0x08020000, 0x025e0402, "", "暂无简介"}, -{12, 0x08040000, 0x03770402, "", "暂无简介"}, -{12, 0x08050200, 0x041b0402, "", "暂无简介"}, -{12, 0x08050200, 0x038f0402, "", "暂无简介"}, -{12, 0x08050100, 0x038e0402, "", "暂无简介"}, -{12, 0x08050300, 0x03900402, "", "暂无简介"}, -{12, 0x08030000, 0x03760402, "", "暂无简介"}, -{12, 0x08060100, 0x041c0402, "", "暂无简介"}, -{12, 0x08070000, 0x04330402, "", "暂无简介"}, -{12, 0x08080000, 0x04340402, "", "暂无简介"}, -{12, 0x08090000, 0x04350402, "", "暂无简介"}, -{13, 0x21060000, 0x03601202, "", "暂无简介"}, -{13, 0x210b0000, 0x03a50002, "", "暂无简介"}, -{13, 0x21070000, 0x03611202, "", "暂无简介"}, -{13, 0x21080000, 0x036f1202, "", "暂无简介"}, -{13, 0x21080000, 0x03880002, "", "暂无简介"}, -{13, 0x21050000, 0x025a0002, "", "暂无简介"}, -{13, 0x21050100, 0x03630002, "", "暂无简介"}, -{13, 0x21010000, 0x00180002, "", "暂无简介"}, -{13, 0x21020000, 0x00290002, "", "暂无简介"}, -{13, 0x21000000, 0x000b0002, "", "暂无简介"}, -{13, 0x21030000, 0x002a0002, "", "暂无简介"}, -{13, 0x21040000, 0x02520002, "", "暂无简介"}, -{13, 0x21090000, 0x03701202, "", "暂无简介"}, -{14, 0x21060000, 0x03601202, "", "暂无简介"}, -{14, 0x210b0000, 0x03a50002, "", "暂无简介"}, -{14, 0x21070000, 0x03611202, "", "暂无简介"}, -{14, 0x21080000, 0x036f1202, "", "暂无简介"}, -{14, 0x21080000, 0x03880002, "", "暂无简介"}, -{14, 0x21050000, 0x025a0002, "", "暂无简介"}, -{14, 0x21050100, 0x03630002, "", "暂无简介"}, -{14, 0x21010000, 0x00180002, "", "暂无简介"}, -{14, 0x21020000, 0x00290002, "", "暂无简介"}, -{14, 0x21000000, 0x000b0002, "", "暂无简介"}, -{14, 0x21030000, 0x002a0002, "", "暂无简介"}, -{14, 0x21040000, 0x02520002, "", "暂无简介"}, -{14, 0x21090000, 0x03701202, "", "暂无简介"}, -{15, 0x21060000, 0x03601202, "", "暂无简介"}, -{15, 0x210b0000, 0x03a50002, "", "暂无简介"}, -{15, 0x21070000, 0x03611202, "", "暂无简介"}, -{15, 0x21080000, 0x036f1202, "", "暂无简介"}, -{15, 0x21080000, 0x03880002, "", "暂无简介"}, -{15, 0x21050000, 0x025a0002, "", "暂无简介"}, -{15, 0x21050100, 0x03630002, "", "暂无简介"}, -{15, 0x21010000, 0x00180002, "", "暂无简介"}, -{15, 0x21020000, 0x00290002, "", "暂无简介"}, -{15, 0x21000000, 0x000b0002, "", "暂无简介"}, -{15, 0x21030000, 0x002a0002, "", "暂无简介"}, -{15, 0x21040000, 0x02520002, "", "暂无简介"}, -{15, 0x21090000, 0x03701202, "", "暂无简介"}, -{16, 0x21060000, 0x03601202, "", "暂无简介"}, -{16, 0x210b0000, 0x03a50002, "", "暂无简介"}, -{16, 0x21070000, 0x03611202, "", "暂无简介"}, -{16, 0x21080000, 0x036f1202, "", "暂无简介"}, -{16, 0x21080000, 0x03880002, "", "暂无简介"}, -{16, 0x21050000, 0x025a0002, "", "暂无简介"}, -{16, 0x21050100, 0x03630002, "", "暂无简介"}, -{16, 0x21010000, 0x00180002, "", "暂无简介"}, -{16, 0x21020000, 0x00290002, "", "暂无简介"}, -{16, 0x21000000, 0x000b0002, "", "暂无简介"}, -{16, 0x21030000, 0x002a0002, "", "暂无简介"}, -{16, 0x21040000, 0x02520002, "", "暂无简介"}, -{16, 0x21090000, 0x03701202, "", "暂无简介"}, -{17, 0x00000000, 0x02380602, "", "暂无简介"}, -{17, 0x08010000, 0x025d0402, "", "暂无简介"}, -{17, 0x01c10000, 0x02440502, "", "暂无简介"}, -{17, 0x01030000, 0x024f0902, "", "暂无简介"}, -{17, 0x00800102, 0x035d0302, "", "暂无简介"}, -{17, 0x05c00000, 0x04121302, "", "暂无简介"}, -{17, 0x00070000, 0x02630102, "", "暂无简介"}, -{17, 0x01820101, 0x00460502, "", "暂无简介"}, -{17, 0x019d0001, 0x00ac0502, "", "暂无简介"}, -{17, 0x019f0001, 0x01110502, "", "暂无简介"}, -{17, 0x01930001, 0x01740502, "", "暂无简介"}, -{17, 0x02ea0001, 0x01d50502, "", "暂无简介"}, -{17, 0x05130001, 0x02e70502, "", "暂无简介"}, -{17, 0x028f0101, 0x031a0502, "", "暂无简介"}, -{18, 0x38c00000, 0x03911602, "", "暂无简介"}, -{19, 0x22420000, 0x041f0002, "", "解锁光之圣杯"}, -{19, 0x22410000, 0x041e0002, "", "解锁天之圣杯"}, -{19, 0x22400000, 0x002b0002, "", "解锁蒙那多"}, -{19, 0x22430000, 0x043d1b02, "", "解锁执政官N服装/诺亚、兰兹、优妮的休闲装"}, -{19, 0x22440000, 0x043e1b02, "", "解锁执政官M服装/弥央、圣奈、泰恩的休闲装"}, -{20, 0x35c30000, 0x036e0a02, "", "暂无简介"}, -{20, 0x35c10000, 0x036c0a02, "", "暂无简介"}, -{20, 0x35c00000, 0x02500a02, "", "暂无简介"}, -{20, 0x35c00000, 0x03920a02, "", "暂无简介"}, -{20, 0x35c20000, 0x036d0a02, "", "暂无简介"}, -{21, 0x35c30000, 0x036e0a02, "", "暂无简介"}, -{21, 0x35c10000, 0x036c0a02, "", "暂无简介"}, -{21, 0x35c00000, 0x02500a02, "", "暂无简介"}, -{21, 0x35c00000, 0x03920a02, "", "暂无简介"}, -{21, 0x35c20000, 0x036d0a02, "", "暂无简介"}, -{22, 0x1f020000, 0x00280002, "", "暂无简介"}, -{22, 0x1f000000, 0x02540c02, "", "暂无简介"}, -{22, 0x1f010000, 0x02550c02, "", "暂无简介"}, -{22, 0x1f400000, 0x035e1002, "", "暂无简介"}, -{22, 0x1f030000, 0x02570c02, "", "暂无简介"}, -{23, 0x1f020000, 0x00280002, "", "暂无简介"}, -{23, 0x1f000000, 0x02540c02, "", "暂无简介"}, -{23, 0x1f010000, 0x02550c02, "", "暂无简介"}, -{23, 0x1f400000, 0x035e1002, "", "暂无简介"}, -{23, 0x1f030000, 0x02570c02, "", "暂无简介"}, -{24, 0x1f020000, 0x00280002, "", "暂无简介"}, -{24, 0x1f000000, 0x02540c02, "", "暂无简介"}, -{24, 0x1f010000, 0x02550c02, "", "暂无简介"}, -{24, 0x1f400000, 0x035e1002, "", "暂无简介"}, -{24, 0x1f030000, 0x02570c02, "", "暂无简介"}, -{25, 0x33400000, 0x00320002, "", "暂无简介"}, -{26, 0x06000000, 0x00120002, "", "暂无简介"}, -{26, 0x00080000, 0x00030002, "", "暂无简介"}, -{26, 0x05800000, 0x00050002, "", "暂无简介"}, -{26, 0x0005ff00, 0x023a0702, "", "暂无简介"}, -{26, 0x08000100, 0x025f0402, "", "暂无简介"}, -{26, 0x1f000000, 0x000a0002, "", "暂无简介"}, -{26, 0x00010000, 0x000c0002, "", "暂无简介"}, -{26, 0x01880000, 0x02410502, "", "暂无简介"}, -{26, 0x00000000, 0x00000002, "", "暂无简介"}, -{26, 0x34800000, 0x00310002, "", "暂无简介"}, -{26, 0x06400100, 0x001e0002, "", "暂无简介"}, -{26, 0x33400000, 0x00320002, "", "暂无简介"}, -{26, 0x00020000, 0x03720102, "", "暂无简介"}, -{26, 0x00020000, 0x00010002, "", "暂无简介"}, -{26, 0x00130000, 0x037a0002, "", "暂无简介"}, -{26, 0x06420000, 0x035f1102, "", "暂无简介"}, -{26, 0x00040000, 0x02620102, "", "暂无简介"}, -{26, 0x05c00000, 0x00060002, "", "暂无简介"}, -{26, 0x32000000, 0x00300002, "", "暂无简介"}, -{26, 0x000a0000, 0x00380102, "", "暂无简介"}, -{26, 0x01000100, 0x00160002, "", "暂无简介"}, -{26, 0x01800000, 0x00080002, "", "暂无简介"}, -{26, 0x00070000, 0x001a0002, "", "暂无简介"}, -{26, 0x00030000, 0x00020002, "", "暂无简介"}, -{26, 0x01810001, 0x00440502, "", "暂无简介"}, -{26, 0x01940001, 0x00aa0502, "", "暂无简介"}, -{26, 0x01920001, 0x010d0502, "", "暂无简介"}, -{26, 0x019c0001, 0x01730502, "", "暂无简介"}, -{26, 0x02820001, 0x01d60502, "", "暂无简介"}, -{26, 0x04a20001, 0x02e80502, "", "暂无简介"}, -{26, 0x03740101, 0x03190502, "", "暂无简介"}, -{27, 0x00030102, 0x00430302, "", "暂无简介"}, -{27, 0x00010000, 0x00350102, "", "暂无简介"}, -{27, 0x00000000, 0x03710102, "", "暂无简介"}, -{27, 0x00020100, 0x03a70102, "", "暂无简介"}, -{28, 0x01010000, 0x000e0002, "", "暂无简介"}, -{29, 0x34800000, 0x03791502, "", "暂无简介"}, -{30, 0x34800000, 0x03791502, "", "暂无简介"}, -{31, 0x34800000, 0x02580002, "", "暂无简介"}, -{32, 0x05c00000, 0x04121302, "", "能量罐1个/补充能量"}, -{32, 0x05c30000, 0x03800002, "", "导弹包1个/补充弹药"}, -{32, 0x05c00000, 0x03651302, "", "补充能量"}, -{32, 0x05c00000, 0x00060002, "", "补充能量"}, -{32, 0x05c00100, 0x001d0002, "", "补充能量"}, -{32, 0x05c10000, 0x03661302, "", "补充弹药"}, -{32, 0x05c20000, 0x037f0002, "", "补充弹药"}, -{32, 0x05c40000, 0x04131302, "", "暂无简介"}, -{33, 0x00050000, 0x00390102, "", "暂无简介"}, -{33, 0x08010000, 0x025d0402, "", "暂无简介"}, -{33, 0x00130000, 0x02660102, "", "暂无简介"}, -{33, 0x00080000, 0x00030002, "", "暂无简介"}, -{33, 0x01020100, 0x001b0002, "", "暂无简介"}, -{33, 0x00030102, 0x00410302, "", "暂无简介"}, -{33, 0x08000100, 0x03820002, "", "暂无简介"}, -{33, 0x08000200, 0x036a0402, "", "暂无简介"}, -{33, 0x08000300, 0x00400402, "", "暂无简介"}, -{33, 0x01810100, 0x023f0502, "", "暂无简介"}, -{33, 0x01820000, 0x02400502, "", "暂无简介"}, -{33, 0x1f000000, 0x000a0002, "", "暂无简介"}, -{33, 0x01000000, 0x034e0902, "", "暂无简介"}, -{33, 0x00010000, 0x000c0002, "", "暂无简介"}, -{33, 0x08020000, 0x025e0402, "", "暂无简介"}, -{33, 0x00000000, 0x003d0102, "", "暂无简介"}, -{33, 0x22800000, 0x002c0002, "", "暂无简介"}, -{33, 0x00020003, 0x039dff02, "", "暂无简介"}, -{33, 0x018e0000, 0x02490502, "", "暂无简介"}, -{33, 0x00040000, 0x02620102, "", "暂无简介"}, -{33, 0x05c00000, 0x00060002, "", "暂无简介"}, -{33, 0x01010100, 0x00170002, "", "暂无简介"}, -{33, 0x000a0000, 0x00380102, "", "暂无简介"}, -{33, 0x01830000, 0x02420502, "", "暂无简介"}, -{33, 0x01010000, 0x03520902, "", "暂无简介"}, -{33, 0x05c00100, 0x001d0002, "", "暂无简介"}, -{34, 0x35030100, 0x02e50f02, "", "暂无简介"}, -{34, 0x35060000, 0x040d0f02, "", "暂无简介"}, -{34, 0x35080000, 0x040f1802, "", "暂无简介"}, -{34, 0x350b0000, 0x042d1802, "", "暂无简介"}, -{34, 0x35010000, 0x02e30f02, "", "暂无简介"}, -{34, 0x35000200, 0x02e20f02, "", "暂无简介"}, -{34, 0x35000100, 0x02e10f02, "", "暂无简介"}, -{34, 0x350a0000, 0x04111802, "", "暂无简介"}, -{34, 0x350a0100, 0x042c1802, "", "暂无简介"}, -{34, 0x35090000, 0x04101802, "", "暂无简介"}, -{34, 0x35090100, 0x042b1802, "", "暂无简介"}, -{34, 0x35040100, 0x02e60f02, "", "暂无简介"}, -{34, 0x35020100, 0x02e40f02, "", "暂无简介"}, -{34, 0x35050000, 0x040c0f02, "", "暂无简介"}, -{34, 0x35070000, 0x040e0f02, "", "暂无简介"}, -{35, 0x35060000, 0x040d0f02, "", "暂无简介"}, -{35, 0x35050000, 0x040c0f02, "", "暂无简介"}, -{35, 0x35070000, 0x040e0f02, "", "暂无简介"}, -{36, 0x19060000, 0x00240002, "", "暂无简介"}, -{36, 0x1d010000, 0x03750d02, "", "暂无简介"}, -{36, 0x1b920000, 0x00250002, "", "暂无简介"}, -{36, 0x1bd70000, 0x03860002, "", "暂无简介"}, -{36, 0x19020000, 0x03830002, "", "暂无简介"}, -{36, 0x19270000, 0x00260002, "", "暂无简介"}, -{36, 0x1ac00000, 0x00110002, "", "暂无简介"}, -{36, 0x19960000, 0x023d0002, "", "暂无简介"}, -{36, 0x19ac0000, 0x03850002, "", "暂无简介"}, -{36, 0x19190000, 0x00090002, "", "暂无简介"}, -{36, 0x1d000001, 0x025c0d02, "", "暂无简介"}, -{36, 0x19070000, 0x03840002, "", "暂无简介"}, -{37, 0x38020001, 0x03951702, "", "暂无简介"}, -{37, 0x38050001, 0x03981702, "", "暂无简介"}, -{37, 0x38030001, 0x03961702, "", "暂无简介"}, -{37, 0x38010001, 0x03941702, "", "暂无简介"}, -{37, 0x38000001, 0x03931702, "", "暂无简介"}, -{37, 0x38040001, 0x03971702, "", "暂无简介"}, -{38, 0x35030100, 0x02e50f02, "", "暂无简介"}, -{38, 0x34800000, 0x00310002, "", "暂无简介"}, -{38, 0x35010000, 0x02e30f02, "", "暂无简介"}, -{38, 0x35000100, 0x02e10f02, "", "暂无简介"}, -{38, 0x35040100, 0x02e60f02, "", "暂无简介"}, -{38, 0x35020100, 0x02e40f02, "", "暂无简介"}, -{38, 0x34c00000, 0x02530002, "", "暂无简介"}, -{39, 0x35030100, 0x02e50f02, "", "暂无简介"}, -{39, 0x34800000, 0x00310002, "", "暂无简介"}, -{39, 0x35010000, 0x02e30f02, "", "暂无简介"}, -{39, 0x35000100, 0x02e10f02, "", "暂无简介"}, -{39, 0x35040100, 0x02e60f02, "", "暂无简介"}, -{39, 0x35020100, 0x02e40f02, "", "暂无简介"}, -{39, 0x34c00000, 0x02530002, "", "暂无简介"}, -{40, 0x35c30000, 0x036e0a02, "", "暂无简介"}, -{40, 0x35c10000, 0x036c0a02, "", "暂无简介"}, -{40, 0x35c00000, 0x02500a02, "", "暂无简介"}, -{40, 0x35c00000, 0x03920a02, "", "暂无简介"}, -{40, 0x35c20000, 0x036d0a02, "", "暂无简介"}, -{41, 0x35c30000, 0x036e0a02, "", "暂无简介"}, -{41, 0x35c10000, 0x036c0a02, "", "暂无简介"}, -{41, 0x35c00000, 0x02500a02, "", "暂无简介"}, -{41, 0x35c00000, 0x03920a02, "", "暂无简介"}, -{41, 0x35c20000, 0x036d0a02, "", "暂无简介"}, -{42, 0x35c30000, 0x036e0a02, "", "暂无简介"}, -{42, 0x35c10000, 0x036c0a02, "", "暂无简介"}, -{42, 0x35c00000, 0x02500a02, "", "暂无简介"}, -{42, 0x35c00000, 0x03920a02, "", "暂无简介"}, -{42, 0x35c20000, 0x036d0a02, "", "暂无简介"}, -{43, 0x08010000, 0x025d0402, "", "暂无简介"}, -{43, 0x08000100, 0x03820002, "", "暂无简介"}, -{43, 0x08000100, 0x04150402, "", "暂无简介"}, -{43, 0x08000200, 0x003f0402, "", "暂无简介"}, -{43, 0x08000200, 0x036a0402, "", "暂无简介"}, -{43, 0x08000200, 0x02600402, "", "暂无简介"}, -{43, 0x08000100, 0x003e0402, "", "暂无简介"}, -{43, 0x08000100, 0x025f0402, "", "暂无简介"}, -{43, 0x08000100, 0x03690402, "", "暂无简介"}, -{43, 0x08000300, 0x00400402, "", "暂无简介"}, -{43, 0x08000300, 0x036b0402, "", "暂无简介"}, -{43, 0x08000300, 0x02610402, "", "暂无简介"}, -{43, 0x08020000, 0x025e0402, "", "暂无简介"}, -{43, 0x08040000, 0x03770402, "", "暂无简介"}, -{43, 0x08050200, 0x041b0402, "", "暂无简介"}, -{43, 0x08050200, 0x038f0402, "", "暂无简介"}, -{43, 0x08050100, 0x038e0402, "", "暂无简介"}, -{43, 0x08050300, 0x03900402, "", "暂无简介"}, -{43, 0x08030000, 0x03760402, "", "暂无简介"}, -{44, 0x1f020000, 0x02560c02, "", "暂无简介"}, -{44, 0x1f020000, 0x00280002, "", "暂无简介"}, -{44, 0x1f000000, 0x02540c02, "", "暂无简介"}, -{44, 0x1f000000, 0x000a0002, "", "暂无简介"}, -{44, 0x1f010000, 0x02550c02, "", "暂无简介"}, -{44, 0x1f010000, 0x00270002, "", "暂无简介"}, -{44, 0x1f400000, 0x035e1002, "", "暂无简介"}, -{44, 0x1f030000, 0x02570c02, "", "暂无简介"}, -{45, 0x00170000, 0x02680102, "", "暂无简介"}, -{45, 0x00050000, 0x00140002, "", "使狂怒酷霸王立即现身"}, -{45, 0x00060000, 0x00150002, "", "使酷霸王Jr.释放冲击波"}, -{45, 0x00130000, 0x02660102, "", "暂无简介"}, -{45, 0x00090000, 0x000d0002, "", "暂无简介"}, -{45, 0x00080000, 0x00030002, "", "暂无简介"}, -{45, 0x00150000, 0x03670102, "", "暂无简介"}, -{45, 0x00230000, 0x03680102, "", "暂无简介"}, -{45, 0x00010000, 0x000c0002, "", "暂无简介"}, -{45, 0x00000000, 0x00340102, "", "暂无简介"}, -{45, 0x00000300, 0x03a60102, "", "获得无敌铃铛"}, -{45, 0x00030102, 0x023e0302, "", "暂无简介"}, -{45, 0x00020000, 0x00360102, "", "暂无简介"}, -{45, 0x00020100, 0x03a70102, "", "随机获得一个增强道具"}, -{45, 0x00240000, 0x038d0002, "", "暂无简介"}, -{45, 0x00040000, 0x02620102, "", "暂无简介"}, -{45, 0x000a0000, 0x00380102, "", "暂无简介"}, -{45, 0x00140000, 0x02670102, "", "暂无简介"}, -{45, 0x00070000, 0x02630102, "", "暂无简介"}, -{46, 0x00050000, 0x00140002, "", "暂无简介"}, -{46, 0x00050000, 0x00390102, "", "暂无简介"}, -{46, 0x00050000, 0x03730102, "", "显示紫金币位置/解锁酷霸王的礼服"}, -{46, 0x00090000, 0x02650102, "", "解锁迪迪刚套装"}, -{46, 0x00000100, 0x00190002, "", "解锁医生套装"}, -{46, 0x00010000, 0x00350102, "", "解锁路易吉套装"}, -{46, 0x00000000, 0x00000002, "", "解锁经典套装"}, -{46, 0x00000000, 0x003c0102, "", "解锁金色马力欧套装"}, -{46, 0x00000000, 0x003d0102, "", "解锁金色马力欧套装"}, -{46, 0x00000000, 0x03710102, "", "短时间无敌/解锁马力欧的礼服"}, -{46, 0x00020000, 0x03720102, "", "血上限+3/解锁婚纱"}, -{46, 0x37400001, 0x03741402, "", "暂无简介"}, -{46, 0x00140000, 0x02670102, "", "解锁瓦路易吉套装"}, -{46, 0x00070000, 0x001a0002, "", "解锁瓦力欧套装"}, -{46, 0x000a0003, 0x03a0ff02, "", ""}, -{46, 0x00000003, 0x039bff02, "", ""}, -{46, 0x00000003, 0x0430ff02, "", ""}, -{46, 0x00010003, 0x039cff02, "", ""}, -{46, 0x00030003, 0x039fff02, "", ""}, -{46, 0x00130003, 0x039eff02, "", ""}, -{47, 0x3dc10000, 0x04230002, "", "暂无简介"}, -{47, 0x3b400000, 0x03a30002, "", "暂无简介"}, -{47, 0x32400000, 0x025b0002, "", "暂无简介"}, -{47, 0x32400100, 0x03640002, "", "暂无简介"}, -{47, 0x00050000, 0x00140002, "", "暂无简介"}, -{47, 0x00060000, 0x00150002, "", "暂无简介"}, -{47, 0x210b0000, 0x03a50002, "", "暂无简介"}, -{47, 0x06000000, 0x00120002, "", "暂无简介"}, -{47, 0x19060000, 0x00240002, "", "暂无简介"}, -{47, 0x21080000, 0x03880002, "", "暂无简介"}, -{47, 0x36000000, 0x02590002, "", "暂无简介"}, -{47, 0x36000100, 0x03620002, "", "暂无简介"}, -{47, 0x21050000, 0x025a0002, "", "暂无简介"}, -{47, 0x21050100, 0x03630002, "", "暂无简介"}, -{47, 0x00130000, 0x037a0002, "", "暂无简介"}, -{47, 0x07410000, 0x00200002, "", "暂无简介"}, -{47, 0x05c30000, 0x03800002, "", "暂无简介"}, -{47, 0x00090000, 0x000d0002, "", "暂无简介"}, -{47, 0x00080000, 0x00030002, "", "暂无简介"}, -{47, 0x00000100, 0x00190002, "", "暂无简介"}, -{47, 0x07820000, 0x002f0002, "", "暂无简介"}, -{47, 0x05810000, 0x001c0002, "", "暂无简介"}, -{47, 0x05800000, 0x00050002, "", "暂无简介"}, -{47, 0x01020100, 0x001b0002, "", "暂无简介"}, -{47, 0x1b920000, 0x00250002, "", "暂无简介"}, -{47, 0x36400000, 0x03a20002, "", "暂无简介"}, -{47, 0x078f0000, 0x03810002, "", "暂无简介"}, -{47, 0x21010000, 0x00180002, "", "暂无简介"}, -{47, 0x1bd70000, 0x03860002, "", "暂无简介"}, -{47, 0x08000100, 0x03820002, "", "暂无简介"}, -{47, 0x01810000, 0x037d0002, "", "暂无简介"}, -{47, 0x19020000, 0x03830002, "", "暂无简介"}, -{47, 0x19270000, 0x00260002, "", "暂无简介"}, -{47, 0x3a000000, 0x03a10002, "", "暂无简介"}, -{47, 0x33c00000, 0x04200002, "", "暂无简介"}, -{47, 0x34c10000, 0x03890002, "", "暂无简介"}, -{47, 0x1f020000, 0x00280002, "", "暂无简介"}, -{47, 0x00c00000, 0x037b0002, "", "暂无简介"}, -{47, 0x1f000000, 0x000a0002, "", "暂无简介"}, -{47, 0x01000000, 0x00040002, "", "暂无简介"}, -{47, 0x06c00000, 0x000f0002, "", "暂无简介"}, -{47, 0x1ac00000, 0x00110002, "", "暂无简介"}, -{47, 0x22810000, 0x02510002, "", "暂无简介"}, -{47, 0x21020000, 0x00290002, "", "暂无简介"}, -{47, 0x00010000, 0x000c0002, "", "暂无简介"}, -{47, 0x00000000, 0x00000002, "", "暂无简介"}, -{47, 0x21000000, 0x000b0002, "", "暂无简介"}, -{47, 0x34800000, 0x00310002, "", "暂无简介"}, -{47, 0x34800000, 0x02580002, "", "暂无简介"}, -{47, 0x1f010000, 0x00270002, "", "暂无简介"}, -{47, 0x19960000, 0x023d0002, "", "暂无简介"}, -{47, 0x07c00000, 0x00210002, "", "暂无简介"}, -{47, 0x07c00200, 0x00230002, "", "暂无简介"}, -{47, 0x07c00100, 0x00220002, "", "暂无简介"}, -{47, 0x0a400000, 0x041d0002, "", "暂无简介"}, -{47, 0x07800000, 0x002d0002, "", "暂无简介"}, -{47, 0x22420000, 0x041f0002, "", "暂无简介"}, -{47, 0x22800000, 0x002c0002, "", "暂无简介"}, -{47, 0x06400100, 0x001e0002, "", "暂无简介"}, -{47, 0x33400000, 0x00320002, "", "暂无简介"}, -{47, 0x07420000, 0x001f0002, "", "暂无简介"}, -{47, 0x00020000, 0x00010002, "", "暂无简介"}, -{47, 0x19ac0000, 0x03850002, "", "暂无简介"}, -{47, 0x19190000, 0x00090002, "", "暂无简介"}, -{47, 0x00240000, 0x038d0002, "", "暂无简介"}, -{47, 0x07400000, 0x00100002, "", "暂无简介"}, -{47, 0x1d400000, 0x03870002, "", "暂无简介"}, -{47, 0x22410000, 0x041e0002, "", "暂无简介"}, -{47, 0x07810000, 0x002e0002, "", "暂无简介"}, -{47, 0x07810000, 0x00330002, "", "暂无简介"}, -{47, 0x37c10000, 0x038c0002, "", "暂无简介"}, -{47, 0x05c20000, 0x037f0002, "", "暂无简介"}, -{47, 0x21030000, 0x002a0002, "", "暂无简介"}, -{47, 0x00040100, 0x00130002, "", "暂无简介"}, -{47, 0x21040000, 0x02520002, "", "暂无简介"}, -{47, 0x34c00000, 0x02530002, "", "暂无简介"}, -{47, 0x05c00000, 0x00060002, "", "暂无简介"}, -{47, 0x36010000, 0x04210002, "", "暂无简介"}, -{47, 0x01010100, 0x00170002, "", "暂无简介"}, -{47, 0x22400000, 0x002b0002, "", "暂无简介"}, -{47, 0x37c00000, 0x038b0002, "", "暂无简介"}, -{47, 0x37800000, 0x038a0002, "", "暂无简介"}, -{47, 0x32000000, 0x00300002, "", "暂无简介"}, -{47, 0x19070000, 0x03840002, "", "暂无简介"}, -{47, 0x3dc00000, 0x04220002, "", "暂无简介"}, -{47, 0x3c800000, 0x03a40002, "", "暂无简介"}, -{47, 0x01000100, 0x00160002, "", "暂无简介"}, -{47, 0x01800000, 0x00080002, "", "暂无简介"}, -{47, 0x00070000, 0x001a0002, "", "暂无简介"}, -{47, 0x07000000, 0x00070002, "", "暂无简介"}, -{47, 0x05840000, 0x037e0002, "", "暂无简介"}, -{47, 0x00030000, 0x00020002, "", "暂无简介"}, -{47, 0x01000000, 0x037c0002, "", "暂无简介"}, -{47, 0x01010000, 0x000e0002, "", "暂无简介"}, -{47, 0x05c00100, 0x001d0002, "", "暂无简介"}, -{47, 0x3f000000, 0x042e0002, "", "暂无简介"}, -{48, 0x00030102, 0x00410302, "", "暂无简介"}, -{48, 0x0005ff00, 0x023a0702, "", "暂无简介"}, -{48, 0x00230000, 0x03680102, "", "暂无简介"}, -{48, 0x00030102, 0x00430302, "", "暂无简介"}, -{48, 0x00010000, 0x00350102, "", "暂无简介"}, -{48, 0x00000000, 0x00000002, "", "暂无简介"}, -{48, 0x00020000, 0x00360102, "", "暂无简介"}, -{48, 0x00030102, 0x00420302, "", "暂无简介"}, -{48, 0x00800102, 0x035d0302, "", "暂无简介"}, -{48, 0x000a0000, 0x00380102, "", "暂无简介"}, -{48, 0x00030000, 0x00020002, "", "暂无简介"}, -{49, 0x38460001, 0x042a1902, "", "暂无简介"}, -{49, 0x38420001, 0x04261902, "", "暂无简介"}, -{49, 0x38450001, 0x04291902, "", "暂无简介"}, -{49, 0x38440001, 0x04281902, "", "暂无简介"}, -{49, 0x38430001, 0x04271902, "", "暂无简介"}, -{49, 0x38410001, 0x04251902, "", "暂无简介"}, -{49, 0x38400001, 0x04241902, "", "暂无简介"}, -{50, 0x33800000, 0x03781402, "", "暂无简介"}, -{51, 0x00170000, 0x02680102, "", "暂无简介"}, -{51, 0x00050000, 0x00140002, "", "暂无简介"}, -{51, 0x00060000, 0x00150002, "", "暂无简介"}, -{51, 0x00130000, 0x037a0002, "", "暂无简介"}, -{51, 0x00090000, 0x000d0002, "", "暂无简介"}, -{51, 0x00080000, 0x02640102, "", "暂无简介"}, -{51, 0x00150000, 0x03670102, "", "暂无简介"}, -{51, 0x00230000, 0x03680102, "", "暂无简介"}, -{51, 0x00010000, 0x000c0002, "", "暂无简介"}, -{51, 0x00000000, 0x00340102, "", "暂无简介"}, -{51, 0x00020000, 0x00010002, "", "暂无简介"}, -{51, 0x00030102, 0x00420302, "", "暂无简介"}, -{51, 0x00040100, 0x00130002, "", "暂无简介"}, -{51, 0x00140000, 0x02670102, "", "暂无简介"}, -{51, 0x00070000, 0x02630102, "", "暂无简介"}, -{53, 0x01920000, 0x02470502, "", ""}, -{53, 0x01930000, 0x02480502, "", ""}, -{53, 0x018b0000, 0x02460502, "", ""}, -{53, 0x018c0000, 0x02430502, "", ""}, -{53, 0x01810100, 0x023f0502, "", ""}, -{53, 0x01820000, 0x02400502, "", ""}, -{53, 0x01960000, 0x024e0502, "", ""}, -{53, 0x01940000, 0x024a0502, "", ""}, -{53, 0x01c10000, 0x02440502, "", ""}, -{53, 0x01880000, 0x02410502, "", ""}, -{53, 0x018a0000, 0x02450502, "", ""}, -{53, 0x018e0000, 0x02490502, "", ""}, -{53, 0x018d0000, 0x024c0502, "", ""}, -{53, 0x01810000, 0x024b0502, "", ""}, -{53, 0x01840000, 0x024d0502, "", ""}, -{53, 0x01830000, 0x02420502, "", ""}, -{54, 0x02820001, 0x01d60502, "", ""}, -{54, 0x025f0001, 0x01d70502, "", ""}, -{54, 0x02ea0001, 0x01d50502, "", ""}, -{55, 0x03740101, 0x03190502, "", ""}, -{55, 0x028f0101, 0x031a0502, "", ""}, -{55, 0x04d30101, 0x031b0502, "", ""}, -{55, 0x032e0101, 0x031c0502, "", ""}, -{55, 0x02e00101, 0x031d0502, "", ""}, -{55, 0x04a80101, 0x031e0502, "", ""}, -{56, 0x01810001, 0x00440502, "", ""}, -{56, 0x01830001, 0x00450502, "", ""}, -{56, 0x01820101, 0x00460502, "", ""}, -{56, 0x01870001, 0x00470502, "", ""}, -{56, 0x01960001, 0x00480502, "", ""}, -{56, 0x018e0001, 0x00490502, "", ""}, -{56, 0x01a30001, 0x004a0502, "", ""}, -{56, 0x01850001, 0x004b0502, "", ""}, -{56, 0x018c0001, 0x004c0502, "", ""}, -{56, 0x01a40001, 0x004d0502, "", ""}, -{56, 0x01910001, 0x004e0502, "", ""}, -{56, 0x01a80001, 0x004f0502, "", ""}, -{56, 0x01a60001, 0x00500502, "", ""}, -{56, 0x01b50001, 0x00510502, "", ""}, -{56, 0x01b00001, 0x00520502, "", ""}, -{56, 0x01aa0001, 0x00530502, "", ""}, -{56, 0x01c10001, 0x00540502, "", ""}, -{56, 0x025d0001, 0x00550502, "", ""}, -{56, 0x02d60001, 0x00560502, "", ""}, -{56, 0x02160001, 0x00570502, "", ""}, -{56, 0x02ef0001, 0x00580502, "", ""}, -{56, 0x04fe0001, 0x00590502, "", ""}, -{56, 0x02870001, 0x005a0502, "", ""}, -{56, 0x05150001, 0x005b0502, "", ""}, -{56, 0x03710001, 0x005c0502, "", ""}, -{56, 0x04ba0001, 0x005d0502, "", ""}, -{56, 0x02db0001, 0x005e0502, "", ""}, -{56, 0x03450001, 0x005f0502, "", ""}, -{56, 0x047a0001, 0x00600502, "", ""}, -{56, 0x049b0001, 0x00610502, "", ""}, -{56, 0x04ed0001, 0x00620502, "", ""}, -{56, 0x027d0001, 0x00630502, "", ""}, -{56, 0x03070001, 0x00640502, "", ""}, -{56, 0x02610001, 0x00650502, "", ""}, -{56, 0x04010001, 0x00660502, "", ""}, -{56, 0x02c40001, 0x00670502, "", ""}, -{56, 0x02660001, 0x00680502, "", ""}, -{56, 0x02b10001, 0x00690502, "", ""}, -{56, 0x02310001, 0x006a0502, "", ""}, -{56, 0x03480001, 0x006b0502, "", ""}, -{56, 0x03180001, 0x006c0502, "", ""}, -{56, 0x03db0001, 0x006d0502, "", ""}, -{56, 0x04650001, 0x006e0502, "", ""}, -{56, 0x04000001, 0x006f0502, "", ""}, -{56, 0x04290001, 0x00700502, "", ""}, -{56, 0x03a90001, 0x00710502, "", ""}, -{56, 0x02a40001, 0x00720502, "", ""}, -{56, 0x04520001, 0x00730502, "", ""}, -{56, 0x04a50001, 0x00740502, "", ""}, -{56, 0x02630001, 0x00750502, "", ""}, -{56, 0x03230001, 0x00760502, "", ""}, -{56, 0x04ec0001, 0x00770502, "", ""}, -{56, 0x040d0001, 0x00780502, "", ""}, -{56, 0x030b0001, 0x00790502, "", ""}, -{56, 0x04970001, 0x007a0502, "", ""}, -{56, 0x04fd0001, 0x007b0502, "", ""}, -{56, 0x043d0001, 0x007c0502, "", ""}, -{56, 0x02680001, 0x007d0502, "", ""}, -{56, 0x02190001, 0x007e0502, "", ""}, -{56, 0x04100001, 0x007f0502, "", ""}, -{56, 0x021b0001, 0x00800502, "", ""}, -{56, 0x024f0001, 0x00810502, "", ""}, -{56, 0x04e60001, 0x00820502, "", ""}, -{56, 0x02800001, 0x00830502, "", ""}, -{56, 0x02350001, 0x00840502, "", ""}, -{56, 0x035a0001, 0x00850502, "", ""}, -{56, 0x03840001, 0x00860502, "", ""}, -{56, 0x03ae0001, 0x00870502, "", ""}, -{56, 0x040e0001, 0x00880502, "", ""}, -{56, 0x03940001, 0x00890502, "", ""}, -{56, 0x03bc0001, 0x008a0502, "", ""}, -{56, 0x03ee0001, 0x008b0502, "", ""}, -{56, 0x046c0001, 0x008c0502, "", ""}, -{56, 0x04800001, 0x008d0502, "", ""}, -{56, 0x044c0001, 0x008e0502, "", ""}, -{56, 0x033f0001, 0x008f0502, "", ""}, -{56, 0x02fb0001, 0x00900502, "", ""}, -{56, 0x03a80001, 0x00910502, "", ""}, -{56, 0x04790001, 0x00920502, "", ""}, -{56, 0x03c60001, 0x00930502, "", ""}, -{56, 0x04c70001, 0x00940502, "", ""}, -{56, 0x02990001, 0x00950502, "", ""}, -{56, 0x02080001, 0x00960502, "", ""}, -{56, 0x02fa0001, 0x00970502, "", ""}, -{56, 0x04880001, 0x00980502, "", ""}, -{56, 0x050b0001, 0x00990502, "", ""}, -{56, 0x04940001, 0x009a0502, "", ""}, -{56, 0x03830001, 0x009b0502, "", ""}, -{56, 0x02de0001, 0x009c0502, "", ""}, -{56, 0x03290001, 0x009d0502, "", ""}, -{56, 0x04d10001, 0x009e0502, "", ""}, -{56, 0x034b0001, 0x009f0502, "", ""}, -{56, 0x03930001, 0x00a00502, "", ""}, -{56, 0x02000001, 0x00a10502, "", ""}, -{56, 0x04dd0001, 0x00a20502, "", ""}, -{56, 0x04a60001, 0x00a30502, "", ""}, -{56, 0x04cc0001, 0x00a40502, "", ""}, -{56, 0x04600001, 0x00a50502, "", ""}, -{56, 0x03170001, 0x00a60502, "", ""}, -{56, 0x02f00001, 0x00a70502, "", ""}, -{57, 0x01820001, 0x00a80502, "", ""}, -{57, 0x018a0001, 0x00a90502, "", ""}, -{57, 0x01940001, 0x00aa0502, "", ""}, -{57, 0x01890001, 0x00ab0502, "", ""}, -{57, 0x019d0001, 0x00ac0502, "", ""}, -{57, 0x019e0001, 0x00ad0502, "", ""}, -{57, 0x01b60001, 0x00ae0502, "", ""}, -{57, 0x01860101, 0x00af0502, "", ""}, -{57, 0x01950001, 0x00b00502, "", ""}, -{57, 0x01980001, 0x00b10502, "", ""}, -{57, 0x01b10001, 0x00b20502, "", ""}, -{57, 0x018f0001, 0x00b30502, "", ""}, -{57, 0x01810101, 0x00b40502, "", ""}, -{57, 0x01b30001, 0x00b50502, "", ""}, -{57, 0x019b0001, 0x00b60502, "", ""}, -{57, 0x019a0001, 0x00b70502, "", ""}, -{57, 0x01ad0001, 0x00b80502, "", ""}, -{57, 0x027f0001, 0x00b90502, "", ""}, -{57, 0x026e0001, 0x00ba0502, "", ""}, -{57, 0x03c10001, 0x00bb0502, "", ""}, -{57, 0x032d0001, 0x00bc0502, "", ""}, -{57, 0x023c0001, 0x00bd0502, "", ""}, -{57, 0x02dc0001, 0x00be0502, "", ""}, -{57, 0x03980001, 0x00bf0502, "", ""}, -{57, 0x04640001, 0x00c00502, "", ""}, -{57, 0x02510001, 0x00c10502, "", ""}, -{57, 0x03d10001, 0x00c20502, "", ""}, -{57, 0x026c0001, 0x00c30502, "", ""}, -{57, 0x02b20001, 0x00c40502, "", ""}, -{57, 0x03440001, 0x00c50502, "", ""}, -{57, 0x03090001, 0x00c60502, "", ""}, -{57, 0x02830001, 0x00c70502, "", ""}, -{57, 0x03a60001, 0x00c80502, "", ""}, -{57, 0x035d0001, 0x00c90502, "", ""}, -{57, 0x04400001, 0x00ca0502, "", ""}, -{57, 0x029b0001, 0x00cb0502, "", ""}, -{57, 0x02f20001, 0x00cc0502, "", ""}, -{57, 0x02c90001, 0x00cd0502, "", ""}, -{57, 0x04de0001, 0x00ce0502, "", ""}, -{57, 0x04500001, 0x00cf0502, "", ""}, -{57, 0x03fa0001, 0x00d00502, "", ""}, -{57, 0x023e0001, 0x00d10502, "", ""}, -{57, 0x02600001, 0x00d20502, "", ""}, -{57, 0x03690001, 0x00d30502, "", ""}, -{57, 0x04a40001, 0x00d40502, "", ""}, -{57, 0x03810001, 0x00d50502, "", ""}, -{57, 0x03110001, 0x00d60502, "", ""}, -{57, 0x050e0001, 0x00d70502, "", ""}, -{57, 0x04180001, 0x00d80502, "", ""}, -{57, 0x04960001, 0x00d90502, "", ""}, -{57, 0x021a0001, 0x00da0502, "", ""}, -{57, 0x04ce0001, 0x00db0502, "", ""}, -{57, 0x02c30001, 0x00dc0502, "", ""}, -{57, 0x04b30001, 0x00dd0502, "", ""}, -{57, 0x02eb0001, 0x00de0502, "", ""}, -{57, 0x04990001, 0x00df0502, "", ""}, -{57, 0x041a0001, 0x00e00502, "", ""}, -{57, 0x04cf0001, 0x00e10502, "", ""}, -{57, 0x02d80001, 0x00e20502, "", ""}, -{57, 0x028b0001, 0x00e30502, "", ""}, -{57, 0x02140001, 0x00e40502, "", ""}, -{57, 0x03d20001, 0x00e50502, "", ""}, -{57, 0x03aa0001, 0x00e60502, "", ""}, -{57, 0x05000001, 0x00e70502, "", ""}, -{57, 0x04df0001, 0x00e80502, "", ""}, -{57, 0x026b0001, 0x00e90502, "", ""}, -{57, 0x02dd0001, 0x00ea0502, "", ""}, -{57, 0x03570001, 0x00eb0502, "", ""}, -{57, 0x03e60001, 0x00ec0502, "", ""}, -{57, 0x049d0001, 0x00ed0502, "", ""}, -{57, 0x029a0001, 0x00ee0502, "", ""}, -{57, 0x04890001, 0x00ef0502, "", ""}, -{57, 0x03b10001, 0x00f00502, "", ""}, -{57, 0x041b0001, 0x00f10502, "", ""}, -{57, 0x022d0001, 0x00f20502, "", ""}, -{57, 0x046d0001, 0x00f30502, "", ""}, -{57, 0x03ff0001, 0x00f40502, "", ""}, -{57, 0x047b0001, 0x00f50502, "", ""}, -{57, 0x04620001, 0x00f60502, "", ""}, -{57, 0x04e00001, 0x00f70502, "", ""}, -{57, 0x03100001, 0x00f80502, "", ""}, -{57, 0x03bd0001, 0x00f90502, "", ""}, -{57, 0x033b0001, 0x00fa0502, "", ""}, -{57, 0x04160001, 0x00fb0502, "", ""}, -{57, 0x04860001, 0x00fc0502, "", ""}, -{57, 0x02200001, 0x00fd0502, "", ""}, -{57, 0x02520001, 0x00fe0502, "", ""}, -{57, 0x02700001, 0x00ff0502, "", ""}, -{57, 0x033c0001, 0x01000502, "", ""}, -{57, 0x04c50001, 0x01010502, "", ""}, -{57, 0x02f90001, 0x01020502, "", ""}, -{57, 0x02020001, 0x01030502, "", ""}, -{57, 0x04530001, 0x01040502, "", ""}, -{57, 0x04370001, 0x01050502, "", ""}, -{57, 0x03850001, 0x01060502, "", ""}, -{57, 0x05100001, 0x01070502, "", ""}, -{57, 0x02670001, 0x01080502, "", ""}, -{57, 0x04e20001, 0x01090502, "", ""}, -{57, 0x03250001, 0x010a0502, "", ""}, -{57, 0x03720001, 0x010b0502, "", ""}, -{58, 0x018d0001, 0x010c0502, "", ""}, -{58, 0x01920001, 0x010d0502, "", ""}, -{58, 0x01830101, 0x010e0502, "", ""}, -{58, 0x01a00001, 0x010f0502, "", ""}, -{58, 0x01a10001, 0x01100502, "", ""}, -{58, 0x019f0001, 0x01110502, "", ""}, -{58, 0x01880001, 0x01120502, "", ""}, -{58, 0x01b40001, 0x01130502, "", ""}, -{58, 0x01a70001, 0x01140502, "", ""}, -{58, 0x018b0001, 0x01150502, "", ""}, -{58, 0x01990001, 0x01160502, "", ""}, -{58, 0x01850201, 0x01170502, "", ""}, -{58, 0x018c0101, 0x01180502, "", ""}, -{58, 0x018f0101, 0x01190502, "", ""}, -{58, 0x01810201, 0x011a0502, "", ""}, -{58, 0x01ae0001, 0x011b0502, "", ""}, -{58, 0x01af0001, 0x011c0502, "", ""}, -{58, 0x03380001, 0x011d0502, "", ""}, -{58, 0x022f0001, 0x011e0502, "", ""}, -{58, 0x02690001, 0x011f0502, "", ""}, -{58, 0x02810001, 0x01200502, "", ""}, -{58, 0x03130001, 0x01210502, "", ""}, -{58, 0x02c70001, 0x01220502, "", ""}, -{58, 0x021e0001, 0x01230502, "", ""}, -{58, 0x02a60001, 0x01240502, "", ""}, -{58, 0x025e0001, 0x01250502, "", ""}, -{58, 0x024b0001, 0x01260502, "", ""}, -{58, 0x03920001, 0x01270502, "", ""}, -{58, 0x03420001, 0x01280502, "", ""}, -{58, 0x035c0001, 0x01290502, "", ""}, -{58, 0x03e70001, 0x012a0502, "", ""}, -{58, 0x03c40001, 0x012b0502, "", ""}, -{58, 0x03af0001, 0x012c0502, "", ""}, -{58, 0x042a0001, 0x012d0502, "", ""}, -{58, 0x047d0001, 0x012e0502, "", ""}, -{58, 0x030e0001, 0x012f0502, "", ""}, -{58, 0x02d70001, 0x01300502, "", ""}, -{58, 0x04630001, 0x01310502, "", ""}, -{58, 0x04e70001, 0x01320502, "", ""}, -{58, 0x02da0001, 0x01330502, "", ""}, -{58, 0x03730001, 0x01340502, "", ""}, -{58, 0x03560001, 0x01350502, "", ""}, -{58, 0x02cb0001, 0x01360502, "", ""}, -{58, 0x02620001, 0x01370502, "", ""}, -{58, 0x02f80001, 0x01380502, "", ""}, -{58, 0x03260001, 0x01390502, "", ""}, -{58, 0x033d0001, 0x013a0502, "", ""}, -{58, 0x04ef0001, 0x013b0502, "", ""}, -{58, 0x02210001, 0x013c0502, "", ""}, -{58, 0x029e0001, 0x013d0502, "", ""}, -{58, 0x028c0001, 0x013e0502, "", ""}, -{58, 0x026d0001, 0x013f0502, "", ""}, -{58, 0x049c0001, 0x01400502, "", ""}, -{58, 0x041c0001, 0x01410502, "", ""}, -{58, 0x050d0001, 0x01420502, "", ""}, -{58, 0x034a0001, 0x01430502, "", ""}, -{58, 0x02220001, 0x01440502, "", ""}, -{58, 0x02f10001, 0x01450502, "", ""}, -{58, 0x026a0001, 0x01460502, "", ""}, -{58, 0x03fc0001, 0x01470502, "", ""}, -{58, 0x032c0001, 0x01480502, "", ""}, -{58, 0x043e0001, 0x01490502, "", ""}, -{58, 0x04980001, 0x014a0502, "", ""}, -{58, 0x04ee0001, 0x014b0502, "", ""}, -{58, 0x04850001, 0x014c0502, "", ""}, -{58, 0x03080001, 0x014d0502, "", ""}, -{58, 0x049a0001, 0x014e0502, "", ""}, -{58, 0x03a40001, 0x014f0502, "", ""}, -{58, 0x040f0001, 0x01500502, "", ""}, -{58, 0x03da0001, 0x01510502, "", ""}, -{58, 0x04cd0001, 0x01520502, "", ""}, -{58, 0x05140001, 0x01530502, "", ""}, -{58, 0x02650001, 0x01540502, "", ""}, -{58, 0x043f0001, 0x01550502, "", ""}, -{58, 0x037e0001, 0x01560502, "", ""}, -{58, 0x03d60001, 0x01570502, "", ""}, -{58, 0x03fd0001, 0x01580502, "", ""}, -{58, 0x040c0001, 0x01590502, "", ""}, -{58, 0x02ed0001, 0x015a0502, "", ""}, -{58, 0x03a50001, 0x015b0502, "", ""}, -{58, 0x03c50001, 0x015c0502, "", ""}, -{58, 0x03700001, 0x015d0502, "", ""}, -{58, 0x04510001, 0x015e0502, "", ""}, -{58, 0x041e0001, 0x015f0502, "", ""}, -{58, 0x04b90001, 0x01600502, "", ""}, -{58, 0x04610001, 0x01610502, "", ""}, -{58, 0x04ff0001, 0x01620502, "", ""}, -{58, 0x04780001, 0x01630502, "", ""}, -{58, 0x04690001, 0x01640502, "", ""}, -{58, 0x04e30001, 0x01650502, "", ""}, -{58, 0x023f0001, 0x01660502, "", ""}, -{58, 0x04c60001, 0x01670502, "", ""}, -{58, 0x04fa0001, 0x01680502, "", ""}, -{58, 0x027e0001, 0x01690502, "", ""}, -{58, 0x02010001, 0x016a0502, "", ""}, -{58, 0x03820001, 0x016b0502, "", ""}, -{58, 0x044b0001, 0x016c0502, "", ""}, -{58, 0x030f0001, 0x016d0502, "", ""}, -{58, 0x04a00001, 0x016e0502, "", ""}, -{58, 0x04a10001, 0x016f0502, "", ""}, -{59, 0x01810301, 0x01700502, "", ""}, -{59, 0x01900001, 0x01710502, "", ""}, -{59, 0x01a50001, 0x01720502, "", ""}, -{59, 0x019c0001, 0x01730502, "", ""}, -{59, 0x01930001, 0x01740502, "", ""}, -{59, 0x01860301, 0x01750502, "", ""}, -{59, 0x01a90001, 0x01760502, "", ""}, -{59, 0x01970001, 0x01770502, "", ""}, -{59, 0x018e0101, 0x01780502, "", ""}, -{59, 0x01850401, 0x01790502, "", ""}, -{59, 0x01c10101, 0x017a0502, "", ""}, -{59, 0x01b10101, 0x017b0502, "", ""}, -{59, 0x01ab0001, 0x017c0502, "", ""}, -{59, 0x01a20001, 0x017d0502, "", ""}, -{59, 0x01a80101, 0x017e0502, "", ""}, -{59, 0x01ac0001, 0x017f0502, "", ""}, -{59, 0x02ea0001, 0x01800502, "", ""}, -{59, 0x02820001, 0x01810502, "", ""}, -{59, 0x02150001, 0x01820502, "", ""}, -{59, 0x03ec0001, 0x01830502, "", ""}, -{59, 0x030d0001, 0x01840502, "", ""}, -{59, 0x03900001, 0x01850502, "", ""}, -{59, 0x02720001, 0x01860502, "", ""}, -{59, 0x03800001, 0x01870502, "", ""}, -{59, 0x03ac0001, 0x01880502, "", ""}, -{59, 0x03240001, 0x01890502, "", ""}, -{59, 0x041d0001, 0x018a0502, "", ""}, -{59, 0x036b0001, 0x018b0502, "", ""}, -{59, 0x02a50001, 0x018c0502, "", ""}, -{59, 0x03490001, 0x018d0502, "", ""}, -{59, 0x035e0001, 0x018e0502, "", ""}, -{59, 0x02fc0001, 0x018f0502, "", ""}, -{59, 0x026f0001, 0x01900502, "", ""}, -{59, 0x02df0001, 0x01910502, "", ""}, -{59, 0x04950001, 0x01920502, "", ""}, -{59, 0x044d0001, 0x01930502, "", ""}, -{59, 0x04360001, 0x01940502, "", ""}, -{59, 0x05110001, 0x01950502, "", ""}, -{59, 0x04d00001, 0x01960502, "", ""}, -{59, 0x046b0001, 0x01970502, "", ""}, -{59, 0x03be0001, 0x01980502, "", ""}, -{59, 0x02ee0001, 0x01990502, "", ""}, -{59, 0x02030001, 0x019a0502, "", ""}, -{59, 0x02710001, 0x019b0502, "", ""}, -{59, 0x02b80001, 0x019c0502, "", ""}, -{59, 0x036a0001, 0x019d0502, "", ""}, -{59, 0x028e0001, 0x019e0502, "", ""}, -{59, 0x02090001, 0x019f0502, "", ""}, -{59, 0x047c0001, 0x01a00502, "", ""}, -{59, 0x03a70001, 0x01a10502, "", ""}, -{59, 0x033e0001, 0x01a20502, "", ""}, -{59, 0x03ed0001, 0x01a30502, "", ""}, -{59, 0x03fe0001, 0x01a40502, "", ""}, -{59, 0x03d90001, 0x01a50502, "", ""}, -{59, 0x04a70001, 0x01a60502, "", ""}, -{59, 0x04d20001, 0x01a70502, "", ""}, -{59, 0x045f0001, 0x01a80502, "", ""}, -{59, 0x03b00001, 0x01a90502, "", ""}, -{59, 0x037f0001, 0x01aa0502, "", ""}, -{59, 0x04110001, 0x01ab0502, "", ""}, -{59, 0x02640001, 0x01ac0502, "", ""}, -{59, 0x04e50001, 0x01ad0502, "", ""}, -{59, 0x04540001, 0x01ae0502, "", ""}, -{59, 0x042b0001, 0x01af0502, "", ""}, -{59, 0x04830001, 0x01b00502, "", ""}, -{59, 0x03390001, 0x01b10502, "", ""}, -{59, 0x03ad0001, 0x01b20502, "", ""}, -{59, 0x02170001, 0x01b30502, "", ""}, -{59, 0x03d70001, 0x01b40502, "", ""}, -{59, 0x023d0001, 0x01b50502, "", ""}, -{59, 0x04e40001, 0x01b60502, "", ""}, -{59, 0x049e0001, 0x01b70502, "", ""}, -{59, 0x030c0001, 0x01b80502, "", ""}, -{59, 0x04b20001, 0x01b90502, "", ""}, -{59, 0x02a20001, 0x01ba0502, "", ""}, -{59, 0x04150001, 0x01bb0502, "", ""}, -{59, 0x03bf0001, 0x01bc0502, "", ""}, -{59, 0x028d0001, 0x01bd0502, "", ""}, -{59, 0x04e10001, 0x01be0502, "", ""}, -{59, 0x04870001, 0x01bf0502, "", ""}, -{59, 0x03160001, 0x01c00502, "", ""}, -{59, 0x050c0001, 0x01c10502, "", ""}, -{59, 0x03990001, 0x01c20502, "", ""}, -{59, 0x03270001, 0x01c30502, "", ""}, -{59, 0x02ec0001, 0x01c40502, "", ""}, -{59, 0x025f0001, 0x01c50502, "", ""}, -{59, 0x04fb0001, 0x01c60502, "", ""}, -{59, 0x030a0001, 0x01c70502, "", ""}, -{59, 0x02d90001, 0x01c80502, "", ""}, -{59, 0x04a30001, 0x01c90502, "", ""}, -{59, 0x02ca0001, 0x01ca0502, "", ""}, -{59, 0x043c0001, 0x01cb0502, "", ""}, -{59, 0x033a0001, 0x01cc0502, "", ""}, -{59, 0x021d0001, 0x01cd0502, "", ""}, -{59, 0x04e80001, 0x01ce0502, "", ""}, -{59, 0x03fb0001, 0x01cf0502, "", ""}, -{59, 0x046a0001, 0x01d00502, "", ""}, -{59, 0x024a0001, 0x01d10502, "", ""}, -{59, 0x02300001, 0x01d20502, "", ""}, -{59, 0x022e0001, 0x01d30502, "", ""}, -{60, 0x01830201, 0x03a80502, "", ""}, -{60, 0x01840501, 0x03a90502, "", ""}, -{60, 0x01810401, 0x03aa0502, "", ""}, -{60, 0x0a000001, 0x03ab0502, "", ""}, -{60, 0x0a010001, 0x03ac0502, "", ""}, -{60, 0x01920001, 0x03ad0502, "", ""}, -{60, 0x01930001, 0x03ae0502, "", ""}, -{60, 0x01880001, 0x03af0502, "", ""}, -{60, 0x01870001, 0x03b00502, "", ""}, -{60, 0x01890101, 0x03b10502, "", ""}, -{60, 0x01820001, 0x03b20502, "", ""}, -{60, 0x0a020001, 0x03b30502, "", ""}, -{60, 0x0a030001, 0x03b40502, "", ""}, -{60, 0x0a040001, 0x03b50502, "", ""}, -{60, 0x01940001, 0x03b60502, "", ""}, -{60, 0x01a60001, 0x03b70502, "", ""}, -{60, 0x0a050001, 0x03b80502, "", ""}, -{60, 0x01a20001, 0x03b90502, "", ""}, -{60, 0x0a060001, 0x03ba0502, "", ""}, -{60, 0x01c10201, 0x03bb0502, "", ""}, -{60, 0x0a070001, 0x03bc0502, "", ""}, -{60, 0x0a080001, 0x03bd0502, "", ""}, -{60, 0x01830301, 0x03be0502, "", ""}, -{60, 0x01810501, 0x03bf0502, "", ""}, -{60, 0x0a090001, 0x03c00502, "", ""}, -{60, 0x0a0a0001, 0x03c10502, "", ""}, -{60, 0x0a0b0001, 0x03c20502, "", ""}, -{60, 0x0a0c0001, 0x03c30502, "", ""}, -{60, 0x0a0d0001, 0x03c40502, "", ""}, -{60, 0x0a0e0001, 0x03c50502, "", ""}, -{60, 0x0a0f0001, 0x03c60502, "", ""}, -{60, 0x0a100001, 0x03c70502, "", ""}, -{60, 0x0a110001, 0x03c80502, "", ""}, -{60, 0x0a120001, 0x03c90502, "", ""}, -{60, 0x0a130001, 0x03ca0502, "", ""}, -{60, 0x0a140001, 0x03cb0502, "", ""}, -{60, 0x0a150001, 0x03cc0502, "", ""}, -{60, 0x0a160001, 0x03cd0502, "", ""}, -{60, 0x0a170001, 0x03ce0502, "", ""}, -{60, 0x0a180001, 0x03cf0502, "", ""}, -{60, 0x0a190001, 0x03d00502, "", ""}, -{60, 0x0a1a0001, 0x03d10502, "", ""}, -{60, 0x0a1b0001, 0x03d20502, "", ""}, -{60, 0x0a1c0001, 0x03d30502, "", ""}, -{60, 0x0a1d0001, 0x03d40502, "", ""}, -{60, 0x0a1e0001, 0x03d50502, "", ""}, -{60, 0x0a1f0001, 0x03d60502, "", ""}, -{60, 0x0a200001, 0x03d70502, "", ""}, -{61, 0x01810001, 0x01d40502, "", ""}, -{61, 0x01820001, 0x01d80502, "", ""}, -{62, 0x05130001, 0x02e70502, "", ""}, -{62, 0x04a20001, 0x02e80502, "", ""}, -{62, 0x028a0001, 0x02e90502, "", ""}, -{62, 0x02320001, 0x02ea0502, "", ""}, -{62, 0x03280001, 0x02eb0502, "", ""}, -{62, 0x04b60001, 0x02ec0502, "", ""}, -{62, 0x04c80001, 0x02ed0502, "", ""}, -{62, 0x04fc0001, 0x02ee0502, "", ""}, -{62, 0x03430001, 0x02ef0502, "", ""}, -{62, 0x04eb0001, 0x02f00502, "", ""}, -{62, 0x04810001, 0x02f10502, "", ""}, -{62, 0x04680001, 0x02f20502, "", ""}, -{62, 0x03d30001, 0x02f30502, "", ""}, -{62, 0x03140001, 0x02f40502, "", ""}, -{62, 0x03e80001, 0x02f50502, "", ""}, -{62, 0x024d0001, 0x02f60502, "", ""}, -{62, 0x021c0001, 0x02f70502, "", ""}, -{62, 0x02380001, 0x02f80502, "", ""}, -{62, 0x02f30001, 0x02f90502, "", ""}, -{62, 0x03580001, 0x02fa0502, "", ""}, -{62, 0x036e0001, 0x02fb0502, "", ""}, -{62, 0x03950001, 0x02fc0502, "", ""}, -{62, 0x04820001, 0x02fd0502, "", ""}, -{62, 0x02840001, 0x02fe0502, "", ""}, -{62, 0x02a30001, 0x02ff0502, "", ""}, -{62, 0x04380001, 0x03000502, "", ""}, -{62, 0x049f0001, 0x03010502, "", ""}, -{62, 0x03470001, 0x03020502, "", ""}, -{62, 0x043b0001, 0x03030502, "", ""}, -{62, 0x036d0001, 0x03040502, "", ""}, -{62, 0x02f40001, 0x03050502, "", ""}, -{62, 0x02330001, 0x03060502, "", ""}, -{62, 0x032a0001, 0x03070502, "", ""}, -{62, 0x02c50001, 0x03080502, "", ""}, -{62, 0x03120001, 0x03090502, "", ""}, -{62, 0x04140001, 0x030a0502, "", ""}, -{62, 0x03ea0001, 0x030b0502, "", ""}, -{62, 0x04b40001, 0x030c0502, "", ""}, -{62, 0x04c90001, 0x030d0502, "", ""}, -{62, 0x03410001, 0x030e0502, "", ""}, -{62, 0x02b70001, 0x030f0502, "", ""}, -{62, 0x03c00001, 0x03100502, "", ""}, -{62, 0x04390001, 0x03110502, "", ""}, -{62, 0x02060001, 0x03120502, "", ""}, -{62, 0x02860001, 0x03130502, "", ""}, -{62, 0x050f0001, 0x03140502, "", ""}, -{62, 0x044e0001, 0x03150502, "", ""}, -{62, 0x03ab0001, 0x03160502, "", ""}, -{62, 0x021f0001, 0x03170502, "", ""}, -{62, 0x04ea0001, 0x03180502, "", ""}, -{63, 0x05c10000, 0x03661302, "", "解锁密特罗德搜寻/解锁融合模式"}, -{63, 0x05c00000, 0x03651302, "", "解锁备用能量罐/通关解锁美术画廊"}, -{63, 0x05c00000, 0x00060002, "", "解锁备用导弹罐/通关解锁美术画廊"}, -{63, 0x05c00100, 0x001d0002, "", "解锁备用弹药罐/通关解锁BGM"}, -{64, 0x21000000, 0x000b0002, "", "马尔斯可入队"}, -{64, 0x21010000, 0x00180002, "", "艾克可入队"}, -{64, 0x21020000, 0x00290002, "", "露琪娜可入队"}, -{64, 0x21030000, 0x002a0002, "", "鲁弗莱可入队"}, -{65, 0x21060000, 0x03601202, "", "解锁迷宫/召唤幻影骑士"}, -{65, 0x21070000, 0x03611202, "", "解锁迷宫/召唤幻影骑士"}, -{65, 0x21080000, 0x03880002, "", "召唤幻影骑士"}, -{65, 0x21050000, 0x025a0002, "", "召唤幻影骑士"}, -{65, 0x21010000, 0x00180002, "", "召唤幻影骑士"}, -{65, 0x21020000, 0x00290002, "", "召唤幻影骑士"}, -{65, 0x21000000, 0x000b0002, "", "召唤幻影骑士"}, -{65, 0x21030000, 0x002a0002, "", "召唤幻影骑士"}, -{65, 0x21040000, 0x02520002, "", "召唤幻影骑士"}, -{66, 0x1d010000, 0x03750d02, "", "显示章节的皮卡丘提示数"}, -{67, 0x06400100, 0x001e0002, "", "随时叫出皮克敏"}, -{67, 0x06420000, 0x035f1102, "", "随时叫出皮克敏"}, -{68, 0x01030000, 0x024f0902, "", "解锁可获得9999钱包的新迷宫"}, -{68, 0x01000000, 0x00040002, "", "恢复箭数量"}, -{68, 0x01000100, 0x00160002, "", "恢复箭数量"}, -{68, 0x01010000, 0x000e0002, "", "恢复心心"}, -{68, 0x01010100, 0x00170002, "", "恢复心心"}, -{68, 0x01020100, 0x001b0002, "", "受到2倍伤害"}, -{68, 0x01000000, 0x034f0902, "", "暂无简介"}, -{68, 0x01010000, 0x03520902, "", "暂无简介"}, -{68, 0x01000100, 0x03500902, "", "暂无简介"}, -{68, 0x01000000, 0x034b0902, "", "暂无简介"}, -{69, 0x00000000, 0x00340102, "", "毒蘑菇变成红蘑菇"}, -{69, 0x000a0000, 0x00380102, "", "与奇诺比奥对话会回血"}, -{69, 0x00170000, 0x02680102, "", "显示嘘嘘鬼位置"}, -{69, 0x00010000, 0x000c0002, "", "可原地复活一次"}, -{70, 0x09d10101, 0x02be0e02, "", ""}, -{70, 0x09d10201, 0x02bf0e02, "", ""}, -{70, 0x09d10301, 0x02c00e02, "", ""}, -{70, 0x09d10401, 0x02c10e02, "", ""}, -{70, 0x09d10501, 0x02c20e02, "", ""}, -{70, 0x09c00101, 0x02690e02, "", ""}, -{70, 0x09c00201, 0x026a0e02, "", ""}, -{70, 0x09c00301, 0x026b0e02, "", ""}, -{70, 0x09c00401, 0x026c0e02, "", ""}, -{70, 0x09c00501, 0x026d0e02, "", ""}, -{70, 0x09c10101, 0x026e0e02, "", ""}, -{70, 0x09c10201, 0x026f0e02, "", ""}, -{70, 0x09c10301, 0x02700e02, "", ""}, -{70, 0x09c10401, 0x02710e02, "", ""}, -{70, 0x09c10501, 0x02720e02, "", ""}, -{70, 0x09c20101, 0x02730e02, "", ""}, -{70, 0x09c20201, 0x02740e02, "", ""}, -{70, 0x09c20301, 0x02750e02, "", ""}, -{70, 0x09c20401, 0x02760e02, "", ""}, -{70, 0x09c20501, 0x02770e02, "", ""}, -{70, 0x09c30101, 0x02780e02, "", ""}, -{70, 0x09c30201, 0x02790e02, "", ""}, -{70, 0x09c30301, 0x027a0e02, "", ""}, -{70, 0x09c30401, 0x027b0e02, "", ""}, -{70, 0x09c30501, 0x027c0e02, "", ""}, -{70, 0x09c40101, 0x027d0e02, "", ""}, -{70, 0x09c40201, 0x027e0e02, "", ""}, -{70, 0x09c40301, 0x027f0e02, "", ""}, -{70, 0x09c40401, 0x02800e02, "", ""}, -{70, 0x09c40501, 0x02810e02, "", ""}, -{70, 0x09c50101, 0x02820e02, "", ""}, -{70, 0x09c50201, 0x02830e02, "", ""}, -{70, 0x09c50301, 0x02840e02, "", ""}, -{70, 0x09c50401, 0x02850e02, "", ""}, -{70, 0x09c50501, 0x02860e02, "", ""}, -{70, 0x09c60101, 0x02870e02, "", ""}, -{70, 0x09c60201, 0x02880e02, "", ""}, -{70, 0x09c60301, 0x02890e02, "", ""}, -{70, 0x09c60401, 0x028a0e02, "", ""}, -{70, 0x09c60501, 0x028b0e02, "", ""}, -{70, 0x09c70101, 0x028c0e02, "", ""}, -{70, 0x09c70201, 0x028d0e02, "", ""}, -{70, 0x09c70301, 0x028e0e02, "", ""}, -{70, 0x09c70401, 0x028f0e02, "", ""}, -{70, 0x09c70501, 0x02900e02, "", ""}, -{70, 0x09c80101, 0x02910e02, "", ""}, -{70, 0x09c80201, 0x02920e02, "", ""}, -{70, 0x09c80301, 0x02930e02, "", ""}, -{70, 0x09c80401, 0x02940e02, "", ""}, -{70, 0x09c80501, 0x02950e02, "", ""}, -{70, 0x09c90101, 0x02960e02, "", ""}, -{70, 0x09c90201, 0x02970e02, "", ""}, -{70, 0x09c90301, 0x02980e02, "", ""}, -{70, 0x09c90401, 0x02990e02, "", ""}, -{70, 0x09c90501, 0x029a0e02, "", ""}, -{70, 0x09ca0101, 0x029b0e02, "", ""}, -{70, 0x09ca0201, 0x029c0e02, "", ""}, -{70, 0x09ca0301, 0x029d0e02, "", ""}, -{70, 0x09ca0401, 0x029e0e02, "", ""}, -{70, 0x09ca0501, 0x029f0e02, "", ""}, -{70, 0x09cb0101, 0x02a00e02, "", ""}, -{70, 0x09cb0201, 0x02a10e02, "", ""}, -{70, 0x09cb0301, 0x02a20e02, "", ""}, -{70, 0x09cb0401, 0x02a30e02, "", ""}, -{70, 0x09cb0501, 0x02a40e02, "", ""}, -{70, 0x09cc0101, 0x02a50e02, "", ""}, -{70, 0x09cc0201, 0x02a60e02, "", ""}, -{70, 0x09cc0301, 0x02a70e02, "", ""}, -{70, 0x09cc0401, 0x02a80e02, "", ""}, -{70, 0x09cc0501, 0x02a90e02, "", ""}, -{70, 0x09cd0101, 0x02aa0e02, "", ""}, -{70, 0x09cd0201, 0x02ab0e02, "", ""}, -{70, 0x09cd0301, 0x02ac0e02, "", ""}, -{70, 0x09cd0401, 0x02ad0e02, "", ""}, -{70, 0x09cd0501, 0x02ae0e02, "", ""}, -{70, 0x09ce0101, 0x02af0e02, "", ""}, -{70, 0x09ce0201, 0x02b00e02, "", ""}, -{70, 0x09ce0301, 0x02b10e02, "", ""}, -{70, 0x09ce0401, 0x02b20e02, "", ""}, -{70, 0x09ce0501, 0x02b30e02, "", ""}, -{70, 0x09cf0101, 0x02b40e02, "", ""}, -{70, 0x09cf0201, 0x02b50e02, "", ""}, -{70, 0x09cf0301, 0x02b60e02, "", ""}, -{70, 0x09cf0401, 0x02b70e02, "", ""}, -{70, 0x09cf0501, 0x02b80e02, "", ""}, -{70, 0x09d00101, 0x02b90e02, "", ""}, -{70, 0x09d00201, 0x02ba0e02, "", ""}, -{70, 0x09d00301, 0x02bb0e02, "", ""}, -{70, 0x09d00401, 0x02bc0e02, "", ""}, -{70, 0x09d00501, 0x02bd0e02, "", ""}, -{255, 0x00000000, 0x02390602, "", ""}, -{255, 0x00030000, 0x00370102, "", ""}, -{255, 0x0008ff00, 0x023b0702, "", ""}, -{255, 0x22c00000, 0x003a0202, "", ""}, -{0, 0, 0, 0, 0} +{1, 0x01000000, 0x034f0902, "Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia"}, +{1, 0x01410000, 0x035c0902, "Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela"}, +{1, 0x01050000, 0x03580902, "Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石", "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, +{1, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb", "黄昏剑/卢比/宝石/星星碎片炸药桶", "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba"}, +{1, 0x01020100, 0x041a0902, "Gerudo-King Fabric", "沼气之枪/滑翔伞皮肤布料", "Tessuto del Re Gerudo"}, +{1, 0x01400000, 0x03550902, "Dragonbone Boko related gear/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela"}, +{1, 0x01000000, 0x00040002, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, +{1, 0x01000000, 0x03530902, "Falcon Bow/Paraglider Skin Material/Fish & Meat/Knight's & Royal Bow/Various Arrows", "游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭", "Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce"}, +{1, 0x01000000, 0x03990902, "Dream Weaver Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish", "织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼", "Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, +{1, 0x01000000, 0x034c0902, "Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇", "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi"}, +{1, 0x01000000, 0x034b0902, "Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉", "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne"}, +{1, 0x01000000, 0x03540902, "Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇", "Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi"}, +{1, 0x01000000, 0x034e0902, "Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, +{1, 0x01000000, 0x04180902, "Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi"}, +{1, 0x01000000, 0x034d0902, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, +{1, 0x01030000, 0x024f0902, "Meat/Paraglider Skin Material", "肉/滑翔伞皮肤布料", "Carne/Tessuto della Paravela"}, +{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, +{1, 0x01010100, 0x00170002, "Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, +{1, 0x01000100, 0x00160002, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, +{1, 0x01000100, 0x03500902, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, +{1, 0x01010000, 0x03520902, "Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{1, 0x01060000, 0x03590902, "Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉", "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, +{1, 0x01000000, 0x037c0002, "Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish", "时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼", "Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, +{1, 0x01010000, 0x000e0002, "Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{1, 0x01010000, 0x03560902, "Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{1, 0x01010300, 0x04140902, "Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{1, 0x01010000, 0x04190902, "Princess Zelda Fabric", "塞尔达公主滑翔伞布料", "Tessuto della Principessa Zelda"}, +{2, 0x01010300, 0x04140902, "", "随时随地传送", ""}, +{3, 0x01020100, 0x001b0002, "", "暂无简介", ""}, +{3, 0x01030000, 0x024f0902, "", "暂无简介", ""}, +{3, 0x01010100, 0x00170002, "", "暂无简介", ""}, +{3, 0x01000100, 0x00160002, "", "暂无简介", ""}, +{3, 0x01000000, 0x037c0002, "", "暂无简介", ""}, +{3, 0x01010000, 0x000e0002, "", "暂无简介", ""}, +{4, 0x01000000, 0x034f0902, "Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee", "初始勇者服套装/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia"}, +{4, 0x01410000, 0x035c0902, "Champion's Tunic Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi"}, +{4, 0x01050000, 0x03580902, "Rudania's Divine Helm/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/劈石剑/钻石", "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, +{4, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel", "黄昏剑/卢比/宝石/星星碎片炸药桶", "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba"}, +{4, 0x01400000, 0x03550902, "Guardian Weapons/Shields/Spears/Core/Treasure/Arrow", "守护者枪 盾 剑/古代兵装 核心/宝石 箭", "Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano"}, +{4, 0x01000000, 0x00040002, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, +{4, 0x01000000, 0x03530902, "Falcon Bow/Fish & Meat/Knight's and Royal Bow/Various Arrows", "游隼弓/鱼&肉/骑士&王族之弓/各种箭", "Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce"}, +{4, 0x01000000, 0x03990902, "Dreamweaver Set/Knight's and Royal Spear/Sword/and Claymore/Fish", "织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼", "Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, +{4, 0x01000000, 0x034c0902, "Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom", "鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇", "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi"}, +{4, 0x01000000, 0x034b0902, "Time Traveler Set/Biggoron Sword/Meat", "时之勇者服套装/大鼓隆之剑/肉", "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne"}, +{4, 0x01000000, 0x03540902, "Bridle and Saddle/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/月光匕首/蘑菇", "Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi"}, +{4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, +{4, 0x01000000, 0x034d0902, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, +{4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo a 20 Cuori"}, +{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, +{4, 0x01010100, 0x00170002, "Sheik Set/Eightfold Blade/Mushroom", "希克服套装/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, +{4, 0x01000100, 0x00160002, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, +{4, 0x01000100, 0x03500902, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, +{4, 0x01010000, 0x03520902, "Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/星星碎片&宝石/草 果实 胡萝卜", "Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{4, 0x01060000, 0x03590902, "Naydra's Divine Helm/Gurudo related gear/Meat", "娜波力斯*神兽兵装/格鲁德相关装备/肉", "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, +{4, 0x01000000, 0x037c0002, "Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish", "时之勇者服套装/骑士&王族枪 剑 双手剑/鱼", "Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, +{4, 0x01010000, 0x000e0002, "Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/星星碎片&宝石/草 果实 胡萝卜", "Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{4, 0x01010000, 0x03560902, "Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/星星碎片&宝石/草 果实 胡萝卜", "Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{4, 0x01010300, 0x04140902, "Star Fragment & Gem/Grass/Fruit/Carrot", "星星碎片&宝石/草 果实 胡萝卜", "Frammento di Stella & Gemma/Erba/Frutto/Carota"}, +{5, 0x01000000, 0x034f0902, "", "暂无简介", ""}, +{5, 0x01410000, 0x035c0902, "", "暂无简介", ""}, +{5, 0x01050000, 0x03580902, "", "暂无简介", ""}, +{5, 0x01020100, 0x001b0002, "", "暂无简介", ""}, +{5, 0x01400000, 0x03550902, "", "暂无简介", ""}, +{5, 0x01000000, 0x00040002, "", "暂无简介", ""}, +{5, 0x01000000, 0x03530902, "", "暂无简介", ""}, +{5, 0x01000000, 0x03990902, "", "暂无简介", ""}, +{5, 0x01000000, 0x034c0902, "", "暂无简介", ""}, +{5, 0x01000000, 0x034b0902, "", "暂无简介", ""}, +{5, 0x01000000, 0x03540902, "", "暂无简介", ""}, +{5, 0x01000000, 0x034e0902, "", "暂无简介", ""}, +{5, 0x01000000, 0x034d0902, "", "暂无简介", ""}, +{5, 0x01030000, 0x024f0902, "", "暂无简介", ""}, +{5, 0x01070000, 0x035a0902, "", "暂无简介", ""}, +{5, 0x01080000, 0x035b0902, "", "暂无简介", ""}, +{5, 0x01010100, 0x00170002, "", "暂无简介", ""}, +{5, 0x01000100, 0x00160002, "", "暂无简介", ""}, +{5, 0x01000100, 0x03500902, "", "暂无简介", ""}, +{5, 0x01010000, 0x03520902, "", "暂无简介", ""}, +{5, 0x01060000, 0x03590902, "", "暂无简介", ""}, +{5, 0x01000000, 0x037c0002, "", "暂无简介", ""}, +{5, 0x01010000, 0x000e0002, "", "暂无简介", ""}, +{5, 0x01010000, 0x03560902, "", "暂无简介", ""}, +{5, 0x01010300, 0x04140902, "", "暂无简介", ""}, +{6, 0x01410000, 0x035c0902, "", "暂无简介", ""}, +{6, 0x01050000, 0x03580902, "", "暂无简介", ""}, +{6, 0x01020100, 0x001b0002, "", "暂无简介", ""}, +{6, 0x01400000, 0x03550902, "", "暂无简介", ""}, +{6, 0x01000000, 0x03530902, "", "暂无简介", ""}, +{6, 0x01030000, 0x024f0902, "", "暂无简介", ""}, +{6, 0x01070000, 0x035a0902, "", "暂无简介", ""}, +{6, 0x01080000, 0x035b0902, "", "暂无简介", ""}, +{6, 0x01060000, 0x03590902, "", "暂无简介", ""}, +{6, 0x01010000, 0x000e0002, "", "暂无简介", ""}, +{7, 0x01410000, 0x035c0902, "", "暂无简介", ""}, +{7, 0x01050000, 0x03580902, "", "暂无简介", ""}, +{7, 0x01020100, 0x001b0002, "", "暂无简介", ""}, +{7, 0x01400000, 0x03550902, "", "暂无简介", ""}, +{7, 0x01030000, 0x024f0902, "", "暂无简介", ""}, +{7, 0x01070000, 0x035a0902, "", "暂无简介", ""}, +{7, 0x01080000, 0x035b0902, "", "暂无简介", ""}, +{7, 0x01010100, 0x00170002, "", "暂无简介", ""}, +{7, 0x01000100, 0x03500902, "", "暂无简介", ""}, +{7, 0x01060000, 0x03590902, "", "暂无简介", ""}, +{8, 0x35c00000, 0x02500a02, "", "暂无简介", ""}, +{8, 0x35c00000, 0x03920a02, "", "暂无简介", ""}, +{9, 0x00050000, 0x03730102, "", "解锁奥德赛主题关卡", ""}, +{9, 0x00000000, 0x03710102, "", "解锁奥德赛主题关卡", ""}, +{9, 0x00020000, 0x03720102, "", "解锁奥德赛主题关卡", ""}, +{9, 0x000a0000, 0x00380102, "", "无敌蘑菇", ""}, +{10, 0x32400000, 0x025b0002, "", "获得服装Super Mirror I", ""}, +{10, 0x32400100, 0x03640002, "", "获得服装Super Mirror II", ""}, +{10, 0x00170000, 0x02680102, "", "暂无简介", ""}, +{10, 0x00050000, 0x00140002, "", "暂无简介", ""}, +{10, 0x00060000, 0x00150002, "", "暂无简介", ""}, +{10, 0x00130000, 0x02660102, "", "获得黛西公主装", ""}, +{10, 0x05810000, 0x001c0002, "", "获得星际火狐装", ""}, +{10, 0x05800000, 0x00050002, "", "获得星际火狐装", ""}, +{10, 0x00150000, 0x03670102, "", "暂无简介", ""}, +{10, 0x00230000, 0x03680102, "", "暂无简介", ""}, +{10, 0x01000000, 0x034b0902, "", "获得林克装", ""}, +{10, 0x00020000, 0x00010002, "", "获得碧姬公主装", ""}, +{10, 0x05c00000, 0x00060002, "", "获得萨姆斯装甲", ""}, +{12, 0x08090000, 0x04350402, "", "暂无简介", ""}, +{12, 0x08010000, 0x025d0402, "", "暂无简介", ""}, +{12, 0x08080000, 0x04340402, "", "暂无简介", ""}, +{12, 0x08000100, 0x03820002, "", "暂无简介", ""}, +{12, 0x08000100, 0x04150402, "", "暂无简介", ""}, +{12, 0x08000200, 0x003f0402, "", "暂无简介", ""}, +{12, 0x08000200, 0x036a0402, "", "暂无简介", ""}, +{12, 0x08000200, 0x02600402, "", "暂无简介", ""}, +{12, 0x08000100, 0x003e0402, "", "暂无简介", ""}, +{12, 0x08000100, 0x025f0402, "", "暂无简介", ""}, +{12, 0x08000100, 0x03690402, "", "暂无简介", ""}, +{12, 0x08000300, 0x00400402, "", "暂无简介", ""}, +{12, 0x08000300, 0x036b0402, "", "暂无简介", ""}, +{12, 0x08000300, 0x02610402, "", "暂无简介", ""}, +{12, 0x08020000, 0x025e0402, "", "暂无简介", ""}, +{12, 0x08040000, 0x03770402, "", "暂无简介", ""}, +{12, 0x08050200, 0x041b0402, "", "暂无简介", ""}, +{12, 0x08050200, 0x038f0402, "", "暂无简介", ""}, +{12, 0x08050100, 0x038e0402, "", "暂无简介", ""}, +{12, 0x08050300, 0x03900402, "", "暂无简介", ""}, +{12, 0x08030000, 0x03760402, "", "暂无简介", ""}, +{12, 0x08070000, 0x04330402, "", "暂无简介", ""}, +{12, 0x08060100, 0x041c0402, "", "暂无简介", ""}, +{13, 0x21060000, 0x03601202, "", "暂无简介", ""}, +{13, 0x210b0000, 0x03a50002, "", "暂无简介", ""}, +{13, 0x21070000, 0x03611202, "", "暂无简介", ""}, +{13, 0x21080000, 0x036f1202, "", "暂无简介", ""}, +{13, 0x21080000, 0x03880002, "", "暂无简介", ""}, +{13, 0x21050000, 0x025a0002, "", "暂无简介", ""}, +{13, 0x21050100, 0x03630002, "", "暂无简介", ""}, +{13, 0x21010000, 0x00180002, "", "暂无简介", ""}, +{13, 0x21020000, 0x00290002, "", "暂无简介", ""}, +{13, 0x21000000, 0x000b0002, "", "暂无简介", ""}, +{13, 0x21030000, 0x002a0002, "", "暂无简介", ""}, +{13, 0x21040000, 0x02520002, "", "暂无简介", ""}, +{13, 0x21090000, 0x03701202, "", "暂无简介", ""}, +{14, 0x21060000, 0x03601202, "", "暂无简介", ""}, +{14, 0x210b0000, 0x03a50002, "", "暂无简介", ""}, +{14, 0x21070000, 0x03611202, "", "暂无简介", ""}, +{14, 0x21080000, 0x036f1202, "", "暂无简介", ""}, +{14, 0x21080000, 0x03880002, "", "暂无简介", ""}, +{14, 0x21050000, 0x025a0002, "", "暂无简介", ""}, +{14, 0x21050100, 0x03630002, "", "暂无简介", ""}, +{14, 0x21010000, 0x00180002, "", "暂无简介", ""}, +{14, 0x21020000, 0x00290002, "", "暂无简介", ""}, +{14, 0x21000000, 0x000b0002, "", "暂无简介", ""}, +{14, 0x21030000, 0x002a0002, "", "暂无简介", ""}, +{14, 0x21040000, 0x02520002, "", "暂无简介", ""}, +{14, 0x21090000, 0x03701202, "", "暂无简介", ""}, +{15, 0x21060000, 0x03601202, "", "暂无简介", ""}, +{15, 0x210b0000, 0x03a50002, "", "暂无简介", ""}, +{15, 0x21070000, 0x03611202, "", "暂无简介", ""}, +{15, 0x21080000, 0x036f1202, "", "暂无简介", ""}, +{15, 0x21080000, 0x03880002, "", "暂无简介", ""}, +{15, 0x21050000, 0x025a0002, "", "暂无简介", ""}, +{15, 0x21050100, 0x03630002, "", "暂无简介", ""}, +{15, 0x21010000, 0x00180002, "", "暂无简介", ""}, +{15, 0x21020000, 0x00290002, "", "暂无简介", ""}, +{15, 0x21000000, 0x000b0002, "", "暂无简介", ""}, +{15, 0x21030000, 0x002a0002, "", "暂无简介", ""}, +{15, 0x21040000, 0x02520002, "", "暂无简介", ""}, +{15, 0x21090000, 0x03701202, "", "暂无简介", ""}, +{16, 0x21060000, 0x03601202, "", "暂无简介", ""}, +{16, 0x210b0000, 0x03a50002, "", "暂无简介", ""}, +{16, 0x21070000, 0x03611202, "", "暂无简介", ""}, +{16, 0x21080000, 0x036f1202, "", "暂无简介", ""}, +{16, 0x21080000, 0x03880002, "", "暂无简介", ""}, +{16, 0x21050000, 0x025a0002, "", "暂无简介", ""}, +{16, 0x21050100, 0x03630002, "", "暂无简介", ""}, +{16, 0x21010000, 0x00180002, "", "暂无简介", ""}, +{16, 0x21020000, 0x00290002, "", "暂无简介", ""}, +{16, 0x21000000, 0x000b0002, "", "暂无简介", ""}, +{16, 0x21030000, 0x002a0002, "", "暂无简介", ""}, +{16, 0x21040000, 0x02520002, "", "暂无简介", ""}, +{16, 0x21090000, 0x03701202, "", "暂无简介", ""}, +{17, 0x00000000, 0x02380602, "", "暂无简介", ""}, +{17, 0x08010000, 0x025d0402, "", "暂无简介", ""}, +{17, 0x01c10000, 0x02440502, "", "暂无简介", ""}, +{17, 0x01030000, 0x024f0902, "", "暂无简介", ""}, +{17, 0x00800102, 0x035d0302, "", "暂无简介", ""}, +{17, 0x05c00000, 0x04121302, "", "暂无简介", ""}, +{17, 0x00070000, 0x02630102, "", "暂无简介", ""}, +{17, 0x01820101, 0x00460502, "", "暂无简介", ""}, +{17, 0x019d0001, 0x00ac0502, "", "暂无简介", ""}, +{17, 0x019f0001, 0x01110502, "", "暂无简介", ""}, +{17, 0x01930001, 0x01740502, "", "暂无简介", ""}, +{17, 0x02ea0001, 0x01d50502, "", "暂无简介", ""}, +{17, 0x05130001, 0x02e70502, "", "暂无简介", ""}, +{17, 0x028f0101, 0x031a0502, "", "暂无简介", ""}, +{18, 0x38c00000, 0x03911602, "", "暂无简介", ""}, +{19, 0x22440000, 0x043e1b02, "", "解锁执政官M服装/弥央、圣奈、泰恩的休闲装", ""}, +{19, 0x22420000, 0x041f0002, "", "解锁光之圣杯", ""}, +{19, 0x22430000, 0x043d1b02, "", "解锁执政官N服装/诺亚、兰兹、优妮的休闲装", ""}, +{19, 0x22410000, 0x041e0002, "", "解锁天之圣杯", ""}, +{19, 0x22400000, 0x002b0002, "", "解锁蒙那多", ""}, +{20, 0x35c30000, 0x036e0a02, "", "暂无简介", ""}, +{20, 0x35c10000, 0x036c0a02, "", "暂无简介", ""}, +{20, 0x35c00000, 0x02500a02, "", "暂无简介", ""}, +{20, 0x35c00000, 0x03920a02, "", "暂无简介", ""}, +{20, 0x35c20000, 0x036d0a02, "", "暂无简介", ""}, +{21, 0x35c30000, 0x036e0a02, "", "暂无简介", ""}, +{21, 0x35c10000, 0x036c0a02, "", "暂无简介", ""}, +{21, 0x35c00000, 0x02500a02, "", "暂无简介", ""}, +{21, 0x35c00000, 0x03920a02, "", "暂无简介", ""}, +{21, 0x35c20000, 0x036d0a02, "", "暂无简介", ""}, +{22, 0x1f020000, 0x00280002, "", "暂无简介", ""}, +{22, 0x1f000000, 0x02540c02, "", "暂无简介", ""}, +{22, 0x1f010000, 0x02550c02, "", "暂无简介", ""}, +{22, 0x1f400000, 0x035e1002, "", "暂无简介", ""}, +{22, 0x1f030000, 0x02570c02, "", "暂无简介", ""}, +{23, 0x1f020000, 0x00280002, "", "暂无简介", ""}, +{23, 0x1f000000, 0x02540c02, "", "暂无简介", ""}, +{23, 0x1f010000, 0x02550c02, "", "暂无简介", ""}, +{23, 0x1f400000, 0x035e1002, "", "暂无简介", ""}, +{23, 0x1f030000, 0x02570c02, "", "暂无简介", ""}, +{24, 0x1f020000, 0x00280002, "", "暂无简介", ""}, +{24, 0x1f000000, 0x02540c02, "", "暂无简介", ""}, +{24, 0x1f010000, 0x02550c02, "", "暂无简介", ""}, +{24, 0x1f400000, 0x035e1002, "", "暂无简介", ""}, +{24, 0x1f030000, 0x02570c02, "", "暂无简介", ""}, +{25, 0x33400000, 0x00320002, "", "暂无简介", ""}, +{26, 0x06000000, 0x00120002, "", "暂无简介", ""}, +{26, 0x00130000, 0x037a0002, "", "暂无简介", ""}, +{26, 0x00080000, 0x00030002, "", "暂无简介", ""}, +{26, 0x05800000, 0x00050002, "", "暂无简介", ""}, +{26, 0x0005ff00, 0x023a0702, "", "暂无简介", ""}, +{26, 0x08000100, 0x025f0402, "", "暂无简介", ""}, +{26, 0x1f000000, 0x000a0002, "", "暂无简介", ""}, +{26, 0x00010000, 0x000c0002, "", "暂无简介", ""}, +{26, 0x01880000, 0x02410502, "", "暂无简介", ""}, +{26, 0x00000000, 0x00000002, "", "暂无简介", ""}, +{26, 0x34800000, 0x00310002, "", "暂无简介", ""}, +{26, 0x06400100, 0x001e0002, "", "暂无简介", ""}, +{26, 0x33400000, 0x00320002, "", "暂无简介", ""}, +{26, 0x00020000, 0x00010002, "", "暂无简介", ""}, +{26, 0x00020000, 0x03720102, "", "暂无简介", ""}, +{26, 0x06420000, 0x035f1102, "", "暂无简介", ""}, +{26, 0x00040000, 0x02620102, "", "暂无简介", ""}, +{26, 0x05c00000, 0x00060002, "", "暂无简介", ""}, +{26, 0x32000000, 0x00300002, "", "暂无简介", ""}, +{26, 0x000a0000, 0x00380102, "", "暂无简介", ""}, +{26, 0x01000100, 0x00160002, "", "暂无简介", ""}, +{26, 0x01800000, 0x00080002, "", "暂无简介", ""}, +{26, 0x00070000, 0x001a0002, "", "暂无简介", ""}, +{26, 0x00030000, 0x00020002, "", "暂无简介", ""}, +{26, 0x01810001, 0x00440502, "", "暂无简介", ""}, +{26, 0x01940001, 0x00aa0502, "", "暂无简介", ""}, +{26, 0x01920001, 0x010d0502, "", "暂无简介", ""}, +{26, 0x019c0001, 0x01730502, "", "暂无简介", ""}, +{26, 0x02820001, 0x01d60502, "", "暂无简介", ""}, +{26, 0x04a20001, 0x02e80502, "", "暂无简介", ""}, +{26, 0x03740101, 0x03190502, "", "暂无简介", ""}, +{27, 0x00030102, 0x00430302, "", "暂无简介", ""}, +{27, 0x00010000, 0x00350102, "", "暂无简介", ""}, +{27, 0x00000000, 0x03710102, "", "暂无简介", ""}, +{27, 0x00020100, 0x03a70102, "", "暂无简介", ""}, +{28, 0x01010000, 0x000e0002, "", "暂无简介", ""}, +{29, 0x34800000, 0x03791502, "", "暂无简介", ""}, +{30, 0x34800000, 0x03791502, "", "暂无简介", ""}, +{31, 0x34800000, 0x02580002, "", "暂无简介", ""}, +{32, 0x05c30000, 0x03800002, "", "导弹包1个/补充弹药", ""}, +{32, 0x05c40000, 0x04131302, "", "暂无简介", ""}, +{32, 0x05c10000, 0x03661302, "", "补充弹药", ""}, +{32, 0x05c20000, 0x037f0002, "", "补充弹药", ""}, +{32, 0x05c00000, 0x00060002, "", "补充能量", ""}, +{32, 0x05c00000, 0x04121302, "", "能量罐1个/补充能量", ""}, +{32, 0x05c00000, 0x03651302, "", "补充能量", ""}, +{32, 0x05c00100, 0x001d0002, "", "补充能量", ""}, +{33, 0x00050000, 0x00390102, "", "暂无简介", ""}, +{33, 0x08010000, 0x025d0402, "", "暂无简介", ""}, +{33, 0x00130000, 0x02660102, "", "暂无简介", ""}, +{33, 0x00080000, 0x00030002, "", "暂无简介", ""}, +{33, 0x01020100, 0x001b0002, "", "暂无简介", ""}, +{33, 0x00030102, 0x00410302, "", "暂无简介", ""}, +{33, 0x08000100, 0x03820002, "", "暂无简介", ""}, +{33, 0x08000200, 0x036a0402, "", "暂无简介", ""}, +{33, 0x08000300, 0x00400402, "", "暂无简介", ""}, +{33, 0x01810100, 0x023f0502, "", "暂无简介", ""}, +{33, 0x01820000, 0x02400502, "", "暂无简介", ""}, +{33, 0x1f000000, 0x000a0002, "", "暂无简介", ""}, +{33, 0x01000000, 0x034e0902, "", "暂无简介", ""}, +{33, 0x00010000, 0x000c0002, "", "暂无简介", ""}, +{33, 0x08020000, 0x025e0402, "", "暂无简介", ""}, +{33, 0x00000000, 0x003d0102, "", "暂无简介", ""}, +{33, 0x22800000, 0x002c0002, "", "暂无简介", ""}, +{33, 0x00020003, 0x039dff02, "", "暂无简介", ""}, +{33, 0x018e0000, 0x02490502, "", "暂无简介", ""}, +{33, 0x00040000, 0x02620102, "", "暂无简介", ""}, +{33, 0x05c00000, 0x00060002, "", "暂无简介", ""}, +{33, 0x01010100, 0x00170002, "", "暂无简介", ""}, +{33, 0x000a0000, 0x00380102, "", "暂无简介", ""}, +{33, 0x01830000, 0x02420502, "", "暂无简介", ""}, +{33, 0x01010000, 0x03520902, "", "暂无简介", ""}, +{33, 0x05c00100, 0x001d0002, "", "暂无简介", ""}, +{34, 0x35030100, 0x02e50f02, "", "暂无简介", ""}, +{34, 0x35060000, 0x040d0f02, "", "暂无简介", ""}, +{34, 0x35080000, 0x040f1802, "", "暂无简介", ""}, +{34, 0x350b0000, 0x042d1802, "", "暂无简介", ""}, +{34, 0x35010000, 0x02e30f02, "", "暂无简介", ""}, +{34, 0x35000200, 0x02e20f02, "", "暂无简介", ""}, +{34, 0x35000100, 0x02e10f02, "", "暂无简介", ""}, +{34, 0x350a0000, 0x04111802, "", "暂无简介", ""}, +{34, 0x350a0100, 0x042c1802, "", "暂无简介", ""}, +{34, 0x35090000, 0x04101802, "", "暂无简介", ""}, +{34, 0x35090100, 0x042b1802, "", "暂无简介", ""}, +{34, 0x35040100, 0x02e60f02, "", "暂无简介", ""}, +{34, 0x35020100, 0x02e40f02, "", "暂无简介", ""}, +{34, 0x35050000, 0x040c0f02, "", "暂无简介", ""}, +{34, 0x35070000, 0x040e0f02, "", "暂无简介", ""}, +{35, 0x35060000, 0x040d0f02, "", "暂无简介", ""}, +{35, 0x35050000, 0x040c0f02, "", "暂无简介", ""}, +{35, 0x35070000, 0x040e0f02, "", "暂无简介", ""}, +{36, 0x19060000, 0x00240002, "", "暂无简介", ""}, +{36, 0x1d010000, 0x03750d02, "", "暂无简介", ""}, +{36, 0x1b920000, 0x00250002, "", "暂无简介", ""}, +{36, 0x1bd70000, 0x03860002, "", "暂无简介", ""}, +{36, 0x19020000, 0x03830002, "", "暂无简介", ""}, +{36, 0x19270000, 0x00260002, "", "暂无简介", ""}, +{36, 0x1ac00000, 0x00110002, "", "暂无简介", ""}, +{36, 0x19960000, 0x023d0002, "", "暂无简介", ""}, +{36, 0x19ac0000, 0x03850002, "", "暂无简介", ""}, +{36, 0x19190000, 0x00090002, "", "暂无简介", ""}, +{36, 0x1d000001, 0x025c0d02, "", "暂无简介", ""}, +{36, 0x19070000, 0x03840002, "", "暂无简介", ""}, +{37, 0x38050001, 0x03981702, "", "暂无简介", ""}, +{37, 0x38040001, 0x03971702, "", "暂无简介", ""}, +{37, 0x38030001, 0x03961702, "", "暂无简介", ""}, +{37, 0x38010001, 0x03941702, "", "暂无简介", ""}, +{37, 0x38000001, 0x03931702, "", "暂无简介", ""}, +{37, 0x38020001, 0x03951702, "", "暂无简介", ""}, +{38, 0x35030100, 0x02e50f02, "", "暂无简介", ""}, +{38, 0x34800000, 0x00310002, "", "暂无简介", ""}, +{38, 0x35010000, 0x02e30f02, "", "暂无简介", ""}, +{38, 0x35000100, 0x02e10f02, "", "暂无简介", ""}, +{38, 0x35040100, 0x02e60f02, "", "暂无简介", ""}, +{38, 0x35020100, 0x02e40f02, "", "暂无简介", ""}, +{38, 0x34c00000, 0x02530002, "", "暂无简介", ""}, +{39, 0x35030100, 0x02e50f02, "", "暂无简介", ""}, +{39, 0x34800000, 0x00310002, "", "暂无简介", ""}, +{39, 0x35010000, 0x02e30f02, "", "暂无简介", ""}, +{39, 0x35000100, 0x02e10f02, "", "暂无简介", ""}, +{39, 0x35040100, 0x02e60f02, "", "暂无简介", ""}, +{39, 0x35020100, 0x02e40f02, "", "暂无简介", ""}, +{39, 0x34c00000, 0x02530002, "", "暂无简介", ""}, +{40, 0x35c30000, 0x036e0a02, "", "暂无简介", ""}, +{40, 0x35c10000, 0x036c0a02, "", "暂无简介", ""}, +{40, 0x35c00000, 0x02500a02, "", "暂无简介", ""}, +{40, 0x35c00000, 0x03920a02, "", "暂无简介", ""}, +{40, 0x35c20000, 0x036d0a02, "", "暂无简介", ""}, +{41, 0x35c30000, 0x036e0a02, "", "暂无简介", ""}, +{41, 0x35c10000, 0x036c0a02, "", "暂无简介", ""}, +{41, 0x35c00000, 0x02500a02, "", "暂无简介", ""}, +{41, 0x35c00000, 0x03920a02, "", "暂无简介", ""}, +{41, 0x35c20000, 0x036d0a02, "", "暂无简介", ""}, +{42, 0x35c30000, 0x036e0a02, "", "暂无简介", ""}, +{42, 0x35c10000, 0x036c0a02, "", "暂无简介", ""}, +{42, 0x35c00000, 0x02500a02, "", "暂无简介", ""}, +{42, 0x35c00000, 0x03920a02, "", "暂无简介", ""}, +{42, 0x35c20000, 0x036d0a02, "", "暂无简介", ""}, +{43, 0x08010000, 0x025d0402, "", "暂无简介", ""}, +{43, 0x08000100, 0x03820002, "", "暂无简介", ""}, +{43, 0x08000100, 0x04150402, "", "暂无简介", ""}, +{43, 0x08000200, 0x003f0402, "", "暂无简介", ""}, +{43, 0x08000200, 0x036a0402, "", "暂无简介", ""}, +{43, 0x08000200, 0x02600402, "", "暂无简介", ""}, +{43, 0x08000100, 0x003e0402, "", "暂无简介", ""}, +{43, 0x08000100, 0x025f0402, "", "暂无简介", ""}, +{43, 0x08000100, 0x03690402, "", "暂无简介", ""}, +{43, 0x08000300, 0x00400402, "", "暂无简介", ""}, +{43, 0x08000300, 0x036b0402, "", "暂无简介", ""}, +{43, 0x08000300, 0x02610402, "", "暂无简介", ""}, +{43, 0x08020000, 0x025e0402, "", "暂无简介", ""}, +{43, 0x08040000, 0x03770402, "", "暂无简介", ""}, +{43, 0x08050200, 0x041b0402, "", "暂无简介", ""}, +{43, 0x08050200, 0x038f0402, "", "暂无简介", ""}, +{43, 0x08050100, 0x038e0402, "", "暂无简介", ""}, +{43, 0x08050300, 0x03900402, "", "暂无简介", ""}, +{43, 0x08030000, 0x03760402, "", "暂无简介", ""}, +{44, 0x1f020000, 0x02560c02, "", "暂无简介", ""}, +{44, 0x1f020000, 0x00280002, "", "暂无简介", ""}, +{44, 0x1f000000, 0x02540c02, "", "暂无简介", ""}, +{44, 0x1f000000, 0x000a0002, "", "暂无简介", ""}, +{44, 0x1f010000, 0x02550c02, "", "暂无简介", ""}, +{44, 0x1f010000, 0x00270002, "", "暂无简介", ""}, +{44, 0x1f400000, 0x035e1002, "", "暂无简介", ""}, +{44, 0x1f030000, 0x02570c02, "", "暂无简介", ""}, +{45, 0x00170000, 0x02680102, "", "暂无简介", ""}, +{45, 0x00050000, 0x00140002, "", "使狂怒酷霸王立即现身", ""}, +{45, 0x00060000, 0x00150002, "", "使酷霸王Jr.释放冲击波", ""}, +{45, 0x00130000, 0x02660102, "", "暂无简介", ""}, +{45, 0x00090000, 0x000d0002, "", "暂无简介", ""}, +{45, 0x00080000, 0x00030002, "", "暂无简介", ""}, +{45, 0x00150000, 0x03670102, "", "暂无简介", ""}, +{45, 0x00230000, 0x03680102, "", "暂无简介", ""}, +{45, 0x00010000, 0x000c0002, "", "暂无简介", ""}, +{45, 0x00000000, 0x00340102, "", "暂无简介", ""}, +{45, 0x00000300, 0x03a60102, "", "获得无敌铃铛", ""}, +{45, 0x00030102, 0x023e0302, "", "暂无简介", ""}, +{45, 0x00020000, 0x00360102, "", "暂无简介", ""}, +{45, 0x00020100, 0x03a70102, "", "随机获得一个增强道具", ""}, +{45, 0x00240000, 0x038d0002, "", "暂无简介", ""}, +{45, 0x00040000, 0x02620102, "", "暂无简介", ""}, +{45, 0x000a0000, 0x00380102, "", "暂无简介", ""}, +{45, 0x00140000, 0x02670102, "", "暂无简介", ""}, +{45, 0x00070000, 0x02630102, "", "暂无简介", ""}, +{46, 0x00050000, 0x00140002, "", "暂无简介", ""}, +{46, 0x00050000, 0x00390102, "", "暂无简介", ""}, +{46, 0x00050000, 0x03730102, "", "显示紫金币位置/解锁酷霸王的礼服", ""}, +{46, 0x00130003, 0x039eff02, "", "", ""}, +{46, 0x00090000, 0x02650102, "", "解锁迪迪刚套装", ""}, +{46, 0x00000100, 0x00190002, "", "解锁医生套装", ""}, +{46, 0x00000003, 0x0430ff02, "", "", ""}, +{46, 0x00010000, 0x00350102, "", "解锁路易吉套装", ""}, +{46, 0x00010003, 0x039cff02, "", "", ""}, +{46, 0x00000000, 0x00000002, "", "解锁经典套装", ""}, +{46, 0x00000000, 0x003c0102, "", "解锁金色马力欧套装", ""}, +{46, 0x00000003, 0x039bff02, "", "", ""}, +{46, 0x00000000, 0x003d0102, "", "解锁金色马力欧套装", ""}, +{46, 0x00000000, 0x03710102, "", "短时间无敌/解锁马力欧的礼服", ""}, +{46, 0x00020000, 0x03720102, "", "血上限+3/解锁婚纱", ""}, +{46, 0x37400001, 0x03741402, "", "暂无简介", ""}, +{46, 0x000a0003, 0x03a0ff02, "", "", ""}, +{46, 0x00140000, 0x02670102, "", "解锁瓦路易吉套装", ""}, +{46, 0x00070000, 0x001a0002, "", "解锁瓦力欧套装", ""}, +{46, 0x00030003, 0x039fff02, "", "", ""}, +{47, 0x3dc10000, 0x04230002, "", "暂无简介", ""}, +{47, 0x3b400000, 0x03a30002, "", "暂无简介", ""}, +{47, 0x32400000, 0x025b0002, "", "暂无简介", ""}, +{47, 0x32400100, 0x03640002, "", "暂无简介", ""}, +{47, 0x00050000, 0x00140002, "", "暂无简介", ""}, +{47, 0x00060000, 0x00150002, "", "暂无简介", ""}, +{47, 0x210b0000, 0x03a50002, "", "暂无简介", ""}, +{47, 0x06000000, 0x00120002, "", "暂无简介", ""}, +{47, 0x19060000, 0x00240002, "", "暂无简介", ""}, +{47, 0x21080000, 0x03880002, "", "暂无简介", ""}, +{47, 0x36000000, 0x02590002, "", "暂无简介", ""}, +{47, 0x36000100, 0x03620002, "", "暂无简介", ""}, +{47, 0x21050000, 0x025a0002, "", "暂无简介", ""}, +{47, 0x21050100, 0x03630002, "", "暂无简介", ""}, +{47, 0x00130000, 0x037a0002, "", "暂无简介", ""}, +{47, 0x07410000, 0x00200002, "", "暂无简介", ""}, +{47, 0x05c30000, 0x03800002, "", "暂无简介", ""}, +{47, 0x00090000, 0x000d0002, "", "暂无简介", ""}, +{47, 0x00080000, 0x00030002, "", "暂无简介", ""}, +{47, 0x00000100, 0x00190002, "", "暂无简介", ""}, +{47, 0x07820000, 0x002f0002, "", "暂无简介", ""}, +{47, 0x05810000, 0x001c0002, "", "暂无简介", ""}, +{47, 0x05800000, 0x00050002, "", "暂无简介", ""}, +{47, 0x01020100, 0x001b0002, "", "暂无简介", ""}, +{47, 0x1b920000, 0x00250002, "", "暂无简介", ""}, +{47, 0x36400000, 0x03a20002, "", "暂无简介", ""}, +{47, 0x078f0000, 0x03810002, "", "暂无简介", ""}, +{47, 0x21010000, 0x00180002, "", "暂无简介", ""}, +{47, 0x1bd70000, 0x03860002, "", "暂无简介", ""}, +{47, 0x08000100, 0x03820002, "", "暂无简介", ""}, +{47, 0x01810000, 0x037d0002, "", "暂无简介", ""}, +{47, 0x19020000, 0x03830002, "", "暂无简介", ""}, +{47, 0x19270000, 0x00260002, "", "暂无简介", ""}, +{47, 0x3a000000, 0x03a10002, "", "暂无简介", ""}, +{47, 0x33c00000, 0x04200002, "", "暂无简介", ""}, +{47, 0x34c10000, 0x03890002, "", "暂无简介", ""}, +{47, 0x1f020000, 0x00280002, "", "暂无简介", ""}, +{47, 0x00c00000, 0x037b0002, "", "暂无简介", ""}, +{47, 0x1f000000, 0x000a0002, "", "暂无简介", ""}, +{47, 0x01000000, 0x00040002, "", "暂无简介", ""}, +{47, 0x06c00000, 0x000f0002, "", "暂无简介", ""}, +{47, 0x1ac00000, 0x00110002, "", "暂无简介", ""}, +{47, 0x22810000, 0x02510002, "", "暂无简介", ""}, +{47, 0x21020000, 0x00290002, "", "暂无简介", ""}, +{47, 0x00010000, 0x000c0002, "", "暂无简介", ""}, +{47, 0x00000000, 0x00000002, "", "暂无简介", ""}, +{47, 0x21000000, 0x000b0002, "", "暂无简介", ""}, +{47, 0x34800000, 0x00310002, "", "暂无简介", ""}, +{47, 0x34800000, 0x02580002, "", "暂无简介", ""}, +{47, 0x1f010000, 0x00270002, "", "暂无简介", ""}, +{47, 0x19960000, 0x023d0002, "", "暂无简介", ""}, +{47, 0x07c00000, 0x00210002, "", "暂无简介", ""}, +{47, 0x07c00200, 0x00230002, "", "暂无简介", ""}, +{47, 0x07c00100, 0x00220002, "", "暂无简介", ""}, +{47, 0x0a400000, 0x041d0002, "", "暂无简介", ""}, +{47, 0x07800000, 0x002d0002, "", "暂无简介", ""}, +{47, 0x22420000, 0x041f0002, "", "暂无简介", ""}, +{47, 0x22800000, 0x002c0002, "", "暂无简介", ""}, +{47, 0x06400100, 0x001e0002, "", "暂无简介", ""}, +{47, 0x33400000, 0x00320002, "", "暂无简介", ""}, +{47, 0x07420000, 0x001f0002, "", "暂无简介", ""}, +{47, 0x00020000, 0x00010002, "", "暂无简介", ""}, +{47, 0x19ac0000, 0x03850002, "", "暂无简介", ""}, +{47, 0x19190000, 0x00090002, "", "暂无简介", ""}, +{47, 0x00240000, 0x038d0002, "", "暂无简介", ""}, +{47, 0x07400000, 0x00100002, "", "暂无简介", ""}, +{47, 0x1d400000, 0x03870002, "", "暂无简介", ""}, +{47, 0x22410000, 0x041e0002, "", "暂无简介", ""}, +{47, 0x07810000, 0x002e0002, "", "暂无简介", ""}, +{47, 0x07810000, 0x00330002, "", "暂无简介", ""}, +{47, 0x37c10000, 0x038c0002, "", "暂无简介", ""}, +{47, 0x05c20000, 0x037f0002, "", "暂无简介", ""}, +{47, 0x21030000, 0x002a0002, "", "暂无简介", ""}, +{47, 0x00040100, 0x00130002, "", "暂无简介", ""}, +{47, 0x21040000, 0x02520002, "", "暂无简介", ""}, +{47, 0x34c00000, 0x02530002, "", "暂无简介", ""}, +{47, 0x05c00000, 0x00060002, "", "暂无简介", ""}, +{47, 0x36010000, 0x04210002, "", "暂无简介", ""}, +{47, 0x01010100, 0x00170002, "", "暂无简介", ""}, +{47, 0x22400000, 0x002b0002, "", "暂无简介", ""}, +{47, 0x37c00000, 0x038b0002, "", "暂无简介", ""}, +{47, 0x37800000, 0x038a0002, "", "暂无简介", ""}, +{47, 0x32000000, 0x00300002, "", "暂无简介", ""}, +{47, 0x3f000000, 0x042e0002, "", "暂无简介", ""}, +{47, 0x19070000, 0x03840002, "", "暂无简介", ""}, +{47, 0x3dc00000, 0x04220002, "", "暂无简介", ""}, +{47, 0x3c800000, 0x03a40002, "", "暂无简介", ""}, +{47, 0x01000100, 0x00160002, "", "暂无简介", ""}, +{47, 0x01800000, 0x00080002, "", "暂无简介", ""}, +{47, 0x00070000, 0x001a0002, "", "暂无简介", ""}, +{47, 0x07000000, 0x00070002, "", "暂无简介", ""}, +{47, 0x05840000, 0x037e0002, "", "暂无简介", ""}, +{47, 0x00030000, 0x00020002, "", "暂无简介", ""}, +{47, 0x01000000, 0x037c0002, "", "暂无简介", ""}, +{47, 0x01010000, 0x000e0002, "", "暂无简介", ""}, +{47, 0x05c00100, 0x001d0002, "", "暂无简介", ""}, +{48, 0x00030102, 0x00410302, "", "暂无简介", ""}, +{48, 0x0005ff00, 0x023a0702, "", "暂无简介", ""}, +{48, 0x00230000, 0x03680102, "", "暂无简介", ""}, +{48, 0x00030102, 0x00430302, "", "暂无简介", ""}, +{48, 0x00010000, 0x00350102, "", "暂无简介", ""}, +{48, 0x00000000, 0x00000002, "", "暂无简介", ""}, +{48, 0x00020000, 0x00360102, "", "暂无简介", ""}, +{48, 0x00030102, 0x00420302, "", "暂无简介", ""}, +{48, 0x00800102, 0x035d0302, "", "暂无简介", ""}, +{48, 0x000a0000, 0x00380102, "", "暂无简介", ""}, +{48, 0x00030000, 0x00020002, "", "暂无简介", ""}, +{49, 0x38460001, 0x042a1902, "", "暂无简介", ""}, +{49, 0x38420001, 0x04261902, "", "暂无简介", ""}, +{49, 0x38450001, 0x04291902, "", "暂无简介", ""}, +{49, 0x38440001, 0x04281902, "", "暂无简介", ""}, +{49, 0x38430001, 0x04271902, "", "暂无简介", ""}, +{49, 0x38410001, 0x04251902, "", "暂无简介", ""}, +{49, 0x38400001, 0x04241902, "", "暂无简介", ""}, +{50, 0x33800000, 0x03781402, "", "暂无简介", ""}, +{51, 0x00170000, 0x02680102, "", "暂无简介", ""}, +{51, 0x00050000, 0x00140002, "", "暂无简介", ""}, +{51, 0x00060000, 0x00150002, "", "暂无简介", ""}, +{51, 0x00130000, 0x037a0002, "", "暂无简介", ""}, +{51, 0x00090000, 0x000d0002, "", "暂无简介", ""}, +{51, 0x00080000, 0x02640102, "", "暂无简介", ""}, +{51, 0x00150000, 0x03670102, "", "暂无简介", ""}, +{51, 0x00230000, 0x03680102, "", "暂无简介", ""}, +{51, 0x00010000, 0x000c0002, "", "暂无简介", ""}, +{51, 0x00000000, 0x00340102, "", "暂无简介", ""}, +{51, 0x00020000, 0x00010002, "", "暂无简介", ""}, +{51, 0x00030102, 0x00420302, "", "暂无简介", ""}, +{51, 0x00040100, 0x00130002, "", "暂无简介", ""}, +{51, 0x00140000, 0x02670102, "", "暂无简介", ""}, +{51, 0x00070000, 0x02630102, "", "暂无简介", ""}, +{53, 0x01920000, 0x02470502, "", "", ""}, +{53, 0x01930000, 0x02480502, "", "", ""}, +{53, 0x018b0000, 0x02460502, "", "", ""}, +{53, 0x018c0000, 0x02430502, "", "", ""}, +{53, 0x01810100, 0x023f0502, "", "", ""}, +{53, 0x01820000, 0x02400502, "", "", ""}, +{53, 0x01960000, 0x024e0502, "", "", ""}, +{53, 0x01940000, 0x024a0502, "", "", ""}, +{53, 0x01c10000, 0x02440502, "", "", ""}, +{53, 0x01880000, 0x02410502, "", "", ""}, +{53, 0x018a0000, 0x02450502, "", "", ""}, +{53, 0x018e0000, 0x02490502, "", "", ""}, +{53, 0x018d0000, 0x024c0502, "", "", ""}, +{53, 0x01810000, 0x024b0502, "", "", ""}, +{53, 0x01840000, 0x024d0502, "", "", ""}, +{53, 0x01830000, 0x02420502, "", "", ""}, +{54, 0x02820001, 0x01d60502, "", "", ""}, +{54, 0x025f0001, 0x01d70502, "", "", ""}, +{54, 0x02ea0001, 0x01d50502, "", "", ""}, +{55, 0x03740101, 0x03190502, "", "", ""}, +{55, 0x028f0101, 0x031a0502, "", "", ""}, +{55, 0x04d30101, 0x031b0502, "", "", ""}, +{55, 0x032e0101, 0x031c0502, "", "", ""}, +{55, 0x02e00101, 0x031d0502, "", "", ""}, +{55, 0x04a80101, 0x031e0502, "", "", ""}, +{56, 0x01810001, 0x00440502, "", "", ""}, +{56, 0x01830001, 0x00450502, "", "", ""}, +{56, 0x01820101, 0x00460502, "", "", ""}, +{56, 0x01870001, 0x00470502, "", "", ""}, +{56, 0x01960001, 0x00480502, "", "", ""}, +{56, 0x018e0001, 0x00490502, "", "", ""}, +{56, 0x01a30001, 0x004a0502, "", "", ""}, +{56, 0x01850001, 0x004b0502, "", "", ""}, +{56, 0x018c0001, 0x004c0502, "", "", ""}, +{56, 0x01a40001, 0x004d0502, "", "", ""}, +{56, 0x01910001, 0x004e0502, "", "", ""}, +{56, 0x01a80001, 0x004f0502, "", "", ""}, +{56, 0x01a60001, 0x00500502, "", "", ""}, +{56, 0x01b50001, 0x00510502, "", "", ""}, +{56, 0x01b00001, 0x00520502, "", "", ""}, +{56, 0x01aa0001, 0x00530502, "", "", ""}, +{56, 0x01c10001, 0x00540502, "", "", ""}, +{56, 0x025d0001, 0x00550502, "", "", ""}, +{56, 0x02d60001, 0x00560502, "", "", ""}, +{56, 0x02160001, 0x00570502, "", "", ""}, +{56, 0x02ef0001, 0x00580502, "", "", ""}, +{56, 0x04fe0001, 0x00590502, "", "", ""}, +{56, 0x02870001, 0x005a0502, "", "", ""}, +{56, 0x05150001, 0x005b0502, "", "", ""}, +{56, 0x03710001, 0x005c0502, "", "", ""}, +{56, 0x04ba0001, 0x005d0502, "", "", ""}, +{56, 0x02db0001, 0x005e0502, "", "", ""}, +{56, 0x03450001, 0x005f0502, "", "", ""}, +{56, 0x047a0001, 0x00600502, "", "", ""}, +{56, 0x049b0001, 0x00610502, "", "", ""}, +{56, 0x04ed0001, 0x00620502, "", "", ""}, +{56, 0x027d0001, 0x00630502, "", "", ""}, +{56, 0x03070001, 0x00640502, "", "", ""}, +{56, 0x02610001, 0x00650502, "", "", ""}, +{56, 0x04010001, 0x00660502, "", "", ""}, +{56, 0x02c40001, 0x00670502, "", "", ""}, +{56, 0x02660001, 0x00680502, "", "", ""}, +{56, 0x02b10001, 0x00690502, "", "", ""}, +{56, 0x02310001, 0x006a0502, "", "", ""}, +{56, 0x03480001, 0x006b0502, "", "", ""}, +{56, 0x03180001, 0x006c0502, "", "", ""}, +{56, 0x03db0001, 0x006d0502, "", "", ""}, +{56, 0x04650001, 0x006e0502, "", "", ""}, +{56, 0x04000001, 0x006f0502, "", "", ""}, +{56, 0x04290001, 0x00700502, "", "", ""}, +{56, 0x03a90001, 0x00710502, "", "", ""}, +{56, 0x02a40001, 0x00720502, "", "", ""}, +{56, 0x04520001, 0x00730502, "", "", ""}, +{56, 0x04a50001, 0x00740502, "", "", ""}, +{56, 0x02630001, 0x00750502, "", "", ""}, +{56, 0x03230001, 0x00760502, "", "", ""}, +{56, 0x04ec0001, 0x00770502, "", "", ""}, +{56, 0x040d0001, 0x00780502, "", "", ""}, +{56, 0x030b0001, 0x00790502, "", "", ""}, +{56, 0x04970001, 0x007a0502, "", "", ""}, +{56, 0x04fd0001, 0x007b0502, "", "", ""}, +{56, 0x043d0001, 0x007c0502, "", "", ""}, +{56, 0x02680001, 0x007d0502, "", "", ""}, +{56, 0x02190001, 0x007e0502, "", "", ""}, +{56, 0x04100001, 0x007f0502, "", "", ""}, +{56, 0x021b0001, 0x00800502, "", "", ""}, +{56, 0x024f0001, 0x00810502, "", "", ""}, +{56, 0x04e60001, 0x00820502, "", "", ""}, +{56, 0x02800001, 0x00830502, "", "", ""}, +{56, 0x02350001, 0x00840502, "", "", ""}, +{56, 0x035a0001, 0x00850502, "", "", ""}, +{56, 0x03840001, 0x00860502, "", "", ""}, +{56, 0x03ae0001, 0x00870502, "", "", ""}, +{56, 0x040e0001, 0x00880502, "", "", ""}, +{56, 0x03940001, 0x00890502, "", "", ""}, +{56, 0x03bc0001, 0x008a0502, "", "", ""}, +{56, 0x03ee0001, 0x008b0502, "", "", ""}, +{56, 0x046c0001, 0x008c0502, "", "", ""}, +{56, 0x04800001, 0x008d0502, "", "", ""}, +{56, 0x044c0001, 0x008e0502, "", "", ""}, +{56, 0x033f0001, 0x008f0502, "", "", ""}, +{56, 0x02fb0001, 0x00900502, "", "", ""}, +{56, 0x03a80001, 0x00910502, "", "", ""}, +{56, 0x04790001, 0x00920502, "", "", ""}, +{56, 0x03c60001, 0x00930502, "", "", ""}, +{56, 0x04c70001, 0x00940502, "", "", ""}, +{56, 0x02990001, 0x00950502, "", "", ""}, +{56, 0x02080001, 0x00960502, "", "", ""}, +{56, 0x02fa0001, 0x00970502, "", "", ""}, +{56, 0x04880001, 0x00980502, "", "", ""}, +{56, 0x050b0001, 0x00990502, "", "", ""}, +{56, 0x04940001, 0x009a0502, "", "", ""}, +{56, 0x03830001, 0x009b0502, "", "", ""}, +{56, 0x02de0001, 0x009c0502, "", "", ""}, +{56, 0x03290001, 0x009d0502, "", "", ""}, +{56, 0x04d10001, 0x009e0502, "", "", ""}, +{56, 0x034b0001, 0x009f0502, "", "", ""}, +{56, 0x03930001, 0x00a00502, "", "", ""}, +{56, 0x02000001, 0x00a10502, "", "", ""}, +{56, 0x04dd0001, 0x00a20502, "", "", ""}, +{56, 0x04a60001, 0x00a30502, "", "", ""}, +{56, 0x04cc0001, 0x00a40502, "", "", ""}, +{56, 0x04600001, 0x00a50502, "", "", ""}, +{56, 0x03170001, 0x00a60502, "", "", ""}, +{56, 0x02f00001, 0x00a70502, "", "", ""}, +{57, 0x01820001, 0x00a80502, "", "", ""}, +{57, 0x018a0001, 0x00a90502, "", "", ""}, +{57, 0x01940001, 0x00aa0502, "", "", ""}, +{57, 0x01890001, 0x00ab0502, "", "", ""}, +{57, 0x019d0001, 0x00ac0502, "", "", ""}, +{57, 0x019e0001, 0x00ad0502, "", "", ""}, +{57, 0x01b60001, 0x00ae0502, "", "", ""}, +{57, 0x01860101, 0x00af0502, "", "", ""}, +{57, 0x01950001, 0x00b00502, "", "", ""}, +{57, 0x01980001, 0x00b10502, "", "", ""}, +{57, 0x01b10001, 0x00b20502, "", "", ""}, +{57, 0x018f0001, 0x00b30502, "", "", ""}, +{57, 0x01810101, 0x00b40502, "", "", ""}, +{57, 0x01b30001, 0x00b50502, "", "", ""}, +{57, 0x019b0001, 0x00b60502, "", "", ""}, +{57, 0x019a0001, 0x00b70502, "", "", ""}, +{57, 0x01ad0001, 0x00b80502, "", "", ""}, +{57, 0x027f0001, 0x00b90502, "", "", ""}, +{57, 0x026e0001, 0x00ba0502, "", "", ""}, +{57, 0x03c10001, 0x00bb0502, "", "", ""}, +{57, 0x032d0001, 0x00bc0502, "", "", ""}, +{57, 0x023c0001, 0x00bd0502, "", "", ""}, +{57, 0x02dc0001, 0x00be0502, "", "", ""}, +{57, 0x03980001, 0x00bf0502, "", "", ""}, +{57, 0x04640001, 0x00c00502, "", "", ""}, +{57, 0x02510001, 0x00c10502, "", "", ""}, +{57, 0x03d10001, 0x00c20502, "", "", ""}, +{57, 0x026c0001, 0x00c30502, "", "", ""}, +{57, 0x02b20001, 0x00c40502, "", "", ""}, +{57, 0x03440001, 0x00c50502, "", "", ""}, +{57, 0x03090001, 0x00c60502, "", "", ""}, +{57, 0x02830001, 0x00c70502, "", "", ""}, +{57, 0x03a60001, 0x00c80502, "", "", ""}, +{57, 0x035d0001, 0x00c90502, "", "", ""}, +{57, 0x04400001, 0x00ca0502, "", "", ""}, +{57, 0x029b0001, 0x00cb0502, "", "", ""}, +{57, 0x02f20001, 0x00cc0502, "", "", ""}, +{57, 0x02c90001, 0x00cd0502, "", "", ""}, +{57, 0x04de0001, 0x00ce0502, "", "", ""}, +{57, 0x04500001, 0x00cf0502, "", "", ""}, +{57, 0x03fa0001, 0x00d00502, "", "", ""}, +{57, 0x023e0001, 0x00d10502, "", "", ""}, +{57, 0x02600001, 0x00d20502, "", "", ""}, +{57, 0x03690001, 0x00d30502, "", "", ""}, +{57, 0x04a40001, 0x00d40502, "", "", ""}, +{57, 0x03810001, 0x00d50502, "", "", ""}, +{57, 0x03110001, 0x00d60502, "", "", ""}, +{57, 0x050e0001, 0x00d70502, "", "", ""}, +{57, 0x04180001, 0x00d80502, "", "", ""}, +{57, 0x04960001, 0x00d90502, "", "", ""}, +{57, 0x021a0001, 0x00da0502, "", "", ""}, +{57, 0x04ce0001, 0x00db0502, "", "", ""}, +{57, 0x02c30001, 0x00dc0502, "", "", ""}, +{57, 0x04b30001, 0x00dd0502, "", "", ""}, +{57, 0x02eb0001, 0x00de0502, "", "", ""}, +{57, 0x04990001, 0x00df0502, "", "", ""}, +{57, 0x041a0001, 0x00e00502, "", "", ""}, +{57, 0x04cf0001, 0x00e10502, "", "", ""}, +{57, 0x02d80001, 0x00e20502, "", "", ""}, +{57, 0x028b0001, 0x00e30502, "", "", ""}, +{57, 0x02140001, 0x00e40502, "", "", ""}, +{57, 0x03d20001, 0x00e50502, "", "", ""}, +{57, 0x03aa0001, 0x00e60502, "", "", ""}, +{57, 0x05000001, 0x00e70502, "", "", ""}, +{57, 0x04df0001, 0x00e80502, "", "", ""}, +{57, 0x026b0001, 0x00e90502, "", "", ""}, +{57, 0x02dd0001, 0x00ea0502, "", "", ""}, +{57, 0x03570001, 0x00eb0502, "", "", ""}, +{57, 0x03e60001, 0x00ec0502, "", "", ""}, +{57, 0x049d0001, 0x00ed0502, "", "", ""}, +{57, 0x029a0001, 0x00ee0502, "", "", ""}, +{57, 0x04890001, 0x00ef0502, "", "", ""}, +{57, 0x03b10001, 0x00f00502, "", "", ""}, +{57, 0x041b0001, 0x00f10502, "", "", ""}, +{57, 0x022d0001, 0x00f20502, "", "", ""}, +{57, 0x046d0001, 0x00f30502, "", "", ""}, +{57, 0x03ff0001, 0x00f40502, "", "", ""}, +{57, 0x047b0001, 0x00f50502, "", "", ""}, +{57, 0x04620001, 0x00f60502, "", "", ""}, +{57, 0x04e00001, 0x00f70502, "", "", ""}, +{57, 0x03100001, 0x00f80502, "", "", ""}, +{57, 0x03bd0001, 0x00f90502, "", "", ""}, +{57, 0x033b0001, 0x00fa0502, "", "", ""}, +{57, 0x04160001, 0x00fb0502, "", "", ""}, +{57, 0x04860001, 0x00fc0502, "", "", ""}, +{57, 0x02200001, 0x00fd0502, "", "", ""}, +{57, 0x02520001, 0x00fe0502, "", "", ""}, +{57, 0x02700001, 0x00ff0502, "", "", ""}, +{57, 0x033c0001, 0x01000502, "", "", ""}, +{57, 0x04c50001, 0x01010502, "", "", ""}, +{57, 0x02f90001, 0x01020502, "", "", ""}, +{57, 0x02020001, 0x01030502, "", "", ""}, +{57, 0x04530001, 0x01040502, "", "", ""}, +{57, 0x04370001, 0x01050502, "", "", ""}, +{57, 0x03850001, 0x01060502, "", "", ""}, +{57, 0x05100001, 0x01070502, "", "", ""}, +{57, 0x02670001, 0x01080502, "", "", ""}, +{57, 0x04e20001, 0x01090502, "", "", ""}, +{57, 0x03250001, 0x010a0502, "", "", ""}, +{57, 0x03720001, 0x010b0502, "", "", ""}, +{58, 0x018d0001, 0x010c0502, "", "", ""}, +{58, 0x01920001, 0x010d0502, "", "", ""}, +{58, 0x01830101, 0x010e0502, "", "", ""}, +{58, 0x01a00001, 0x010f0502, "", "", ""}, +{58, 0x01a10001, 0x01100502, "", "", ""}, +{58, 0x019f0001, 0x01110502, "", "", ""}, +{58, 0x01880001, 0x01120502, "", "", ""}, +{58, 0x01b40001, 0x01130502, "", "", ""}, +{58, 0x01a70001, 0x01140502, "", "", ""}, +{58, 0x018b0001, 0x01150502, "", "", ""}, +{58, 0x01990001, 0x01160502, "", "", ""}, +{58, 0x01850201, 0x01170502, "", "", ""}, +{58, 0x018c0101, 0x01180502, "", "", ""}, +{58, 0x018f0101, 0x01190502, "", "", ""}, +{58, 0x01810201, 0x011a0502, "", "", ""}, +{58, 0x01ae0001, 0x011b0502, "", "", ""}, +{58, 0x01af0001, 0x011c0502, "", "", ""}, +{58, 0x03380001, 0x011d0502, "", "", ""}, +{58, 0x022f0001, 0x011e0502, "", "", ""}, +{58, 0x02690001, 0x011f0502, "", "", ""}, +{58, 0x02810001, 0x01200502, "", "", ""}, +{58, 0x03130001, 0x01210502, "", "", ""}, +{58, 0x02c70001, 0x01220502, "", "", ""}, +{58, 0x021e0001, 0x01230502, "", "", ""}, +{58, 0x02a60001, 0x01240502, "", "", ""}, +{58, 0x025e0001, 0x01250502, "", "", ""}, +{58, 0x024b0001, 0x01260502, "", "", ""}, +{58, 0x03920001, 0x01270502, "", "", ""}, +{58, 0x03420001, 0x01280502, "", "", ""}, +{58, 0x035c0001, 0x01290502, "", "", ""}, +{58, 0x03e70001, 0x012a0502, "", "", ""}, +{58, 0x03c40001, 0x012b0502, "", "", ""}, +{58, 0x03af0001, 0x012c0502, "", "", ""}, +{58, 0x042a0001, 0x012d0502, "", "", ""}, +{58, 0x047d0001, 0x012e0502, "", "", ""}, +{58, 0x030e0001, 0x012f0502, "", "", ""}, +{58, 0x02d70001, 0x01300502, "", "", ""}, +{58, 0x04630001, 0x01310502, "", "", ""}, +{58, 0x04e70001, 0x01320502, "", "", ""}, +{58, 0x02da0001, 0x01330502, "", "", ""}, +{58, 0x03730001, 0x01340502, "", "", ""}, +{58, 0x03560001, 0x01350502, "", "", ""}, +{58, 0x02cb0001, 0x01360502, "", "", ""}, +{58, 0x02620001, 0x01370502, "", "", ""}, +{58, 0x02f80001, 0x01380502, "", "", ""}, +{58, 0x03260001, 0x01390502, "", "", ""}, +{58, 0x033d0001, 0x013a0502, "", "", ""}, +{58, 0x04ef0001, 0x013b0502, "", "", ""}, +{58, 0x02210001, 0x013c0502, "", "", ""}, +{58, 0x029e0001, 0x013d0502, "", "", ""}, +{58, 0x028c0001, 0x013e0502, "", "", ""}, +{58, 0x026d0001, 0x013f0502, "", "", ""}, +{58, 0x049c0001, 0x01400502, "", "", ""}, +{58, 0x041c0001, 0x01410502, "", "", ""}, +{58, 0x050d0001, 0x01420502, "", "", ""}, +{58, 0x034a0001, 0x01430502, "", "", ""}, +{58, 0x02220001, 0x01440502, "", "", ""}, +{58, 0x02f10001, 0x01450502, "", "", ""}, +{58, 0x026a0001, 0x01460502, "", "", ""}, +{58, 0x03fc0001, 0x01470502, "", "", ""}, +{58, 0x032c0001, 0x01480502, "", "", ""}, +{58, 0x043e0001, 0x01490502, "", "", ""}, +{58, 0x04980001, 0x014a0502, "", "", ""}, +{58, 0x04ee0001, 0x014b0502, "", "", ""}, +{58, 0x04850001, 0x014c0502, "", "", ""}, +{58, 0x03080001, 0x014d0502, "", "", ""}, +{58, 0x049a0001, 0x014e0502, "", "", ""}, +{58, 0x03a40001, 0x014f0502, "", "", ""}, +{58, 0x040f0001, 0x01500502, "", "", ""}, +{58, 0x03da0001, 0x01510502, "", "", ""}, +{58, 0x04cd0001, 0x01520502, "", "", ""}, +{58, 0x05140001, 0x01530502, "", "", ""}, +{58, 0x02650001, 0x01540502, "", "", ""}, +{58, 0x043f0001, 0x01550502, "", "", ""}, +{58, 0x037e0001, 0x01560502, "", "", ""}, +{58, 0x03d60001, 0x01570502, "", "", ""}, +{58, 0x03fd0001, 0x01580502, "", "", ""}, +{58, 0x040c0001, 0x01590502, "", "", ""}, +{58, 0x02ed0001, 0x015a0502, "", "", ""}, +{58, 0x03a50001, 0x015b0502, "", "", ""}, +{58, 0x03c50001, 0x015c0502, "", "", ""}, +{58, 0x03700001, 0x015d0502, "", "", ""}, +{58, 0x04510001, 0x015e0502, "", "", ""}, +{58, 0x041e0001, 0x015f0502, "", "", ""}, +{58, 0x04b90001, 0x01600502, "", "", ""}, +{58, 0x04610001, 0x01610502, "", "", ""}, +{58, 0x04ff0001, 0x01620502, "", "", ""}, +{58, 0x04780001, 0x01630502, "", "", ""}, +{58, 0x04690001, 0x01640502, "", "", ""}, +{58, 0x04e30001, 0x01650502, "", "", ""}, +{58, 0x023f0001, 0x01660502, "", "", ""}, +{58, 0x04c60001, 0x01670502, "", "", ""}, +{58, 0x04fa0001, 0x01680502, "", "", ""}, +{58, 0x027e0001, 0x01690502, "", "", ""}, +{58, 0x02010001, 0x016a0502, "", "", ""}, +{58, 0x03820001, 0x016b0502, "", "", ""}, +{58, 0x044b0001, 0x016c0502, "", "", ""}, +{58, 0x030f0001, 0x016d0502, "", "", ""}, +{58, 0x04a00001, 0x016e0502, "", "", ""}, +{58, 0x04a10001, 0x016f0502, "", "", ""}, +{59, 0x01810301, 0x01700502, "", "", ""}, +{59, 0x01900001, 0x01710502, "", "", ""}, +{59, 0x01a50001, 0x01720502, "", "", ""}, +{59, 0x019c0001, 0x01730502, "", "", ""}, +{59, 0x01930001, 0x01740502, "", "", ""}, +{59, 0x01860301, 0x01750502, "", "", ""}, +{59, 0x01a90001, 0x01760502, "", "", ""}, +{59, 0x01970001, 0x01770502, "", "", ""}, +{59, 0x018e0101, 0x01780502, "", "", ""}, +{59, 0x01850401, 0x01790502, "", "", ""}, +{59, 0x01c10101, 0x017a0502, "", "", ""}, +{59, 0x01b10101, 0x017b0502, "", "", ""}, +{59, 0x01ab0001, 0x017c0502, "", "", ""}, +{59, 0x01a20001, 0x017d0502, "", "", ""}, +{59, 0x01a80101, 0x017e0502, "", "", ""}, +{59, 0x01ac0001, 0x017f0502, "", "", ""}, +{59, 0x02ea0001, 0x01800502, "", "", ""}, +{59, 0x02820001, 0x01810502, "", "", ""}, +{59, 0x02150001, 0x01820502, "", "", ""}, +{59, 0x03ec0001, 0x01830502, "", "", ""}, +{59, 0x030d0001, 0x01840502, "", "", ""}, +{59, 0x03900001, 0x01850502, "", "", ""}, +{59, 0x02720001, 0x01860502, "", "", ""}, +{59, 0x03800001, 0x01870502, "", "", ""}, +{59, 0x03ac0001, 0x01880502, "", "", ""}, +{59, 0x03240001, 0x01890502, "", "", ""}, +{59, 0x041d0001, 0x018a0502, "", "", ""}, +{59, 0x036b0001, 0x018b0502, "", "", ""}, +{59, 0x02a50001, 0x018c0502, "", "", ""}, +{59, 0x03490001, 0x018d0502, "", "", ""}, +{59, 0x035e0001, 0x018e0502, "", "", ""}, +{59, 0x02fc0001, 0x018f0502, "", "", ""}, +{59, 0x026f0001, 0x01900502, "", "", ""}, +{59, 0x02df0001, 0x01910502, "", "", ""}, +{59, 0x04950001, 0x01920502, "", "", ""}, +{59, 0x044d0001, 0x01930502, "", "", ""}, +{59, 0x04360001, 0x01940502, "", "", ""}, +{59, 0x05110001, 0x01950502, "", "", ""}, +{59, 0x04d00001, 0x01960502, "", "", ""}, +{59, 0x046b0001, 0x01970502, "", "", ""}, +{59, 0x03be0001, 0x01980502, "", "", ""}, +{59, 0x02ee0001, 0x01990502, "", "", ""}, +{59, 0x02030001, 0x019a0502, "", "", ""}, +{59, 0x02710001, 0x019b0502, "", "", ""}, +{59, 0x02b80001, 0x019c0502, "", "", ""}, +{59, 0x036a0001, 0x019d0502, "", "", ""}, +{59, 0x028e0001, 0x019e0502, "", "", ""}, +{59, 0x02090001, 0x019f0502, "", "", ""}, +{59, 0x047c0001, 0x01a00502, "", "", ""}, +{59, 0x03a70001, 0x01a10502, "", "", ""}, +{59, 0x033e0001, 0x01a20502, "", "", ""}, +{59, 0x03ed0001, 0x01a30502, "", "", ""}, +{59, 0x03fe0001, 0x01a40502, "", "", ""}, +{59, 0x03d90001, 0x01a50502, "", "", ""}, +{59, 0x04a70001, 0x01a60502, "", "", ""}, +{59, 0x04d20001, 0x01a70502, "", "", ""}, +{59, 0x045f0001, 0x01a80502, "", "", ""}, +{59, 0x03b00001, 0x01a90502, "", "", ""}, +{59, 0x037f0001, 0x01aa0502, "", "", ""}, +{59, 0x04110001, 0x01ab0502, "", "", ""}, +{59, 0x02640001, 0x01ac0502, "", "", ""}, +{59, 0x04e50001, 0x01ad0502, "", "", ""}, +{59, 0x04540001, 0x01ae0502, "", "", ""}, +{59, 0x042b0001, 0x01af0502, "", "", ""}, +{59, 0x04830001, 0x01b00502, "", "", ""}, +{59, 0x03390001, 0x01b10502, "", "", ""}, +{59, 0x03ad0001, 0x01b20502, "", "", ""}, +{59, 0x02170001, 0x01b30502, "", "", ""}, +{59, 0x03d70001, 0x01b40502, "", "", ""}, +{59, 0x023d0001, 0x01b50502, "", "", ""}, +{59, 0x04e40001, 0x01b60502, "", "", ""}, +{59, 0x049e0001, 0x01b70502, "", "", ""}, +{59, 0x030c0001, 0x01b80502, "", "", ""}, +{59, 0x04b20001, 0x01b90502, "", "", ""}, +{59, 0x02a20001, 0x01ba0502, "", "", ""}, +{59, 0x04150001, 0x01bb0502, "", "", ""}, +{59, 0x03bf0001, 0x01bc0502, "", "", ""}, +{59, 0x028d0001, 0x01bd0502, "", "", ""}, +{59, 0x04e10001, 0x01be0502, "", "", ""}, +{59, 0x04870001, 0x01bf0502, "", "", ""}, +{59, 0x03160001, 0x01c00502, "", "", ""}, +{59, 0x050c0001, 0x01c10502, "", "", ""}, +{59, 0x03990001, 0x01c20502, "", "", ""}, +{59, 0x03270001, 0x01c30502, "", "", ""}, +{59, 0x02ec0001, 0x01c40502, "", "", ""}, +{59, 0x025f0001, 0x01c50502, "", "", ""}, +{59, 0x04fb0001, 0x01c60502, "", "", ""}, +{59, 0x030a0001, 0x01c70502, "", "", ""}, +{59, 0x02d90001, 0x01c80502, "", "", ""}, +{59, 0x04a30001, 0x01c90502, "", "", ""}, +{59, 0x02ca0001, 0x01ca0502, "", "", ""}, +{59, 0x043c0001, 0x01cb0502, "", "", ""}, +{59, 0x033a0001, 0x01cc0502, "", "", ""}, +{59, 0x021d0001, 0x01cd0502, "", "", ""}, +{59, 0x04e80001, 0x01ce0502, "", "", ""}, +{59, 0x03fb0001, 0x01cf0502, "", "", ""}, +{59, 0x046a0001, 0x01d00502, "", "", ""}, +{59, 0x024a0001, 0x01d10502, "", "", ""}, +{59, 0x02300001, 0x01d20502, "", "", ""}, +{59, 0x022e0001, 0x01d30502, "", "", ""}, +{60, 0x01830201, 0x03a80502, "", "", ""}, +{60, 0x01840501, 0x03a90502, "", "", ""}, +{60, 0x01810401, 0x03aa0502, "", "", ""}, +{60, 0x0a000001, 0x03ab0502, "", "", ""}, +{60, 0x0a010001, 0x03ac0502, "", "", ""}, +{60, 0x01920001, 0x03ad0502, "", "", ""}, +{60, 0x01930001, 0x03ae0502, "", "", ""}, +{60, 0x01880001, 0x03af0502, "", "", ""}, +{60, 0x01870001, 0x03b00502, "", "", ""}, +{60, 0x01890101, 0x03b10502, "", "", ""}, +{60, 0x01820001, 0x03b20502, "", "", ""}, +{60, 0x0a020001, 0x03b30502, "", "", ""}, +{60, 0x0a030001, 0x03b40502, "", "", ""}, +{60, 0x0a040001, 0x03b50502, "", "", ""}, +{60, 0x01940001, 0x03b60502, "", "", ""}, +{60, 0x01a60001, 0x03b70502, "", "", ""}, +{60, 0x0a050001, 0x03b80502, "", "", ""}, +{60, 0x01a20001, 0x03b90502, "", "", ""}, +{60, 0x0a060001, 0x03ba0502, "", "", ""}, +{60, 0x01c10201, 0x03bb0502, "", "", ""}, +{60, 0x0a070001, 0x03bc0502, "", "", ""}, +{60, 0x0a080001, 0x03bd0502, "", "", ""}, +{60, 0x01830301, 0x03be0502, "", "", ""}, +{60, 0x01810501, 0x03bf0502, "", "", ""}, +{60, 0x0a090001, 0x03c00502, "", "", ""}, +{60, 0x0a0a0001, 0x03c10502, "", "", ""}, +{60, 0x0a0b0001, 0x03c20502, "", "", ""}, +{60, 0x0a0c0001, 0x03c30502, "", "", ""}, +{60, 0x0a0d0001, 0x03c40502, "", "", ""}, +{60, 0x0a0e0001, 0x03c50502, "", "", ""}, +{60, 0x0a0f0001, 0x03c60502, "", "", ""}, +{60, 0x0a100001, 0x03c70502, "", "", ""}, +{60, 0x0a110001, 0x03c80502, "", "", ""}, +{60, 0x0a120001, 0x03c90502, "", "", ""}, +{60, 0x0a130001, 0x03ca0502, "", "", ""}, +{60, 0x0a140001, 0x03cb0502, "", "", ""}, +{60, 0x0a150001, 0x03cc0502, "", "", ""}, +{60, 0x0a160001, 0x03cd0502, "", "", ""}, +{60, 0x0a170001, 0x03ce0502, "", "", ""}, +{60, 0x0a180001, 0x03cf0502, "", "", ""}, +{60, 0x0a190001, 0x03d00502, "", "", ""}, +{60, 0x0a1a0001, 0x03d10502, "", "", ""}, +{60, 0x0a1b0001, 0x03d20502, "", "", ""}, +{60, 0x0a1c0001, 0x03d30502, "", "", ""}, +{60, 0x0a1d0001, 0x03d40502, "", "", ""}, +{60, 0x0a1e0001, 0x03d50502, "", "", ""}, +{60, 0x0a1f0001, 0x03d60502, "", "", ""}, +{60, 0x0a200001, 0x03d70502, "", "", ""}, +{61, 0x01810001, 0x01d40502, "", "", ""}, +{61, 0x01820001, 0x01d80502, "", "", ""}, +{62, 0x05130001, 0x02e70502, "", "", ""}, +{62, 0x04a20001, 0x02e80502, "", "", ""}, +{62, 0x028a0001, 0x02e90502, "", "", ""}, +{62, 0x02320001, 0x02ea0502, "", "", ""}, +{62, 0x03280001, 0x02eb0502, "", "", ""}, +{62, 0x04b60001, 0x02ec0502, "", "", ""}, +{62, 0x04c80001, 0x02ed0502, "", "", ""}, +{62, 0x04fc0001, 0x02ee0502, "", "", ""}, +{62, 0x03430001, 0x02ef0502, "", "", ""}, +{62, 0x04eb0001, 0x02f00502, "", "", ""}, +{62, 0x04810001, 0x02f10502, "", "", ""}, +{62, 0x04680001, 0x02f20502, "", "", ""}, +{62, 0x03d30001, 0x02f30502, "", "", ""}, +{62, 0x03140001, 0x02f40502, "", "", ""}, +{62, 0x03e80001, 0x02f50502, "", "", ""}, +{62, 0x024d0001, 0x02f60502, "", "", ""}, +{62, 0x021c0001, 0x02f70502, "", "", ""}, +{62, 0x02380001, 0x02f80502, "", "", ""}, +{62, 0x02f30001, 0x02f90502, "", "", ""}, +{62, 0x03580001, 0x02fa0502, "", "", ""}, +{62, 0x036e0001, 0x02fb0502, "", "", ""}, +{62, 0x03950001, 0x02fc0502, "", "", ""}, +{62, 0x04820001, 0x02fd0502, "", "", ""}, +{62, 0x02840001, 0x02fe0502, "", "", ""}, +{62, 0x02a30001, 0x02ff0502, "", "", ""}, +{62, 0x04380001, 0x03000502, "", "", ""}, +{62, 0x049f0001, 0x03010502, "", "", ""}, +{62, 0x03470001, 0x03020502, "", "", ""}, +{62, 0x043b0001, 0x03030502, "", "", ""}, +{62, 0x036d0001, 0x03040502, "", "", ""}, +{62, 0x02f40001, 0x03050502, "", "", ""}, +{62, 0x02330001, 0x03060502, "", "", ""}, +{62, 0x032a0001, 0x03070502, "", "", ""}, +{62, 0x02c50001, 0x03080502, "", "", ""}, +{62, 0x03120001, 0x03090502, "", "", ""}, +{62, 0x04140001, 0x030a0502, "", "", ""}, +{62, 0x03ea0001, 0x030b0502, "", "", ""}, +{62, 0x04b40001, 0x030c0502, "", "", ""}, +{62, 0x04c90001, 0x030d0502, "", "", ""}, +{62, 0x03410001, 0x030e0502, "", "", ""}, +{62, 0x02b70001, 0x030f0502, "", "", ""}, +{62, 0x03c00001, 0x03100502, "", "", ""}, +{62, 0x04390001, 0x03110502, "", "", ""}, +{62, 0x02060001, 0x03120502, "", "", ""}, +{62, 0x02860001, 0x03130502, "", "", ""}, +{62, 0x050f0001, 0x03140502, "", "", ""}, +{62, 0x044e0001, 0x03150502, "", "", ""}, +{62, 0x03ab0001, 0x03160502, "", "", ""}, +{62, 0x021f0001, 0x03170502, "", "", ""}, +{62, 0x04ea0001, 0x03180502, "", "", ""}, +{63, 0x05c10000, 0x03661302, "", "解锁密特罗德搜寻/解锁融合模式", ""}, +{63, 0x05c00000, 0x00060002, "", "解锁备用导弹罐/通关解锁美术画廊", ""}, +{63, 0x05c00000, 0x03651302, "", "解锁备用能量罐/通关解锁美术画廊", ""}, +{63, 0x05c00100, 0x001d0002, "", "解锁备用弹药罐/通关解锁BGM", ""}, +{64, 0x21010000, 0x00180002, "", "艾克可入队", ""}, +{64, 0x21020000, 0x00290002, "", "露琪娜可入队", ""}, +{64, 0x21000000, 0x000b0002, "", "马尔斯可入队", ""}, +{64, 0x21030000, 0x002a0002, "", "鲁弗莱可入队", ""}, +{65, 0x21060000, 0x03601202, "", "解锁迷宫/召唤幻影骑士", ""}, +{65, 0x21070000, 0x03611202, "", "解锁迷宫/召唤幻影骑士", ""}, +{65, 0x21080000, 0x03880002, "", "召唤幻影骑士", ""}, +{65, 0x21050000, 0x025a0002, "", "召唤幻影骑士", ""}, +{65, 0x21010000, 0x00180002, "", "召唤幻影骑士", ""}, +{65, 0x21020000, 0x00290002, "", "召唤幻影骑士", ""}, +{65, 0x21000000, 0x000b0002, "", "召唤幻影骑士", ""}, +{65, 0x21030000, 0x002a0002, "", "召唤幻影骑士", ""}, +{65, 0x21040000, 0x02520002, "", "召唤幻影骑士", ""}, +{66, 0x1d010000, 0x03750d02, "", "显示章节的皮卡丘提示数", ""}, +{67, 0x06400100, 0x001e0002, "", "随时叫出皮克敏", ""}, +{67, 0x06420000, 0x035f1102, "", "随时叫出皮克敏", ""}, +{68, 0x01000000, 0x034f0902, "", "暂无简介", ""}, +{68, 0x01020100, 0x001b0002, "", "受到2倍伤害", ""}, +{68, 0x01000000, 0x00040002, "", "恢复箭数量", ""}, +{68, 0x01000000, 0x034b0902, "", "暂无简介", ""}, +{68, 0x01030000, 0x024f0902, "", "解锁可获得9999钱包的新迷宫", ""}, +{68, 0x01010100, 0x00170002, "", "恢复心心", ""}, +{68, 0x01000100, 0x00160002, "", "恢复箭数量", ""}, +{68, 0x01000100, 0x03500902, "", "暂无简介", ""}, +{68, 0x01010000, 0x03520902, "", "暂无简介", ""}, +{68, 0x01010000, 0x000e0002, "", "恢复心心", ""}, +{69, 0x00170000, 0x02680102, "", "显示嘘嘘鬼位置", ""}, +{69, 0x00010000, 0x000c0002, "", "可原地复活一次", ""}, +{69, 0x00000000, 0x00340102, "", "毒蘑菇变成红蘑菇", ""}, +{69, 0x000a0000, 0x00380102, "", "与奇诺比奥对话会回血", ""}, +{70, 0x09cd0201, 0x02ab0e02, "", "", ""}, +{70, 0x09cd0401, 0x02ad0e02, "", "", ""}, +{70, 0x09cd0501, 0x02ae0e02, "", "", ""}, +{70, 0x09cd0101, 0x02aa0e02, "", "", ""}, +{70, 0x09cd0301, 0x02ac0e02, "", "", ""}, +{70, 0x09cc0201, 0x02a60e02, "", "", ""}, +{70, 0x09cc0401, 0x02a80e02, "", "", ""}, +{70, 0x09cc0501, 0x02a90e02, "", "", ""}, +{70, 0x09cc0101, 0x02a50e02, "", "", ""}, +{70, 0x09cc0301, 0x02a70e02, "", "", ""}, +{70, 0x09ce0201, 0x02b00e02, "", "", ""}, +{70, 0x09ce0401, 0x02b20e02, "", "", ""}, +{70, 0x09ce0501, 0x02b30e02, "", "", ""}, +{70, 0x09ce0101, 0x02af0e02, "", "", ""}, +{70, 0x09ce0301, 0x02b10e02, "", "", ""}, +{70, 0x09cb0201, 0x02a10e02, "", "", ""}, +{70, 0x09cb0401, 0x02a30e02, "", "", ""}, +{70, 0x09cb0501, 0x02a40e02, "", "", ""}, +{70, 0x09cb0101, 0x02a00e02, "", "", ""}, +{70, 0x09cb0301, 0x02a20e02, "", "", ""}, +{70, 0x09c90201, 0x02970e02, "", "", ""}, +{70, 0x09c90401, 0x02990e02, "", "", ""}, +{70, 0x09c90501, 0x029a0e02, "", "", ""}, +{70, 0x09c90101, 0x02960e02, "", "", ""}, +{70, 0x09c90301, 0x02980e02, "", "", ""}, +{70, 0x09ca0201, 0x029c0e02, "", "", ""}, +{70, 0x09ca0401, 0x029e0e02, "", "", ""}, +{70, 0x09ca0501, 0x029f0e02, "", "", ""}, +{70, 0x09ca0101, 0x029b0e02, "", "", ""}, +{70, 0x09ca0301, 0x029d0e02, "", "", ""}, +{70, 0x09c30201, 0x02790e02, "", "", ""}, +{70, 0x09c30401, 0x027b0e02, "", "", ""}, +{70, 0x09c30501, 0x027c0e02, "", "", ""}, +{70, 0x09c30101, 0x02780e02, "", "", ""}, +{70, 0x09c30301, 0x027a0e02, "", "", ""}, +{70, 0x09c80201, 0x02920e02, "", "", ""}, +{70, 0x09c80401, 0x02940e02, "", "", ""}, +{70, 0x09c80501, 0x02950e02, "", "", ""}, +{70, 0x09c80101, 0x02910e02, "", "", ""}, +{70, 0x09c80301, 0x02930e02, "", "", ""}, +{70, 0x09c70201, 0x028d0e02, "", "", ""}, +{70, 0x09c70401, 0x028f0e02, "", "", ""}, +{70, 0x09c70501, 0x02900e02, "", "", ""}, +{70, 0x09c70101, 0x028c0e02, "", "", ""}, +{70, 0x09c70301, 0x028e0e02, "", "", ""}, +{70, 0x09c10201, 0x026f0e02, "", "", ""}, +{70, 0x09c10401, 0x02710e02, "", "", ""}, +{70, 0x09c10501, 0x02720e02, "", "", ""}, +{70, 0x09c10101, 0x026e0e02, "", "", ""}, +{70, 0x09c10301, 0x02700e02, "", "", ""}, +{70, 0x09c00201, 0x026a0e02, "", "", ""}, +{70, 0x09c00401, 0x026c0e02, "", "", ""}, +{70, 0x09c00501, 0x026d0e02, "", "", ""}, +{70, 0x09c00101, 0x02690e02, "", "", ""}, +{70, 0x09c00301, 0x026b0e02, "", "", ""}, +{70, 0x09d00201, 0x02ba0e02, "", "", ""}, +{70, 0x09d00401, 0x02bc0e02, "", "", ""}, +{70, 0x09d00501, 0x02bd0e02, "", "", ""}, +{70, 0x09d00101, 0x02b90e02, "", "", ""}, +{70, 0x09d00301, 0x02bb0e02, "", "", ""}, +{70, 0x09c20201, 0x02740e02, "", "", ""}, +{70, 0x09c20401, 0x02760e02, "", "", ""}, +{70, 0x09c20501, 0x02770e02, "", "", ""}, +{70, 0x09c20101, 0x02730e02, "", "", ""}, +{70, 0x09c20301, 0x02750e02, "", "", ""}, +{70, 0x09d10201, 0x02bf0e02, "", "", ""}, +{70, 0x09d10401, 0x02c10e02, "", "", ""}, +{70, 0x09d10501, 0x02c20e02, "", "", ""}, +{70, 0x09d10101, 0x02be0e02, "", "", ""}, +{70, 0x09d10301, 0x02c00e02, "", "", ""}, +{70, 0x09cf0201, 0x02b50e02, "", "", ""}, +{70, 0x09cf0401, 0x02b70e02, "", "", ""}, +{70, 0x09cf0501, 0x02b80e02, "", "", ""}, +{70, 0x09cf0101, 0x02b40e02, "", "", ""}, +{70, 0x09cf0301, 0x02b60e02, "", "", ""}, +{70, 0x09c60201, 0x02880e02, "", "", ""}, +{70, 0x09c60401, 0x028a0e02, "", "", ""}, +{70, 0x09c60501, 0x028b0e02, "", "", ""}, +{70, 0x09c60101, 0x02870e02, "", "", ""}, +{70, 0x09c60301, 0x02890e02, "", "", ""}, +{70, 0x09c50201, 0x02830e02, "", "", ""}, +{70, 0x09c50401, 0x02850e02, "", "", ""}, +{70, 0x09c50501, 0x02860e02, "", "", ""}, +{70, 0x09c50101, 0x02820e02, "", "", ""}, +{70, 0x09c50301, 0x02840e02, "", "", ""}, +{70, 0x09c40201, 0x027e0e02, "", "", ""}, +{70, 0x09c40401, 0x02800e02, "", "", ""}, +{70, 0x09c40501, 0x02810e02, "", "", ""}, +{70, 0x09c40101, 0x027d0e02, "", "", ""}, +{70, 0x09c40301, 0x027f0e02, "", "", ""}, +{255, 0x00000000, 0x02390602, "", "", ""}, +{255, 0x00030000, 0x00370102, "", "", ""}, +{255, 0x0008ff00, 0x023b0702, "", "", ""}, +{255, 0x22c00000, 0x003a0202, "", "", ""}, +{0, 0, 0, 0, 0, 0} }; diff --git a/fw/data/amiidb_amiibo.csv b/fw/data/amiidb_amiibo.csv index 06558b18..586837e4 100644 --- a/fw/data/amiidb_amiibo.csv +++ b/fw/data/amiidb_amiibo.csv @@ -1,849 +1,849 @@ -0100000000040002,Link,林克 -01000000034b0902,Link - Ocarina of Time,林克 - 时之笛 -01000000034c0902,Link - Majora's Mask,林克 - 假面 -01000000034d0902,Link - Twilight Princess,林克 - 黄昏公主 -01000000034e0902,Link - Skyward Sword,林克 - 天空之剑 -01000000034f0902,8-Bit Link,像素林克 -0100000003530902,Link - Archer,林克 - 弓箭手 -0100000003540902,Link - Rider,林克 - 骑士 -01000000037c0002,Young Link,幼年林克 -0100000003990902,Link - Link's Awakening,林克 - 织梦岛 -0100010000160002,Toon Link,卡通林克 -0100010003500902,Toon Link - The Wind Waker,卡通林克 - 风之杖 -01010000000e0002,Zelda,塞尔达 -0101000003520902,Toon Zelda - The Wind Waker,塞尔达 - 风之杖 -0101000003560902,Zelda,塞尔达 -0101010000170002,Sheik,希克 -0101030004140902,Zelda & Loftwing,塞尔达&洛夫特飞鸟 -01020100001b0002,Ganondorf,盖侬多夫 -01030000024f0902,Midna & Wolf Link,米多娜 & 狼林克 -0105000003580902,Daruk,达尔克尔 -0106000003590902,Urbosa,乌尔波扎 -01070000035a0902,Mipha,米法 -01080000035b0902,Revali,力巴尔 -0140000003550902,Guardian,守护者 -01410000035c0902,Bokoblin,波克布林 -0100000004180902,Link - Tears of the Kingdom,林克 - 王国之泪 -35080000040f1802,Magnamalo,怨虎龙 -3509000004101802,Palico,随从艾露猫 -35090100042b1802,Palico,随从艾露猫 -350a000004111802,Palamute,随从牙猎犬 -350a0100042c1802,Palamute,随从牙猎犬 -350b0000042d1802,Malzeno,爵银龙 -3500010002e10f02,One-Eyed Rathalos and Rider - Male,独眼雄火龙与男骑士 -3500020002e20f02,One-Eyed Rathalos and Rider - Female,独眼雄火龙与女骑士 -3501000002e30f02,Nabiru,纳比露 -3502010002e40f02,Rathian and Cheval,雌火龙与修瓦尔 -3503010002e50f02,Barioth and Ayuria,冰牙龙与亚尤利娅 -3504010002e60f02,Qurupeco and Dan,彩鸟与丹前辈 -35050000040c0f02,Razewing Ratha,毁灭火龙 -35060000040d0f02,Ena,艾娜 -35070000040e0f02,Tsukino,月露 -38c0000003911602,Loot Goblin,藏宝哥布林 -0017000002680102,Boo,嘘嘘鬼 -0006000000150002,Bowser Jr.,酷霸王Jr. -00130000037a0002,Daisy,黛西公主 -0008000002640102,Donkey Kong,咚奇刚 -00010000000c0002,Luigi,路易吉 -0002000000010002,Peach,碧姬公主 -0004010000130002,Rosalina & Luma,罗莎塔&琪琪 -0014000002670102,Waluigi,瓦路易吉 -0003010200420302,Pink Yarn Yoshi,粉色毛线耀西 -0005000000140002,Bowser,酷霸王 -00090000000d0002,Diddy Kong,迪迪刚 -0015000003670102,Goomba,板栗仔 -0023000003680102,Koopa Troopa,诺库龟 -0000000000340102,Mario,马力欧 -0007000002630102,Wario,瓦力欧 -21000000000b0002,Marth,马尔斯 -2101000000180002,Ike,艾克 -2102000000290002,Lucina,露琪娜 -21030000002a0002,Robin,鲁弗莱 -2104000002520002,Roy,罗伊 -21050000025a0002,Corrin,神威 -2105010003630002,Corrin - Player 2,神威2 -2106000003601202,Alm,阿雷姆 -2107000003611202,Celica,赛莉卡 -21080000036f1202,Chrom,库洛姆 -2108000003880002,Chrom,库洛姆 -2109000003701202,Tiki,琪姬 -210b000003a50002,Byleth,贝雷丝 -0005000003730102,Bowser - Wedding,礼服酷霸王 -0000010000190002,Dr. Mario,马力欧医生 -0000000000000002,Mario,马力欧 -00070000001a0002,Wario,瓦力欧 -0009000002650102,Diddy Kong,迪迪刚 -0001000000350102,Luigi,路易吉 -00000000003c0102,Mario - Gold Edition,金马力欧 -0000000003710102,Mario - Wedding,礼服马力欧 -00000000003d0102,Mario - Silver Edition,银马力欧 -0002000003720102,Peach - Wedding,婚纱碧姬公主 -0005000000390102,Bowser,酷霸王 -3740000103741402,Super Mario Cereal,马力欧联名麦片 -0005ff00023a0702,Hammer Slam Bowser,Hammer Slam Bowser -0580000000050002,Fox,火狐 -3480000000310002,Mega Man,洛克人 -3200000000300002,Sonic,索尼克 -08000100025f0402,Inkling Girl - Lime Green,鱿鱼族女孩 - 青柠绿 -0600000000120002,Captain Falcon,飞隼队长 -0008000000030002,Donkey Kong,咚奇刚 -1f000000000a0002,Kirby,卡比 -3340000000320002,Pac-Man,吃豆人 -0004000002620102,Rosalina,罗莎塔 -05c0000000060002,Samus,萨姆斯 -000a000000380102,Toad,奇诺比奥 -0003000000020002,Yoshi,耀西 -06400100001e0002,Olimar,欧力玛 -06420000035f1102,Pikmin,皮克敏 -0188000002410502,Mabel,绢儿 -0194000100aa0502,[AC] 103 - Kicks,[AC] 103 - Kicks -019c000101730502,[AC] 304 - Phineas,[AC] 304 - Phineas -0180000000080002,Villager,村民 -04a2000102e80502,[AC] W02 - Hopkins,[AC] W02 - Hopkins -0282000101d60502,[AC] AF1 - Stitches,[AC] AF1 - Stitches -0181000100440502,[AC] 001 - Isabelle,[AC] 001 - Isabelle -01920001010d0502,[AC] 202 - Blathers,[AC] 202 - Blathers -0374010103190502,[AC] XS1 - Rilla,[AC] XS1 - Rilla -0003010200410302,Green Yarn Yoshi,绿色毛线耀西 -0003010200430302,Light Blue Yarn Yoshi,淡蓝毛线耀西 -0002000000360102,Peach,碧姬公主 -00800102035d0302,Poochy,波奇 -22400000002b0002,Shulk,修尔克 -08000100003e0402,Inkling Girl,鱿鱼族女孩 -0800010003690402,Inkling Girl - Neon Pink,鱿鱼族女孩 - 霓虹粉 -0800010003820002,Inkling,鱿鱼族 -0800010004150402,Inkling - Yellow,鱿鱼族 - 黄色 -08000200003f0402,Inkling Boy,鱿鱼族男孩 -0800020002600402,Inkling Boy - Purple,鱿鱼族男孩 - 紫色 -08000200036a0402,Inkling Boy - Neon Green,鱿鱼族男孩 - 霓虹绿 -0800030000400402,Inkling Squid,鱿鱼族鱿鱼形态 -0800030002610402,Inkling Squid - Orange,鱿鱼族鱿鱼形态 - 橙色 -08000300036b0402,Inkling Squid - Neon Purple,鱿鱼族鱿鱼形态 - 霓虹紫 -08010000025d0402,Callie,小拟 -08020000025e0402,Marie,小萤 -0803000003760402,Pearl,小姬 -0804000003770402,Marina,饭田 -08050100038e0402,Octoling Girl,章鱼族女孩 -08050200038f0402,Octoling Boy,章鱼族男孩 -08050200041b0402,Octoling - Blue,章鱼族 - 蓝色 -0805030003900402,Octoling Octopus,章鱼族章鱼形态 -0807000004330402,Shiver,莎莎 -0808000004340402,Frye,曼曼 -0809000004350402,Big Man,鬼福 -08060100041c0402,Smallfry,小鲑鱼 -00240000038d0002,Piranha Plant,吞食花 -00c00000037b0002,King K. Rool,库鲁鲁王 -01810000037d0002,Isabelle,西施惠 -05810000001c0002,Falco,弗克 -05840000037e0002,Wolf,沃鲁夫 -05c00100001d0002,Zero Suit Samus,零装甲萨姆斯 -05c20000037f0002,Ridley,利德雷 -05c3000003800002,Dark Samus,黑暗萨姆斯 -06c00000000f0002,Little Mac,小麦克 -0700000000070002,Wii Fit Trainer,Wii Fit教练 -0740000000100002,Pit,皮特 -0741000000200002,Dark Pit,黑暗皮特 -07420000001f0002,Palutena,帕露蒂娜 -07800000002d0002,Mr. Game & Watch,Mr. Game & Watch -07810000002e0002,R.O.B. - Famicom,机器人(日版) -0781000000330002,R.O.B. - NES,机器人(美版) -07820000002f0002,Duck Hunt,打猎 -078f000003810002,Ice Climbers,翻越冰山者 -07c0000000210002,Mii Brawler,Mii拳斗士 -07c0010000220002,Mii Swordfighter,Mii剑士 -07c0020000230002,Mii Gunner,Mii枪手 -0a400000041d0002,Min Min,面面 -1902000003830002,Ivysaur,妙娃草 -1906000000240002,Charizard,喷火龙 -1907000003840002,Squirtle,杰尼龟 -1919000000090002,Pikachu,皮卡丘 -1927000000260002,Jigglypuff,胖丁 -19960000023d0002,Mewtwo,超梦 -19ac000003850002,Pichu,皮丘 -1ac0000000110002,Lucario,路卡利欧 -1b92000000250002,Greninja,甲贺忍蛙 -1bd7000003860002,Incineroar,炽焰咆哮虎 -1d40000003870002,Pokemon Trainer,宝可梦训练师 -1f01000000270002,Meta Knight,梅塔骑士 -1f02000000280002,King Dedede,迪迪迪大王 -22800000002c0002,Ness,奈斯 -2281000002510002,Lucas,卢卡斯 -32400000025b0002,Bayonetta,贝优妮塔 -3240010003640002,Bayonetta - Player 2,贝优妮塔2 -33c0000004200002,Kazuya,一八 -3480000002580002,Mega Man - Gold Edition,黄金洛克人 -34c0000002530002,Ryu,隆 -34c1000003890002,Ken,肯 -3600000002590002,Cloud,克劳德 -3600010003620002,Cloud - Player 2,克劳德2 -3601000004210002,Sephiroth,萨菲罗斯 -3640000003a20002,Hero,勇者 -37800000038a0002,Snake,SNAKE -37c00000038b0002,Simon,西蒙 -37c10000038c0002,Richter,里希特 -3a00000003a10002,Joker,JOKER -3b40000003a30002,Banjo & Kazooie,阿邦&阿卡 -3c80000003a40002,Terry,特瑞 -3dc0000004220002,Steve,史蒂夫 -3dc1000004230002,Alex,艾利克斯 -3840000104241902,Yuga Ohdo,Yuga Ohdo -3841000104251902,Tatsuhisa “Luke” Kamijō,Tatsuhisa “Luke” Kamijō -3842000104261902,Gakuto Sōgetsu,Gakuto Sōgetsu -3843000104271902,Romin Kirishima,Romin Kirishima -3844000104281902,Roa Kirishima,Roa Kirishima -3845000104291902,Nail Saionji,Nail Saionji -38460001042a1902,Asana Mutsuba,Asana Mutsuba -0000030003a60102,Mario - Cat,猫猫马力欧 -0002010003a70102,Peach - Cat,猫猫碧姬公主 -0013000002660102,Daisy,黛西公主 -00030102023e0302,Mega Yarn Yoshi,毛线耀西 -1f02000002560c02,King Dedede,迪迪迪大王 -1f01000002550c02,Meta Knight,梅塔骑士 -1f03000002570c02,Waddle Dee,瓦多鲁迪 -1f00000002540c02,Kirby,卡比 -1f400000035e1002,Qbby,丘比 -35c0000002500a02,Shovel Knight,铲子骑士 -35c0000003920a02,Shovel Knight - Gold Edition,黄金铲子骑士 -35c10000036c0a02,Plague Knight,瘟疫骑士 -35c20000036d0a02,Specter Knight,苦痛骑士 -35c30000036e0a02,King Knight,国王骑士 -3380000003781402,Solaire of Astora,太阳骑士 -3800000103931702,Pawapuro,Pawapuro -3801000103941702,Ikari,Ikari -3802000103951702,Yabe,Yabe -3803000103961702,Hayakawa,Hayakawa -3804000103971702,Ganda,Ganda -3805000103981702,Daijobu,Daijobu -1d000001025c0d02,Shadow Mewtwo,Shadow Mewtwo -1d01000003750d02,Detective Pikachu,名侦探皮卡丘 -000a000303a0ff02,Toad - Power Up Band,奇诺比奥 - 能量手环 -01c1000002440502,Lottie,Lottie -0513000102e70502,[AC] W01 - Vivian,[AC] W01 - Vivian -02ea000101d50502,[AC] AF3 - Goldie,[AC] AF3 - Goldie -019d000100ac0502,[AC] 105 - Copper,[AC] 105 - Copper -0182010100460502,[AC] 003 - DJ KK,[AC] 003 - DJ KK -0193000101740502,[AC] 305 - Celeste,[AC] 305 - Celeste -019f000101110502,[AC] 206 - Pete,[AC] 206 - Pete -05c0000004121302,Samus - Metroid Dread,萨姆斯 - 生存恐惧 -028f0101031a0502,[AC] XS2 - Marty,[AC] XS2 - Marty -0000000002380602,8-Bit Mario Classic Color,像素马力欧 - 经典配色 -01810100023f0502,Isabelle,西施惠 -00020003039dff02,Peach - Power Up Band,碧姬公主 - 能量手环 -0183000002420502,Tom Nook,狸克狸克 -0182000002400502,K.K. Slider,K.K. -018e000002490502,Resetti,里赛特先生 -3480000003791502,Mega Man,洛克人 -0183000100450502,[AC] 002 - Tom Nook,[AC] 002 - Tom Nook -0187000100470502,[AC] 004 - Sable,[AC] 004 - Sable -0196000100480502,[AC] 005 - Kappn,[AC] 005 - Kappn -018e000100490502,[AC] 006 - Resetti,[AC] 006 - Resetti -01a30001004a0502,[AC] 007 - Joan,[AC] 007 - Joan -01850001004b0502,[AC] 008 - Timmy,[AC] 008 - Timmy -018c0001004c0502,[AC] 009 - Digby,[AC] 009 - Digby -01a40001004d0502,[AC] 010 - Pascal,[AC] 010 - Pascal -01910001004e0502,[AC] 011 - Harriet,[AC] 011 - Harriet -01a80001004f0502,[AC] 012 - Redd,[AC] 012 - Redd -01a6000100500502,[AC] 013 - Saharah,[AC] 013 - Saharah -01b5000100510502,[AC] 014 - Luna,[AC] 014 - Luna -01b0000100520502,[AC] 015 - Tortimer,[AC] 015 - Tortimer -01aa000100530502,[AC] 016 - Lyle,[AC] 016 - Lyle -01c1000100540502,[AC] 017 - Lottie,[AC] 017 - Lottie -025d000100550502,[AC] 018 - Bob,[AC] 018 - Bob -02d6000100560502,[AC] 019 - Fauna,[AC] 019 - Fauna -0216000100570502,[AC] 020 - Curt,[AC] 020 - Curt -02ef000100580502,[AC] 021 - Portia,[AC] 021 - Portia -04fe000100590502,[AC] 022 - Leonardo,[AC] 022 - Leonardo -02870001005a0502,[AC] 023 - Cheri,[AC] 023 - Cheri -05150001005b0502,[AC] 024 - Kyle,[AC] 024 - Kyle -03710001005c0502,[AC] 025 - Al,[AC] 025 - Al -04ba0001005d0502,[AC] 026 - Renee,[AC] 026 - Renee -02db0001005e0502,[AC] 027 - Lopez,[AC] 027 - Lopez -03450001005f0502,[AC] 028 - Jambette,[AC] 028 - Jambette -047a000100600502,[AC] 029 - Rasher,[AC] 029 - Rasher -049b000100610502,[AC] 030 - Tiffany,[AC] 030 - Tiffany -04ed000100620502,[AC] 031 - Sheldon,[AC] 031 - Sheldon -027d000100630502,[AC] 032 - Bluebear,[AC] 032 - Bluebear -0307000100640502,[AC] 033 - Bill,[AC] 033 - Bill -0261000100650502,[AC] 034 - Kiki,[AC] 034 - Kiki -0401000100660502,[AC] 035 - Deli,[AC] 035 - Deli -02c4000100670502,[AC] 036 - Alli,[AC] 036 - Alli -0266000100680502,[AC] 037 - Kabuki,[AC] 037 - Kabuki -02b1000100690502,[AC] 038 - Patty,[AC] 038 - Patty -02310001006a0502,[AC] 039 - Jitters,[AC] 039 - Jitters -03480001006b0502,[AC] 040 - Gigi,[AC] 040 - Gigi -03180001006c0502,[AC] 041 - Quillson,[AC] 041 - Quillson -03db0001006d0502,[AC] 042 - Marcie,[AC] 042 - Marcie -04650001006e0502,[AC] 043 - Puck,[AC] 043 - Puck -04000001006f0502,[AC] 044 - Shari,[AC] 044 - Shari -0429000100700502,[AC] 045 - Octavian,[AC] 045 - Octavian -03a9000100710502,[AC] 046 - Winnie,[AC] 046 - Winnie -02a4000100720502,[AC] 047 - Knox,[AC] 047 - Knox -0452000100730502,[AC] 048 - Sterling,[AC] 048 - Sterling -04a5000100740502,[AC] 049 - Bonbon,[AC] 049 - Bonbon -0263000100750502,[AC] 050 - Punchy,[AC] 050 - Punchy -0323000100760502,[AC] 051 - Opal,[AC] 051 - Opal -04ec000100770502,[AC] 052 - Poppy,[AC] 052 - Poppy -040d000100780502,[AC] 053 - Limberg,[AC] 053 - Limberg -030b000100790502,[AC] 054 - Deena,[AC] 054 - Deena -04970001007a0502,[AC] 055 - Snake,[AC] 055 - Snake -04fd0001007b0502,[AC] 056 - Bangle,[AC] 056 - Bangle -043d0001007c0502,[AC] 057 - Phil,[AC] 057 - Phil -02680001007d0502,[AC] 058 - Monique,[AC] 058 - Monique -02190001007e0502,[AC] 059 - Nate,[AC] 059 - Nate -04100001007f0502,[AC] 060 - Samson,[AC] 060 - Samson -021b000100800502,[AC] 061 - Tutu,[AC] 061 - Tutu -024f000100810502,[AC] 062 - T-Bone,[AC] 062 - T-Bone -04e6000100820502,[AC] 063 - Mint,[AC] 063 - Mint -0280000100830502,[AC] 064 - Pudge,[AC] 064 - Pudge -0235000100840502,[AC] 065 - Midge,[AC] 065 - Midge -035a000100850502,[AC] 066 - Gruff,[AC] 066 - Gruff -0384000100860502,[AC] 067 - Flurry,[AC] 067 - Flurry -03ae000100870502,[AC] 068 - Clyde,[AC] 068 - Clyde -040e000100880502,[AC] 069 - Bella,[AC] 069 - Bella -0394000100890502,[AC] 070 - Biff,[AC] 070 - Biff -03bc0001008a0502,[AC] 071 - Yuka,[AC] 071 - Yuka -03ee0001008b0502,[AC] 072 - Lionel,[AC] 072 - Lionel -046c0001008c0502,[AC] 073 - Flo,[AC] 073 - Flo -04800001008d0502,[AC] 074 - Cobb,[AC] 074 - Cobb -044c0001008e0502,[AC] 075 - Amelia,[AC] 075 - Amelia -033f0001008f0502,[AC] 076 - Jeramiah,[AC] 076 - Jeramiah -02fb000100900502,[AC] 077 - Cherry,[AC] 077 - Cherry -03a8000100910502,[AC] 078 - Roscoe,[AC] 078 - Roscoe -0479000100920502,[AC] 079 - Truffles,[AC] 079 - Truffles -03c6000100930502,[AC] 080 - Eugene,[AC] 080 - Eugene -04c7000100940502,[AC] 081 - Eunice,[AC] 081 - Eunice -0299000100950502,[AC] 082 - Goose,[AC] 082 - Goose -0208000100960502,[AC] 083 - Annalisa,[AC] 083 - Annalisa -02fa000100970502,[AC] 084 - Benjamin,[AC] 084 - Benjamin -0488000100980502,[AC] 085 - Pancetti,[AC] 085 - Pancetti -050b000100990502,[AC] 086 - Chief,[AC] 086 - Chief -04940001009a0502,[AC] 087 - Bunnie,[AC] 087 - Bunnie -03830001009b0502,[AC] 088 - Clay,[AC] 088 - Clay -02de0001009c0502,[AC] 089 - Diana,[AC] 089 - Diana -03290001009d0502,[AC] 090 - Axel,[AC] 090 - Axel -04d10001009e0502,[AC] 091 - Muffy,[AC] 091 - Muffy -034b0001009f0502,[AC] 092 - Henry,[AC] 092 - Henry -0393000100a00502,[AC] 093 - Bertha,[AC] 093 - Bertha -0200000100a10502,[AC] 094 - Cyrano,[AC] 094 - Cyrano -04dd000100a20502,[AC] 095 - Peanut,[AC] 095 - Peanut -04a6000100a30502,[AC] 096 - Cole,[AC] 096 - Cole -04cc000100a40502,[AC] 097 - Willow,[AC] 097 - Willow -0460000100a50502,[AC] 098 - Roald,[AC] 098 - Roald -0317000100a60502,[AC] 099 - Molly,[AC] 099 - Molly -02f0000100a70502,[AC] 100 - Walker,[AC] 100 - Walker -0182000100a80502,[AC] 101 - K.K. Slider,[AC] 101 - K.K. Slider -018a000100a90502,[AC] 102 - Reese,[AC] 102 - Reese -0189000100ab0502,[AC] 104 - Labelle,[AC] 104 - Labelle -019e000100ad0502,[AC] 106 - Booker,[AC] 106 - Booker -01b6000100ae0502,[AC] 107 - Katie,[AC] 107 - Katie -0186010100af0502,[AC] 108 - Tommy,[AC] 108 - Tommy -0195000100b00502,[AC] 109 - Porter,[AC] 109 - Porter -0198000100b10502,[AC] 110 - Leila,[AC] 110 - Leila -01b1000100b20502,[AC] 111 - Shrunk,[AC] 111 - Shrunk -018f000100b30502,[AC] 112 - Don Resetti,[AC] 112 - Don Resetti -0181010100b40502,[AC] 113 - Isabelle,[AC] 113 - Isabelle -01b3000100b50502,[AC] 114 - Blanca,[AC] 114 - Blanca -019b000100b60502,[AC] 115 - Nat,[AC] 115 - Nat -019a000100b70502,[AC] 116 - Chip,[AC] 116 - Chip -01ad000100b80502,[AC] 117 - Jack,[AC] 117 - Jack -027f000100b90502,[AC] 118 - Poncho,[AC] 118 - Poncho -026e000100ba0502,[AC] 119 - Felicity,[AC] 119 - Felicity -03c1000100bb0502,[AC] 120 - Ozzie,[AC] 120 - Ozzie -032d000100bc0502,[AC] 121 - Tia,[AC] 121 - Tia -023c000100bd0502,[AC] 122 - Lucha,[AC] 122 - Lucha -02dc000100be0502,[AC] 123 - Fuchsia,[AC] 123 - Fuchsia -0398000100bf0502,[AC] 124 - Harry,[AC] 124 - Harry -0464000100c00502,[AC] 125 - Gwen,[AC] 125 - Gwen -0251000100c10502,[AC] 126 - Coach,[AC] 126 - Coach -03d1000100c20502,[AC] 127 - Kitt,[AC] 127 - Kitt -026c000100c30502,[AC] 128 - Tom,[AC] 128 - Tom -02b2000100c40502,[AC] 129 - Tipper,[AC] 129 - Tipper -0344000100c50502,[AC] 130 - Prince,[AC] 130 - Prince -0309000100c60502,[AC] 131 - Pate,[AC] 131 - Pate -0283000100c70502,[AC] 132 - Vladimir,[AC] 132 - Vladimir -03a6000100c80502,[AC] 133 - Savannah,[AC] 133 - Savannah -035d000100c90502,[AC] 134 - Kidd,[AC] 134 - Kidd -0440000100ca0502,[AC] 135 - Phoebe,[AC] 135 - Phoebe -029b000100cb0502,[AC] 136 - Egbert,[AC] 136 - Egbert -02f2000100cc0502,[AC] 137 - Cookie,[AC] 137 - Cookie -02c9000100cd0502,[AC] 138 - Sly,[AC] 138 - Sly -04de000100ce0502,[AC] 139 - Blaire,[AC] 139 - Blaire -0450000100cf0502,[AC] 140 - Avery,[AC] 140 - Avery -03fa000100d00502,[AC] 141 - Nana,[AC] 141 - Nana -023e000100d10502,[AC] 142 - Peck,[AC] 142 - Peck -0260000100d20502,[AC] 143 - Olivia,[AC] 143 - Olivia -0369000100d30502,[AC] 144 - Cesar,[AC] 144 - Cesar -04a4000100d40502,[AC] 145 - Carmen,[AC] 145 - Carmen -0381000100d50502,[AC] 146 - Rodney,[AC] 146 - Rodney -0311000100d60502,[AC] 147 - Scoot,[AC] 147 - Scoot -050e000100d70502,[AC] 148 - Whitney,[AC] 148 - Whitney -0418000100d80502,[AC] 149 - Broccolo,[AC] 149 - Broccolo -0496000100d90502,[AC] 150 - Coco,[AC] 150 - Coco -021a000100da0502,[AC] 151 - Groucho,[AC] 151 - Groucho -04ce000100db0502,[AC] 152 - Wendy,[AC] 152 - Wendy -02c3000100dc0502,[AC] 153 - Alfonso,[AC] 153 - Alfonso -04b3000100dd0502,[AC] 154 - Rhonda,[AC] 154 - Rhonda -02eb000100de0502,[AC] 155 - Butch,[AC] 155 - Butch -0499000100df0502,[AC] 156 - Gabi,[AC] 156 - Gabi -041a000100e00502,[AC] 157 - Moose,[AC] 157 - Moose -04cf000100e10502,[AC] 158 - Timbra,[AC] 158 - Timbra -02d8000100e20502,[AC] 159 - Zell,[AC] 159 - Zell -028b000100e30502,[AC] 160 - Pekoe,[AC] 160 - Pekoe -0214000100e40502,[AC] 161 - Teddy,[AC] 161 - Teddy -03d2000100e50502,[AC] 162 - Mathilda,[AC] 162 - Mathilda -03aa000100e60502,[AC] 163 - Ed,[AC] 163 - Ed -0500000100e70502,[AC] 164 - Bianca,[AC] 164 - Bianca -04df000100e80502,[AC] 165 - Filbert,[AC] 165 - Filbert -026b000100e90502,[AC] 166 - Kitty,[AC] 166 - Kitty -02dd000100ea0502,[AC] 167 - Beau,[AC] 167 - Beau -0357000100eb0502,[AC] 168 - Nan,[AC] 168 - Nan -03e6000100ec0502,[AC] 169 - Bud,[AC] 169 - Bud -049d000100ed0502,[AC] 170 - Ruby,[AC] 170 - Ruby -029a000100ee0502,[AC] 171 - Benedict,[AC] 171 - Benedict -0489000100ef0502,[AC] 172 - Agnes,[AC] 172 - Agnes -03b1000100f00502,[AC] 173 - Julian,[AC] 173 - Julian -041b000100f10502,[AC] 174 - Bettina,[AC] 174 - Bettina -022d000100f20502,[AC] 175 - Jay,[AC] 175 - Jay -046d000100f30502,[AC] 176 - Sprinkle,[AC] 176 - Sprinkle -03ff000100f40502,[AC] 177 - Flip,[AC] 177 - Flip -047b000100f50502,[AC] 178 - Hugh,[AC] 178 - Hugh -0462000100f60502,[AC] 179 - Hopper,[AC] 179 - Hopper -04e0000100f70502,[AC] 180 - Pecan,[AC] 180 - Pecan -0310000100f80502,[AC] 181 - Drake,[AC] 181 - Drake -03bd000100f90502,[AC] 182 - Alice,[AC] 182 - Alice -033b000100fa0502,[AC] 183 - Camofrog,[AC] 183 - Camofrog -0416000100fb0502,[AC] 184 - Anicotti,[AC] 184 - Anicotti -0486000100fc0502,[AC] 185 - Chops,[AC] 185 - Chops -0220000100fd0502,[AC] 186 - Charlise,[AC] 186 - Charlise -0252000100fe0502,[AC] 187 - Vic,[AC] 187 - Vic -0270000100ff0502,[AC] 188 - Ankha,[AC] 188 - Ankha -033c000101000502,[AC] 189 - Drift,[AC] 189 - Drift -04c5000101010502,[AC] 190 - Vesta,[AC] 190 - Vesta -02f9000101020502,[AC] 191 - Marcel,[AC] 191 - Marcel -0202000101030502,[AC] 192 - Pango,[AC] 192 - Pango -0453000101040502,[AC] 193 - Keaton,[AC] 193 - Keaton -0437000101050502,[AC] 194 - Gladys,[AC] 194 - Gladys -0385000101060502,[AC] 195 - Hamphrey,[AC] 195 - Hamphrey -0510000101070502,[AC] 196 - Freya,[AC] 196 - Freya -0267000101080502,[AC] 197 - Kid Cat,[AC] 197 - Kid Cat -04e2000101090502,[AC] 198 - Agent S,[AC] 198 - Agent S -03250001010a0502,[AC] 199 - Big Top,[AC] 199 - Big Top -03720001010b0502,[AC] 200 - Rocket,[AC] 200 - Rocket -018d0001010c0502,[AC] 201 - Rover,[AC] 201 - Rover -01830101010e0502,[AC] 203 - Tom Nook,[AC] 203 - Tom Nook -01a00001010f0502,[AC] 204 - Pelly,[AC] 204 - Pelly -01a1000101100502,[AC] 205 - Phyllis,[AC] 205 - Phyllis -0188000101120502,[AC] 207 - Mabel,[AC] 207 - Mabel -01b4000101130502,[AC] 208 - Leif,[AC] 208 - Leif -01a7000101140502,[AC] 209 - Wendell,[AC] 209 - Wendell -018b000101150502,[AC] 210 - Cyrus,[AC] 210 - Cyrus -0199000101160502,[AC] 211 - Grams,[AC] 211 - Grams -0185020101170502,[AC] 212 - Timmy,[AC] 212 - Timmy -018c010101180502,[AC] 213 - Digby,[AC] 213 - Digby -018f010101190502,[AC] 214 - Don Resetti,[AC] 214 - Don Resetti -01810201011a0502,[AC] 215 - Isabelle,[AC] 215 - Isabelle -01ae0001011b0502,[AC] 216 - Franklin,[AC] 216 - Franklin -01af0001011c0502,[AC] 217 - Jingle,[AC] 217 - Jingle -03380001011d0502,[AC] 218 - Lily,[AC] 218 - Lily -022f0001011e0502,[AC] 219 - Anchovy,[AC] 219 - Anchovy -02690001011f0502,[AC] 220 - Tabby,[AC] 220 - Tabby -0281000101200502,[AC] 221 - Kody,[AC] 221 - Kody -0313000101210502,[AC] 222 - Miranda,[AC] 222 - Miranda -02c7000101220502,[AC] 223 - Del,[AC] 223 - Del -021e000101230502,[AC] 224 - Paula,[AC] 224 - Paula -02a6000101240502,[AC] 225 - Ken,[AC] 225 - Ken -025e000101250502,[AC] 226 - Mitzi,[AC] 226 - Mitzi -024b000101260502,[AC] 227 - Rodeo,[AC] 227 - Rodeo -0392000101270502,[AC] 228 - Bubbles,[AC] 228 - Bubbles -0342000101280502,[AC] 229 - Cousteau,[AC] 229 - Cousteau -035c000101290502,[AC] 230 - Velma,[AC] 230 - Velma -03e70001012a0502,[AC] 231 - Elvis,[AC] 231 - Elvis -03c40001012b0502,[AC] 232 - Canberra,[AC] 232 - Canberra -03af0001012c0502,[AC] 233 - Colton,[AC] 233 - Colton -042a0001012d0502,[AC] 234 - Marina,[AC] 234 - Marina -047d0001012e0502,[AC] 235 - Spork-Crackle,[AC] 235 - Spork-Crackle -030e0001012f0502,[AC] 236 - Freckles,[AC] 236 - Freckles -02d7000101300502,[AC] 237 - Bam,[AC] 237 - Bam -0463000101310502,[AC] 238 - Friga,[AC] 238 - Friga -04e7000101320502,[AC] 239 - Ricky,[AC] 239 - Ricky -02da000101330502,[AC] 240 - Deirdre,[AC] 240 - Deirdre -0373000101340502,[AC] 241 - Hans,[AC] 241 - Hans -0356000101350502,[AC] 242 - Chevre,[AC] 242 - Chevre -02cb000101360502,[AC] 243 - Drago,[AC] 243 - Drago -0262000101370502,[AC] 244 - Tangy,[AC] 244 - Tangy -02f8000101380502,[AC] 245 - Mac,[AC] 245 - Mac -0326000101390502,[AC] 246 - Eloise,[AC] 246 - Eloise -033d0001013a0502,[AC] 247 - Wart Jr.,[AC] 247 - Wart Jr. -04ef0001013b0502,[AC] 248 - Hazel,[AC] 248 - Hazel -02210001013c0502,[AC] 249 - Beardo,[AC] 249 - Beardo -029e0001013d0502,[AC] 250 - Ava,[AC] 250 - Ava -028c0001013e0502,[AC] 251 - Chester,[AC] 251 - Chester -026d0001013f0502,[AC] 252 - Merry,[AC] 252 - Merry -049c000101400502,[AC] 253 - Genji,[AC] 253 - Genji -041c000101410502,[AC] 254 - Greta,[AC] 254 - Greta -050d000101420502,[AC] 255 - Wolfgang,[AC] 255 - Wolfgang -034a000101430502,[AC] 256 - Diva,[AC] 256 - Diva -0222000101440502,[AC] 257 - Klaus,[AC] 257 - Klaus -02f1000101450502,[AC] 258 - Daisy,[AC] 258 - Daisy -026a000101460502,[AC] 259 - Stinky,[AC] 259 - Stinky -03fc000101470502,[AC] 260 - Tammi,[AC] 260 - Tammi -032c000101480502,[AC] 261 - Tucker,[AC] 261 - Tucker -043e000101490502,[AC] 262 - Blanche,[AC] 262 - Blanche -04980001014a0502,[AC] 263 - Gaston,[AC] 263 - Gaston -04ee0001014b0502,[AC] 264 - Marshal,[AC] 264 - Marshal -04850001014c0502,[AC] 265 - Gala,[AC] 265 - Gala -03080001014d0502,[AC] 266 - Joey,[AC] 266 - Joey -049a0001014e0502,[AC] 267 - Pippy,[AC] 267 - Pippy -03a40001014f0502,[AC] 268 - Buck,[AC] 268 - Buck -040f000101500502,[AC] 269 - Bree,[AC] 269 - Bree -03da000101510502,[AC] 270 - Rooney,[AC] 270 - Rooney -04cd000101520502,[AC] 271 - Curlos,[AC] 271 - Curlos -0514000101530502,[AC] 272 - Skye,[AC] 272 - Skye -0265000101540502,[AC] 273 - Moe,[AC] 273 - Moe -043f000101550502,[AC] 274 - Flora,[AC] 274 - Flora -037e000101560502,[AC] 275 - Hamlet,[AC] 275 - Hamlet -03d6000101570502,[AC] 276 - Astrid,[AC] 276 - Astrid -03fd000101580502,[AC] 277 - Monty,[AC] 277 - Monty -040c000101590502,[AC] 278 - Dora,[AC] 278 - Dora -02ed0001015a0502,[AC] 279 - Biskit,[AC] 279 - Biskit -03a50001015b0502,[AC] 280 - Victoria,[AC] 280 - Victoria -03c50001015c0502,[AC] 281 - Lyman,[AC] 281 - Lyman -03700001015d0502,[AC] 282 - Violet,[AC] 282 - Violet -04510001015e0502,[AC] 283 - Frank,[AC] 283 - Frank -041e0001015f0502,[AC] 284 - Chadder,[AC] 284 - Chadder -04b9000101600502,[AC] 285 - Merengue,[AC] 285 - Merengue -0461000101610502,[AC] 286 - Cube,[AC] 286 - Cube -04ff000101620502,[AC] 287 - Claudia,[AC] 287 - Claudia -0478000101630502,[AC] 288 - Curly,[AC] 288 - Curly -0469000101640502,[AC] 289 - Boomer,[AC] 289 - Boomer -04e3000101650502,[AC] 290 - Caroline,[AC] 290 - Caroline -023f000101660502,[AC] 291 - Sparro,[AC] 291 - Sparro -04c6000101670502,[AC] 292 - Baabara,[AC] 292 - Baabara -04fa000101680502,[AC] 293 - Rolf,[AC] 293 - Rolf -027e000101690502,[AC] 294 - Maple,[AC] 294 - Maple -02010001016a0502,[AC] 295 - Antonio,[AC] 295 - Antonio -03820001016b0502,[AC] 296 - Soleil,[AC] 296 - Soleil -044b0001016c0502,[AC] 297 - Apollo,[AC] 297 - Apollo -030f0001016d0502,[AC] 298 - Derwin,[AC] 298 - Derwin -04a00001016e0502,[AC] 299 - Francine,[AC] 299 - Francine -04a10001016f0502,[AC] 300 - Chrissy,[AC] 300 - Chrissy -0181030101700502,[AC] 301 - Isabelle,[AC] 301 - Isabelle -0190000101710502,[AC] 302 - Brewster,[AC] 302 - Brewster -01a5000101720502,[AC] 303 - Katrina,[AC] 303 - Katrina -0186030101750502,[AC] 306 - Tommy,[AC] 306 - Tommy -01a9000101760502,[AC] 307 - Gracie,[AC] 307 - Gracie -0197000101770502,[AC] 308 - Leilani,[AC] 308 - Leilani -018e010101780502,[AC] 309 - Resetti,[AC] 309 - Resetti -0185040101790502,[AC] 310 - Timmy,[AC] 310 - Timmy -01c10101017a0502,[AC] 311 - Lottie,[AC] 311 - Lottie -01b10101017b0502,[AC] 312 - Shrunk,[AC] 312 - Shrunk -01ab0001017c0502,[AC] 313 - Pave,[AC] 313 - Pave -01a20001017d0502,[AC] 314 - Gulliver,[AC] 314 - Gulliver -01a80101017e0502,[AC] 315 - Redd,[AC] 315 - Redd -01ac0001017f0502,[AC] 316 - Zipper,[AC] 316 - Zipper -02ea000101800502,[AC] 317 - Goldie,[AC] 317 - Goldie -0282000101810502,[AC] 318 - Stitches,[AC] 318 - Stitches -0215000101820502,[AC] 319 - Pinky,[AC] 319 - Pinky -03ec000101830502,[AC] 320 - Mott,[AC] 320 - Mott -030d000101840502,[AC] 321 - Mallary,[AC] 321 - Mallary -0390000101850502,[AC] 322 - Rocco,[AC] 322 - Rocco -0272000101860502,[AC] 323 - Katt,[AC] 323 - Katt -0380000101870502,[AC] 324 - Graham,[AC] 324 - Graham -03ac000101880502,[AC] 325 - Peaches,[AC] 325 - Peaches -0324000101890502,[AC] 326 - Dizzy,[AC] 326 - Dizzy -041d0001018a0502,[AC] 327 - Penelope,[AC] 327 - Penelope -036b0001018b0502,[AC] 328 - Boone,[AC] 328 - Boone -02a50001018c0502,[AC] 329 - Broffina,[AC] 329 - Broffina -03490001018d0502,[AC] 330 - Croque,[AC] 330 - Croque -035e0001018e0502,[AC] 331 - Pashmina,[AC] 331 - Pashmina -02fc0001018f0502,[AC] 332 - Shep,[AC] 332 - Shep -026f000101900502,[AC] 333 - Lolly,[AC] 333 - Lolly -02df000101910502,[AC] 334 - Erik,[AC] 334 - Erik -0495000101920502,[AC] 335 - Dotty,[AC] 335 - Dotty -044d000101930502,[AC] 336 - Pierce,[AC] 336 - Pierce -0436000101940502,[AC] 337 - Queenie,[AC] 337 - Queenie -0511000101950502,[AC] 338 - Fang,[AC] 338 - Fang -04d0000101960502,[AC] 339 - Fritta,[AC] 339 - Fritta -046b000101970502,[AC] 340 - Tex,[AC] 340 - Tex -03be000101980502,[AC] 341 - Melba,[AC] 341 - Melba -02ee000101990502,[AC] 342 - Bones,[AC] 342 - Bones -02030001019a0502,[AC] 343 - Anabelle,[AC] 343 - Anabelle -02710001019b0502,[AC] 344 - Rudy,[AC] 344 - Rudy -02b80001019c0502,[AC] 345 - Naomi,[AC] 345 - Naomi -036a0001019d0502,[AC] 346 - Peewee,[AC] 346 - Peewee -028e0001019e0502,[AC] 347 - Tammy,[AC] 347 - Tammy -02090001019f0502,[AC] 348 - Olaf,[AC] 348 - Olaf -047c000101a00502,[AC] 349 - Lucy,[AC] 349 - Lucy -03a7000101a10502,[AC] 350 - Elmer,[AC] 350 - Elmer -033e000101a20502,[AC] 351 - Puddles,[AC] 351 - Puddles -03ed000101a30502,[AC] 352 - Rory,[AC] 352 - Rory -03fe000101a40502,[AC] 353 - Elise,[AC] 353 - Elise -03d9000101a50502,[AC] 354 - Walt,[AC] 354 - Walt -04a7000101a60502,[AC] 355 - Mira,[AC] 355 - Mira -04d2000101a70502,[AC] 356 - Pietro,[AC] 356 - Pietro -045f000101a80502,[AC] 357 - Aurora,[AC] 357 - Aurora -03b0000101a90502,[AC] 358 - Papi,[AC] 358 - Papi -037f000101aa0502,[AC] 359 - Apple,[AC] 359 - Apple -0411000101ab0502,[AC] 360 - Rod,[AC] 360 - Rod -0264000101ac0502,[AC] 361 - Purrl,[AC] 361 - Purrl -04e5000101ad0502,[AC] 362 - Static,[AC] 362 - Static -0454000101ae0502,[AC] 363 - Celia,[AC] 363 - Celia -042b000101af0502,[AC] 364 - Zucker,[AC] 364 - Zucker -0483000101b00502,[AC] 365 - Peggy,[AC] 365 - Peggy -0339000101b10502,[AC] 366 - Ribbot,[AC] 366 - Ribbot -03ad000101b20502,[AC] 367 - Annalise,[AC] 367 - Annalise -0217000101b30502,[AC] 368 - Chow,[AC] 368 - Chow -03d7000101b40502,[AC] 369 - Sylvia,[AC] 369 - Sylvia -023d000101b50502,[AC] 370 - Jacques,[AC] 370 - Jacques -04e4000101b60502,[AC] 371 - Sally,[AC] 371 - Sally -049e000101b70502,[AC] 372 - Doc,[AC] 372 - Doc -030c000101b80502,[AC] 373 - Pompom,[AC] 373 - Pompom -04b2000101b90502,[AC] 374 - Tank,[AC] 374 - Tank -02a2000101ba0502,[AC] 375 - Becky,[AC] 375 - Becky -0415000101bb0502,[AC] 376 - Rizzo,[AC] 376 - Rizzo -03bf000101bc0502,[AC] 377 - Sydney,[AC] 377 - Sydney -028d000101bd0502,[AC] 378 - Barold,[AC] 378 - Barold -04e1000101be0502,[AC] 379 - Nibbles,[AC] 379 - Nibbles -0487000101bf0502,[AC] 380 - Kevin,[AC] 380 - Kevin -0316000101c00502,[AC] 381 - Gloria,[AC] 381 - Gloria -050c000101c10502,[AC] 382 - Lobo,[AC] 382 - Lobo -0399000101c20502,[AC] 383 - Hippeux,[AC] 383 - Hippeux -0327000101c30502,[AC] 384 - Margie,[AC] 384 - Margie -02ec000101c40502,[AC] 385 - Lucky,[AC] 385 - Lucky -025f000101c50502,[AC] 386 - Rosie,[AC] 386 - Rosie -04fb000101c60502,[AC] 387 - Rowan,[AC] 387 - Rowan -030a000101c70502,[AC] 388 - Maelle,[AC] 388 - Maelle -02d9000101c80502,[AC] 389 - Bruce,[AC] 389 - Bruce -04a3000101c90502,[AC] 390 - O_Hare,[AC] 390 - O_Hare -02ca000101ca0502,[AC] 391 - Gayle,[AC] 391 - Gayle -043c000101cb0502,[AC] 392 - Cranston,[AC] 392 - Cranston -033a000101cc0502,[AC] 393 - Frobert,[AC] 393 - Frobert -021d000101cd0502,[AC] 394 - Grizzly,[AC] 394 - Grizzly -04e8000101ce0502,[AC] 395 - Cally,[AC] 395 - Cally -03fb000101cf0502,[AC] 396 - Simon,[AC] 396 - Simon -046a000101d00502,[AC] 397 - Iggly,[AC] 397 - Iggly -024a000101d10502,[AC] 398 - Angus,[AC] 398 - Angus -0230000101d20502,[AC] 399 - Twiggy,[AC] 399 - Twiggy -022e000101d30502,[AC] 400 - Robin,[AC] 400 - Robin -0183020103a80502,401 - Tom Nook,401 - Tom Nook -0184050103a90502,402 - Timmy and Tommy,402 - Timmy and Tommy -0181040103aa0502,403 - Isabelle,403 - Isabelle -0a00000103ab0502,404 - Orville,404 - Orville -0a01000103ac0502,405 - Wilbur,405 - Wilbur -0192000103ad0502,406 - Blathers,406 - Blathers -0193000103ae0502,407 - Celeste,407 - Celeste -0188000103af0502,408 - Mabel,408 - Mabel -0187000103b00502,409 - Sable,409 - Sable -0189010103b10502,410 - Label,410 - Label -0182000103b20502,411 - K.K. Slider,411 - K.K. Slider -0a02000103b30502,412 - C.J. ,412 - C.J. -0a03000103b40502,413 - Flick,413 - Flick -0a04000103b50502,414 - Daisy Mae,414 - Daisy Mae -0194000103b60502,415 - Kicks,415 - Kicks -01a6000103b70502,416 - Saharah,416 - Saharah -0a05000103b80502,417 - Harvey,417 - Harvey -01a2000103b90502,418 - Gulliver,418 - Gulliver -0a06000103ba0502,419 - Wisp,419 - Wisp -01c1020103bb0502,420 - Lottie,420 - Lottie -0a07000103bc0502,421 - Niko,421 - Niko -0a08000103bd0502,422 - Wardell,422 - Wardell -0183030103be0502,423 - Tom Nook (Coat),423 - Tom Nook (Coat) -0181050103bf0502,424 - Isabelle (Sweater),424 - Isabelle (Sweater) -0a09000103c00502,425 - Sherb,425 - Sherb -0a0a000103c10502,426 - Megan,426 - Megan -0a0b000103c20502,427 - Dom,427 - Dom -0a0c000103c30502,428 - Audie ,428 - Audie -0a0d000103c40502,429 - Cyd,429 - Cyd -0a0e000103c50502,430 - Judy ,430 - Judy -0a0f000103c60502,431 - Raymond,431 - Raymond -0a10000103c70502,432 - Reneigh,432 - Reneigh -0a11000103c80502,433 - Sasha,433 - Sasha -0a12000103c90502,434 - Ione,434 - Ione -0a13000103ca0502,435 - Tiansheng,435 - Tiansheng -0a14000103cb0502,436 - Shino,436 - Shino -0a15000103cc0502,437 - Marlo,437 - Marlo -0a16000103cd0502,438 - Petri,438 - Petri -0a17000103ce0502,439 - Cephalobot,439 - Cephalobot -0a18000103cf0502,440 - Quinn,440 - Quinn -0a19000103d00502,441 - Chabwick,441 - Chabwick -0a1a000103d10502,442 - Zoe,442 - Zoe -0a1b000103d20502,443 - Ace,443 - Ace -0a1c000103d30502,444 - Rio,444 - Rio -0a1d000103d40502,445 - Frett,445 - Frett -0a1e000103d50502,446 - Azalea,446 - Azalea -0a1f000103d60502,447 - Roswell,447 - Roswell -0a20000103d70502,448 - Faith,448 - Faith -04d30101031b0502,[AC] XS3 - Etoile,[AC] XS3 - Etoile -032e0101031c0502,[AC] XS4 - Chai,[AC] XS4 - Chai -02e00101031d0502,[AC] XS5 - Chelsea,[AC] XS5 - Chelsea -04a80101031e0502,[AC] XS6 - Toby,[AC] XS6 - Toby -028a000102e90502,[AC] W03 - June,[AC] W03 - June -0232000102ea0502,[AC] W04 - Piper,[AC] W04 - Piper -0328000102eb0502,[AC] W05 - Paolo,[AC] W05 - Paolo -04b6000102ec0502,[AC] W06 - Hornsby,[AC] W06 - Hornsby -04c8000102ed0502,[AC] W07 - Stella,[AC] W07 - Stella -04fc000102ee0502,[AC] W08 - Tybalt,[AC] W08 - Tybalt -0343000102ef0502,[AC] W09 - Huck,[AC] W09 - Huck -04eb000102f00502,[AC] W10 - Sylvana,[AC] W10 - Sylvana -0481000102f10502,[AC] W11 - Boris,[AC] W11 - Boris -0468000102f20502,[AC] W12 - Wade,[AC] W12 - Wade -03d3000102f30502,[AC] W13 - Carrie,[AC] W13 - Carrie -0314000102f40502,[AC] W14 - Ketchup,[AC] W14 - Ketchup -03e8000102f50502,[AC] W15 - Rex,[AC] W15 - Rex -024d000102f60502,[AC] W16 - Stu,[AC] W16 - Stu -021c000102f70502,[AC] W17 - Ursala,[AC] W17 - Ursala -0238000102f80502,[AC] W18 - Jacob,[AC] W18 - Jacob -02f3000102f90502,[AC] W19 - Maddie,[AC] W19 - Maddie -0358000102fa0502,[AC] W20 - Billy,[AC] W20 - Billy -036e000102fb0502,[AC] W21 - Boyd,[AC] W21 - Boyd -0395000102fc0502,[AC] W22 - Bitty,[AC] W22 - Bitty -0482000102fd0502,[AC] W23 - Maggie,[AC] W23 - Maggie -0284000102fe0502,[AC] W24 - Murphy,[AC] W24 - Murphy -02a3000102ff0502,[AC] W25 - Plucky,[AC] W25 - Plucky -0438000103000502,[AC] W26 - Sandy,[AC] W26 - Sandy -049f000103010502,[AC] W27 - Claude,[AC] W27 - Claude -0347000103020502,[AC] W28 - Raddle,[AC] W28 - Raddle -043b000103030502,[AC] W29 - Julia,[AC] W29 - Julia -036d000103040502,[AC] W30 - Louie,[AC] W30 - Louie -02f4000103050502,[AC] W31 - Bea,[AC] W31 - Bea -0233000103060502,[AC] W32 - Admiral,[AC] W32 - Admiral -032a000103070502,[AC] W33 - Ellie,[AC] W33 - Ellie -02c5000103080502,[AC] W34 - Boots,[AC] W34 - Boots -0312000103090502,[AC] W35 - Weber,[AC] W35 - Weber -04140001030a0502,[AC] W36 - Candi,[AC] W36 - Candi -03ea0001030b0502,[AC] W37 - Leopold,[AC] W37 - Leopold -04b40001030c0502,[AC] W38 - Spike,[AC] W38 - Spike -04c90001030d0502,[AC] W39 - Cashmere,[AC] W39 - Cashmere -03410001030e0502,[AC] W40 - Tad,[AC] W40 - Tad -02b70001030f0502,[AC] W41 - Norma,[AC] W41 - Norma -03c0000103100502,[AC] W42 - Gonzo,[AC] W42 - Gonzo -0439000103110502,[AC] W43 - Sprocket,[AC] W43 - Sprocket -0206000103120502,[AC] W44 - Snooty,[AC] W44 - Snooty -0286000103130502,[AC] W45 - Olive,[AC] W45 - Olive -050f000103140502,[AC] W46 - Dobie,[AC] W46 - Dobie -044e000103150502,[AC] W47 - Buzz,[AC] W47 - Buzz -03ab000103160502,[AC] W48 - Cleo,[AC] W48 - Cleo -021f000103170502,[AC] W49 - Ike,[AC] W49 - Ike -04ea000103180502,[AC] W50 - Tasha,[AC] W50 - Tasha -018b000002460502,Cyrrus,Cyrrus -01960000024e0502,Kapp_n,Kapp_n -01940000024a0502,Kicks,Kicks -0193000002480502,Celeste,Celeste -0192000002470502,Blathers,Blathers -018d0000024c0502,Rover,Rover -018c000002430502,Digby,Digby -018a000002450502,Reese,Reese -01840000024d0502,Timmy & Tommy,Timmy & Tommy -01810000024b0502,Summertime Isabelle,Summertime Isabelle -01020100041a0902,Ganondorf - Tears of the Kingdom,加侬多夫 - 王国之泪 -0101000004190902,Zelda - Tears of the Kingdom,塞尔达 - 王国之泪 -0000000002390602,8-Bit Mario Modern Color,像素马力欧 - 现代配色 -00000003039bff02,Mario - Power Up Band,马力欧 - 能量手环 -000000030430ff02,Golden - Power Up Band,金色 - 能量手环 -00010003039cff02,Luigi - Power Up Band,路易吉 - 能量手环 -0003000000370102,Yoshi,耀西 -00030003039fff02,Yoshi - Power Up Band,耀西 - 能量手环 -0008ff00023b0702,Turbo Charge Donkey Kong,Turbo Charge Donkey Kong -00130003039eff02,Daisy - Power Up Band,黛西公主 - 能量手环 -0181000101d40502,[AC] CP1 - Isabelle,[AC] CP1 - Isabelle -0182000101d80502,[AC] CP2 - K.K Slider,[AC] CP2 - K.K Slider -025f000101d70502,[AC] AF2 - Rosie,[AC] AF2 - Rosie -05c0000003651302,Samus Aran,萨姆斯 阿兰 -05c1000003661302,Metroid,密特罗德 -05c4000004131302,E.M.M.I.,E.M.M.I. -09c0010102690e02,Mario - Soccer,Mario - Soccer -09c00201026a0e02,Mario - Baseball,Mario - Baseball -09c00301026b0e02,Mario - Tennis,Mario - Tennis -09c00401026c0e02,Mario - Golf,Mario - Golf -09c00501026d0e02,Mario - Horse Racing,Mario - Horse Racing -09c10101026e0e02,Luigi - Soccer,Luigi - Soccer -09c10201026f0e02,Luigi - Baseball,Luigi - Baseball -09c1030102700e02,Luigi - Tennis,Luigi - Tennis -09c1040102710e02,Luigi - Golf,Luigi - Golf -09c1050102720e02,Luigi - Horse Racing,Luigi - Horse Racing -09c2010102730e02,Peach - Soccer,Peach - Soccer -09c2020102740e02,Peach - Baseball,Peach - Baseball -09c2030102750e02,Peach - Tennis,Peach - Tennis -09c2040102760e02,Peach - Golf,Peach - Golf -09c2050102770e02,Peach - Horse Racing,Peach - Horse Racing -09c3010102780e02,Daisy - Soccer,Daisy - Soccer -09c3020102790e02,Daisy - Baseball,Daisy - Baseball -09c30301027a0e02,Daisy - Tennis,Daisy - Tennis -09c30401027b0e02,Daisy - Golf,Daisy - Golf -09c30501027c0e02,Daisy - Horse Racing,Daisy - Horse Racing -09c40101027d0e02,Yoshi - Soccer,Yoshi - Soccer -09c40201027e0e02,Yoshi - Baseball,Yoshi - Baseball -09c40301027f0e02,Yoshi - Tennis,Yoshi - Tennis -09c4040102800e02,Yoshi - Golf,Yoshi - Golf -09c4050102810e02,Yoshi - Horse Racing,oshi - Horse Racing -09c5010102820e02,Wario - Soccer,Wario - Soccer -09c5020102830e02,Wario - Baseball,Wario - Baseball -09c5030102840e02,Wario - Tennis,Wario - Tennis -09c5040102850e02,Wario - Golf,Wario - Golf -09c5050102860e02,Wario - Horse Racing,Wario - Horse Racing -09c6010102870e02,Waluigi - Soccer,Waluigi - Soccer -09c6020102880e02,Waluigi - Baseball,Waluigi - Baseball -09c6030102890e02,Waluigi - Tennis,Waluigi - Tennis -09c60401028a0e02,Waluigi - Golf,Waluigi - Golf -09c60501028b0e02,Waluigi - Horse Racing,Waluigi - Horse Racing -09c70101028c0e02,Donkey Kong - Soccer,Donkey Kong - Soccer -09c70201028d0e02,Donkey Kong - Baseball,Donkey Kong - Baseball -09c70301028e0e02,Donkey Kong - Tennis,Donkey Kong - Tennis -09c70401028f0e02,Donkey Kong - Golf,Donkey Kong - Golf -09c7050102900e02,Donkey Kong - Horse Racing,Donkey Kong - Horse Racing -09c8010102910e02,Diddy Kong - Soccer,Diddy Kong - Soccer -09c8020102920e02,Diddy Kong - Baseball,iddy Kong - Baseball -09c8030102930e02,Diddy Kong - Tennis,iddy Kong - Tennis -09c8040102940e02,Diddy Kong - Golf,Diddy Kong - Golf -09c8050102950e02,Diddy Kong - Horse Racing,Diddy Kong - Horse Racing -09c9010102960e02,Bowser - Soccer,Bowser - Soccer -09c9020102970e02,Bowser - Baseball,Bowser - Baseball -09c9030102980e02,Bowser - Tennis,Bowser - Tennis -09c9040102990e02,Bowser - Golf,Bowser - Golf -09c90501029a0e02,Bowser - Horse Racing,Bowser - Horse Racing -09ca0101029b0e02,Bowser Jr. - Soccer,Bowser Jr. - Soccer -09ca0201029c0e02,Bowser Jr. - Baseball,Bowser Jr. - Baseball -09ca0301029d0e02,Bowser Jr. - Tennis,Bowser Jr. - Tennis -09ca0401029e0e02,Bowser Jr. - Golf,Bowser Jr. - Golf -09ca0501029f0e02,Bowser Jr. - Horse Racing,Bowser Jr. - Horse Racing -09cb010102a00e02,Boo - Soccer,Boo - Soccer -09cb020102a10e02,Boo - Baseball,Boo - Baseball -09cb030102a20e02,Boo - Tennis,Boo - Tennis -09cb040102a30e02,Boo - Golf,Boo - Golf -09cb050102a40e02,Boo - Horse Racing,Boo - Horse Racing -09cc010102a50e02,Baby Mario - Soccer,Baby Mario - Soccer -09cc020102a60e02,Baby Mario - Baseball,Baby Mario - Baseball -09cc030102a70e02,Baby Mario - Tennis,Baby Mario - Tennis -09cc040102a80e02,Baby Mario - Golf,Baby Mario - Golf -09cc050102a90e02,Baby Mario - Horse Racing,Baby Mario - Horse Racing -09cd010102aa0e02,Baby Luigi - Soccer,Baby Luigi - Soccer -09cd020102ab0e02,Baby Luigi - Baseball,Baby Luigi - Baseball -09cd030102ac0e02,Baby Luigi - Tennis,Baby Luigi - Tennis -09cd040102ad0e02,Baby Luigi - Golf,Baby Luigi - Golf -09cd050102ae0e02,Baby Luigi - Horse Racing,aby Luigi - Horse Racing -09ce010102af0e02,Birdo - Soccer,Birdo - Soccer -09ce020102b00e02,Birdo - Baseball,Birdo - Baseball -09ce030102b10e02,Birdo - Tennis,Birdo - Tennis -09ce040102b20e02,Birdo - Golf,Birdo - Golf -09ce050102b30e02,Birdo - Horse Racing,Birdo - Horse Racing -09cf010102b40e02,Rosalina - Soccer,Rosalina - Soccer -09cf020102b50e02,Rosalina - Baseball,Rosalina - Baseball -09cf030102b60e02,Rosalina - Tennis,Rosalina - Tennis -09cf040102b70e02,Rosalina - Golf,Rosalina - Golf -09cf050102b80e02,Rosalina - Horse Racing,Rosalina - Horse Racing -09d0010102b90e02,Metal Mario - Soccer,Metal Mario - Soccer -09d0020102ba0e02,Metal Mario - Baseball,Metal Mario - Baseball -09d0030102bb0e02,Metal Mario - Tennis,Metal Mario - Tennis -09d0040102bc0e02,Metal Mario - Golf,Metal Mario - Golf -09d0050102bd0e02,Metal Mario - Horse Racing,Metal Mario - Horse Racing -09d1010102be0e02,Pink Gold Peach - Soccer,Pink Gold Peach - Soccer -09d1020102bf0e02,Pink Gold Peach - Baseball,Pink Gold Peach - Baseball -09d1030102c00e02,Pink Gold Peach - Tennis,Pink Gold Peach - Tennis -09d1040102c10e02,Pink Gold Peach - Golf,Pink Gold Peach - Golf -09d1050102c20e02,Pink Gold Peach - Horse Racing,Pink Gold Peach - Horse Racing -22410000041e0002,Pyra,焰 -22420000041f0002,Mythra,光 -22c00000003a0202,Chibi Robo,小机器人 -22430000043d1b02,Noah,诺亚 -22440000043e1b02,Mio,弥央 -3f000000042e0002,Sora,索拉 +0100000000040002,Link,林克 +01000000034b0902,Link - Ocarina of Time,林克 - 时之笛 +01000000034c0902,Link - Majora's Mask,林克 - 假面 +01000000034d0902,Link - Twilight Princess,林克 - 黄昏公主 +01000000034e0902,Link - Skyward Sword,林克 - 天空之剑 +01000000034f0902,8-Bit Link,像素林克 +0100000003530902,Link - Archer,林克 - 弓箭手 +0100000003540902,Link - Rider,林克 - 骑士 +01000000037c0002,Young Link,幼年林克 +0100000003990902,Link - Link's Awakening,林克 - 织梦岛 +0100010000160002,Toon Link,卡通林克 +0100010003500902,Toon Link - The Wind Waker,卡通林克 - 风之杖 +01010000000e0002,Zelda,塞尔达 +0101000003520902,Toon Zelda - The Wind Waker,塞尔达 - 风之杖 +0101000003560902,Zelda,塞尔达 +0101010000170002,Sheik,希克 +0101030004140902,Zelda & Loftwing,塞尔达&洛夫特飞鸟 +01020100001b0002,Ganondorf,盖侬多夫 +01030000024f0902,Midna & Wolf Link,米多娜 & 狼林克 +0105000003580902,Daruk,达尔克尔 +0106000003590902,Urbosa,乌尔波扎 +01070000035a0902,Mipha,米法 +01080000035b0902,Revali,力巴尔 +0140000003550902,Guardian,守护者 +01410000035c0902,Bokoblin,波克布林 +0100000004180902,Link - Tears of the Kingdom,林克 - 王国之泪 +35080000040f1802,Magnamalo,怨虎龙 +3509000004101802,Palico,随从艾露猫 +35090100042b1802,Palico,随从艾露猫 +350a000004111802,Palamute,随从牙猎犬 +350a0100042c1802,Palamute,随从牙猎犬 +350b0000042d1802,Malzeno,爵银龙 +3500010002e10f02,One-Eyed Rathalos and Rider - Male,独眼雄火龙与男骑士 +3500020002e20f02,One-Eyed Rathalos and Rider - Female,独眼雄火龙与女骑士 +3501000002e30f02,Nabiru,纳比露 +3502010002e40f02,Rathian and Cheval,雌火龙与修瓦尔 +3503010002e50f02,Barioth and Ayuria,冰牙龙与亚尤利娅 +3504010002e60f02,Qurupeco and Dan,彩鸟与丹前辈 +35050000040c0f02,Razewing Ratha,毁灭火龙 +35060000040d0f02,Ena,艾娜 +35070000040e0f02,Tsukino,月露 +38c0000003911602,Loot Goblin,藏宝哥布林 +0017000002680102,Boo,嘘嘘鬼 +0006000000150002,Bowser Jr.,酷霸王Jr. +00130000037a0002,Daisy,黛西公主 +0008000002640102,Donkey Kong,咚奇刚 +00010000000c0002,Luigi,路易吉 +0002000000010002,Peach,碧姬公主 +0004010000130002,Rosalina & Luma,罗莎塔&琪琪 +0014000002670102,Waluigi,瓦路易吉 +0003010200420302,Pink Yarn Yoshi,粉色毛线耀西 +0005000000140002,Bowser,酷霸王 +00090000000d0002,Diddy Kong,迪迪刚 +0015000003670102,Goomba,板栗仔 +0023000003680102,Koopa Troopa,诺库龟 +0000000000340102,Mario,马力欧 +0007000002630102,Wario,瓦力欧 +21000000000b0002,Marth,马尔斯 +2101000000180002,Ike,艾克 +2102000000290002,Lucina,露琪娜 +21030000002a0002,Robin,鲁弗莱 +2104000002520002,Roy,罗伊 +21050000025a0002,Corrin,神威 +2105010003630002,Corrin - Player 2,神威2 +2106000003601202,Alm,阿雷姆 +2107000003611202,Celica,赛莉卡 +21080000036f1202,Chrom,库洛姆 +2108000003880002,Chrom,库洛姆 +2109000003701202,Tiki,琪姬 +210b000003a50002,Byleth,贝雷丝 +0005000003730102,Bowser - Wedding,礼服酷霸王 +0000010000190002,Dr. Mario,马力欧医生 +0000000000000002,Mario,马力欧 +00070000001a0002,Wario,瓦力欧 +0009000002650102,Diddy Kong,迪迪刚 +0001000000350102,Luigi,路易吉 +00000000003c0102,Mario - Gold Edition,金马力欧 +0000000003710102,Mario - Wedding,礼服马力欧 +00000000003d0102,Mario - Silver Edition,银马力欧 +0002000003720102,Peach - Wedding,婚纱碧姬公主 +0005000000390102,Bowser,酷霸王 +3740000103741402,Super Mario Cereal,马力欧联名麦片 +0005ff00023a0702,Hammer Slam Bowser,Hammer Slam Bowser +0580000000050002,Fox,火狐 +3480000000310002,Mega Man,洛克人 +3200000000300002,Sonic,索尼克 +08000100025f0402,Inkling Girl - Lime Green,鱿鱼族女孩 - 青柠绿 +0600000000120002,Captain Falcon,飞隼队长 +0008000000030002,Donkey Kong,咚奇刚 +1f000000000a0002,Kirby,卡比 +3340000000320002,Pac-Man,吃豆人 +0004000002620102,Rosalina,罗莎塔 +05c0000000060002,Samus,萨姆斯 +000a000000380102,Toad,奇诺比奥 +0003000000020002,Yoshi,耀西 +06400100001e0002,Olimar,欧力玛 +06420000035f1102,Pikmin,皮克敏 +0188000002410502,Mabel,绢儿 +0194000100aa0502,[AC] 103 - Kicks,[AC] 103 - Kicks +019c000101730502,[AC] 304 - Phineas,[AC] 304 - Phineas +0180000000080002,Villager,村民 +04a2000102e80502,[AC] W02 - Hopkins,[AC] W02 - Hopkins +0282000101d60502,[AC] AF1 - Stitches,[AC] AF1 - Stitches +0181000100440502,[AC] 001 - Isabelle,[AC] 001 - Isabelle +01920001010d0502,[AC] 202 - Blathers,[AC] 202 - Blathers +0374010103190502,[AC] XS1 - Rilla,[AC] XS1 - Rilla +0003010200410302,Green Yarn Yoshi,绿色毛线耀西 +0003010200430302,Light Blue Yarn Yoshi,淡蓝毛线耀西 +0002000000360102,Peach,碧姬公主 +00800102035d0302,Poochy,波奇 +22400000002b0002,Shulk,修尔克 +08000100003e0402,Inkling Girl,鱿鱼族女孩 +0800010003690402,Inkling Girl - Neon Pink,鱿鱼族女孩 - 霓虹粉 +0800010003820002,Inkling,鱿鱼族 +0800010004150402,Inkling - Yellow,鱿鱼族 - 黄色 +08000200003f0402,Inkling Boy,鱿鱼族男孩 +0800020002600402,Inkling Boy - Purple,鱿鱼族男孩 - 紫色 +08000200036a0402,Inkling Boy - Neon Green,鱿鱼族男孩 - 霓虹绿 +0800030000400402,Inkling Squid,鱿鱼族鱿鱼形态 +0800030002610402,Inkling Squid - Orange,鱿鱼族鱿鱼形态 - 橙色 +08000300036b0402,Inkling Squid - Neon Purple,鱿鱼族鱿鱼形态 - 霓虹紫 +08010000025d0402,Callie,小拟 +08020000025e0402,Marie,小萤 +0803000003760402,Pearl,小姬 +0804000003770402,Marina,饭田 +08050100038e0402,Octoling Girl,章鱼族女孩 +08050200038f0402,Octoling Boy,章鱼族男孩 +08050200041b0402,Octoling - Blue,章鱼族 - 蓝色 +0805030003900402,Octoling Octopus,章鱼族章鱼形态 +0807000004330402,Shiver,莎莎 +0808000004340402,Frye,曼曼 +0809000004350402,Big Man,鬼福 +08060100041c0402,Smallfry,小鲑鱼 +00240000038d0002,Piranha Plant,吞食花 +00c00000037b0002,King K. Rool,库鲁鲁王 +01810000037d0002,Isabelle,西施惠 +05810000001c0002,Falco,弗克 +05840000037e0002,Wolf,沃鲁夫 +05c00100001d0002,Zero Suit Samus,零装甲萨姆斯 +05c20000037f0002,Ridley,利德雷 +05c3000003800002,Dark Samus,黑暗萨姆斯 +06c00000000f0002,Little Mac,小麦克 +0700000000070002,Wii Fit Trainer,Wii Fit教练 +0740000000100002,Pit,皮特 +0741000000200002,Dark Pit,黑暗皮特 +07420000001f0002,Palutena,帕露蒂娜 +07800000002d0002,Mr. Game & Watch,Mr. Game & Watch +07810000002e0002,R.O.B. - Famicom,机器人(日版) +0781000000330002,R.O.B. - NES,机器人(美版) +07820000002f0002,Duck Hunt,打猎 +078f000003810002,Ice Climbers,翻越冰山者 +07c0000000210002,Mii Brawler,Mii拳斗士 +07c0010000220002,Mii Swordfighter,Mii剑士 +07c0020000230002,Mii Gunner,Mii枪手 +0a400000041d0002,Min Min,面面 +1902000003830002,Ivysaur,妙娃草 +1906000000240002,Charizard,喷火龙 +1907000003840002,Squirtle,杰尼龟 +1919000000090002,Pikachu,皮卡丘 +1927000000260002,Jigglypuff,胖丁 +19960000023d0002,Mewtwo,超梦 +19ac000003850002,Pichu,皮丘 +1ac0000000110002,Lucario,路卡利欧 +1b92000000250002,Greninja,甲贺忍蛙 +1bd7000003860002,Incineroar,炽焰咆哮虎 +1d40000003870002,Pokemon Trainer,宝可梦训练师 +1f01000000270002,Meta Knight,梅塔骑士 +1f02000000280002,King Dedede,迪迪迪大王 +22800000002c0002,Ness,奈斯 +2281000002510002,Lucas,卢卡斯 +32400000025b0002,Bayonetta,贝优妮塔 +3240010003640002,Bayonetta - Player 2,贝优妮塔2 +33c0000004200002,Kazuya,一八 +3480000002580002,Mega Man - Gold Edition,黄金洛克人 +34c0000002530002,Ryu,隆 +34c1000003890002,Ken,肯 +3600000002590002,Cloud,克劳德 +3600010003620002,Cloud - Player 2,克劳德2 +3601000004210002,Sephiroth,萨菲罗斯 +3640000003a20002,Hero,勇者 +37800000038a0002,Snake,SNAKE +37c00000038b0002,Simon,西蒙 +37c10000038c0002,Richter,里希特 +3a00000003a10002,Joker,JOKER +3b40000003a30002,Banjo & Kazooie,阿邦&阿卡 +3c80000003a40002,Terry,特瑞 +3dc0000004220002,Steve,史蒂夫 +3dc1000004230002,Alex,艾利克斯 +3840000104241902,Yuga Ohdo,Yuga Ohdo +3841000104251902,Tatsuhisa “Luke” Kamijō,Tatsuhisa “Luke” Kamijō +3842000104261902,Gakuto Sōgetsu,Gakuto Sōgetsu +3843000104271902,Romin Kirishima,Romin Kirishima +3844000104281902,Roa Kirishima,Roa Kirishima +3845000104291902,Nail Saionji,Nail Saionji +38460001042a1902,Asana Mutsuba,Asana Mutsuba +0000030003a60102,Mario - Cat,猫猫马力欧 +0002010003a70102,Peach - Cat,猫猫碧姬公主 +0013000002660102,Daisy,黛西公主 +00030102023e0302,Mega Yarn Yoshi,毛线耀西 +1f02000002560c02,King Dedede,迪迪迪大王 +1f01000002550c02,Meta Knight,梅塔骑士 +1f03000002570c02,Waddle Dee,瓦多鲁迪 +1f00000002540c02,Kirby,卡比 +1f400000035e1002,Qbby,丘比 +35c0000002500a02,Shovel Knight,铲子骑士 +35c0000003920a02,Shovel Knight - Gold Edition,黄金铲子骑士 +35c10000036c0a02,Plague Knight,瘟疫骑士 +35c20000036d0a02,Specter Knight,苦痛骑士 +35c30000036e0a02,King Knight,国王骑士 +3380000003781402,Solaire of Astora,太阳骑士 +3800000103931702,Pawapuro,Pawapuro +3801000103941702,Ikari,Ikari +3802000103951702,Yabe,Yabe +3803000103961702,Hayakawa,Hayakawa +3804000103971702,Ganda,Ganda +3805000103981702,Daijobu,Daijobu +1d000001025c0d02,Shadow Mewtwo,Shadow Mewtwo +1d01000003750d02,Detective Pikachu,名侦探皮卡丘 +000a000303a0ff02,Toad - Power Up Band,奇诺比奥 - 能量手环 +01c1000002440502,Lottie,Lottie +0513000102e70502,[AC] W01 - Vivian,[AC] W01 - Vivian +02ea000101d50502,[AC] AF3 - Goldie,[AC] AF3 - Goldie +019d000100ac0502,[AC] 105 - Copper,[AC] 105 - Copper +0182010100460502,[AC] 003 - DJ KK,[AC] 003 - DJ KK +0193000101740502,[AC] 305 - Celeste,[AC] 305 - Celeste +019f000101110502,[AC] 206 - Pete,[AC] 206 - Pete +05c0000004121302,Samus - Metroid Dread,萨姆斯 - 生存恐惧 +028f0101031a0502,[AC] XS2 - Marty,[AC] XS2 - Marty +0000000002380602,8-Bit Mario Classic Color,像素马力欧 - 经典配色 +01810100023f0502,Isabelle,西施惠 +00020003039dff02,Peach - Power Up Band,碧姬公主 - 能量手环 +0183000002420502,Tom Nook,狸克狸克 +0182000002400502,K.K. Slider,K.K. +018e000002490502,Resetti,里赛特先生 +3480000003791502,Mega Man,洛克人 +0183000100450502,[AC] 002 - Tom Nook,[AC] 002 - Tom Nook +0187000100470502,[AC] 004 - Sable,[AC] 004 - Sable +0196000100480502,[AC] 005 - Kappn,[AC] 005 - Kappn +018e000100490502,[AC] 006 - Resetti,[AC] 006 - Resetti +01a30001004a0502,[AC] 007 - Joan,[AC] 007 - Joan +01850001004b0502,[AC] 008 - Timmy,[AC] 008 - Timmy +018c0001004c0502,[AC] 009 - Digby,[AC] 009 - Digby +01a40001004d0502,[AC] 010 - Pascal,[AC] 010 - Pascal +01910001004e0502,[AC] 011 - Harriet,[AC] 011 - Harriet +01a80001004f0502,[AC] 012 - Redd,[AC] 012 - Redd +01a6000100500502,[AC] 013 - Saharah,[AC] 013 - Saharah +01b5000100510502,[AC] 014 - Luna,[AC] 014 - Luna +01b0000100520502,[AC] 015 - Tortimer,[AC] 015 - Tortimer +01aa000100530502,[AC] 016 - Lyle,[AC] 016 - Lyle +01c1000100540502,[AC] 017 - Lottie,[AC] 017 - Lottie +025d000100550502,[AC] 018 - Bob,[AC] 018 - Bob +02d6000100560502,[AC] 019 - Fauna,[AC] 019 - Fauna +0216000100570502,[AC] 020 - Curt,[AC] 020 - Curt +02ef000100580502,[AC] 021 - Portia,[AC] 021 - Portia +04fe000100590502,[AC] 022 - Leonardo,[AC] 022 - Leonardo +02870001005a0502,[AC] 023 - Cheri,[AC] 023 - Cheri +05150001005b0502,[AC] 024 - Kyle,[AC] 024 - Kyle +03710001005c0502,[AC] 025 - Al,[AC] 025 - Al +04ba0001005d0502,[AC] 026 - Renee,[AC] 026 - Renee +02db0001005e0502,[AC] 027 - Lopez,[AC] 027 - Lopez +03450001005f0502,[AC] 028 - Jambette,[AC] 028 - Jambette +047a000100600502,[AC] 029 - Rasher,[AC] 029 - Rasher +049b000100610502,[AC] 030 - Tiffany,[AC] 030 - Tiffany +04ed000100620502,[AC] 031 - Sheldon,[AC] 031 - Sheldon +027d000100630502,[AC] 032 - Bluebear,[AC] 032 - Bluebear +0307000100640502,[AC] 033 - Bill,[AC] 033 - Bill +0261000100650502,[AC] 034 - Kiki,[AC] 034 - Kiki +0401000100660502,[AC] 035 - Deli,[AC] 035 - Deli +02c4000100670502,[AC] 036 - Alli,[AC] 036 - Alli +0266000100680502,[AC] 037 - Kabuki,[AC] 037 - Kabuki +02b1000100690502,[AC] 038 - Patty,[AC] 038 - Patty +02310001006a0502,[AC] 039 - Jitters,[AC] 039 - Jitters +03480001006b0502,[AC] 040 - Gigi,[AC] 040 - Gigi +03180001006c0502,[AC] 041 - Quillson,[AC] 041 - Quillson +03db0001006d0502,[AC] 042 - Marcie,[AC] 042 - Marcie +04650001006e0502,[AC] 043 - Puck,[AC] 043 - Puck +04000001006f0502,[AC] 044 - Shari,[AC] 044 - Shari +0429000100700502,[AC] 045 - Octavian,[AC] 045 - Octavian +03a9000100710502,[AC] 046 - Winnie,[AC] 046 - Winnie +02a4000100720502,[AC] 047 - Knox,[AC] 047 - Knox +0452000100730502,[AC] 048 - Sterling,[AC] 048 - Sterling +04a5000100740502,[AC] 049 - Bonbon,[AC] 049 - Bonbon +0263000100750502,[AC] 050 - Punchy,[AC] 050 - Punchy +0323000100760502,[AC] 051 - Opal,[AC] 051 - Opal +04ec000100770502,[AC] 052 - Poppy,[AC] 052 - Poppy +040d000100780502,[AC] 053 - Limberg,[AC] 053 - Limberg +030b000100790502,[AC] 054 - Deena,[AC] 054 - Deena +04970001007a0502,[AC] 055 - Snake,[AC] 055 - Snake +04fd0001007b0502,[AC] 056 - Bangle,[AC] 056 - Bangle +043d0001007c0502,[AC] 057 - Phil,[AC] 057 - Phil +02680001007d0502,[AC] 058 - Monique,[AC] 058 - Monique +02190001007e0502,[AC] 059 - Nate,[AC] 059 - Nate +04100001007f0502,[AC] 060 - Samson,[AC] 060 - Samson +021b000100800502,[AC] 061 - Tutu,[AC] 061 - Tutu +024f000100810502,[AC] 062 - T-Bone,[AC] 062 - T-Bone +04e6000100820502,[AC] 063 - Mint,[AC] 063 - Mint +0280000100830502,[AC] 064 - Pudge,[AC] 064 - Pudge +0235000100840502,[AC] 065 - Midge,[AC] 065 - Midge +035a000100850502,[AC] 066 - Gruff,[AC] 066 - Gruff +0384000100860502,[AC] 067 - Flurry,[AC] 067 - Flurry +03ae000100870502,[AC] 068 - Clyde,[AC] 068 - Clyde +040e000100880502,[AC] 069 - Bella,[AC] 069 - Bella +0394000100890502,[AC] 070 - Biff,[AC] 070 - Biff +03bc0001008a0502,[AC] 071 - Yuka,[AC] 071 - Yuka +03ee0001008b0502,[AC] 072 - Lionel,[AC] 072 - Lionel +046c0001008c0502,[AC] 073 - Flo,[AC] 073 - Flo +04800001008d0502,[AC] 074 - Cobb,[AC] 074 - Cobb +044c0001008e0502,[AC] 075 - Amelia,[AC] 075 - Amelia +033f0001008f0502,[AC] 076 - Jeramiah,[AC] 076 - Jeramiah +02fb000100900502,[AC] 077 - Cherry,[AC] 077 - Cherry +03a8000100910502,[AC] 078 - Roscoe,[AC] 078 - Roscoe +0479000100920502,[AC] 079 - Truffles,[AC] 079 - Truffles +03c6000100930502,[AC] 080 - Eugene,[AC] 080 - Eugene +04c7000100940502,[AC] 081 - Eunice,[AC] 081 - Eunice +0299000100950502,[AC] 082 - Goose,[AC] 082 - Goose +0208000100960502,[AC] 083 - Annalisa,[AC] 083 - Annalisa +02fa000100970502,[AC] 084 - Benjamin,[AC] 084 - Benjamin +0488000100980502,[AC] 085 - Pancetti,[AC] 085 - Pancetti +050b000100990502,[AC] 086 - Chief,[AC] 086 - Chief +04940001009a0502,[AC] 087 - Bunnie,[AC] 087 - Bunnie +03830001009b0502,[AC] 088 - Clay,[AC] 088 - Clay +02de0001009c0502,[AC] 089 - Diana,[AC] 089 - Diana +03290001009d0502,[AC] 090 - Axel,[AC] 090 - Axel +04d10001009e0502,[AC] 091 - Muffy,[AC] 091 - Muffy +034b0001009f0502,[AC] 092 - Henry,[AC] 092 - Henry +0393000100a00502,[AC] 093 - Bertha,[AC] 093 - Bertha +0200000100a10502,[AC] 094 - Cyrano,[AC] 094 - Cyrano +04dd000100a20502,[AC] 095 - Peanut,[AC] 095 - Peanut +04a6000100a30502,[AC] 096 - Cole,[AC] 096 - Cole +04cc000100a40502,[AC] 097 - Willow,[AC] 097 - Willow +0460000100a50502,[AC] 098 - Roald,[AC] 098 - Roald +0317000100a60502,[AC] 099 - Molly,[AC] 099 - Molly +02f0000100a70502,[AC] 100 - Walker,[AC] 100 - Walker +0182000100a80502,[AC] 101 - K.K. Slider,[AC] 101 - K.K. Slider +018a000100a90502,[AC] 102 - Reese,[AC] 102 - Reese +0189000100ab0502,[AC] 104 - Labelle,[AC] 104 - Labelle +019e000100ad0502,[AC] 106 - Booker,[AC] 106 - Booker +01b6000100ae0502,[AC] 107 - Katie,[AC] 107 - Katie +0186010100af0502,[AC] 108 - Tommy,[AC] 108 - Tommy +0195000100b00502,[AC] 109 - Porter,[AC] 109 - Porter +0198000100b10502,[AC] 110 - Leila,[AC] 110 - Leila +01b1000100b20502,[AC] 111 - Shrunk,[AC] 111 - Shrunk +018f000100b30502,[AC] 112 - Don Resetti,[AC] 112 - Don Resetti +0181010100b40502,[AC] 113 - Isabelle,[AC] 113 - Isabelle +01b3000100b50502,[AC] 114 - Blanca,[AC] 114 - Blanca +019b000100b60502,[AC] 115 - Nat,[AC] 115 - Nat +019a000100b70502,[AC] 116 - Chip,[AC] 116 - Chip +01ad000100b80502,[AC] 117 - Jack,[AC] 117 - Jack +027f000100b90502,[AC] 118 - Poncho,[AC] 118 - Poncho +026e000100ba0502,[AC] 119 - Felicity,[AC] 119 - Felicity +03c1000100bb0502,[AC] 120 - Ozzie,[AC] 120 - Ozzie +032d000100bc0502,[AC] 121 - Tia,[AC] 121 - Tia +023c000100bd0502,[AC] 122 - Lucha,[AC] 122 - Lucha +02dc000100be0502,[AC] 123 - Fuchsia,[AC] 123 - Fuchsia +0398000100bf0502,[AC] 124 - Harry,[AC] 124 - Harry +0464000100c00502,[AC] 125 - Gwen,[AC] 125 - Gwen +0251000100c10502,[AC] 126 - Coach,[AC] 126 - Coach +03d1000100c20502,[AC] 127 - Kitt,[AC] 127 - Kitt +026c000100c30502,[AC] 128 - Tom,[AC] 128 - Tom +02b2000100c40502,[AC] 129 - Tipper,[AC] 129 - Tipper +0344000100c50502,[AC] 130 - Prince,[AC] 130 - Prince +0309000100c60502,[AC] 131 - Pate,[AC] 131 - Pate +0283000100c70502,[AC] 132 - Vladimir,[AC] 132 - Vladimir +03a6000100c80502,[AC] 133 - Savannah,[AC] 133 - Savannah +035d000100c90502,[AC] 134 - Kidd,[AC] 134 - Kidd +0440000100ca0502,[AC] 135 - Phoebe,[AC] 135 - Phoebe +029b000100cb0502,[AC] 136 - Egbert,[AC] 136 - Egbert +02f2000100cc0502,[AC] 137 - Cookie,[AC] 137 - Cookie +02c9000100cd0502,[AC] 138 - Sly,[AC] 138 - Sly +04de000100ce0502,[AC] 139 - Blaire,[AC] 139 - Blaire +0450000100cf0502,[AC] 140 - Avery,[AC] 140 - Avery +03fa000100d00502,[AC] 141 - Nana,[AC] 141 - Nana +023e000100d10502,[AC] 142 - Peck,[AC] 142 - Peck +0260000100d20502,[AC] 143 - Olivia,[AC] 143 - Olivia +0369000100d30502,[AC] 144 - Cesar,[AC] 144 - Cesar +04a4000100d40502,[AC] 145 - Carmen,[AC] 145 - Carmen +0381000100d50502,[AC] 146 - Rodney,[AC] 146 - Rodney +0311000100d60502,[AC] 147 - Scoot,[AC] 147 - Scoot +050e000100d70502,[AC] 148 - Whitney,[AC] 148 - Whitney +0418000100d80502,[AC] 149 - Broccolo,[AC] 149 - Broccolo +0496000100d90502,[AC] 150 - Coco,[AC] 150 - Coco +021a000100da0502,[AC] 151 - Groucho,[AC] 151 - Groucho +04ce000100db0502,[AC] 152 - Wendy,[AC] 152 - Wendy +02c3000100dc0502,[AC] 153 - Alfonso,[AC] 153 - Alfonso +04b3000100dd0502,[AC] 154 - Rhonda,[AC] 154 - Rhonda +02eb000100de0502,[AC] 155 - Butch,[AC] 155 - Butch +0499000100df0502,[AC] 156 - Gabi,[AC] 156 - Gabi +041a000100e00502,[AC] 157 - Moose,[AC] 157 - Moose +04cf000100e10502,[AC] 158 - Timbra,[AC] 158 - Timbra +02d8000100e20502,[AC] 159 - Zell,[AC] 159 - Zell +028b000100e30502,[AC] 160 - Pekoe,[AC] 160 - Pekoe +0214000100e40502,[AC] 161 - Teddy,[AC] 161 - Teddy +03d2000100e50502,[AC] 162 - Mathilda,[AC] 162 - Mathilda +03aa000100e60502,[AC] 163 - Ed,[AC] 163 - Ed +0500000100e70502,[AC] 164 - Bianca,[AC] 164 - Bianca +04df000100e80502,[AC] 165 - Filbert,[AC] 165 - Filbert +026b000100e90502,[AC] 166 - Kitty,[AC] 166 - Kitty +02dd000100ea0502,[AC] 167 - Beau,[AC] 167 - Beau +0357000100eb0502,[AC] 168 - Nan,[AC] 168 - Nan +03e6000100ec0502,[AC] 169 - Bud,[AC] 169 - Bud +049d000100ed0502,[AC] 170 - Ruby,[AC] 170 - Ruby +029a000100ee0502,[AC] 171 - Benedict,[AC] 171 - Benedict +0489000100ef0502,[AC] 172 - Agnes,[AC] 172 - Agnes +03b1000100f00502,[AC] 173 - Julian,[AC] 173 - Julian +041b000100f10502,[AC] 174 - Bettina,[AC] 174 - Bettina +022d000100f20502,[AC] 175 - Jay,[AC] 175 - Jay +046d000100f30502,[AC] 176 - Sprinkle,[AC] 176 - Sprinkle +03ff000100f40502,[AC] 177 - Flip,[AC] 177 - Flip +047b000100f50502,[AC] 178 - Hugh,[AC] 178 - Hugh +0462000100f60502,[AC] 179 - Hopper,[AC] 179 - Hopper +04e0000100f70502,[AC] 180 - Pecan,[AC] 180 - Pecan +0310000100f80502,[AC] 181 - Drake,[AC] 181 - Drake +03bd000100f90502,[AC] 182 - Alice,[AC] 182 - Alice +033b000100fa0502,[AC] 183 - Camofrog,[AC] 183 - Camofrog +0416000100fb0502,[AC] 184 - Anicotti,[AC] 184 - Anicotti +0486000100fc0502,[AC] 185 - Chops,[AC] 185 - Chops +0220000100fd0502,[AC] 186 - Charlise,[AC] 186 - Charlise +0252000100fe0502,[AC] 187 - Vic,[AC] 187 - Vic +0270000100ff0502,[AC] 188 - Ankha,[AC] 188 - Ankha +033c000101000502,[AC] 189 - Drift,[AC] 189 - Drift +04c5000101010502,[AC] 190 - Vesta,[AC] 190 - Vesta +02f9000101020502,[AC] 191 - Marcel,[AC] 191 - Marcel +0202000101030502,[AC] 192 - Pango,[AC] 192 - Pango +0453000101040502,[AC] 193 - Keaton,[AC] 193 - Keaton +0437000101050502,[AC] 194 - Gladys,[AC] 194 - Gladys +0385000101060502,[AC] 195 - Hamphrey,[AC] 195 - Hamphrey +0510000101070502,[AC] 196 - Freya,[AC] 196 - Freya +0267000101080502,[AC] 197 - Kid Cat,[AC] 197 - Kid Cat +04e2000101090502,[AC] 198 - Agent S,[AC] 198 - Agent S +03250001010a0502,[AC] 199 - Big Top,[AC] 199 - Big Top +03720001010b0502,[AC] 200 - Rocket,[AC] 200 - Rocket +018d0001010c0502,[AC] 201 - Rover,[AC] 201 - Rover +01830101010e0502,[AC] 203 - Tom Nook,[AC] 203 - Tom Nook +01a00001010f0502,[AC] 204 - Pelly,[AC] 204 - Pelly +01a1000101100502,[AC] 205 - Phyllis,[AC] 205 - Phyllis +0188000101120502,[AC] 207 - Mabel,[AC] 207 - Mabel +01b4000101130502,[AC] 208 - Leif,[AC] 208 - Leif +01a7000101140502,[AC] 209 - Wendell,[AC] 209 - Wendell +018b000101150502,[AC] 210 - Cyrus,[AC] 210 - Cyrus +0199000101160502,[AC] 211 - Grams,[AC] 211 - Grams +0185020101170502,[AC] 212 - Timmy,[AC] 212 - Timmy +018c010101180502,[AC] 213 - Digby,[AC] 213 - Digby +018f010101190502,[AC] 214 - Don Resetti,[AC] 214 - Don Resetti +01810201011a0502,[AC] 215 - Isabelle,[AC] 215 - Isabelle +01ae0001011b0502,[AC] 216 - Franklin,[AC] 216 - Franklin +01af0001011c0502,[AC] 217 - Jingle,[AC] 217 - Jingle +03380001011d0502,[AC] 218 - Lily,[AC] 218 - Lily +022f0001011e0502,[AC] 219 - Anchovy,[AC] 219 - Anchovy +02690001011f0502,[AC] 220 - Tabby,[AC] 220 - Tabby +0281000101200502,[AC] 221 - Kody,[AC] 221 - Kody +0313000101210502,[AC] 222 - Miranda,[AC] 222 - Miranda +02c7000101220502,[AC] 223 - Del,[AC] 223 - Del +021e000101230502,[AC] 224 - Paula,[AC] 224 - Paula +02a6000101240502,[AC] 225 - Ken,[AC] 225 - Ken +025e000101250502,[AC] 226 - Mitzi,[AC] 226 - Mitzi +024b000101260502,[AC] 227 - Rodeo,[AC] 227 - Rodeo +0392000101270502,[AC] 228 - Bubbles,[AC] 228 - Bubbles +0342000101280502,[AC] 229 - Cousteau,[AC] 229 - Cousteau +035c000101290502,[AC] 230 - Velma,[AC] 230 - Velma +03e70001012a0502,[AC] 231 - Elvis,[AC] 231 - Elvis +03c40001012b0502,[AC] 232 - Canberra,[AC] 232 - Canberra +03af0001012c0502,[AC] 233 - Colton,[AC] 233 - Colton +042a0001012d0502,[AC] 234 - Marina,[AC] 234 - Marina +047d0001012e0502,[AC] 235 - Spork-Crackle,[AC] 235 - Spork-Crackle +030e0001012f0502,[AC] 236 - Freckles,[AC] 236 - Freckles +02d7000101300502,[AC] 237 - Bam,[AC] 237 - Bam +0463000101310502,[AC] 238 - Friga,[AC] 238 - Friga +04e7000101320502,[AC] 239 - Ricky,[AC] 239 - Ricky +02da000101330502,[AC] 240 - Deirdre,[AC] 240 - Deirdre +0373000101340502,[AC] 241 - Hans,[AC] 241 - Hans +0356000101350502,[AC] 242 - Chevre,[AC] 242 - Chevre +02cb000101360502,[AC] 243 - Drago,[AC] 243 - Drago +0262000101370502,[AC] 244 - Tangy,[AC] 244 - Tangy +02f8000101380502,[AC] 245 - Mac,[AC] 245 - Mac +0326000101390502,[AC] 246 - Eloise,[AC] 246 - Eloise +033d0001013a0502,[AC] 247 - Wart Jr.,[AC] 247 - Wart Jr. +04ef0001013b0502,[AC] 248 - Hazel,[AC] 248 - Hazel +02210001013c0502,[AC] 249 - Beardo,[AC] 249 - Beardo +029e0001013d0502,[AC] 250 - Ava,[AC] 250 - Ava +028c0001013e0502,[AC] 251 - Chester,[AC] 251 - Chester +026d0001013f0502,[AC] 252 - Merry,[AC] 252 - Merry +049c000101400502,[AC] 253 - Genji,[AC] 253 - Genji +041c000101410502,[AC] 254 - Greta,[AC] 254 - Greta +050d000101420502,[AC] 255 - Wolfgang,[AC] 255 - Wolfgang +034a000101430502,[AC] 256 - Diva,[AC] 256 - Diva +0222000101440502,[AC] 257 - Klaus,[AC] 257 - Klaus +02f1000101450502,[AC] 258 - Daisy,[AC] 258 - Daisy +026a000101460502,[AC] 259 - Stinky,[AC] 259 - Stinky +03fc000101470502,[AC] 260 - Tammi,[AC] 260 - Tammi +032c000101480502,[AC] 261 - Tucker,[AC] 261 - Tucker +043e000101490502,[AC] 262 - Blanche,[AC] 262 - Blanche +04980001014a0502,[AC] 263 - Gaston,[AC] 263 - Gaston +04ee0001014b0502,[AC] 264 - Marshal,[AC] 264 - Marshal +04850001014c0502,[AC] 265 - Gala,[AC] 265 - Gala +03080001014d0502,[AC] 266 - Joey,[AC] 266 - Joey +049a0001014e0502,[AC] 267 - Pippy,[AC] 267 - Pippy +03a40001014f0502,[AC] 268 - Buck,[AC] 268 - Buck +040f000101500502,[AC] 269 - Bree,[AC] 269 - Bree +03da000101510502,[AC] 270 - Rooney,[AC] 270 - Rooney +04cd000101520502,[AC] 271 - Curlos,[AC] 271 - Curlos +0514000101530502,[AC] 272 - Skye,[AC] 272 - Skye +0265000101540502,[AC] 273 - Moe,[AC] 273 - Moe +043f000101550502,[AC] 274 - Flora,[AC] 274 - Flora +037e000101560502,[AC] 275 - Hamlet,[AC] 275 - Hamlet +03d6000101570502,[AC] 276 - Astrid,[AC] 276 - Astrid +03fd000101580502,[AC] 277 - Monty,[AC] 277 - Monty +040c000101590502,[AC] 278 - Dora,[AC] 278 - Dora +02ed0001015a0502,[AC] 279 - Biskit,[AC] 279 - Biskit +03a50001015b0502,[AC] 280 - Victoria,[AC] 280 - Victoria +03c50001015c0502,[AC] 281 - Lyman,[AC] 281 - Lyman +03700001015d0502,[AC] 282 - Violet,[AC] 282 - Violet +04510001015e0502,[AC] 283 - Frank,[AC] 283 - Frank +041e0001015f0502,[AC] 284 - Chadder,[AC] 284 - Chadder +04b9000101600502,[AC] 285 - Merengue,[AC] 285 - Merengue +0461000101610502,[AC] 286 - Cube,[AC] 286 - Cube +04ff000101620502,[AC] 287 - Claudia,[AC] 287 - Claudia +0478000101630502,[AC] 288 - Curly,[AC] 288 - Curly +0469000101640502,[AC] 289 - Boomer,[AC] 289 - Boomer +04e3000101650502,[AC] 290 - Caroline,[AC] 290 - Caroline +023f000101660502,[AC] 291 - Sparro,[AC] 291 - Sparro +04c6000101670502,[AC] 292 - Baabara,[AC] 292 - Baabara +04fa000101680502,[AC] 293 - Rolf,[AC] 293 - Rolf +027e000101690502,[AC] 294 - Maple,[AC] 294 - Maple +02010001016a0502,[AC] 295 - Antonio,[AC] 295 - Antonio +03820001016b0502,[AC] 296 - Soleil,[AC] 296 - Soleil +044b0001016c0502,[AC] 297 - Apollo,[AC] 297 - Apollo +030f0001016d0502,[AC] 298 - Derwin,[AC] 298 - Derwin +04a00001016e0502,[AC] 299 - Francine,[AC] 299 - Francine +04a10001016f0502,[AC] 300 - Chrissy,[AC] 300 - Chrissy +0181030101700502,[AC] 301 - Isabelle,[AC] 301 - Isabelle +0190000101710502,[AC] 302 - Brewster,[AC] 302 - Brewster +01a5000101720502,[AC] 303 - Katrina,[AC] 303 - Katrina +0186030101750502,[AC] 306 - Tommy,[AC] 306 - Tommy +01a9000101760502,[AC] 307 - Gracie,[AC] 307 - Gracie +0197000101770502,[AC] 308 - Leilani,[AC] 308 - Leilani +018e010101780502,[AC] 309 - Resetti,[AC] 309 - Resetti +0185040101790502,[AC] 310 - Timmy,[AC] 310 - Timmy +01c10101017a0502,[AC] 311 - Lottie,[AC] 311 - Lottie +01b10101017b0502,[AC] 312 - Shrunk,[AC] 312 - Shrunk +01ab0001017c0502,[AC] 313 - Pave,[AC] 313 - Pave +01a20001017d0502,[AC] 314 - Gulliver,[AC] 314 - Gulliver +01a80101017e0502,[AC] 315 - Redd,[AC] 315 - Redd +01ac0001017f0502,[AC] 316 - Zipper,[AC] 316 - Zipper +02ea000101800502,[AC] 317 - Goldie,[AC] 317 - Goldie +0282000101810502,[AC] 318 - Stitches,[AC] 318 - Stitches +0215000101820502,[AC] 319 - Pinky,[AC] 319 - Pinky +03ec000101830502,[AC] 320 - Mott,[AC] 320 - Mott +030d000101840502,[AC] 321 - Mallary,[AC] 321 - Mallary +0390000101850502,[AC] 322 - Rocco,[AC] 322 - Rocco +0272000101860502,[AC] 323 - Katt,[AC] 323 - Katt +0380000101870502,[AC] 324 - Graham,[AC] 324 - Graham +03ac000101880502,[AC] 325 - Peaches,[AC] 325 - Peaches +0324000101890502,[AC] 326 - Dizzy,[AC] 326 - Dizzy +041d0001018a0502,[AC] 327 - Penelope,[AC] 327 - Penelope +036b0001018b0502,[AC] 328 - Boone,[AC] 328 - Boone +02a50001018c0502,[AC] 329 - Broffina,[AC] 329 - Broffina +03490001018d0502,[AC] 330 - Croque,[AC] 330 - Croque +035e0001018e0502,[AC] 331 - Pashmina,[AC] 331 - Pashmina +02fc0001018f0502,[AC] 332 - Shep,[AC] 332 - Shep +026f000101900502,[AC] 333 - Lolly,[AC] 333 - Lolly +02df000101910502,[AC] 334 - Erik,[AC] 334 - Erik +0495000101920502,[AC] 335 - Dotty,[AC] 335 - Dotty +044d000101930502,[AC] 336 - Pierce,[AC] 336 - Pierce +0436000101940502,[AC] 337 - Queenie,[AC] 337 - Queenie +0511000101950502,[AC] 338 - Fang,[AC] 338 - Fang +04d0000101960502,[AC] 339 - Fritta,[AC] 339 - Fritta +046b000101970502,[AC] 340 - Tex,[AC] 340 - Tex +03be000101980502,[AC] 341 - Melba,[AC] 341 - Melba +02ee000101990502,[AC] 342 - Bones,[AC] 342 - Bones +02030001019a0502,[AC] 343 - Anabelle,[AC] 343 - Anabelle +02710001019b0502,[AC] 344 - Rudy,[AC] 344 - Rudy +02b80001019c0502,[AC] 345 - Naomi,[AC] 345 - Naomi +036a0001019d0502,[AC] 346 - Peewee,[AC] 346 - Peewee +028e0001019e0502,[AC] 347 - Tammy,[AC] 347 - Tammy +02090001019f0502,[AC] 348 - Olaf,[AC] 348 - Olaf +047c000101a00502,[AC] 349 - Lucy,[AC] 349 - Lucy +03a7000101a10502,[AC] 350 - Elmer,[AC] 350 - Elmer +033e000101a20502,[AC] 351 - Puddles,[AC] 351 - Puddles +03ed000101a30502,[AC] 352 - Rory,[AC] 352 - Rory +03fe000101a40502,[AC] 353 - Elise,[AC] 353 - Elise +03d9000101a50502,[AC] 354 - Walt,[AC] 354 - Walt +04a7000101a60502,[AC] 355 - Mira,[AC] 355 - Mira +04d2000101a70502,[AC] 356 - Pietro,[AC] 356 - Pietro +045f000101a80502,[AC] 357 - Aurora,[AC] 357 - Aurora +03b0000101a90502,[AC] 358 - Papi,[AC] 358 - Papi +037f000101aa0502,[AC] 359 - Apple,[AC] 359 - Apple +0411000101ab0502,[AC] 360 - Rod,[AC] 360 - Rod +0264000101ac0502,[AC] 361 - Purrl,[AC] 361 - Purrl +04e5000101ad0502,[AC] 362 - Static,[AC] 362 - Static +0454000101ae0502,[AC] 363 - Celia,[AC] 363 - Celia +042b000101af0502,[AC] 364 - Zucker,[AC] 364 - Zucker +0483000101b00502,[AC] 365 - Peggy,[AC] 365 - Peggy +0339000101b10502,[AC] 366 - Ribbot,[AC] 366 - Ribbot +03ad000101b20502,[AC] 367 - Annalise,[AC] 367 - Annalise +0217000101b30502,[AC] 368 - Chow,[AC] 368 - Chow +03d7000101b40502,[AC] 369 - Sylvia,[AC] 369 - Sylvia +023d000101b50502,[AC] 370 - Jacques,[AC] 370 - Jacques +04e4000101b60502,[AC] 371 - Sally,[AC] 371 - Sally +049e000101b70502,[AC] 372 - Doc,[AC] 372 - Doc +030c000101b80502,[AC] 373 - Pompom,[AC] 373 - Pompom +04b2000101b90502,[AC] 374 - Tank,[AC] 374 - Tank +02a2000101ba0502,[AC] 375 - Becky,[AC] 375 - Becky +0415000101bb0502,[AC] 376 - Rizzo,[AC] 376 - Rizzo +03bf000101bc0502,[AC] 377 - Sydney,[AC] 377 - Sydney +028d000101bd0502,[AC] 378 - Barold,[AC] 378 - Barold +04e1000101be0502,[AC] 379 - Nibbles,[AC] 379 - Nibbles +0487000101bf0502,[AC] 380 - Kevin,[AC] 380 - Kevin +0316000101c00502,[AC] 381 - Gloria,[AC] 381 - Gloria +050c000101c10502,[AC] 382 - Lobo,[AC] 382 - Lobo +0399000101c20502,[AC] 383 - Hippeux,[AC] 383 - Hippeux +0327000101c30502,[AC] 384 - Margie,[AC] 384 - Margie +02ec000101c40502,[AC] 385 - Lucky,[AC] 385 - Lucky +025f000101c50502,[AC] 386 - Rosie,[AC] 386 - Rosie +04fb000101c60502,[AC] 387 - Rowan,[AC] 387 - Rowan +030a000101c70502,[AC] 388 - Maelle,[AC] 388 - Maelle +02d9000101c80502,[AC] 389 - Bruce,[AC] 389 - Bruce +04a3000101c90502,[AC] 390 - O_Hare,[AC] 390 - O_Hare +02ca000101ca0502,[AC] 391 - Gayle,[AC] 391 - Gayle +043c000101cb0502,[AC] 392 - Cranston,[AC] 392 - Cranston +033a000101cc0502,[AC] 393 - Frobert,[AC] 393 - Frobert +021d000101cd0502,[AC] 394 - Grizzly,[AC] 394 - Grizzly +04e8000101ce0502,[AC] 395 - Cally,[AC] 395 - Cally +03fb000101cf0502,[AC] 396 - Simon,[AC] 396 - Simon +046a000101d00502,[AC] 397 - Iggly,[AC] 397 - Iggly +024a000101d10502,[AC] 398 - Angus,[AC] 398 - Angus +0230000101d20502,[AC] 399 - Twiggy,[AC] 399 - Twiggy +022e000101d30502,[AC] 400 - Robin,[AC] 400 - Robin +0183020103a80502,401 - Tom Nook,401 - Tom Nook +0184050103a90502,402 - Timmy and Tommy,402 - Timmy and Tommy +0181040103aa0502,403 - Isabelle,403 - Isabelle +0a00000103ab0502,404 - Orville,404 - Orville +0a01000103ac0502,405 - Wilbur,405 - Wilbur +0192000103ad0502,406 - Blathers,406 - Blathers +0193000103ae0502,407 - Celeste,407 - Celeste +0188000103af0502,408 - Mabel,408 - Mabel +0187000103b00502,409 - Sable,409 - Sable +0189010103b10502,410 - Label,410 - Label +0182000103b20502,411 - K.K. Slider,411 - K.K. Slider +0a02000103b30502,412 - C.J. ,412 - C.J. +0a03000103b40502,413 - Flick,413 - Flick +0a04000103b50502,414 - Daisy Mae,414 - Daisy Mae +0194000103b60502,415 - Kicks,415 - Kicks +01a6000103b70502,416 - Saharah,416 - Saharah +0a05000103b80502,417 - Harvey,417 - Harvey +01a2000103b90502,418 - Gulliver,418 - Gulliver +0a06000103ba0502,419 - Wisp,419 - Wisp +01c1020103bb0502,420 - Lottie,420 - Lottie +0a07000103bc0502,421 - Niko,421 - Niko +0a08000103bd0502,422 - Wardell,422 - Wardell +0183030103be0502,423 - Tom Nook (Coat),423 - Tom Nook (Coat) +0181050103bf0502,424 - Isabelle (Sweater),424 - Isabelle (Sweater) +0a09000103c00502,425 - Sherb,425 - Sherb +0a0a000103c10502,426 - Megan,426 - Megan +0a0b000103c20502,427 - Dom,427 - Dom +0a0c000103c30502,428 - Audie ,428 - Audie +0a0d000103c40502,429 - Cyd,429 - Cyd +0a0e000103c50502,430 - Judy ,430 - Judy +0a0f000103c60502,431 - Raymond,431 - Raymond +0a10000103c70502,432 - Reneigh,432 - Reneigh +0a11000103c80502,433 - Sasha,433 - Sasha +0a12000103c90502,434 - Ione,434 - Ione +0a13000103ca0502,435 - Tiansheng,435 - Tiansheng +0a14000103cb0502,436 - Shino,436 - Shino +0a15000103cc0502,437 - Marlo,437 - Marlo +0a16000103cd0502,438 - Petri,438 - Petri +0a17000103ce0502,439 - Cephalobot,439 - Cephalobot +0a18000103cf0502,440 - Quinn,440 - Quinn +0a19000103d00502,441 - Chabwick,441 - Chabwick +0a1a000103d10502,442 - Zoe,442 - Zoe +0a1b000103d20502,443 - Ace,443 - Ace +0a1c000103d30502,444 - Rio,444 - Rio +0a1d000103d40502,445 - Frett,445 - Frett +0a1e000103d50502,446 - Azalea,446 - Azalea +0a1f000103d60502,447 - Roswell,447 - Roswell +0a20000103d70502,448 - Faith,448 - Faith +04d30101031b0502,[AC] XS3 - Etoile,[AC] XS3 - Etoile +032e0101031c0502,[AC] XS4 - Chai,[AC] XS4 - Chai +02e00101031d0502,[AC] XS5 - Chelsea,[AC] XS5 - Chelsea +04a80101031e0502,[AC] XS6 - Toby,[AC] XS6 - Toby +028a000102e90502,[AC] W03 - June,[AC] W03 - June +0232000102ea0502,[AC] W04 - Piper,[AC] W04 - Piper +0328000102eb0502,[AC] W05 - Paolo,[AC] W05 - Paolo +04b6000102ec0502,[AC] W06 - Hornsby,[AC] W06 - Hornsby +04c8000102ed0502,[AC] W07 - Stella,[AC] W07 - Stella +04fc000102ee0502,[AC] W08 - Tybalt,[AC] W08 - Tybalt +0343000102ef0502,[AC] W09 - Huck,[AC] W09 - Huck +04eb000102f00502,[AC] W10 - Sylvana,[AC] W10 - Sylvana +0481000102f10502,[AC] W11 - Boris,[AC] W11 - Boris +0468000102f20502,[AC] W12 - Wade,[AC] W12 - Wade +03d3000102f30502,[AC] W13 - Carrie,[AC] W13 - Carrie +0314000102f40502,[AC] W14 - Ketchup,[AC] W14 - Ketchup +03e8000102f50502,[AC] W15 - Rex,[AC] W15 - Rex +024d000102f60502,[AC] W16 - Stu,[AC] W16 - Stu +021c000102f70502,[AC] W17 - Ursala,[AC] W17 - Ursala +0238000102f80502,[AC] W18 - Jacob,[AC] W18 - Jacob +02f3000102f90502,[AC] W19 - Maddie,[AC] W19 - Maddie +0358000102fa0502,[AC] W20 - Billy,[AC] W20 - Billy +036e000102fb0502,[AC] W21 - Boyd,[AC] W21 - Boyd +0395000102fc0502,[AC] W22 - Bitty,[AC] W22 - Bitty +0482000102fd0502,[AC] W23 - Maggie,[AC] W23 - Maggie +0284000102fe0502,[AC] W24 - Murphy,[AC] W24 - Murphy +02a3000102ff0502,[AC] W25 - Plucky,[AC] W25 - Plucky +0438000103000502,[AC] W26 - Sandy,[AC] W26 - Sandy +049f000103010502,[AC] W27 - Claude,[AC] W27 - Claude +0347000103020502,[AC] W28 - Raddle,[AC] W28 - Raddle +043b000103030502,[AC] W29 - Julia,[AC] W29 - Julia +036d000103040502,[AC] W30 - Louie,[AC] W30 - Louie +02f4000103050502,[AC] W31 - Bea,[AC] W31 - Bea +0233000103060502,[AC] W32 - Admiral,[AC] W32 - Admiral +032a000103070502,[AC] W33 - Ellie,[AC] W33 - Ellie +02c5000103080502,[AC] W34 - Boots,[AC] W34 - Boots +0312000103090502,[AC] W35 - Weber,[AC] W35 - Weber +04140001030a0502,[AC] W36 - Candi,[AC] W36 - Candi +03ea0001030b0502,[AC] W37 - Leopold,[AC] W37 - Leopold +04b40001030c0502,[AC] W38 - Spike,[AC] W38 - Spike +04c90001030d0502,[AC] W39 - Cashmere,[AC] W39 - Cashmere +03410001030e0502,[AC] W40 - Tad,[AC] W40 - Tad +02b70001030f0502,[AC] W41 - Norma,[AC] W41 - Norma +03c0000103100502,[AC] W42 - Gonzo,[AC] W42 - Gonzo +0439000103110502,[AC] W43 - Sprocket,[AC] W43 - Sprocket +0206000103120502,[AC] W44 - Snooty,[AC] W44 - Snooty +0286000103130502,[AC] W45 - Olive,[AC] W45 - Olive +050f000103140502,[AC] W46 - Dobie,[AC] W46 - Dobie +044e000103150502,[AC] W47 - Buzz,[AC] W47 - Buzz +03ab000103160502,[AC] W48 - Cleo,[AC] W48 - Cleo +021f000103170502,[AC] W49 - Ike,[AC] W49 - Ike +04ea000103180502,[AC] W50 - Tasha,[AC] W50 - Tasha +018b000002460502,Cyrrus,Cyrrus +01960000024e0502,Kapp_n,Kapp_n +01940000024a0502,Kicks,Kicks +0193000002480502,Celeste,Celeste +0192000002470502,Blathers,Blathers +018d0000024c0502,Rover,Rover +018c000002430502,Digby,Digby +018a000002450502,Reese,Reese +01840000024d0502,Timmy & Tommy,Timmy & Tommy +01810000024b0502,Summertime Isabelle,Summertime Isabelle +01020100041a0902,Ganondorf - Tears of the Kingdom,加侬多夫 - 王国之泪 +0101000004190902,Zelda - Tears of the Kingdom,塞尔达 - 王国之泪 +0000000002390602,8-Bit Mario Modern Color,像素马力欧 - 现代配色 +00000003039bff02,Mario - Power Up Band,马力欧 - 能量手环 +000000030430ff02,Golden - Power Up Band,金色 - 能量手环 +00010003039cff02,Luigi - Power Up Band,路易吉 - 能量手环 +0003000000370102,Yoshi,耀西 +00030003039fff02,Yoshi - Power Up Band,耀西 - 能量手环 +0008ff00023b0702,Turbo Charge Donkey Kong,Turbo Charge Donkey Kong +00130003039eff02,Daisy - Power Up Band,黛西公主 - 能量手环 +0181000101d40502,[AC] CP1 - Isabelle,[AC] CP1 - Isabelle +0182000101d80502,[AC] CP2 - K.K Slider,[AC] CP2 - K.K Slider +025f000101d70502,[AC] AF2 - Rosie,[AC] AF2 - Rosie +05c0000003651302,Samus Aran,萨姆斯 阿兰 +05c1000003661302,Metroid,密特罗德 +05c4000004131302,E.M.M.I.,E.M.M.I. +09c0010102690e02,Mario - Soccer,Mario - Soccer +09c00201026a0e02,Mario - Baseball,Mario - Baseball +09c00301026b0e02,Mario - Tennis,Mario - Tennis +09c00401026c0e02,Mario - Golf,Mario - Golf +09c00501026d0e02,Mario - Horse Racing,Mario - Horse Racing +09c10101026e0e02,Luigi - Soccer,Luigi - Soccer +09c10201026f0e02,Luigi - Baseball,Luigi - Baseball +09c1030102700e02,Luigi - Tennis,Luigi - Tennis +09c1040102710e02,Luigi - Golf,Luigi - Golf +09c1050102720e02,Luigi - Horse Racing,Luigi - Horse Racing +09c2010102730e02,Peach - Soccer,Peach - Soccer +09c2020102740e02,Peach - Baseball,Peach - Baseball +09c2030102750e02,Peach - Tennis,Peach - Tennis +09c2040102760e02,Peach - Golf,Peach - Golf +09c2050102770e02,Peach - Horse Racing,Peach - Horse Racing +09c3010102780e02,Daisy - Soccer,Daisy - Soccer +09c3020102790e02,Daisy - Baseball,Daisy - Baseball +09c30301027a0e02,Daisy - Tennis,Daisy - Tennis +09c30401027b0e02,Daisy - Golf,Daisy - Golf +09c30501027c0e02,Daisy - Horse Racing,Daisy - Horse Racing +09c40101027d0e02,Yoshi - Soccer,Yoshi - Soccer +09c40201027e0e02,Yoshi - Baseball,Yoshi - Baseball +09c40301027f0e02,Yoshi - Tennis,Yoshi - Tennis +09c4040102800e02,Yoshi - Golf,Yoshi - Golf +09c4050102810e02,Yoshi - Horse Racing,oshi - Horse Racing +09c5010102820e02,Wario - Soccer,Wario - Soccer +09c5020102830e02,Wario - Baseball,Wario - Baseball +09c5030102840e02,Wario - Tennis,Wario - Tennis +09c5040102850e02,Wario - Golf,Wario - Golf +09c5050102860e02,Wario - Horse Racing,Wario - Horse Racing +09c6010102870e02,Waluigi - Soccer,Waluigi - Soccer +09c6020102880e02,Waluigi - Baseball,Waluigi - Baseball +09c6030102890e02,Waluigi - Tennis,Waluigi - Tennis +09c60401028a0e02,Waluigi - Golf,Waluigi - Golf +09c60501028b0e02,Waluigi - Horse Racing,Waluigi - Horse Racing +09c70101028c0e02,Donkey Kong - Soccer,Donkey Kong - Soccer +09c70201028d0e02,Donkey Kong - Baseball,Donkey Kong - Baseball +09c70301028e0e02,Donkey Kong - Tennis,Donkey Kong - Tennis +09c70401028f0e02,Donkey Kong - Golf,Donkey Kong - Golf +09c7050102900e02,Donkey Kong - Horse Racing,Donkey Kong - Horse Racing +09c8010102910e02,Diddy Kong - Soccer,Diddy Kong - Soccer +09c8020102920e02,Diddy Kong - Baseball,iddy Kong - Baseball +09c8030102930e02,Diddy Kong - Tennis,iddy Kong - Tennis +09c8040102940e02,Diddy Kong - Golf,Diddy Kong - Golf +09c8050102950e02,Diddy Kong - Horse Racing,Diddy Kong - Horse Racing +09c9010102960e02,Bowser - Soccer,Bowser - Soccer +09c9020102970e02,Bowser - Baseball,Bowser - Baseball +09c9030102980e02,Bowser - Tennis,Bowser - Tennis +09c9040102990e02,Bowser - Golf,Bowser - Golf +09c90501029a0e02,Bowser - Horse Racing,Bowser - Horse Racing +09ca0101029b0e02,Bowser Jr. - Soccer,Bowser Jr. - Soccer +09ca0201029c0e02,Bowser Jr. - Baseball,Bowser Jr. - Baseball +09ca0301029d0e02,Bowser Jr. - Tennis,Bowser Jr. - Tennis +09ca0401029e0e02,Bowser Jr. - Golf,Bowser Jr. - Golf +09ca0501029f0e02,Bowser Jr. - Horse Racing,Bowser Jr. - Horse Racing +09cb010102a00e02,Boo - Soccer,Boo - Soccer +09cb020102a10e02,Boo - Baseball,Boo - Baseball +09cb030102a20e02,Boo - Tennis,Boo - Tennis +09cb040102a30e02,Boo - Golf,Boo - Golf +09cb050102a40e02,Boo - Horse Racing,Boo - Horse Racing +09cc010102a50e02,Baby Mario - Soccer,Baby Mario - Soccer +09cc020102a60e02,Baby Mario - Baseball,Baby Mario - Baseball +09cc030102a70e02,Baby Mario - Tennis,Baby Mario - Tennis +09cc040102a80e02,Baby Mario - Golf,Baby Mario - Golf +09cc050102a90e02,Baby Mario - Horse Racing,Baby Mario - Horse Racing +09cd010102aa0e02,Baby Luigi - Soccer,Baby Luigi - Soccer +09cd020102ab0e02,Baby Luigi - Baseball,Baby Luigi - Baseball +09cd030102ac0e02,Baby Luigi - Tennis,Baby Luigi - Tennis +09cd040102ad0e02,Baby Luigi - Golf,Baby Luigi - Golf +09cd050102ae0e02,Baby Luigi - Horse Racing,aby Luigi - Horse Racing +09ce010102af0e02,Birdo - Soccer,Birdo - Soccer +09ce020102b00e02,Birdo - Baseball,Birdo - Baseball +09ce030102b10e02,Birdo - Tennis,Birdo - Tennis +09ce040102b20e02,Birdo - Golf,Birdo - Golf +09ce050102b30e02,Birdo - Horse Racing,Birdo - Horse Racing +09cf010102b40e02,Rosalina - Soccer,Rosalina - Soccer +09cf020102b50e02,Rosalina - Baseball,Rosalina - Baseball +09cf030102b60e02,Rosalina - Tennis,Rosalina - Tennis +09cf040102b70e02,Rosalina - Golf,Rosalina - Golf +09cf050102b80e02,Rosalina - Horse Racing,Rosalina - Horse Racing +09d0010102b90e02,Metal Mario - Soccer,Metal Mario - Soccer +09d0020102ba0e02,Metal Mario - Baseball,Metal Mario - Baseball +09d0030102bb0e02,Metal Mario - Tennis,Metal Mario - Tennis +09d0040102bc0e02,Metal Mario - Golf,Metal Mario - Golf +09d0050102bd0e02,Metal Mario - Horse Racing,Metal Mario - Horse Racing +09d1010102be0e02,Pink Gold Peach - Soccer,Pink Gold Peach - Soccer +09d1020102bf0e02,Pink Gold Peach - Baseball,Pink Gold Peach - Baseball +09d1030102c00e02,Pink Gold Peach - Tennis,Pink Gold Peach - Tennis +09d1040102c10e02,Pink Gold Peach - Golf,Pink Gold Peach - Golf +09d1050102c20e02,Pink Gold Peach - Horse Racing,Pink Gold Peach - Horse Racing +22410000041e0002,Pyra,焰 +22420000041f0002,Mythra,光 +22c00000003a0202,Chibi Robo,小机器人 +22430000043d1b02,Noah,诺亚 +22440000043e1b02,Mio,弥央 +3f000000042e0002,Sora,索拉 diff --git a/fw/data/amiidb_link.csv b/fw/data/amiidb_link.csv index 0b772de6..65b3ffba 100644 --- a/fw/data/amiidb_link.csv +++ b/fw/data/amiidb_link.csv @@ -1,1229 +1,1228 @@ -,,,,,,,,,,,, -1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,,,,,,,,,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia -1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,,,,,,,,,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela -1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,,,,,,,,,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante -1,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb,黄昏剑/卢比/宝石/星星碎片炸药桶,,,,,,,,,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba -1,01020100041a0902,Gerudo-King Fabric,沼气之枪/滑翔伞皮肤布料,,,,,,,,,Tessuto del Re Gerudo -1,0140000003550902,Dragonbone Boko related gear/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,,,,,,,,,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela -1,0100000000040002,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo -1,0100000003530902,Falcon Bow/Paraglider Skin Material/Fish & Meat/Knight's & Royal Bow/Various Arrows,游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭,,,,,,,,,Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce -1,0100000003990902,Dream Weaver Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce -1,01000000034c0902,Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom,鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇,,,,,,,,,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi -1,01000000034b0902,Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat,时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉,,,,,,,,,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne -1,0100000003540902,Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom,马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇,,,,,,,,,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi -1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,,,,,,,,,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia -1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,,,,,,,,,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi -1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo -1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,,,,,,,,,Carne/Tessuto della Paravela -1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,,,,,,,,,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce -1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,,,,,,,,,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante -1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,,,,,,,,,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi -1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce -1,0100010003500902,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce -1,0101000003520902,Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,,,,,,,,,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne -1,01000000037c0002,Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce -1,01010000000e0002,Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -1,0101000003560902,Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -1,0101030004140902,Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -1,0101000004190902,Princess Zelda Fabric,塞尔达公主滑翔伞布料,,,,,,,,,Tessuto della Principessa Zelda -2,0101030004140902,,随时随地传送,,,,,,,,, -3,01020100001b0002,,暂无简介,,,,,,,,, -3,01030000024f0902,,暂无简介,,,,,,,,, -3,0101010000170002,,暂无简介,,,,,,,,, -3,0100010000160002,,暂无简介,,,,,,,,, -3,01000000037c0002,,暂无简介,,,,,,,,, -3,01010000000e0002,,暂无简介,,,,,,,,, -4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,,,,,,,,,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia -4,01410000035c0902,Champion's Tunic Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,,,,,,,,,Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi -4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,,,,,,,,,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante -4,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel,黄昏剑/卢比/宝石/星星碎片炸药桶,,,,,,,,,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba -4,0140000003550902,Guardian Weapons/Shields/Spears/Core/Treasure/Arrow,守护者枪 盾 剑/古代兵装 核心/宝石 箭,,,,,,,,,Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano -4,0100000000040002,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo -4,0100000003530902,Falcon Bow/Fish & Meat/Knight's and Royal Bow/Various Arrows,游隼弓/鱼&肉/骑士&王族之弓/各种箭,,,,,,,,,Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce -4,0100000003990902,Dreamweaver Set/Knight's and Royal Spear/Sword/and Claymore/Fish,织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce -4,01000000034c0902,Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom,鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇,,,,,,,,,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi -4,01000000034b0902,Time Traveler Set/Biggoron Sword/Meat,时之勇者服套装/大鼓隆之剑/肉,,,,,,,,,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne -4,0100000003540902,Bridle and Saddle/Moonlight Scimitar/Mushroom,马缰绳&马鞍/月光匕首/蘑菇,,,,,,,,,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi -4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,,,,,,,,,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia -4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,,,,,,,,,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo -4,01030000024f0902,20 Heart Wolf Link,20心林克狼,,,,,,,,,Link Lupo a 20 Cuori -4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,,,,,,,,,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce -4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,,,,,,,,,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante -4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,,,,,,,,,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi -4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce -4,0100010003500902,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,,,,,,,,,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce -4,0101000003520902,Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,,,,,,,,,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne -4,01000000037c0002,Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish,时之勇者服套装/骑士&王族枪 剑 双手剑/鱼,,,,,,,,,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce -4,01010000000e0002,Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -4,0101000003560902,Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -4,0101030004140902,Star Fragment & Gem/Grass/Fruit/Carrot,星星碎片&宝石/草 果实 胡萝卜,,,,,,,,,Frammento di Stella & Gemma/Erba/Frutto/Carota -5,01000000034f0902,,暂无简介,,,,,,,,, -5,01410000035c0902,,暂无简介,,,,,,,,, -5,0105000003580902,,暂无简介,,,,,,,,, -5,01020100001b0002,,暂无简介,,,,,,,,, -5,0140000003550902,,暂无简介,,,,,,,,, -5,0100000000040002,,暂无简介,,,,,,,,, -5,0100000003530902,,暂无简介,,,,,,,,, -5,0100000003990902,,暂无简介,,,,,,,,, -5,01000000034c0902,,暂无简介,,,,,,,,, -5,01000000034b0902,,暂无简介,,,,,,,,, -5,0100000003540902,,暂无简介,,,,,,,,, -5,01000000034e0902,,暂无简介,,,,,,,,, -5,01000000034d0902,,暂无简介,,,,,,,,, -5,01030000024f0902,,暂无简介,,,,,,,,, -5,01070000035a0902,,暂无简介,,,,,,,,, -5,01080000035b0902,,暂无简介,,,,,,,,, -5,0101010000170002,,暂无简介,,,,,,,,, -5,0100010000160002,,暂无简介,,,,,,,,, -5,0100010003500902,,暂无简介,,,,,,,,, -5,0101000003520902,,暂无简介,,,,,,,,, -5,0106000003590902,,暂无简介,,,,,,,,, -5,01000000037c0002,,暂无简介,,,,,,,,, -5,01010000000e0002,,暂无简介,,,,,,,,, -5,0101000003560902,,暂无简介,,,,,,,,, -5,0101030004140902,,暂无简介,,,,,,,,, -6,01410000035c0902,,暂无简介,,,,,,,,, -6,0105000003580902,,暂无简介,,,,,,,,, -6,01020100001b0002,,暂无简介,,,,,,,,, -6,0140000003550902,,暂无简介,,,,,,,,, -6,0100000003530902,,暂无简介,,,,,,,,, -6,01030000024f0902,,暂无简介,,,,,,,,, -6,01070000035a0902,,暂无简介,,,,,,,,, -6,01080000035b0902,,暂无简介,,,,,,,,, -6,0106000003590902,,暂无简介,,,,,,,,, -6,01010000000e0002,,暂无简介,,,,,,,,, -7,01410000035c0902,,暂无简介,,,,,,,,, -7,0105000003580902,,暂无简介,,,,,,,,, -7,01020100001b0002,,暂无简介,,,,,,,,, -7,0140000003550902,,暂无简介,,,,,,,,, -7,01030000024f0902,,暂无简介,,,,,,,,, -7,01070000035a0902,,暂无简介,,,,,,,,, -7,01080000035b0902,,暂无简介,,,,,,,,, -7,0101010000170002,,暂无简介,,,,,,,,, -7,0100010003500902,,暂无简介,,,,,,,,, -7,0106000003590902,,暂无简介,,,,,,,,, -8,35c0000002500a02,,暂无简介,,,,,,,,, -8,35c0000003920a02,,暂无简介,,,,,,,,, -9,0005000003730102,,解锁奥德赛主题关卡,,,,,,,,, -9,0000000003710102,,解锁奥德赛主题关卡,,,,,,,,, -9,0002000003720102,,解锁奥德赛主题关卡,,,,,,,,, -9,000a000000380102,,无敌蘑菇,,,,,,,,, -10,32400000025b0002,,获得服装Super Mirror I,,,,,,,,, -10,3240010003640002,,获得服装Super Mirror II,,,,,,,,, -10,0017000002680102,,暂无简介,,,,,,,,, -10,0005000000140002,,暂无简介,,,,,,,,, -10,0006000000150002,,暂无简介,,,,,,,,, -10,0013000002660102,,获得黛西公主装,,,,,,,,, -10,05810000001c0002,,获得星际火狐装,,,,,,,,, -10,0580000000050002,,获得星际火狐装,,,,,,,,, -10,0015000003670102,,暂无简介,,,,,,,,, -10,0023000003680102,,暂无简介,,,,,,,,, -10,01000000034b0902,,获得林克装,,,,,,,,, -10,0002000000010002,,获得碧姬公主装,,,,,,,,, -10,05c0000000060002,,获得萨姆斯装甲,,,,,,,,, -12,08010000025d0402,,暂无简介,,,,,,,,, -12,0800010003820002,,暂无简介,,,,,,,,, -12,0800010004150402,,暂无简介,,,,,,,,, -12,08000200003f0402,,暂无简介,,,,,,,,, -12,08000200036a0402,,暂无简介,,,,,,,,, -12,0800020002600402,,暂无简介,,,,,,,,, -12,08000100003e0402,,暂无简介,,,,,,,,, -12,08000100025f0402,,暂无简介,,,,,,,,, -12,0800010003690402,,暂无简介,,,,,,,,, -12,0800030000400402,,暂无简介,,,,,,,,, -12,08000300036b0402,,暂无简介,,,,,,,,, -12,0800030002610402,,暂无简介,,,,,,,,, -12,08020000025e0402,,暂无简介,,,,,,,,, -12,0804000003770402,,暂无简介,,,,,,,,, -12,08050200041b0402,,暂无简介,,,,,,,,, -12,08050200038f0402,,暂无简介,,,,,,,,, -12,08050100038e0402,,暂无简介,,,,,,,,, -12,0805030003900402,,暂无简介,,,,,,,,, -12,0803000003760402,,暂无简介,,,,,,,,, -12,08060100041c0402,,暂无简介,,,,,,,,, -12,0807000004330402,,暂无简介,,,,,,,,, -12,0808000004340402,,暂无简介,,,,,,,,, -12,0809000004350402,,暂无简介,,,,,,,,, -13,2106000003601202,,暂无简介,,,,,,,,, -13,210b000003a50002,,暂无简介,,,,,,,,, -13,2107000003611202,,暂无简介,,,,,,,,, -13,21080000036f1202,,暂无简介,,,,,,,,, -13,2108000003880002,,暂无简介,,,,,,,,, -13,21050000025a0002,,暂无简介,,,,,,,,, -13,2105010003630002,,暂无简介,,,,,,,,, -13,2101000000180002,,暂无简介,,,,,,,,, -13,2102000000290002,,暂无简介,,,,,,,,, -13,21000000000b0002,,暂无简介,,,,,,,,, -13,21030000002a0002,,暂无简介,,,,,,,,, -13,2104000002520002,,暂无简介,,,,,,,,, -13,2109000003701202,,暂无简介,,,,,,,,, -14,2106000003601202,,暂无简介,,,,,,,,, -14,210b000003a50002,,暂无简介,,,,,,,,, -14,2107000003611202,,暂无简介,,,,,,,,, -14,21080000036f1202,,暂无简介,,,,,,,,, -14,2108000003880002,,暂无简介,,,,,,,,, -14,21050000025a0002,,暂无简介,,,,,,,,, -14,2105010003630002,,暂无简介,,,,,,,,, -14,2101000000180002,,暂无简介,,,,,,,,, -14,2102000000290002,,暂无简介,,,,,,,,, -14,21000000000b0002,,暂无简介,,,,,,,,, -14,21030000002a0002,,暂无简介,,,,,,,,, -14,2104000002520002,,暂无简介,,,,,,,,, -14,2109000003701202,,暂无简介,,,,,,,,, -15,2106000003601202,,暂无简介,,,,,,,,, -15,210b000003a50002,,暂无简介,,,,,,,,, -15,2107000003611202,,暂无简介,,,,,,,,, -15,21080000036f1202,,暂无简介,,,,,,,,, -15,2108000003880002,,暂无简介,,,,,,,,, -15,21050000025a0002,,暂无简介,,,,,,,,, -15,2105010003630002,,暂无简介,,,,,,,,, -15,2101000000180002,,暂无简介,,,,,,,,, -15,2102000000290002,,暂无简介,,,,,,,,, -15,21000000000b0002,,暂无简介,,,,,,,,, -15,21030000002a0002,,暂无简介,,,,,,,,, -15,2104000002520002,,暂无简介,,,,,,,,, -15,2109000003701202,,暂无简介,,,,,,,,, -16,2106000003601202,,暂无简介,,,,,,,,, -16,210b000003a50002,,暂无简介,,,,,,,,, -16,2107000003611202,,暂无简介,,,,,,,,, -16,21080000036f1202,,暂无简介,,,,,,,,, -16,2108000003880002,,暂无简介,,,,,,,,, -16,21050000025a0002,,暂无简介,,,,,,,,, -16,2105010003630002,,暂无简介,,,,,,,,, -16,2101000000180002,,暂无简介,,,,,,,,, -16,2102000000290002,,暂无简介,,,,,,,,, -16,21000000000b0002,,暂无简介,,,,,,,,, -16,21030000002a0002,,暂无简介,,,,,,,,, -16,2104000002520002,,暂无简介,,,,,,,,, -16,2109000003701202,,暂无简介,,,,,,,,, -17,0000000002380602,,暂无简介,,,,,,,,, -17,08010000025d0402,,暂无简介,,,,,,,,, -17,01c1000002440502,,暂无简介,,,,,,,,, -17,01030000024f0902,,暂无简介,,,,,,,,, -17,00800102035d0302,,暂无简介,,,,,,,,, -17,05c0000004121302,,暂无简介,,,,,,,,, -17,0007000002630102,,暂无简介,,,,,,,,, -17,0182010100460502,,暂无简介,,,,,,,,, -17,019d000100ac0502,,暂无简介,,,,,,,,, -17,019f000101110502,,暂无简介,,,,,,,,, -17,0193000101740502,,暂无简介,,,,,,,,, -17,02ea000101d50502,,暂无简介,,,,,,,,, -17,0513000102e70502,,暂无简介,,,,,,,,, -17,028f0101031a0502,,暂无简介,,,,,,,,, -18,38c0000003911602,,暂无简介,,,,,,,,, -19,22420000041f0002,,解锁光之圣杯,,,,,,,,, -19,22410000041e0002,,解锁天之圣杯,,,,,,,,, -19,22400000002b0002,,解锁蒙那多,,,,,,,,, -19,22430000043d1b02,,解锁执政官N服装/诺亚、兰兹、优妮的休闲装,,,,,,,,, -19,22440000043e1b02,,解锁执政官M服装/弥央、圣奈、泰恩的休闲装,,,,,,,,, -20,35c30000036e0a02,,暂无简介,,,,,,,,, -20,35c10000036c0a02,,暂无简介,,,,,,,,, -20,35c0000002500a02,,暂无简介,,,,,,,,, -20,35c0000003920a02,,暂无简介,,,,,,,,, -20,35c20000036d0a02,,暂无简介,,,,,,,,, -21,35c30000036e0a02,,暂无简介,,,,,,,,, -21,35c10000036c0a02,,暂无简介,,,,,,,,, -21,35c0000002500a02,,暂无简介,,,,,,,,, -21,35c0000003920a02,,暂无简介,,,,,,,,, -21,35c20000036d0a02,,暂无简介,,,,,,,,, -22,1f02000000280002,,暂无简介,,,,,,,,, -22,1f00000002540c02,,暂无简介,,,,,,,,, -22,1f01000002550c02,,暂无简介,,,,,,,,, -22,1f400000035e1002,,暂无简介,,,,,,,,, -22,1f03000002570c02,,暂无简介,,,,,,,,, -23,1f02000000280002,,暂无简介,,,,,,,,, -23,1f00000002540c02,,暂无简介,,,,,,,,, -23,1f01000002550c02,,暂无简介,,,,,,,,, -23,1f400000035e1002,,暂无简介,,,,,,,,, -23,1f03000002570c02,,暂无简介,,,,,,,,, -24,1f02000000280002,,暂无简介,,,,,,,,, -24,1f00000002540c02,,暂无简介,,,,,,,,, -24,1f01000002550c02,,暂无简介,,,,,,,,, -24,1f400000035e1002,,暂无简介,,,,,,,,, -24,1f03000002570c02,,暂无简介,,,,,,,,, -25,3340000000320002,,暂无简介,,,,,,,,, -26,0600000000120002,,暂无简介,,,,,,,,, -26,0008000000030002,,暂无简介,,,,,,,,, -26,0580000000050002,,暂无简介,,,,,,,,, -26,0005ff00023a0702,,暂无简介,,,,,,,,, -26,08000100025f0402,,暂无简介,,,,,,,,, -26,1f000000000a0002,,暂无简介,,,,,,,,, -26,00010000000c0002,,暂无简介,,,,,,,,, -26,0188000002410502,,暂无简介,,,,,,,,, -26,0000000000000002,,暂无简介,,,,,,,,, -26,3480000000310002,,暂无简介,,,,,,,,, -26,06400100001e0002,,暂无简介,,,,,,,,, -26,3340000000320002,,暂无简介,,,,,,,,, -26,0002000003720102,,暂无简介,,,,,,,,, -26,0002000000010002,,暂无简介,,,,,,,,, -26,00130000037a0002,,暂无简介,,,,,,,,, -26,06420000035f1102,,暂无简介,,,,,,,,, -26,0004000002620102,,暂无简介,,,,,,,,, -26,05c0000000060002,,暂无简介,,,,,,,,, -26,3200000000300002,,暂无简介,,,,,,,,, -26,000a000000380102,,暂无简介,,,,,,,,, -26,0100010000160002,,暂无简介,,,,,,,,, -26,0180000000080002,,暂无简介,,,,,,,,, -26,00070000001a0002,,暂无简介,,,,,,,,, -26,0003000000020002,,暂无简介,,,,,,,,, -26,0181000100440502,,暂无简介,,,,,,,,, -26,0194000100aa0502,,暂无简介,,,,,,,,, -26,01920001010d0502,,暂无简介,,,,,,,,, -26,019c000101730502,,暂无简介,,,,,,,,, -26,0282000101d60502,,暂无简介,,,,,,,,, -26,04a2000102e80502,,暂无简介,,,,,,,,, -26,0374010103190502,,暂无简介,,,,,,,,, -27,0003010200430302,,暂无简介,,,,,,,,, -27,0001000000350102,,暂无简介,,,,,,,,, -27,0000000003710102,,暂无简介,,,,,,,,, -27,0002010003a70102,,暂无简介,,,,,,,,, -28,01010000000e0002,,暂无简介,,,,,,,,, -29,3480000003791502,,暂无简介,,,,,,,,, -30,3480000003791502,,暂无简介,,,,,,,,, -31,3480000002580002,,暂无简介,,,,,,,,, -32,05c0000004121302,,能量罐1个/补充能量,,,,,,,,, -32,05c3000003800002,,导弹包1个/补充弹药,,,,,,,,, -32,05c0000003651302,,补充能量,,,,,,,,, -32,05c0000000060002,,补充能量,,,,,,,,, -32,05c00100001d0002,,补充能量,,,,,,,,, -32,05c1000003661302,,补充弹药,,,,,,,,, -32,05c20000037f0002,,补充弹药,,,,,,,,, -32,05c4000004131302,,暂无简介,,,,,,,,, -33,0005000000390102,,暂无简介,,,,,,,,, -33,08010000025d0402,,暂无简介,,,,,,,,, -33,0013000002660102,,暂无简介,,,,,,,,, -33,0008000000030002,,暂无简介,,,,,,,,, -33,01020100001b0002,,暂无简介,,,,,,,,, -33,0003010200410302,,暂无简介,,,,,,,,, -33,0800010003820002,,暂无简介,,,,,,,,, -33,08000200036a0402,,暂无简介,,,,,,,,, -33,0800030000400402,,暂无简介,,,,,,,,, -33,01810100023f0502,,暂无简介,,,,,,,,, -33,0182000002400502,,暂无简介,,,,,,,,, -33,1f000000000a0002,,暂无简介,,,,,,,,, -33,01000000034e0902,,暂无简介,,,,,,,,, -33,00010000000c0002,,暂无简介,,,,,,,,, -33,08020000025e0402,,暂无简介,,,,,,,,, -33,00000000003d0102,,暂无简介,,,,,,,,, -33,22800000002c0002,,暂无简介,,,,,,,,, -33,00020003039dff02,,暂无简介,,,,,,,,, -33,018e000002490502,,暂无简介,,,,,,,,, -33,0004000002620102,,暂无简介,,,,,,,,, -33,05c0000000060002,,暂无简介,,,,,,,,, -33,0101010000170002,,暂无简介,,,,,,,,, -33,000a000000380102,,暂无简介,,,,,,,,, -33,0183000002420502,,暂无简介,,,,,,,,, -33,0101000003520902,,暂无简介,,,,,,,,, -33,05c00100001d0002,,暂无简介,,,,,,,,, -34,3503010002e50f02,,暂无简介,,,,,,,,, -34,35060000040d0f02,,暂无简介,,,,,,,,, -34,35080000040f1802,,暂无简介,,,,,,,,, -34,350b0000042d1802,,暂无简介,,,,,,,,, -34,3501000002e30f02,,暂无简介,,,,,,,,, -34,3500020002e20f02,,暂无简介,,,,,,,,, -34,3500010002e10f02,,暂无简介,,,,,,,,, -34,350a000004111802,,暂无简介,,,,,,,,, -34,350a0100042c1802,,暂无简介,,,,,,,,, -34,3509000004101802,,暂无简介,,,,,,,,, -34,35090100042b1802,,暂无简介,,,,,,,,, -34,3504010002e60f02,,暂无简介,,,,,,,,, -34,3502010002e40f02,,暂无简介,,,,,,,,, -34,35050000040c0f02,,暂无简介,,,,,,,,, -34,35070000040e0f02,,暂无简介,,,,,,,,, -35,35060000040d0f02,,暂无简介,,,,,,,,, -35,35050000040c0f02,,暂无简介,,,,,,,,, -35,35070000040e0f02,,暂无简介,,,,,,,,, -36,1906000000240002,,暂无简介,,,,,,,,, -36,1d01000003750d02,,暂无简介,,,,,,,,, -36,1b92000000250002,,暂无简介,,,,,,,,, -36,1bd7000003860002,,暂无简介,,,,,,,,, -36,1902000003830002,,暂无简介,,,,,,,,, -36,1927000000260002,,暂无简介,,,,,,,,, -36,1ac0000000110002,,暂无简介,,,,,,,,, -36,19960000023d0002,,暂无简介,,,,,,,,, -36,19ac000003850002,,暂无简介,,,,,,,,, -36,1919000000090002,,暂无简介,,,,,,,,, -36,1d000001025c0d02,,暂无简介,,,,,,,,, -36,1907000003840002,,暂无简介,,,,,,,,, -37,3802000103951702,,暂无简介,,,,,,,,, -37,3805000103981702,,暂无简介,,,,,,,,, -37,3803000103961702,,暂无简介,,,,,,,,, -37,3801000103941702,,暂无简介,,,,,,,,, -37,3800000103931702,,暂无简介,,,,,,,,, -37,3804000103971702,,暂无简介,,,,,,,,, -38,3503010002e50f02,,暂无简介,,,,,,,,, -38,3480000000310002,,暂无简介,,,,,,,,, -38,3501000002e30f02,,暂无简介,,,,,,,,, -38,3500010002e10f02,,暂无简介,,,,,,,,, -38,3504010002e60f02,,暂无简介,,,,,,,,, -38,3502010002e40f02,,暂无简介,,,,,,,,, -38,34c0000002530002,,暂无简介,,,,,,,,, -39,3503010002e50f02,,暂无简介,,,,,,,,, -39,3480000000310002,,暂无简介,,,,,,,,, -39,3501000002e30f02,,暂无简介,,,,,,,,, -39,3500010002e10f02,,暂无简介,,,,,,,,, -39,3504010002e60f02,,暂无简介,,,,,,,,, -39,3502010002e40f02,,暂无简介,,,,,,,,, -39,34c0000002530002,,暂无简介,,,,,,,,, -40,35c30000036e0a02,,暂无简介,,,,,,,,, -40,35c10000036c0a02,,暂无简介,,,,,,,,, -40,35c0000002500a02,,暂无简介,,,,,,,,, -40,35c0000003920a02,,暂无简介,,,,,,,,, -40,35c20000036d0a02,,暂无简介,,,,,,,,, -41,35c30000036e0a02,,暂无简介,,,,,,,,, -41,35c10000036c0a02,,暂无简介,,,,,,,,, -41,35c0000002500a02,,暂无简介,,,,,,,,, -41,35c0000003920a02,,暂无简介,,,,,,,,, -41,35c20000036d0a02,,暂无简介,,,,,,,,, -42,35c30000036e0a02,,暂无简介,,,,,,,,, -42,35c10000036c0a02,,暂无简介,,,,,,,,, -42,35c0000002500a02,,暂无简介,,,,,,,,, -42,35c0000003920a02,,暂无简介,,,,,,,,, -42,35c20000036d0a02,,暂无简介,,,,,,,,, -43,08010000025d0402,,暂无简介,,,,,,,,, -43,0800010003820002,,暂无简介,,,,,,,,, -43,0800010004150402,,暂无简介,,,,,,,,, -43,08000200003f0402,,暂无简介,,,,,,,,, -43,08000200036a0402,,暂无简介,,,,,,,,, -43,0800020002600402,,暂无简介,,,,,,,,, -43,08000100003e0402,,暂无简介,,,,,,,,, -43,08000100025f0402,,暂无简介,,,,,,,,, -43,0800010003690402,,暂无简介,,,,,,,,, -43,0800030000400402,,暂无简介,,,,,,,,, -43,08000300036b0402,,暂无简介,,,,,,,,, -43,0800030002610402,,暂无简介,,,,,,,,, -43,08020000025e0402,,暂无简介,,,,,,,,, -43,0804000003770402,,暂无简介,,,,,,,,, -43,08050200041b0402,,暂无简介,,,,,,,,, -43,08050200038f0402,,暂无简介,,,,,,,,, -43,08050100038e0402,,暂无简介,,,,,,,,, -43,0805030003900402,,暂无简介,,,,,,,,, -43,0803000003760402,,暂无简介,,,,,,,,, -44,1f02000002560c02,,暂无简介,,,,,,,,, -44,1f02000000280002,,暂无简介,,,,,,,,, -44,1f00000002540c02,,暂无简介,,,,,,,,, -44,1f000000000a0002,,暂无简介,,,,,,,,, -44,1f01000002550c02,,暂无简介,,,,,,,,, -44,1f01000000270002,,暂无简介,,,,,,,,, -44,1f400000035e1002,,暂无简介,,,,,,,,, -44,1f03000002570c02,,暂无简介,,,,,,,,, -45,0017000002680102,,暂无简介,,,,,,,,, -45,0005000000140002,,使狂怒酷霸王立即现身,,,,,,,,, -45,0006000000150002,,使酷霸王Jr.释放冲击波,,,,,,,,, -45,0013000002660102,,暂无简介,,,,,,,,, -45,00090000000d0002,,暂无简介,,,,,,,,, -45,0008000000030002,,暂无简介,,,,,,,,, -45,0015000003670102,,暂无简介,,,,,,,,, -45,0023000003680102,,暂无简介,,,,,,,,, -45,00010000000c0002,,暂无简介,,,,,,,,, -45,0000000000340102,,暂无简介,,,,,,,,, -45,0000030003a60102,,获得无敌铃铛,,,,,,,,, -45,00030102023e0302,,暂无简介,,,,,,,,, -45,0002000000360102,,暂无简介,,,,,,,,, -45,0002010003a70102,,随机获得一个增强道具,,,,,,,,, -45,00240000038d0002,,暂无简介,,,,,,,,, -45,0004000002620102,,暂无简介,,,,,,,,, -45,000a000000380102,,暂无简介,,,,,,,,, -45,0014000002670102,,暂无简介,,,,,,,,, -45,0007000002630102,,暂无简介,,,,,,,,, -46,0005000000140002,,暂无简介,,,,,,,,, -46,0005000000390102,,暂无简介,,,,,,,,, -46,0005000003730102,,显示紫金币位置/解锁酷霸王的礼服,,,,,,,,, -46,0009000002650102,,解锁迪迪刚套装,,,,,,,,, -46,0000010000190002,,解锁医生套装,,,,,,,,, -46,0001000000350102,,解锁路易吉套装,,,,,,,,, -46,0000000000000002,,解锁经典套装,,,,,,,,, -46,00000000003c0102,,解锁金色马力欧套装,,,,,,,,, -46,00000000003d0102,,解锁金色马力欧套装,,,,,,,,, -46,0000000003710102,,短时间无敌/解锁马力欧的礼服,,,,,,,,, -46,0002000003720102,,血上限+3/解锁婚纱,,,,,,,,, -46,3740000103741402,,暂无简介,,,,,,,,, -46,0014000002670102,,解锁瓦路易吉套装,,,,,,,,, -46,00070000001a0002,,解锁瓦力欧套装,,,,,,,,, -46,000a000303a0ff02,,,,,,,,,,, -46,00000003039bff02,,,,,,,,,,, -46,000000030430ff02,,,,,,,,,,, -46,00010003039cff02,,,,,,,,,,, -46,00030003039fff02,,,,,,,,,,, -46,00130003039eff02,,,,,,,,,,, -47,3dc1000004230002,,暂无简介,,,,,,,,, -47,3b40000003a30002,,暂无简介,,,,,,,,, -47,32400000025b0002,,暂无简介,,,,,,,,, -47,3240010003640002,,暂无简介,,,,,,,,, -47,0005000000140002,,暂无简介,,,,,,,,, -47,0006000000150002,,暂无简介,,,,,,,,, -47,210b000003a50002,,暂无简介,,,,,,,,, -47,0600000000120002,,暂无简介,,,,,,,,, -47,1906000000240002,,暂无简介,,,,,,,,, -47,2108000003880002,,暂无简介,,,,,,,,, -47,3600000002590002,,暂无简介,,,,,,,,, -47,3600010003620002,,暂无简介,,,,,,,,, -47,21050000025a0002,,暂无简介,,,,,,,,, -47,2105010003630002,,暂无简介,,,,,,,,, -47,00130000037a0002,,暂无简介,,,,,,,,, -47,0741000000200002,,暂无简介,,,,,,,,, -47,05c3000003800002,,暂无简介,,,,,,,,, -47,00090000000d0002,,暂无简介,,,,,,,,, -47,0008000000030002,,暂无简介,,,,,,,,, -47,0000010000190002,,暂无简介,,,,,,,,, -47,07820000002f0002,,暂无简介,,,,,,,,, -47,05810000001c0002,,暂无简介,,,,,,,,, -47,0580000000050002,,暂无简介,,,,,,,,, -47,01020100001b0002,,暂无简介,,,,,,,,, -47,1b92000000250002,,暂无简介,,,,,,,,, -47,3640000003a20002,,暂无简介,,,,,,,,, -47,078f000003810002,,暂无简介,,,,,,,,, -47,2101000000180002,,暂无简介,,,,,,,,, -47,1bd7000003860002,,暂无简介,,,,,,,,, -47,0800010003820002,,暂无简介,,,,,,,,, -47,01810000037d0002,,暂无简介,,,,,,,,, -47,1902000003830002,,暂无简介,,,,,,,,, -47,1927000000260002,,暂无简介,,,,,,,,, -47,3a00000003a10002,,暂无简介,,,,,,,,, -47,33c0000004200002,,暂无简介,,,,,,,,, -47,34c1000003890002,,暂无简介,,,,,,,,, -47,1f02000000280002,,暂无简介,,,,,,,,, -47,00c00000037b0002,,暂无简介,,,,,,,,, -47,1f000000000a0002,,暂无简介,,,,,,,,, -47,0100000000040002,,暂无简介,,,,,,,,, -47,06c00000000f0002,,暂无简介,,,,,,,,, -47,1ac0000000110002,,暂无简介,,,,,,,,, -47,2281000002510002,,暂无简介,,,,,,,,, -47,2102000000290002,,暂无简介,,,,,,,,, -47,00010000000c0002,,暂无简介,,,,,,,,, -47,0000000000000002,,暂无简介,,,,,,,,, -47,21000000000b0002,,暂无简介,,,,,,,,, -47,3480000000310002,,暂无简介,,,,,,,,, -47,3480000002580002,,暂无简介,,,,,,,,, -47,1f01000000270002,,暂无简介,,,,,,,,, -47,19960000023d0002,,暂无简介,,,,,,,,, -47,07c0000000210002,,暂无简介,,,,,,,,, -47,07c0020000230002,,暂无简介,,,,,,,,, -47,07c0010000220002,,暂无简介,,,,,,,,, -47,0a400000041d0002,,暂无简介,,,,,,,,, -47,07800000002d0002,,暂无简介,,,,,,,,, -47,22420000041f0002,,暂无简介,,,,,,,,, -47,22800000002c0002,,暂无简介,,,,,,,,, -47,06400100001e0002,,暂无简介,,,,,,,,, -47,3340000000320002,,暂无简介,,,,,,,,, -47,07420000001f0002,,暂无简介,,,,,,,,, -47,0002000000010002,,暂无简介,,,,,,,,, -47,19ac000003850002,,暂无简介,,,,,,,,, -47,1919000000090002,,暂无简介,,,,,,,,, -47,00240000038d0002,,暂无简介,,,,,,,,, -47,0740000000100002,,暂无简介,,,,,,,,, -47,1d40000003870002,,暂无简介,,,,,,,,, -47,22410000041e0002,,暂无简介,,,,,,,,, -47,07810000002e0002,,暂无简介,,,,,,,,, -47,0781000000330002,,暂无简介,,,,,,,,, -47,37c10000038c0002,,暂无简介,,,,,,,,, -47,05c20000037f0002,,暂无简介,,,,,,,,, -47,21030000002a0002,,暂无简介,,,,,,,,, -47,0004010000130002,,暂无简介,,,,,,,,, -47,2104000002520002,,暂无简介,,,,,,,,, -47,34c0000002530002,,暂无简介,,,,,,,,, -47,05c0000000060002,,暂无简介,,,,,,,,, -47,3601000004210002,,暂无简介,,,,,,,,, -47,0101010000170002,,暂无简介,,,,,,,,, -47,22400000002b0002,,暂无简介,,,,,,,,, -47,37c00000038b0002,,暂无简介,,,,,,,,, -47,37800000038a0002,,暂无简介,,,,,,,,, -47,3200000000300002,,暂无简介,,,,,,,,, -47,1907000003840002,,暂无简介,,,,,,,,, -47,3dc0000004220002,,暂无简介,,,,,,,,, -47,3c80000003a40002,,暂无简介,,,,,,,,, -47,0100010000160002,,暂无简介,,,,,,,,, -47,0180000000080002,,暂无简介,,,,,,,,, -47,00070000001a0002,,暂无简介,,,,,,,,, -47,0700000000070002,,暂无简介,,,,,,,,, -47,05840000037e0002,,暂无简介,,,,,,,,, -47,0003000000020002,,暂无简介,,,,,,,,, -47,01000000037c0002,,暂无简介,,,,,,,,, -47,01010000000e0002,,暂无简介,,,,,,,,, -47,05c00100001d0002,,暂无简介,,,,,,,,, -47,3f000000042e0002,,暂无简介,,,,,,,,, -48,0003010200410302,,暂无简介,,,,,,,,, -48,0005ff00023a0702,,暂无简介,,,,,,,,, -48,0023000003680102,,暂无简介,,,,,,,,, -48,0003010200430302,,暂无简介,,,,,,,,, -48,0001000000350102,,暂无简介,,,,,,,,, -48,0000000000000002,,暂无简介,,,,,,,,, -48,0002000000360102,,暂无简介,,,,,,,,, -48,0003010200420302,,暂无简介,,,,,,,,, -48,00800102035d0302,,暂无简介,,,,,,,,, -48,000a000000380102,,暂无简介,,,,,,,,, -48,0003000000020002,,暂无简介,,,,,,,,, -49,38460001042a1902,,暂无简介,,,,,,,,, -49,3842000104261902,,暂无简介,,,,,,,,, -49,3845000104291902,,暂无简介,,,,,,,,, -49,3844000104281902,,暂无简介,,,,,,,,, -49,3843000104271902,,暂无简介,,,,,,,,, -49,3841000104251902,,暂无简介,,,,,,,,, -49,3840000104241902,,暂无简介,,,,,,,,, -50,3380000003781402,,暂无简介,,,,,,,,, -51,0017000002680102,,暂无简介,,,,,,,,, -51,0005000000140002,,暂无简介,,,,,,,,, -51,0006000000150002,,暂无简介,,,,,,,,, -51,00130000037a0002,,暂无简介,,,,,,,,, -51,00090000000d0002,,暂无简介,,,,,,,,, -51,0008000002640102,,暂无简介,,,,,,,,, -51,0015000003670102,,暂无简介,,,,,,,,, -51,0023000003680102,,暂无简介,,,,,,,,, -51,00010000000c0002,,暂无简介,,,,,,,,, -51,0000000000340102,,暂无简介,,,,,,,,, -51,0002000000010002,,暂无简介,,,,,,,,, -51,0003010200420302,,暂无简介,,,,,,,,, -51,0004010000130002,,暂无简介,,,,,,,,, -51,0014000002670102,,暂无简介,,,,,,,,, -51,0007000002630102,,暂无简介,,,,,,,,, -53,0192000002470502,,,,,,,,,,, -53,0193000002480502,,,,,,,,,,, -53,018b000002460502,,,,,,,,,,, -53,018c000002430502,,,,,,,,,,, -53,01810100023f0502,,,,,,,,,,, -53,0182000002400502,,,,,,,,,,, -53,01960000024e0502,,,,,,,,,,, -53,01940000024a0502,,,,,,,,,,, -53,01c1000002440502,,,,,,,,,,, -53,0188000002410502,,,,,,,,,,, -53,018a000002450502,,,,,,,,,,, -53,018e000002490502,,,,,,,,,,, -53,018d0000024c0502,,,,,,,,,,, -53,01810000024b0502,,,,,,,,,,, -53,01840000024d0502,,,,,,,,,,, -53,0183000002420502,,,,,,,,,,, -54,0282000101d60502,,,,,,,,,,, -54,025f000101d70502,,,,,,,,,,, -54,02ea000101d50502,,,,,,,,,,, -55,0374010103190502,,,,,,,,,,, -55,028f0101031a0502,,,,,,,,,,, -55,04d30101031b0502,,,,,,,,,,, -55,032e0101031c0502,,,,,,,,,,, -55,02e00101031d0502,,,,,,,,,,, -55,04a80101031e0502,,,,,,,,,,, -56,0181000100440502,,,,,,,,,,, -56,0183000100450502,,,,,,,,,,, -56,0182010100460502,,,,,,,,,,, -56,0187000100470502,,,,,,,,,,, -56,0196000100480502,,,,,,,,,,, -56,018e000100490502,,,,,,,,,,, -56,01a30001004a0502,,,,,,,,,,, -56,01850001004b0502,,,,,,,,,,, -56,018c0001004c0502,,,,,,,,,,, -56,01a40001004d0502,,,,,,,,,,, -56,01910001004e0502,,,,,,,,,,, -56,01a80001004f0502,,,,,,,,,,, -56,01a6000100500502,,,,,,,,,,, -56,01b5000100510502,,,,,,,,,,, -56,01b0000100520502,,,,,,,,,,, -56,01aa000100530502,,,,,,,,,,, -56,01c1000100540502,,,,,,,,,,, -56,025d000100550502,,,,,,,,,,, -56,02d6000100560502,,,,,,,,,,, -56,0216000100570502,,,,,,,,,,, -56,02ef000100580502,,,,,,,,,,, -56,04fe000100590502,,,,,,,,,,, -56,02870001005a0502,,,,,,,,,,, -56,05150001005b0502,,,,,,,,,,, -56,03710001005c0502,,,,,,,,,,, -56,04ba0001005d0502,,,,,,,,,,, -56,02db0001005e0502,,,,,,,,,,, -56,03450001005f0502,,,,,,,,,,, -56,047a000100600502,,,,,,,,,,, -56,049b000100610502,,,,,,,,,,, -56,04ed000100620502,,,,,,,,,,, -56,027d000100630502,,,,,,,,,,, -56,0307000100640502,,,,,,,,,,, -56,0261000100650502,,,,,,,,,,, -56,0401000100660502,,,,,,,,,,, -56,02c4000100670502,,,,,,,,,,, -56,0266000100680502,,,,,,,,,,, -56,02b1000100690502,,,,,,,,,,, -56,02310001006a0502,,,,,,,,,,, -56,03480001006b0502,,,,,,,,,,, -56,03180001006c0502,,,,,,,,,,, -56,03db0001006d0502,,,,,,,,,,, -56,04650001006e0502,,,,,,,,,,, -56,04000001006f0502,,,,,,,,,,, -56,0429000100700502,,,,,,,,,,, -56,03a9000100710502,,,,,,,,,,, -56,02a4000100720502,,,,,,,,,,, -56,0452000100730502,,,,,,,,,,, -56,04a5000100740502,,,,,,,,,,, -56,0263000100750502,,,,,,,,,,, -56,0323000100760502,,,,,,,,,,, -56,04ec000100770502,,,,,,,,,,, -56,040d000100780502,,,,,,,,,,, -56,030b000100790502,,,,,,,,,,, -56,04970001007a0502,,,,,,,,,,, -56,04fd0001007b0502,,,,,,,,,,, -56,043d0001007c0502,,,,,,,,,,, -56,02680001007d0502,,,,,,,,,,, -56,02190001007e0502,,,,,,,,,,, -56,04100001007f0502,,,,,,,,,,, -56,021b000100800502,,,,,,,,,,, -56,024f000100810502,,,,,,,,,,, -56,04e6000100820502,,,,,,,,,,, -56,0280000100830502,,,,,,,,,,, -56,0235000100840502,,,,,,,,,,, -56,035a000100850502,,,,,,,,,,, -56,0384000100860502,,,,,,,,,,, -56,03ae000100870502,,,,,,,,,,, -56,040e000100880502,,,,,,,,,,, -56,0394000100890502,,,,,,,,,,, -56,03bc0001008a0502,,,,,,,,,,, -56,03ee0001008b0502,,,,,,,,,,, -56,046c0001008c0502,,,,,,,,,,, -56,04800001008d0502,,,,,,,,,,, -56,044c0001008e0502,,,,,,,,,,, -56,033f0001008f0502,,,,,,,,,,, -56,02fb000100900502,,,,,,,,,,, -56,03a8000100910502,,,,,,,,,,, -56,0479000100920502,,,,,,,,,,, -56,03c6000100930502,,,,,,,,,,, -56,04c7000100940502,,,,,,,,,,, -56,0299000100950502,,,,,,,,,,, -56,0208000100960502,,,,,,,,,,, -56,02fa000100970502,,,,,,,,,,, -56,0488000100980502,,,,,,,,,,, -56,050b000100990502,,,,,,,,,,, -56,04940001009a0502,,,,,,,,,,, -56,03830001009b0502,,,,,,,,,,, -56,02de0001009c0502,,,,,,,,,,, -56,03290001009d0502,,,,,,,,,,, -56,04d10001009e0502,,,,,,,,,,, -56,034b0001009f0502,,,,,,,,,,, -56,0393000100a00502,,,,,,,,,,, -56,0200000100a10502,,,,,,,,,,, -56,04dd000100a20502,,,,,,,,,,, -56,04a6000100a30502,,,,,,,,,,, -56,04cc000100a40502,,,,,,,,,,, -56,0460000100a50502,,,,,,,,,,, -56,0317000100a60502,,,,,,,,,,, -56,02f0000100a70502,,,,,,,,,,, -57,0182000100a80502,,,,,,,,,,, -57,018a000100a90502,,,,,,,,,,, -57,0194000100aa0502,,,,,,,,,,, -57,0189000100ab0502,,,,,,,,,,, -57,019d000100ac0502,,,,,,,,,,, -57,019e000100ad0502,,,,,,,,,,, -57,01b6000100ae0502,,,,,,,,,,, -57,0186010100af0502,,,,,,,,,,, -57,0195000100b00502,,,,,,,,,,, -57,0198000100b10502,,,,,,,,,,, -57,01b1000100b20502,,,,,,,,,,, -57,018f000100b30502,,,,,,,,,,, -57,0181010100b40502,,,,,,,,,,, -57,01b3000100b50502,,,,,,,,,,, -57,019b000100b60502,,,,,,,,,,, -57,019a000100b70502,,,,,,,,,,, -57,01ad000100b80502,,,,,,,,,,, -57,027f000100b90502,,,,,,,,,,, -57,026e000100ba0502,,,,,,,,,,, -57,03c1000100bb0502,,,,,,,,,,, -57,032d000100bc0502,,,,,,,,,,, -57,023c000100bd0502,,,,,,,,,,, -57,02dc000100be0502,,,,,,,,,,, -57,0398000100bf0502,,,,,,,,,,, -57,0464000100c00502,,,,,,,,,,, -57,0251000100c10502,,,,,,,,,,, -57,03d1000100c20502,,,,,,,,,,, -57,026c000100c30502,,,,,,,,,,, -57,02b2000100c40502,,,,,,,,,,, -57,0344000100c50502,,,,,,,,,,, -57,0309000100c60502,,,,,,,,,,, -57,0283000100c70502,,,,,,,,,,, -57,03a6000100c80502,,,,,,,,,,, -57,035d000100c90502,,,,,,,,,,, -57,0440000100ca0502,,,,,,,,,,, -57,029b000100cb0502,,,,,,,,,,, -57,02f2000100cc0502,,,,,,,,,,, -57,02c9000100cd0502,,,,,,,,,,, -57,04de000100ce0502,,,,,,,,,,, -57,0450000100cf0502,,,,,,,,,,, -57,03fa000100d00502,,,,,,,,,,, -57,023e000100d10502,,,,,,,,,,, -57,0260000100d20502,,,,,,,,,,, -57,0369000100d30502,,,,,,,,,,, -57,04a4000100d40502,,,,,,,,,,, -57,0381000100d50502,,,,,,,,,,, -57,0311000100d60502,,,,,,,,,,, -57,050e000100d70502,,,,,,,,,,, -57,0418000100d80502,,,,,,,,,,, -57,0496000100d90502,,,,,,,,,,, -57,021a000100da0502,,,,,,,,,,, -57,04ce000100db0502,,,,,,,,,,, -57,02c3000100dc0502,,,,,,,,,,, -57,04b3000100dd0502,,,,,,,,,,, -57,02eb000100de0502,,,,,,,,,,, -57,0499000100df0502,,,,,,,,,,, -57,041a000100e00502,,,,,,,,,,, -57,04cf000100e10502,,,,,,,,,,, -57,02d8000100e20502,,,,,,,,,,, -57,028b000100e30502,,,,,,,,,,, -57,0214000100e40502,,,,,,,,,,, -57,03d2000100e50502,,,,,,,,,,, -57,03aa000100e60502,,,,,,,,,,, -57,0500000100e70502,,,,,,,,,,, -57,04df000100e80502,,,,,,,,,,, -57,026b000100e90502,,,,,,,,,,, -57,02dd000100ea0502,,,,,,,,,,, -57,0357000100eb0502,,,,,,,,,,, -57,03e6000100ec0502,,,,,,,,,,, -57,049d000100ed0502,,,,,,,,,,, -57,029a000100ee0502,,,,,,,,,,, -57,0489000100ef0502,,,,,,,,,,, -57,03b1000100f00502,,,,,,,,,,, -57,041b000100f10502,,,,,,,,,,, -57,022d000100f20502,,,,,,,,,,, -57,046d000100f30502,,,,,,,,,,, -57,03ff000100f40502,,,,,,,,,,, -57,047b000100f50502,,,,,,,,,,, -57,0462000100f60502,,,,,,,,,,, -57,04e0000100f70502,,,,,,,,,,, -57,0310000100f80502,,,,,,,,,,, -57,03bd000100f90502,,,,,,,,,,, -57,033b000100fa0502,,,,,,,,,,, -57,0416000100fb0502,,,,,,,,,,, -57,0486000100fc0502,,,,,,,,,,, -57,0220000100fd0502,,,,,,,,,,, -57,0252000100fe0502,,,,,,,,,,, -57,0270000100ff0502,,,,,,,,,,, -57,033c000101000502,,,,,,,,,,, -57,04c5000101010502,,,,,,,,,,, -57,02f9000101020502,,,,,,,,,,, -57,0202000101030502,,,,,,,,,,, -57,0453000101040502,,,,,,,,,,, -57,0437000101050502,,,,,,,,,,, -57,0385000101060502,,,,,,,,,,, -57,0510000101070502,,,,,,,,,,, -57,0267000101080502,,,,,,,,,,, -57,04e2000101090502,,,,,,,,,,, -57,03250001010a0502,,,,,,,,,,, -57,03720001010b0502,,,,,,,,,,, -58,018d0001010c0502,,,,,,,,,,, -58,01920001010d0502,,,,,,,,,,, -58,01830101010e0502,,,,,,,,,,, -58,01a00001010f0502,,,,,,,,,,, -58,01a1000101100502,,,,,,,,,,, -58,019f000101110502,,,,,,,,,,, -58,0188000101120502,,,,,,,,,,, -58,01b4000101130502,,,,,,,,,,, -58,01a7000101140502,,,,,,,,,,, -58,018b000101150502,,,,,,,,,,, -58,0199000101160502,,,,,,,,,,, -58,0185020101170502,,,,,,,,,,, -58,018c010101180502,,,,,,,,,,, -58,018f010101190502,,,,,,,,,,, -58,01810201011a0502,,,,,,,,,,, -58,01ae0001011b0502,,,,,,,,,,, -58,01af0001011c0502,,,,,,,,,,, -58,03380001011d0502,,,,,,,,,,, -58,022f0001011e0502,,,,,,,,,,, -58,02690001011f0502,,,,,,,,,,, -58,0281000101200502,,,,,,,,,,, -58,0313000101210502,,,,,,,,,,, -58,02c7000101220502,,,,,,,,,,, -58,021e000101230502,,,,,,,,,,, -58,02a6000101240502,,,,,,,,,,, -58,025e000101250502,,,,,,,,,,, -58,024b000101260502,,,,,,,,,,, -58,0392000101270502,,,,,,,,,,, -58,0342000101280502,,,,,,,,,,, -58,035c000101290502,,,,,,,,,,, -58,03e70001012a0502,,,,,,,,,,, -58,03c40001012b0502,,,,,,,,,,, -58,03af0001012c0502,,,,,,,,,,, -58,042a0001012d0502,,,,,,,,,,, -58,047d0001012e0502,,,,,,,,,,, -58,030e0001012f0502,,,,,,,,,,, -58,02d7000101300502,,,,,,,,,,, -58,0463000101310502,,,,,,,,,,, -58,04e7000101320502,,,,,,,,,,, -58,02da000101330502,,,,,,,,,,, -58,0373000101340502,,,,,,,,,,, -58,0356000101350502,,,,,,,,,,, -58,02cb000101360502,,,,,,,,,,, -58,0262000101370502,,,,,,,,,,, -58,02f8000101380502,,,,,,,,,,, -58,0326000101390502,,,,,,,,,,, -58,033d0001013a0502,,,,,,,,,,, -58,04ef0001013b0502,,,,,,,,,,, -58,02210001013c0502,,,,,,,,,,, -58,029e0001013d0502,,,,,,,,,,, -58,028c0001013e0502,,,,,,,,,,, -58,026d0001013f0502,,,,,,,,,,, -58,049c000101400502,,,,,,,,,,, -58,041c000101410502,,,,,,,,,,, -58,050d000101420502,,,,,,,,,,, -58,034a000101430502,,,,,,,,,,, -58,0222000101440502,,,,,,,,,,, -58,02f1000101450502,,,,,,,,,,, -58,026a000101460502,,,,,,,,,,, -58,03fc000101470502,,,,,,,,,,, -58,032c000101480502,,,,,,,,,,, -58,043e000101490502,,,,,,,,,,, -58,04980001014a0502,,,,,,,,,,, -58,04ee0001014b0502,,,,,,,,,,, -58,04850001014c0502,,,,,,,,,,, -58,03080001014d0502,,,,,,,,,,, -58,049a0001014e0502,,,,,,,,,,, -58,03a40001014f0502,,,,,,,,,,, -58,040f000101500502,,,,,,,,,,, -58,03da000101510502,,,,,,,,,,, -58,04cd000101520502,,,,,,,,,,, -58,0514000101530502,,,,,,,,,,, -58,0265000101540502,,,,,,,,,,, -58,043f000101550502,,,,,,,,,,, -58,037e000101560502,,,,,,,,,,, -58,03d6000101570502,,,,,,,,,,, -58,03fd000101580502,,,,,,,,,,, -58,040c000101590502,,,,,,,,,,, -58,02ed0001015a0502,,,,,,,,,,, -58,03a50001015b0502,,,,,,,,,,, -58,03c50001015c0502,,,,,,,,,,, -58,03700001015d0502,,,,,,,,,,, -58,04510001015e0502,,,,,,,,,,, -58,041e0001015f0502,,,,,,,,,,, -58,04b9000101600502,,,,,,,,,,, -58,0461000101610502,,,,,,,,,,, -58,04ff000101620502,,,,,,,,,,, -58,0478000101630502,,,,,,,,,,, -58,0469000101640502,,,,,,,,,,, -58,04e3000101650502,,,,,,,,,,, -58,023f000101660502,,,,,,,,,,, -58,04c6000101670502,,,,,,,,,,, -58,04fa000101680502,,,,,,,,,,, -58,027e000101690502,,,,,,,,,,, -58,02010001016a0502,,,,,,,,,,, -58,03820001016b0502,,,,,,,,,,, -58,044b0001016c0502,,,,,,,,,,, -58,030f0001016d0502,,,,,,,,,,, -58,04a00001016e0502,,,,,,,,,,, -58,04a10001016f0502,,,,,,,,,,, -59,0181030101700502,,,,,,,,,,, -59,0190000101710502,,,,,,,,,,, -59,01a5000101720502,,,,,,,,,,, -59,019c000101730502,,,,,,,,,,, -59,0193000101740502,,,,,,,,,,, -59,0186030101750502,,,,,,,,,,, -59,01a9000101760502,,,,,,,,,,, -59,0197000101770502,,,,,,,,,,, -59,018e010101780502,,,,,,,,,,, -59,0185040101790502,,,,,,,,,,, -59,01c10101017a0502,,,,,,,,,,, -59,01b10101017b0502,,,,,,,,,,, -59,01ab0001017c0502,,,,,,,,,,, -59,01a20001017d0502,,,,,,,,,,, -59,01a80101017e0502,,,,,,,,,,, -59,01ac0001017f0502,,,,,,,,,,, -59,02ea000101800502,,,,,,,,,,, -59,0282000101810502,,,,,,,,,,, -59,0215000101820502,,,,,,,,,,, -59,03ec000101830502,,,,,,,,,,, -59,030d000101840502,,,,,,,,,,, -59,0390000101850502,,,,,,,,,,, -59,0272000101860502,,,,,,,,,,, -59,0380000101870502,,,,,,,,,,, -59,03ac000101880502,,,,,,,,,,, -59,0324000101890502,,,,,,,,,,, -59,041d0001018a0502,,,,,,,,,,, -59,036b0001018b0502,,,,,,,,,,, -59,02a50001018c0502,,,,,,,,,,, -59,03490001018d0502,,,,,,,,,,, -59,035e0001018e0502,,,,,,,,,,, -59,02fc0001018f0502,,,,,,,,,,, -59,026f000101900502,,,,,,,,,,, -59,02df000101910502,,,,,,,,,,, -59,0495000101920502,,,,,,,,,,, -59,044d000101930502,,,,,,,,,,, -59,0436000101940502,,,,,,,,,,, -59,0511000101950502,,,,,,,,,,, -59,04d0000101960502,,,,,,,,,,, -59,046b000101970502,,,,,,,,,,, -59,03be000101980502,,,,,,,,,,, -59,02ee000101990502,,,,,,,,,,, -59,02030001019a0502,,,,,,,,,,, -59,02710001019b0502,,,,,,,,,,, -59,02b80001019c0502,,,,,,,,,,, -59,036a0001019d0502,,,,,,,,,,, -59,028e0001019e0502,,,,,,,,,,, -59,02090001019f0502,,,,,,,,,,, -59,047c000101a00502,,,,,,,,,,, -59,03a7000101a10502,,,,,,,,,,, -59,033e000101a20502,,,,,,,,,,, -59,03ed000101a30502,,,,,,,,,,, -59,03fe000101a40502,,,,,,,,,,, -59,03d9000101a50502,,,,,,,,,,, -59,04a7000101a60502,,,,,,,,,,, -59,04d2000101a70502,,,,,,,,,,, -59,045f000101a80502,,,,,,,,,,, -59,03b0000101a90502,,,,,,,,,,, -59,037f000101aa0502,,,,,,,,,,, -59,0411000101ab0502,,,,,,,,,,, -59,0264000101ac0502,,,,,,,,,,, -59,04e5000101ad0502,,,,,,,,,,, -59,0454000101ae0502,,,,,,,,,,, -59,042b000101af0502,,,,,,,,,,, -59,0483000101b00502,,,,,,,,,,, -59,0339000101b10502,,,,,,,,,,, -59,03ad000101b20502,,,,,,,,,,, -59,0217000101b30502,,,,,,,,,,, -59,03d7000101b40502,,,,,,,,,,, -59,023d000101b50502,,,,,,,,,,, -59,04e4000101b60502,,,,,,,,,,, -59,049e000101b70502,,,,,,,,,,, -59,030c000101b80502,,,,,,,,,,, -59,04b2000101b90502,,,,,,,,,,, -59,02a2000101ba0502,,,,,,,,,,, -59,0415000101bb0502,,,,,,,,,,, -59,03bf000101bc0502,,,,,,,,,,, -59,028d000101bd0502,,,,,,,,,,, -59,04e1000101be0502,,,,,,,,,,, -59,0487000101bf0502,,,,,,,,,,, -59,0316000101c00502,,,,,,,,,,, -59,050c000101c10502,,,,,,,,,,, -59,0399000101c20502,,,,,,,,,,, -59,0327000101c30502,,,,,,,,,,, -59,02ec000101c40502,,,,,,,,,,, -59,025f000101c50502,,,,,,,,,,, -59,04fb000101c60502,,,,,,,,,,, -59,030a000101c70502,,,,,,,,,,, -59,02d9000101c80502,,,,,,,,,,, -59,04a3000101c90502,,,,,,,,,,, -59,02ca000101ca0502,,,,,,,,,,, -59,043c000101cb0502,,,,,,,,,,, -59,033a000101cc0502,,,,,,,,,,, -59,021d000101cd0502,,,,,,,,,,, -59,04e8000101ce0502,,,,,,,,,,, -59,03fb000101cf0502,,,,,,,,,,, -59,046a000101d00502,,,,,,,,,,, -59,024a000101d10502,,,,,,,,,,, -59,0230000101d20502,,,,,,,,,,, -59,022e000101d30502,,,,,,,,,,, -60,0183020103a80502,,,,,,,,,,, -60,0184050103a90502,,,,,,,,,,, -60,0181040103aa0502,,,,,,,,,,, -60,0a00000103ab0502,,,,,,,,,,, -60,0a01000103ac0502,,,,,,,,,,, -60,0192000103ad0502,,,,,,,,,,, -60,0193000103ae0502,,,,,,,,,,, -60,0188000103af0502,,,,,,,,,,, -60,0187000103b00502,,,,,,,,,,, -60,0189010103b10502,,,,,,,,,,, -60,0182000103b20502,,,,,,,,,,, -60,0a02000103b30502,,,,,,,,,,, -60,0a03000103b40502,,,,,,,,,,, -60,0a04000103b50502,,,,,,,,,,, -60,0194000103b60502,,,,,,,,,,, -60,01a6000103b70502,,,,,,,,,,, -60,0a05000103b80502,,,,,,,,,,, -60,01a2000103b90502,,,,,,,,,,, -60,0a06000103ba0502,,,,,,,,,,, -60,01c1020103bb0502,,,,,,,,,,, -60,0a07000103bc0502,,,,,,,,,,, -60,0a08000103bd0502,,,,,,,,,,, -60,0183030103be0502,,,,,,,,,,, -60,0181050103bf0502,,,,,,,,,,, -60,0a09000103c00502,,,,,,,,,,, -60,0a0a000103c10502,,,,,,,,,,, -60,0a0b000103c20502,,,,,,,,,,, -60,0a0c000103c30502,,,,,,,,,,, -60,0a0d000103c40502,,,,,,,,,,, -60,0a0e000103c50502,,,,,,,,,,, -60,0a0f000103c60502,,,,,,,,,,, -60,0a10000103c70502,,,,,,,,,,, -60,0a11000103c80502,,,,,,,,,,, -60,0a12000103c90502,,,,,,,,,,, -60,0a13000103ca0502,,,,,,,,,,, -60,0a14000103cb0502,,,,,,,,,,, -60,0a15000103cc0502,,,,,,,,,,, -60,0a16000103cd0502,,,,,,,,,,, -60,0a17000103ce0502,,,,,,,,,,, -60,0a18000103cf0502,,,,,,,,,,, -60,0a19000103d00502,,,,,,,,,,, -60,0a1a000103d10502,,,,,,,,,,, -60,0a1b000103d20502,,,,,,,,,,, -60,0a1c000103d30502,,,,,,,,,,, -60,0a1d000103d40502,,,,,,,,,,, -60,0a1e000103d50502,,,,,,,,,,, -60,0a1f000103d60502,,,,,,,,,,, -60,0a20000103d70502,,,,,,,,,,, -61,0181000101d40502,,,,,,,,,,, -61,0182000101d80502,,,,,,,,,,, -62,0513000102e70502,,,,,,,,,,, -62,04a2000102e80502,,,,,,,,,,, -62,028a000102e90502,,,,,,,,,,, -62,0232000102ea0502,,,,,,,,,,, -62,0328000102eb0502,,,,,,,,,,, -62,04b6000102ec0502,,,,,,,,,,, -62,04c8000102ed0502,,,,,,,,,,, -62,04fc000102ee0502,,,,,,,,,,, -62,0343000102ef0502,,,,,,,,,,, -62,04eb000102f00502,,,,,,,,,,, -62,0481000102f10502,,,,,,,,,,, -62,0468000102f20502,,,,,,,,,,, -62,03d3000102f30502,,,,,,,,,,, -62,0314000102f40502,,,,,,,,,,, -62,03e8000102f50502,,,,,,,,,,, -62,024d000102f60502,,,,,,,,,,, -62,021c000102f70502,,,,,,,,,,, -62,0238000102f80502,,,,,,,,,,, -62,02f3000102f90502,,,,,,,,,,, -62,0358000102fa0502,,,,,,,,,,, -62,036e000102fb0502,,,,,,,,,,, -62,0395000102fc0502,,,,,,,,,,, -62,0482000102fd0502,,,,,,,,,,, -62,0284000102fe0502,,,,,,,,,,, -62,02a3000102ff0502,,,,,,,,,,, -62,0438000103000502,,,,,,,,,,, -62,049f000103010502,,,,,,,,,,, -62,0347000103020502,,,,,,,,,,, -62,043b000103030502,,,,,,,,,,, -62,036d000103040502,,,,,,,,,,, -62,02f4000103050502,,,,,,,,,,, -62,0233000103060502,,,,,,,,,,, -62,032a000103070502,,,,,,,,,,, -62,02c5000103080502,,,,,,,,,,, -62,0312000103090502,,,,,,,,,,, -62,04140001030a0502,,,,,,,,,,, -62,03ea0001030b0502,,,,,,,,,,, -62,04b40001030c0502,,,,,,,,,,, -62,04c90001030d0502,,,,,,,,,,, -62,03410001030e0502,,,,,,,,,,, -62,02b70001030f0502,,,,,,,,,,, -62,03c0000103100502,,,,,,,,,,, -62,0439000103110502,,,,,,,,,,, -62,0206000103120502,,,,,,,,,,, -62,0286000103130502,,,,,,,,,,, -62,050f000103140502,,,,,,,,,,, -62,044e000103150502,,,,,,,,,,, -62,03ab000103160502,,,,,,,,,,, -62,021f000103170502,,,,,,,,,,, -62,04ea000103180502,,,,,,,,,,, -63,05c1000003661302,,解锁密特罗德搜寻/解锁融合模式,,,,,,,,, -63,05c0000003651302,,解锁备用能量罐/通关解锁美术画廊,,,,,,,,, -63,05c0000000060002,,解锁备用导弹罐/通关解锁美术画廊,,,,,,,,, -63,05c00100001d0002,,解锁备用弹药罐/通关解锁BGM,,,,,,,,, -64,21000000000b0002,,马尔斯可入队,,,,,,,,, -64,2101000000180002,,艾克可入队,,,,,,,,, -64,2102000000290002,,露琪娜可入队,,,,,,,,, -64,21030000002a0002,,鲁弗莱可入队,,,,,,,,, -65,2106000003601202,,解锁迷宫/召唤幻影骑士,,,,,,,,, -65,2107000003611202,,解锁迷宫/召唤幻影骑士,,,,,,,,, -65,2108000003880002,,召唤幻影骑士,,,,,,,,, -65,21050000025a0002,,召唤幻影骑士,,,,,,,,, -65,2101000000180002,,召唤幻影骑士,,,,,,,,, -65,2102000000290002,,召唤幻影骑士,,,,,,,,, -65,21000000000b0002,,召唤幻影骑士,,,,,,,,, -65,21030000002a0002,,召唤幻影骑士,,,,,,,,, -65,2104000002520002,,召唤幻影骑士,,,,,,,,, -66,1d01000003750d02,,显示章节的皮卡丘提示数,,,,,,,,, -67,06400100001e0002,,随时叫出皮克敏,,,,,,,,, -67,06420000035f1102,,随时叫出皮克敏,,,,,,,,, -68,01030000024f0902,,解锁可获得9999钱包的新迷宫,,,,,,,,, -68,0100000000040002,,恢复箭数量,,,,,,,,, -68,0100010000160002,,恢复箭数量,,,,,,,,, -68,01010000000e0002,,恢复心心,,,,,,,,, -68,0101010000170002,,恢复心心,,,,,,,,, -68,01020100001b0002,,受到2倍伤害,,,,,,,,, -68,01000000034f0902,,暂无简介,,,,,,,,, -68,0101000003520902,,暂无简介,,,,,,,,, -68,0100010003500902,,暂无简介,,,,,,,,, -68,01000000034b0902,,暂无简介,,,,,,,,, -69,0000000000340102,,毒蘑菇变成红蘑菇,,,,,,,,, -69,000a000000380102,,与奇诺比奥对话会回血,,,,,,,,, -69,0017000002680102,,显示嘘嘘鬼位置,,,,,,,,, -69,00010000000c0002,,可原地复活一次,,,,,,,,, -70,09d1010102be0e02,,,,,,,,,,, -70,09d1020102bf0e02,,,,,,,,,,, -70,09d1030102c00e02,,,,,,,,,,, -70,09d1040102c10e02,,,,,,,,,,, -70,09d1050102c20e02,,,,,,,,,,, -70,09c0010102690e02,,,,,,,,,,, -70,09c00201026a0e02,,,,,,,,,,, -70,09c00301026b0e02,,,,,,,,,,, -70,09c00401026c0e02,,,,,,,,,,, -70,09c00501026d0e02,,,,,,,,,,, -70,09c10101026e0e02,,,,,,,,,,, -70,09c10201026f0e02,,,,,,,,,,, -70,09c1030102700e02,,,,,,,,,,, -70,09c1040102710e02,,,,,,,,,,, -70,09c1050102720e02,,,,,,,,,,, -70,09c2010102730e02,,,,,,,,,,, -70,09c2020102740e02,,,,,,,,,,, -70,09c2030102750e02,,,,,,,,,,, -70,09c2040102760e02,,,,,,,,,,, -70,09c2050102770e02,,,,,,,,,,, -70,09c3010102780e02,,,,,,,,,,, -70,09c3020102790e02,,,,,,,,,,, -70,09c30301027a0e02,,,,,,,,,,, -70,09c30401027b0e02,,,,,,,,,,, -70,09c30501027c0e02,,,,,,,,,,, -70,09c40101027d0e02,,,,,,,,,,, -70,09c40201027e0e02,,,,,,,,,,, -70,09c40301027f0e02,,,,,,,,,,, -70,09c4040102800e02,,,,,,,,,,, -70,09c4050102810e02,,,,,,,,,,, -70,09c5010102820e02,,,,,,,,,,, -70,09c5020102830e02,,,,,,,,,,, -70,09c5030102840e02,,,,,,,,,,, -70,09c5040102850e02,,,,,,,,,,, -70,09c5050102860e02,,,,,,,,,,, -70,09c6010102870e02,,,,,,,,,,, -70,09c6020102880e02,,,,,,,,,,, -70,09c6030102890e02,,,,,,,,,,, -70,09c60401028a0e02,,,,,,,,,,, -70,09c60501028b0e02,,,,,,,,,,, -70,09c70101028c0e02,,,,,,,,,,, -70,09c70201028d0e02,,,,,,,,,,, -70,09c70301028e0e02,,,,,,,,,,, -70,09c70401028f0e02,,,,,,,,,,, -70,09c7050102900e02,,,,,,,,,,, -70,09c8010102910e02,,,,,,,,,,, -70,09c8020102920e02,,,,,,,,,,, -70,09c8030102930e02,,,,,,,,,,, -70,09c8040102940e02,,,,,,,,,,, -70,09c8050102950e02,,,,,,,,,,, -70,09c9010102960e02,,,,,,,,,,, -70,09c9020102970e02,,,,,,,,,,, -70,09c9030102980e02,,,,,,,,,,, -70,09c9040102990e02,,,,,,,,,,, -70,09c90501029a0e02,,,,,,,,,,, -70,09ca0101029b0e02,,,,,,,,,,, -70,09ca0201029c0e02,,,,,,,,,,, -70,09ca0301029d0e02,,,,,,,,,,, -70,09ca0401029e0e02,,,,,,,,,,, -70,09ca0501029f0e02,,,,,,,,,,, -70,09cb010102a00e02,,,,,,,,,,, -70,09cb020102a10e02,,,,,,,,,,, -70,09cb030102a20e02,,,,,,,,,,, -70,09cb040102a30e02,,,,,,,,,,, -70,09cb050102a40e02,,,,,,,,,,, -70,09cc010102a50e02,,,,,,,,,,, -70,09cc020102a60e02,,,,,,,,,,, -70,09cc030102a70e02,,,,,,,,,,, -70,09cc040102a80e02,,,,,,,,,,, -70,09cc050102a90e02,,,,,,,,,,, -70,09cd010102aa0e02,,,,,,,,,,, -70,09cd020102ab0e02,,,,,,,,,,, -70,09cd030102ac0e02,,,,,,,,,,, -70,09cd040102ad0e02,,,,,,,,,,, -70,09cd050102ae0e02,,,,,,,,,,, -70,09ce010102af0e02,,,,,,,,,,, -70,09ce020102b00e02,,,,,,,,,,, -70,09ce030102b10e02,,,,,,,,,,, -70,09ce040102b20e02,,,,,,,,,,, -70,09ce050102b30e02,,,,,,,,,,, -70,09cf010102b40e02,,,,,,,,,,, -70,09cf020102b50e02,,,,,,,,,,, -70,09cf030102b60e02,,,,,,,,,,, -70,09cf040102b70e02,,,,,,,,,,, -70,09cf050102b80e02,,,,,,,,,,, -70,09d0010102b90e02,,,,,,,,,,, -70,09d0020102ba0e02,,,,,,,,,,, -70,09d0030102bb0e02,,,,,,,,,,, -70,09d0040102bc0e02,,,,,,,,,,, -70,09d0050102bd0e02,,,,,,,,,,, \ No newline at end of file +1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia +1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela +1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +1,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb,黄昏剑/卢比/宝石/星星碎片炸药桶,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba +1,01020100041a0902,Gerudo-King Fabric,沼气之枪/滑翔伞皮肤布料,Tessuto del Re Gerudo +1,0140000003550902,Dragonbone Boko related gear/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela +1,0100000000040002,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +1,0100000003530902,Falcon Bow/Paraglider Skin Material/Fish & Meat/Knight's & Royal Bow/Various Arrows,游隼弓/滑翔伞皮肤布料/鱼&肉/骑士&王族之弓/各种箭,Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce +1,0100000003990902,Dream Weaver Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,织梦勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +1,01000000034c0902,Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom,鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi +1,01000000034b0902,Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat,时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne +1,0100000003540902,Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom,马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi +1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi +1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,Carne/Tessuto della Paravela +1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi +1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +1,0100010003500902,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +1,0101000003520902,Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +1,01000000037c0002,Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +1,01010000000e0002,Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0101000003560902,Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0101030004140902,Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +1,0101000004190902,Princess Zelda Fabric,塞尔达公主滑翔伞布料,Tessuto della Principessa Zelda +2,0101030004140902,,随时随地传送, +3,01020100001b0002,,暂无简介, +3,01030000024f0902,,暂无简介, +3,0101010000170002,,暂无简介, +3,0100010000160002,,暂无简介, +3,01000000037c0002,,暂无简介, +3,01010000000e0002,,暂无简介, +4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia +4,01410000035c0902,Champion's Tunic Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi +4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +4,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel,黄昏剑/卢比/宝石/星星碎片炸药桶,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba +4,0140000003550902,Guardian Weapons/Shields/Spears/Core/Treasure/Arrow,守护者枪 盾 剑/古代兵装 核心/宝石 箭,Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano +4,0100000000040002,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +4,0100000003530902,Falcon Bow/Fish & Meat/Knight's and Royal Bow/Various Arrows,游隼弓/鱼&肉/骑士&王族之弓/各种箭,Arco Falcone/Carne & Pesce/Tessuto della Paravela/Arco del Cavaliere & Reale/Vari tipi di frecce +4,0100000003990902,Dreamweaver Set/Knight's and Royal Spear/Sword/and Claymore/Fish,织梦勇者服套装/骑士&王族枪 剑 双手剑/鱼,Set Tessitore di Sogni/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +4,01000000034c0902,Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom,鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi +4,01000000034b0902,Time Traveler Set/Biggoron Sword/Meat,时之勇者服套装/大鼓隆之剑/肉,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne +4,0100000003540902,Bridle and Saddle/Moonlight Scimitar/Mushroom,马缰绳&马鞍/月光匕首/蘑菇,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi +4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo +4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo a 20 Cuori +4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi +4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +4,0100010003500902,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce +4,0101000003520902,Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/星星碎片&宝石/草 果实 胡萝卜,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +4,01000000037c0002,Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish,时之勇者服套装/骑士&王族枪 剑 双手剑/鱼,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce +4,01010000000e0002,Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/星星碎片&宝石/草 果实 胡萝卜,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +4,0101000003560902,Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/星星碎片&宝石/草 果实 胡萝卜,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota +4,0101030004140902,Star Fragment & Gem/Grass/Fruit/Carrot,星星碎片&宝石/草 果实 胡萝卜,Frammento di Stella & Gemma/Erba/Frutto/Carota +5,01000000034f0902,,暂无简介, +5,01410000035c0902,,暂无简介, +5,0105000003580902,,暂无简介, +5,01020100001b0002,,暂无简介, +5,0140000003550902,,暂无简介, +5,0100000000040002,,暂无简介, +5,0100000003530902,,暂无简介, +5,0100000003990902,,暂无简介, +5,01000000034c0902,,暂无简介, +5,01000000034b0902,,暂无简介, +5,0100000003540902,,暂无简介, +5,01000000034e0902,,暂无简介, +5,01000000034d0902,,暂无简介, +5,01030000024f0902,,暂无简介, +5,01070000035a0902,,暂无简介, +5,01080000035b0902,,暂无简介, +5,0101010000170002,,暂无简介, +5,0100010000160002,,暂无简介, +5,0100010003500902,,暂无简介, +5,0101000003520902,,暂无简介, +5,0106000003590902,,暂无简介, +5,01000000037c0002,,暂无简介, +5,01010000000e0002,,暂无简介, +5,0101000003560902,,暂无简介, +5,0101030004140902,,暂无简介, +6,01410000035c0902,,暂无简介, +6,0105000003580902,,暂无简介, +6,01020100001b0002,,暂无简介, +6,0140000003550902,,暂无简介, +6,0100000003530902,,暂无简介, +6,01030000024f0902,,暂无简介, +6,01070000035a0902,,暂无简介, +6,01080000035b0902,,暂无简介, +6,0106000003590902,,暂无简介, +6,01010000000e0002,,暂无简介, +7,01410000035c0902,,暂无简介, +7,0105000003580902,,暂无简介, +7,01020100001b0002,,暂无简介, +7,0140000003550902,,暂无简介, +7,01030000024f0902,,暂无简介, +7,01070000035a0902,,暂无简介, +7,01080000035b0902,,暂无简介, +7,0101010000170002,,暂无简介, +7,0100010003500902,,暂无简介, +7,0106000003590902,,暂无简介, +8,35c0000002500a02,,暂无简介, +8,35c0000003920a02,,暂无简介, +9,0005000003730102,,解锁奥德赛主题关卡, +9,0000000003710102,,解锁奥德赛主题关卡, +9,0002000003720102,,解锁奥德赛主题关卡, +9,000a000000380102,,无敌蘑菇, +10,32400000025b0002,,获得服装Super Mirror I, +10,3240010003640002,,获得服装Super Mirror II, +10,0017000002680102,,暂无简介, +10,0005000000140002,,暂无简介, +10,0006000000150002,,暂无简介, +10,0013000002660102,,获得黛西公主装, +10,05810000001c0002,,获得星际火狐装, +10,0580000000050002,,获得星际火狐装, +10,0015000003670102,,暂无简介, +10,0023000003680102,,暂无简介, +10,01000000034b0902,,获得林克装, +10,0002000000010002,,获得碧姬公主装, +10,05c0000000060002,,获得萨姆斯装甲, +12,0809000004350402,,暂无简介, +12,08010000025d0402,,暂无简介, +12,0808000004340402,,暂无简介, +12,0800010003820002,,暂无简介, +12,0800010004150402,,暂无简介, +12,08000200003f0402,,暂无简介, +12,08000200036a0402,,暂无简介, +12,0800020002600402,,暂无简介, +12,08000100003e0402,,暂无简介, +12,08000100025f0402,,暂无简介, +12,0800010003690402,,暂无简介, +12,0800030000400402,,暂无简介, +12,08000300036b0402,,暂无简介, +12,0800030002610402,,暂无简介, +12,08020000025e0402,,暂无简介, +12,0804000003770402,,暂无简介, +12,08050200041b0402,,暂无简介, +12,08050200038f0402,,暂无简介, +12,08050100038e0402,,暂无简介, +12,0805030003900402,,暂无简介, +12,0803000003760402,,暂无简介, +12,0807000004330402,,暂无简介, +12,08060100041c0402,,暂无简介, +13,2106000003601202,,暂无简介, +13,210b000003a50002,,暂无简介, +13,2107000003611202,,暂无简介, +13,21080000036f1202,,暂无简介, +13,2108000003880002,,暂无简介, +13,21050000025a0002,,暂无简介, +13,2105010003630002,,暂无简介, +13,2101000000180002,,暂无简介, +13,2102000000290002,,暂无简介, +13,21000000000b0002,,暂无简介, +13,21030000002a0002,,暂无简介, +13,2104000002520002,,暂无简介, +13,2109000003701202,,暂无简介, +14,2106000003601202,,暂无简介, +14,210b000003a50002,,暂无简介, +14,2107000003611202,,暂无简介, +14,21080000036f1202,,暂无简介, +14,2108000003880002,,暂无简介, +14,21050000025a0002,,暂无简介, +14,2105010003630002,,暂无简介, +14,2101000000180002,,暂无简介, +14,2102000000290002,,暂无简介, +14,21000000000b0002,,暂无简介, +14,21030000002a0002,,暂无简介, +14,2104000002520002,,暂无简介, +14,2109000003701202,,暂无简介, +15,2106000003601202,,暂无简介, +15,210b000003a50002,,暂无简介, +15,2107000003611202,,暂无简介, +15,21080000036f1202,,暂无简介, +15,2108000003880002,,暂无简介, +15,21050000025a0002,,暂无简介, +15,2105010003630002,,暂无简介, +15,2101000000180002,,暂无简介, +15,2102000000290002,,暂无简介, +15,21000000000b0002,,暂无简介, +15,21030000002a0002,,暂无简介, +15,2104000002520002,,暂无简介, +15,2109000003701202,,暂无简介, +16,2106000003601202,,暂无简介, +16,210b000003a50002,,暂无简介, +16,2107000003611202,,暂无简介, +16,21080000036f1202,,暂无简介, +16,2108000003880002,,暂无简介, +16,21050000025a0002,,暂无简介, +16,2105010003630002,,暂无简介, +16,2101000000180002,,暂无简介, +16,2102000000290002,,暂无简介, +16,21000000000b0002,,暂无简介, +16,21030000002a0002,,暂无简介, +16,2104000002520002,,暂无简介, +16,2109000003701202,,暂无简介, +17,0000000002380602,,暂无简介, +17,08010000025d0402,,暂无简介, +17,01c1000002440502,,暂无简介, +17,01030000024f0902,,暂无简介, +17,00800102035d0302,,暂无简介, +17,05c0000004121302,,暂无简介, +17,0007000002630102,,暂无简介, +17,0182010100460502,,暂无简介, +17,019d000100ac0502,,暂无简介, +17,019f000101110502,,暂无简介, +17,0193000101740502,,暂无简介, +17,02ea000101d50502,,暂无简介, +17,0513000102e70502,,暂无简介, +17,028f0101031a0502,,暂无简介, +18,38c0000003911602,,暂无简介, +19,22440000043e1b02,,解锁执政官M服装/弥央、圣奈、泰恩的休闲装, +19,22420000041f0002,,解锁光之圣杯, +19,22430000043d1b02,,解锁执政官N服装/诺亚、兰兹、优妮的休闲装, +19,22410000041e0002,,解锁天之圣杯, +19,22400000002b0002,,解锁蒙那多, +20,35c30000036e0a02,,暂无简介, +20,35c10000036c0a02,,暂无简介, +20,35c0000002500a02,,暂无简介, +20,35c0000003920a02,,暂无简介, +20,35c20000036d0a02,,暂无简介, +21,35c30000036e0a02,,暂无简介, +21,35c10000036c0a02,,暂无简介, +21,35c0000002500a02,,暂无简介, +21,35c0000003920a02,,暂无简介, +21,35c20000036d0a02,,暂无简介, +22,1f02000000280002,,暂无简介, +22,1f00000002540c02,,暂无简介, +22,1f01000002550c02,,暂无简介, +22,1f400000035e1002,,暂无简介, +22,1f03000002570c02,,暂无简介, +23,1f02000000280002,,暂无简介, +23,1f00000002540c02,,暂无简介, +23,1f01000002550c02,,暂无简介, +23,1f400000035e1002,,暂无简介, +23,1f03000002570c02,,暂无简介, +24,1f02000000280002,,暂无简介, +24,1f00000002540c02,,暂无简介, +24,1f01000002550c02,,暂无简介, +24,1f400000035e1002,,暂无简介, +24,1f03000002570c02,,暂无简介, +25,3340000000320002,,暂无简介, +26,0600000000120002,,暂无简介, +26,00130000037a0002,,暂无简介, +26,0008000000030002,,暂无简介, +26,0580000000050002,,暂无简介, +26,0005ff00023a0702,,暂无简介, +26,08000100025f0402,,暂无简介, +26,1f000000000a0002,,暂无简介, +26,00010000000c0002,,暂无简介, +26,0188000002410502,,暂无简介, +26,0000000000000002,,暂无简介, +26,3480000000310002,,暂无简介, +26,06400100001e0002,,暂无简介, +26,3340000000320002,,暂无简介, +26,0002000000010002,,暂无简介, +26,0002000003720102,,暂无简介, +26,06420000035f1102,,暂无简介, +26,0004000002620102,,暂无简介, +26,05c0000000060002,,暂无简介, +26,3200000000300002,,暂无简介, +26,000a000000380102,,暂无简介, +26,0100010000160002,,暂无简介, +26,0180000000080002,,暂无简介, +26,00070000001a0002,,暂无简介, +26,0003000000020002,,暂无简介, +26,0181000100440502,,暂无简介, +26,0194000100aa0502,,暂无简介, +26,01920001010d0502,,暂无简介, +26,019c000101730502,,暂无简介, +26,0282000101d60502,,暂无简介, +26,04a2000102e80502,,暂无简介, +26,0374010103190502,,暂无简介, +27,0003010200430302,,暂无简介, +27,0001000000350102,,暂无简介, +27,0000000003710102,,暂无简介, +27,0002010003a70102,,暂无简介, +28,01010000000e0002,,暂无简介, +29,3480000003791502,,暂无简介, +30,3480000003791502,,暂无简介, +31,3480000002580002,,暂无简介, +32,05c3000003800002,,导弹包1个/补充弹药, +32,05c4000004131302,,暂无简介, +32,05c1000003661302,,补充弹药, +32,05c20000037f0002,,补充弹药, +32,05c0000000060002,,补充能量, +32,05c0000004121302,,能量罐1个/补充能量, +32,05c0000003651302,,补充能量, +32,05c00100001d0002,,补充能量, +33,0005000000390102,,暂无简介, +33,08010000025d0402,,暂无简介, +33,0013000002660102,,暂无简介, +33,0008000000030002,,暂无简介, +33,01020100001b0002,,暂无简介, +33,0003010200410302,,暂无简介, +33,0800010003820002,,暂无简介, +33,08000200036a0402,,暂无简介, +33,0800030000400402,,暂无简介, +33,01810100023f0502,,暂无简介, +33,0182000002400502,,暂无简介, +33,1f000000000a0002,,暂无简介, +33,01000000034e0902,,暂无简介, +33,00010000000c0002,,暂无简介, +33,08020000025e0402,,暂无简介, +33,00000000003d0102,,暂无简介, +33,22800000002c0002,,暂无简介, +33,00020003039dff02,,暂无简介, +33,018e000002490502,,暂无简介, +33,0004000002620102,,暂无简介, +33,05c0000000060002,,暂无简介, +33,0101010000170002,,暂无简介, +33,000a000000380102,,暂无简介, +33,0183000002420502,,暂无简介, +33,0101000003520902,,暂无简介, +33,05c00100001d0002,,暂无简介, +34,3503010002e50f02,,暂无简介, +34,35060000040d0f02,,暂无简介, +34,35080000040f1802,,暂无简介, +34,350b0000042d1802,,暂无简介, +34,3501000002e30f02,,暂无简介, +34,3500020002e20f02,,暂无简介, +34,3500010002e10f02,,暂无简介, +34,350a000004111802,,暂无简介, +34,350a0100042c1802,,暂无简介, +34,3509000004101802,,暂无简介, +34,35090100042b1802,,暂无简介, +34,3504010002e60f02,,暂无简介, +34,3502010002e40f02,,暂无简介, +34,35050000040c0f02,,暂无简介, +34,35070000040e0f02,,暂无简介, +35,35060000040d0f02,,暂无简介, +35,35050000040c0f02,,暂无简介, +35,35070000040e0f02,,暂无简介, +36,1906000000240002,,暂无简介, +36,1d01000003750d02,,暂无简介, +36,1b92000000250002,,暂无简介, +36,1bd7000003860002,,暂无简介, +36,1902000003830002,,暂无简介, +36,1927000000260002,,暂无简介, +36,1ac0000000110002,,暂无简介, +36,19960000023d0002,,暂无简介, +36,19ac000003850002,,暂无简介, +36,1919000000090002,,暂无简介, +36,1d000001025c0d02,,暂无简介, +36,1907000003840002,,暂无简介, +37,3805000103981702,,暂无简介, +37,3804000103971702,,暂无简介, +37,3803000103961702,,暂无简介, +37,3801000103941702,,暂无简介, +37,3800000103931702,,暂无简介, +37,3802000103951702,,暂无简介, +38,3503010002e50f02,,暂无简介, +38,3480000000310002,,暂无简介, +38,3501000002e30f02,,暂无简介, +38,3500010002e10f02,,暂无简介, +38,3504010002e60f02,,暂无简介, +38,3502010002e40f02,,暂无简介, +38,34c0000002530002,,暂无简介, +39,3503010002e50f02,,暂无简介, +39,3480000000310002,,暂无简介, +39,3501000002e30f02,,暂无简介, +39,3500010002e10f02,,暂无简介, +39,3504010002e60f02,,暂无简介, +39,3502010002e40f02,,暂无简介, +39,34c0000002530002,,暂无简介, +40,35c30000036e0a02,,暂无简介, +40,35c10000036c0a02,,暂无简介, +40,35c0000002500a02,,暂无简介, +40,35c0000003920a02,,暂无简介, +40,35c20000036d0a02,,暂无简介, +41,35c30000036e0a02,,暂无简介, +41,35c10000036c0a02,,暂无简介, +41,35c0000002500a02,,暂无简介, +41,35c0000003920a02,,暂无简介, +41,35c20000036d0a02,,暂无简介, +42,35c30000036e0a02,,暂无简介, +42,35c10000036c0a02,,暂无简介, +42,35c0000002500a02,,暂无简介, +42,35c0000003920a02,,暂无简介, +42,35c20000036d0a02,,暂无简介, +43,08010000025d0402,,暂无简介, +43,0800010003820002,,暂无简介, +43,0800010004150402,,暂无简介, +43,08000200003f0402,,暂无简介, +43,08000200036a0402,,暂无简介, +43,0800020002600402,,暂无简介, +43,08000100003e0402,,暂无简介, +43,08000100025f0402,,暂无简介, +43,0800010003690402,,暂无简介, +43,0800030000400402,,暂无简介, +43,08000300036b0402,,暂无简介, +43,0800030002610402,,暂无简介, +43,08020000025e0402,,暂无简介, +43,0804000003770402,,暂无简介, +43,08050200041b0402,,暂无简介, +43,08050200038f0402,,暂无简介, +43,08050100038e0402,,暂无简介, +43,0805030003900402,,暂无简介, +43,0803000003760402,,暂无简介, +44,1f02000002560c02,,暂无简介, +44,1f02000000280002,,暂无简介, +44,1f00000002540c02,,暂无简介, +44,1f000000000a0002,,暂无简介, +44,1f01000002550c02,,暂无简介, +44,1f01000000270002,,暂无简介, +44,1f400000035e1002,,暂无简介, +44,1f03000002570c02,,暂无简介, +45,0017000002680102,,暂无简介, +45,0005000000140002,,使狂怒酷霸王立即现身, +45,0006000000150002,,使酷霸王Jr.释放冲击波, +45,0013000002660102,,暂无简介, +45,00090000000d0002,,暂无简介, +45,0008000000030002,,暂无简介, +45,0015000003670102,,暂无简介, +45,0023000003680102,,暂无简介, +45,00010000000c0002,,暂无简介, +45,0000000000340102,,暂无简介, +45,0000030003a60102,,获得无敌铃铛, +45,00030102023e0302,,暂无简介, +45,0002000000360102,,暂无简介, +45,0002010003a70102,,随机获得一个增强道具, +45,00240000038d0002,,暂无简介, +45,0004000002620102,,暂无简介, +45,000a000000380102,,暂无简介, +45,0014000002670102,,暂无简介, +45,0007000002630102,,暂无简介, +46,0005000000140002,,暂无简介, +46,0005000000390102,,暂无简介, +46,0005000003730102,,显示紫金币位置/解锁酷霸王的礼服, +46,00130003039eff02,,, +46,0009000002650102,,解锁迪迪刚套装, +46,0000010000190002,,解锁医生套装, +46,000000030430ff02,,, +46,0001000000350102,,解锁路易吉套装, +46,00010003039cff02,,, +46,0000000000000002,,解锁经典套装, +46,00000000003c0102,,解锁金色马力欧套装, +46,00000003039bff02,,, +46,00000000003d0102,,解锁金色马力欧套装, +46,0000000003710102,,短时间无敌/解锁马力欧的礼服, +46,0002000003720102,,血上限+3/解锁婚纱, +46,3740000103741402,,暂无简介, +46,000a000303a0ff02,,, +46,0014000002670102,,解锁瓦路易吉套装, +46,00070000001a0002,,解锁瓦力欧套装, +46,00030003039fff02,,, +47,3dc1000004230002,,暂无简介, +47,3b40000003a30002,,暂无简介, +47,32400000025b0002,,暂无简介, +47,3240010003640002,,暂无简介, +47,0005000000140002,,暂无简介, +47,0006000000150002,,暂无简介, +47,210b000003a50002,,暂无简介, +47,0600000000120002,,暂无简介, +47,1906000000240002,,暂无简介, +47,2108000003880002,,暂无简介, +47,3600000002590002,,暂无简介, +47,3600010003620002,,暂无简介, +47,21050000025a0002,,暂无简介, +47,2105010003630002,,暂无简介, +47,00130000037a0002,,暂无简介, +47,0741000000200002,,暂无简介, +47,05c3000003800002,,暂无简介, +47,00090000000d0002,,暂无简介, +47,0008000000030002,,暂无简介, +47,0000010000190002,,暂无简介, +47,07820000002f0002,,暂无简介, +47,05810000001c0002,,暂无简介, +47,0580000000050002,,暂无简介, +47,01020100001b0002,,暂无简介, +47,1b92000000250002,,暂无简介, +47,3640000003a20002,,暂无简介, +47,078f000003810002,,暂无简介, +47,2101000000180002,,暂无简介, +47,1bd7000003860002,,暂无简介, +47,0800010003820002,,暂无简介, +47,01810000037d0002,,暂无简介, +47,1902000003830002,,暂无简介, +47,1927000000260002,,暂无简介, +47,3a00000003a10002,,暂无简介, +47,33c0000004200002,,暂无简介, +47,34c1000003890002,,暂无简介, +47,1f02000000280002,,暂无简介, +47,00c00000037b0002,,暂无简介, +47,1f000000000a0002,,暂无简介, +47,0100000000040002,,暂无简介, +47,06c00000000f0002,,暂无简介, +47,1ac0000000110002,,暂无简介, +47,2281000002510002,,暂无简介, +47,2102000000290002,,暂无简介, +47,00010000000c0002,,暂无简介, +47,0000000000000002,,暂无简介, +47,21000000000b0002,,暂无简介, +47,3480000000310002,,暂无简介, +47,3480000002580002,,暂无简介, +47,1f01000000270002,,暂无简介, +47,19960000023d0002,,暂无简介, +47,07c0000000210002,,暂无简介, +47,07c0020000230002,,暂无简介, +47,07c0010000220002,,暂无简介, +47,0a400000041d0002,,暂无简介, +47,07800000002d0002,,暂无简介, +47,22420000041f0002,,暂无简介, +47,22800000002c0002,,暂无简介, +47,06400100001e0002,,暂无简介, +47,3340000000320002,,暂无简介, +47,07420000001f0002,,暂无简介, +47,0002000000010002,,暂无简介, +47,19ac000003850002,,暂无简介, +47,1919000000090002,,暂无简介, +47,00240000038d0002,,暂无简介, +47,0740000000100002,,暂无简介, +47,1d40000003870002,,暂无简介, +47,22410000041e0002,,暂无简介, +47,07810000002e0002,,暂无简介, +47,0781000000330002,,暂无简介, +47,37c10000038c0002,,暂无简介, +47,05c20000037f0002,,暂无简介, +47,21030000002a0002,,暂无简介, +47,0004010000130002,,暂无简介, +47,2104000002520002,,暂无简介, +47,34c0000002530002,,暂无简介, +47,05c0000000060002,,暂无简介, +47,3601000004210002,,暂无简介, +47,0101010000170002,,暂无简介, +47,22400000002b0002,,暂无简介, +47,37c00000038b0002,,暂无简介, +47,37800000038a0002,,暂无简介, +47,3200000000300002,,暂无简介, +47,3f000000042e0002,,暂无简介, +47,1907000003840002,,暂无简介, +47,3dc0000004220002,,暂无简介, +47,3c80000003a40002,,暂无简介, +47,0100010000160002,,暂无简介, +47,0180000000080002,,暂无简介, +47,00070000001a0002,,暂无简介, +47,0700000000070002,,暂无简介, +47,05840000037e0002,,暂无简介, +47,0003000000020002,,暂无简介, +47,01000000037c0002,,暂无简介, +47,01010000000e0002,,暂无简介, +47,05c00100001d0002,,暂无简介, +48,0003010200410302,,暂无简介, +48,0005ff00023a0702,,暂无简介, +48,0023000003680102,,暂无简介, +48,0003010200430302,,暂无简介, +48,0001000000350102,,暂无简介, +48,0000000000000002,,暂无简介, +48,0002000000360102,,暂无简介, +48,0003010200420302,,暂无简介, +48,00800102035d0302,,暂无简介, +48,000a000000380102,,暂无简介, +48,0003000000020002,,暂无简介, +49,38460001042a1902,,暂无简介, +49,3842000104261902,,暂无简介, +49,3845000104291902,,暂无简介, +49,3844000104281902,,暂无简介, +49,3843000104271902,,暂无简介, +49,3841000104251902,,暂无简介, +49,3840000104241902,,暂无简介, +50,3380000003781402,,暂无简介, +51,0017000002680102,,暂无简介, +51,0005000000140002,,暂无简介, +51,0006000000150002,,暂无简介, +51,00130000037a0002,,暂无简介, +51,00090000000d0002,,暂无简介, +51,0008000002640102,,暂无简介, +51,0015000003670102,,暂无简介, +51,0023000003680102,,暂无简介, +51,00010000000c0002,,暂无简介, +51,0000000000340102,,暂无简介, +51,0002000000010002,,暂无简介, +51,0003010200420302,,暂无简介, +51,0004010000130002,,暂无简介, +51,0014000002670102,,暂无简介, +51,0007000002630102,,暂无简介, +53,0192000002470502,,, +53,0193000002480502,,, +53,018b000002460502,,, +53,018c000002430502,,, +53,01810100023f0502,,, +53,0182000002400502,,, +53,01960000024e0502,,, +53,01940000024a0502,,, +53,01c1000002440502,,, +53,0188000002410502,,, +53,018a000002450502,,, +53,018e000002490502,,, +53,018d0000024c0502,,, +53,01810000024b0502,,, +53,01840000024d0502,,, +53,0183000002420502,,, +54,0282000101d60502,,, +54,025f000101d70502,,, +54,02ea000101d50502,,, +55,0374010103190502,,, +55,028f0101031a0502,,, +55,04d30101031b0502,,, +55,032e0101031c0502,,, +55,02e00101031d0502,,, +55,04a80101031e0502,,, +56,0181000100440502,,, +56,0183000100450502,,, +56,0182010100460502,,, +56,0187000100470502,,, +56,0196000100480502,,, +56,018e000100490502,,, +56,01a30001004a0502,,, +56,01850001004b0502,,, +56,018c0001004c0502,,, +56,01a40001004d0502,,, +56,01910001004e0502,,, +56,01a80001004f0502,,, +56,01a6000100500502,,, +56,01b5000100510502,,, +56,01b0000100520502,,, +56,01aa000100530502,,, +56,01c1000100540502,,, +56,025d000100550502,,, +56,02d6000100560502,,, +56,0216000100570502,,, +56,02ef000100580502,,, +56,04fe000100590502,,, +56,02870001005a0502,,, +56,05150001005b0502,,, +56,03710001005c0502,,, +56,04ba0001005d0502,,, +56,02db0001005e0502,,, +56,03450001005f0502,,, +56,047a000100600502,,, +56,049b000100610502,,, +56,04ed000100620502,,, +56,027d000100630502,,, +56,0307000100640502,,, +56,0261000100650502,,, +56,0401000100660502,,, +56,02c4000100670502,,, +56,0266000100680502,,, +56,02b1000100690502,,, +56,02310001006a0502,,, +56,03480001006b0502,,, +56,03180001006c0502,,, +56,03db0001006d0502,,, +56,04650001006e0502,,, +56,04000001006f0502,,, +56,0429000100700502,,, +56,03a9000100710502,,, +56,02a4000100720502,,, +56,0452000100730502,,, +56,04a5000100740502,,, +56,0263000100750502,,, +56,0323000100760502,,, +56,04ec000100770502,,, +56,040d000100780502,,, +56,030b000100790502,,, +56,04970001007a0502,,, +56,04fd0001007b0502,,, +56,043d0001007c0502,,, +56,02680001007d0502,,, +56,02190001007e0502,,, +56,04100001007f0502,,, +56,021b000100800502,,, +56,024f000100810502,,, +56,04e6000100820502,,, +56,0280000100830502,,, +56,0235000100840502,,, +56,035a000100850502,,, +56,0384000100860502,,, +56,03ae000100870502,,, +56,040e000100880502,,, +56,0394000100890502,,, +56,03bc0001008a0502,,, +56,03ee0001008b0502,,, +56,046c0001008c0502,,, +56,04800001008d0502,,, +56,044c0001008e0502,,, +56,033f0001008f0502,,, +56,02fb000100900502,,, +56,03a8000100910502,,, +56,0479000100920502,,, +56,03c6000100930502,,, +56,04c7000100940502,,, +56,0299000100950502,,, +56,0208000100960502,,, +56,02fa000100970502,,, +56,0488000100980502,,, +56,050b000100990502,,, +56,04940001009a0502,,, +56,03830001009b0502,,, +56,02de0001009c0502,,, +56,03290001009d0502,,, +56,04d10001009e0502,,, +56,034b0001009f0502,,, +56,0393000100a00502,,, +56,0200000100a10502,,, +56,04dd000100a20502,,, +56,04a6000100a30502,,, +56,04cc000100a40502,,, +56,0460000100a50502,,, +56,0317000100a60502,,, +56,02f0000100a70502,,, +57,0182000100a80502,,, +57,018a000100a90502,,, +57,0194000100aa0502,,, +57,0189000100ab0502,,, +57,019d000100ac0502,,, +57,019e000100ad0502,,, +57,01b6000100ae0502,,, +57,0186010100af0502,,, +57,0195000100b00502,,, +57,0198000100b10502,,, +57,01b1000100b20502,,, +57,018f000100b30502,,, +57,0181010100b40502,,, +57,01b3000100b50502,,, +57,019b000100b60502,,, +57,019a000100b70502,,, +57,01ad000100b80502,,, +57,027f000100b90502,,, +57,026e000100ba0502,,, +57,03c1000100bb0502,,, +57,032d000100bc0502,,, +57,023c000100bd0502,,, +57,02dc000100be0502,,, +57,0398000100bf0502,,, +57,0464000100c00502,,, +57,0251000100c10502,,, +57,03d1000100c20502,,, +57,026c000100c30502,,, +57,02b2000100c40502,,, +57,0344000100c50502,,, +57,0309000100c60502,,, +57,0283000100c70502,,, +57,03a6000100c80502,,, +57,035d000100c90502,,, +57,0440000100ca0502,,, +57,029b000100cb0502,,, +57,02f2000100cc0502,,, +57,02c9000100cd0502,,, +57,04de000100ce0502,,, +57,0450000100cf0502,,, +57,03fa000100d00502,,, +57,023e000100d10502,,, +57,0260000100d20502,,, +57,0369000100d30502,,, +57,04a4000100d40502,,, +57,0381000100d50502,,, +57,0311000100d60502,,, +57,050e000100d70502,,, +57,0418000100d80502,,, +57,0496000100d90502,,, +57,021a000100da0502,,, +57,04ce000100db0502,,, +57,02c3000100dc0502,,, +57,04b3000100dd0502,,, +57,02eb000100de0502,,, +57,0499000100df0502,,, +57,041a000100e00502,,, +57,04cf000100e10502,,, +57,02d8000100e20502,,, +57,028b000100e30502,,, +57,0214000100e40502,,, +57,03d2000100e50502,,, +57,03aa000100e60502,,, +57,0500000100e70502,,, +57,04df000100e80502,,, +57,026b000100e90502,,, +57,02dd000100ea0502,,, +57,0357000100eb0502,,, +57,03e6000100ec0502,,, +57,049d000100ed0502,,, +57,029a000100ee0502,,, +57,0489000100ef0502,,, +57,03b1000100f00502,,, +57,041b000100f10502,,, +57,022d000100f20502,,, +57,046d000100f30502,,, +57,03ff000100f40502,,, +57,047b000100f50502,,, +57,0462000100f60502,,, +57,04e0000100f70502,,, +57,0310000100f80502,,, +57,03bd000100f90502,,, +57,033b000100fa0502,,, +57,0416000100fb0502,,, +57,0486000100fc0502,,, +57,0220000100fd0502,,, +57,0252000100fe0502,,, +57,0270000100ff0502,,, +57,033c000101000502,,, +57,04c5000101010502,,, +57,02f9000101020502,,, +57,0202000101030502,,, +57,0453000101040502,,, +57,0437000101050502,,, +57,0385000101060502,,, +57,0510000101070502,,, +57,0267000101080502,,, +57,04e2000101090502,,, +57,03250001010a0502,,, +57,03720001010b0502,,, +58,018d0001010c0502,,, +58,01920001010d0502,,, +58,01830101010e0502,,, +58,01a00001010f0502,,, +58,01a1000101100502,,, +58,019f000101110502,,, +58,0188000101120502,,, +58,01b4000101130502,,, +58,01a7000101140502,,, +58,018b000101150502,,, +58,0199000101160502,,, +58,0185020101170502,,, +58,018c010101180502,,, +58,018f010101190502,,, +58,01810201011a0502,,, +58,01ae0001011b0502,,, +58,01af0001011c0502,,, +58,03380001011d0502,,, +58,022f0001011e0502,,, +58,02690001011f0502,,, +58,0281000101200502,,, +58,0313000101210502,,, +58,02c7000101220502,,, +58,021e000101230502,,, +58,02a6000101240502,,, +58,025e000101250502,,, +58,024b000101260502,,, +58,0392000101270502,,, +58,0342000101280502,,, +58,035c000101290502,,, +58,03e70001012a0502,,, +58,03c40001012b0502,,, +58,03af0001012c0502,,, +58,042a0001012d0502,,, +58,047d0001012e0502,,, +58,030e0001012f0502,,, +58,02d7000101300502,,, +58,0463000101310502,,, +58,04e7000101320502,,, +58,02da000101330502,,, +58,0373000101340502,,, +58,0356000101350502,,, +58,02cb000101360502,,, +58,0262000101370502,,, +58,02f8000101380502,,, +58,0326000101390502,,, +58,033d0001013a0502,,, +58,04ef0001013b0502,,, +58,02210001013c0502,,, +58,029e0001013d0502,,, +58,028c0001013e0502,,, +58,026d0001013f0502,,, +58,049c000101400502,,, +58,041c000101410502,,, +58,050d000101420502,,, +58,034a000101430502,,, +58,0222000101440502,,, +58,02f1000101450502,,, +58,026a000101460502,,, +58,03fc000101470502,,, +58,032c000101480502,,, +58,043e000101490502,,, +58,04980001014a0502,,, +58,04ee0001014b0502,,, +58,04850001014c0502,,, +58,03080001014d0502,,, +58,049a0001014e0502,,, +58,03a40001014f0502,,, +58,040f000101500502,,, +58,03da000101510502,,, +58,04cd000101520502,,, +58,0514000101530502,,, +58,0265000101540502,,, +58,043f000101550502,,, +58,037e000101560502,,, +58,03d6000101570502,,, +58,03fd000101580502,,, +58,040c000101590502,,, +58,02ed0001015a0502,,, +58,03a50001015b0502,,, +58,03c50001015c0502,,, +58,03700001015d0502,,, +58,04510001015e0502,,, +58,041e0001015f0502,,, +58,04b9000101600502,,, +58,0461000101610502,,, +58,04ff000101620502,,, +58,0478000101630502,,, +58,0469000101640502,,, +58,04e3000101650502,,, +58,023f000101660502,,, +58,04c6000101670502,,, +58,04fa000101680502,,, +58,027e000101690502,,, +58,02010001016a0502,,, +58,03820001016b0502,,, +58,044b0001016c0502,,, +58,030f0001016d0502,,, +58,04a00001016e0502,,, +58,04a10001016f0502,,, +59,0181030101700502,,, +59,0190000101710502,,, +59,01a5000101720502,,, +59,019c000101730502,,, +59,0193000101740502,,, +59,0186030101750502,,, +59,01a9000101760502,,, +59,0197000101770502,,, +59,018e010101780502,,, +59,0185040101790502,,, +59,01c10101017a0502,,, +59,01b10101017b0502,,, +59,01ab0001017c0502,,, +59,01a20001017d0502,,, +59,01a80101017e0502,,, +59,01ac0001017f0502,,, +59,02ea000101800502,,, +59,0282000101810502,,, +59,0215000101820502,,, +59,03ec000101830502,,, +59,030d000101840502,,, +59,0390000101850502,,, +59,0272000101860502,,, +59,0380000101870502,,, +59,03ac000101880502,,, +59,0324000101890502,,, +59,041d0001018a0502,,, +59,036b0001018b0502,,, +59,02a50001018c0502,,, +59,03490001018d0502,,, +59,035e0001018e0502,,, +59,02fc0001018f0502,,, +59,026f000101900502,,, +59,02df000101910502,,, +59,0495000101920502,,, +59,044d000101930502,,, +59,0436000101940502,,, +59,0511000101950502,,, +59,04d0000101960502,,, +59,046b000101970502,,, +59,03be000101980502,,, +59,02ee000101990502,,, +59,02030001019a0502,,, +59,02710001019b0502,,, +59,02b80001019c0502,,, +59,036a0001019d0502,,, +59,028e0001019e0502,,, +59,02090001019f0502,,, +59,047c000101a00502,,, +59,03a7000101a10502,,, +59,033e000101a20502,,, +59,03ed000101a30502,,, +59,03fe000101a40502,,, +59,03d9000101a50502,,, +59,04a7000101a60502,,, +59,04d2000101a70502,,, +59,045f000101a80502,,, +59,03b0000101a90502,,, +59,037f000101aa0502,,, +59,0411000101ab0502,,, +59,0264000101ac0502,,, +59,04e5000101ad0502,,, +59,0454000101ae0502,,, +59,042b000101af0502,,, +59,0483000101b00502,,, +59,0339000101b10502,,, +59,03ad000101b20502,,, +59,0217000101b30502,,, +59,03d7000101b40502,,, +59,023d000101b50502,,, +59,04e4000101b60502,,, +59,049e000101b70502,,, +59,030c000101b80502,,, +59,04b2000101b90502,,, +59,02a2000101ba0502,,, +59,0415000101bb0502,,, +59,03bf000101bc0502,,, +59,028d000101bd0502,,, +59,04e1000101be0502,,, +59,0487000101bf0502,,, +59,0316000101c00502,,, +59,050c000101c10502,,, +59,0399000101c20502,,, +59,0327000101c30502,,, +59,02ec000101c40502,,, +59,025f000101c50502,,, +59,04fb000101c60502,,, +59,030a000101c70502,,, +59,02d9000101c80502,,, +59,04a3000101c90502,,, +59,02ca000101ca0502,,, +59,043c000101cb0502,,, +59,033a000101cc0502,,, +59,021d000101cd0502,,, +59,04e8000101ce0502,,, +59,03fb000101cf0502,,, +59,046a000101d00502,,, +59,024a000101d10502,,, +59,0230000101d20502,,, +59,022e000101d30502,,, +60,0183020103a80502,,, +60,0184050103a90502,,, +60,0181040103aa0502,,, +60,0a00000103ab0502,,, +60,0a01000103ac0502,,, +60,0192000103ad0502,,, +60,0193000103ae0502,,, +60,0188000103af0502,,, +60,0187000103b00502,,, +60,0189010103b10502,,, +60,0182000103b20502,,, +60,0a02000103b30502,,, +60,0a03000103b40502,,, +60,0a04000103b50502,,, +60,0194000103b60502,,, +60,01a6000103b70502,,, +60,0a05000103b80502,,, +60,01a2000103b90502,,, +60,0a06000103ba0502,,, +60,01c1020103bb0502,,, +60,0a07000103bc0502,,, +60,0a08000103bd0502,,, +60,0183030103be0502,,, +60,0181050103bf0502,,, +60,0a09000103c00502,,, +60,0a0a000103c10502,,, +60,0a0b000103c20502,,, +60,0a0c000103c30502,,, +60,0a0d000103c40502,,, +60,0a0e000103c50502,,, +60,0a0f000103c60502,,, +60,0a10000103c70502,,, +60,0a11000103c80502,,, +60,0a12000103c90502,,, +60,0a13000103ca0502,,, +60,0a14000103cb0502,,, +60,0a15000103cc0502,,, +60,0a16000103cd0502,,, +60,0a17000103ce0502,,, +60,0a18000103cf0502,,, +60,0a19000103d00502,,, +60,0a1a000103d10502,,, +60,0a1b000103d20502,,, +60,0a1c000103d30502,,, +60,0a1d000103d40502,,, +60,0a1e000103d50502,,, +60,0a1f000103d60502,,, +60,0a20000103d70502,,, +61,0181000101d40502,,, +61,0182000101d80502,,, +62,0513000102e70502,,, +62,04a2000102e80502,,, +62,028a000102e90502,,, +62,0232000102ea0502,,, +62,0328000102eb0502,,, +62,04b6000102ec0502,,, +62,04c8000102ed0502,,, +62,04fc000102ee0502,,, +62,0343000102ef0502,,, +62,04eb000102f00502,,, +62,0481000102f10502,,, +62,0468000102f20502,,, +62,03d3000102f30502,,, +62,0314000102f40502,,, +62,03e8000102f50502,,, +62,024d000102f60502,,, +62,021c000102f70502,,, +62,0238000102f80502,,, +62,02f3000102f90502,,, +62,0358000102fa0502,,, +62,036e000102fb0502,,, +62,0395000102fc0502,,, +62,0482000102fd0502,,, +62,0284000102fe0502,,, +62,02a3000102ff0502,,, +62,0438000103000502,,, +62,049f000103010502,,, +62,0347000103020502,,, +62,043b000103030502,,, +62,036d000103040502,,, +62,02f4000103050502,,, +62,0233000103060502,,, +62,032a000103070502,,, +62,02c5000103080502,,, +62,0312000103090502,,, +62,04140001030a0502,,, +62,03ea0001030b0502,,, +62,04b40001030c0502,,, +62,04c90001030d0502,,, +62,03410001030e0502,,, +62,02b70001030f0502,,, +62,03c0000103100502,,, +62,0439000103110502,,, +62,0206000103120502,,, +62,0286000103130502,,, +62,050f000103140502,,, +62,044e000103150502,,, +62,03ab000103160502,,, +62,021f000103170502,,, +62,04ea000103180502,,, +63,05c1000003661302,,解锁密特罗德搜寻/解锁融合模式, +63,05c0000000060002,,解锁备用导弹罐/通关解锁美术画廊, +63,05c0000003651302,,解锁备用能量罐/通关解锁美术画廊, +63,05c00100001d0002,,解锁备用弹药罐/通关解锁BGM, +64,2101000000180002,,艾克可入队, +64,2102000000290002,,露琪娜可入队, +64,21000000000b0002,,马尔斯可入队, +64,21030000002a0002,,鲁弗莱可入队, +65,2106000003601202,,解锁迷宫/召唤幻影骑士, +65,2107000003611202,,解锁迷宫/召唤幻影骑士, +65,2108000003880002,,召唤幻影骑士, +65,21050000025a0002,,召唤幻影骑士, +65,2101000000180002,,召唤幻影骑士, +65,2102000000290002,,召唤幻影骑士, +65,21000000000b0002,,召唤幻影骑士, +65,21030000002a0002,,召唤幻影骑士, +65,2104000002520002,,召唤幻影骑士, +66,1d01000003750d02,,显示章节的皮卡丘提示数, +67,06400100001e0002,,随时叫出皮克敏, +67,06420000035f1102,,随时叫出皮克敏, +68,01000000034f0902,,暂无简介, +68,01020100001b0002,,受到2倍伤害, +68,0100000000040002,,恢复箭数量, +68,01000000034b0902,,暂无简介, +68,01030000024f0902,,解锁可获得9999钱包的新迷宫, +68,0101010000170002,,恢复心心, +68,0100010000160002,,恢复箭数量, +68,0100010003500902,,暂无简介, +68,0101000003520902,,暂无简介, +68,01010000000e0002,,恢复心心, +69,0017000002680102,,显示嘘嘘鬼位置, +69,00010000000c0002,,可原地复活一次, +69,0000000000340102,,毒蘑菇变成红蘑菇, +69,000a000000380102,,与奇诺比奥对话会回血, +70,09cd020102ab0e02,,, +70,09cd040102ad0e02,,, +70,09cd050102ae0e02,,, +70,09cd010102aa0e02,,, +70,09cd030102ac0e02,,, +70,09cc020102a60e02,,, +70,09cc040102a80e02,,, +70,09cc050102a90e02,,, +70,09cc010102a50e02,,, +70,09cc030102a70e02,,, +70,09ce020102b00e02,,, +70,09ce040102b20e02,,, +70,09ce050102b30e02,,, +70,09ce010102af0e02,,, +70,09ce030102b10e02,,, +70,09cb020102a10e02,,, +70,09cb040102a30e02,,, +70,09cb050102a40e02,,, +70,09cb010102a00e02,,, +70,09cb030102a20e02,,, +70,09c9020102970e02,,, +70,09c9040102990e02,,, +70,09c90501029a0e02,,, +70,09c9010102960e02,,, +70,09c9030102980e02,,, +70,09ca0201029c0e02,,, +70,09ca0401029e0e02,,, +70,09ca0501029f0e02,,, +70,09ca0101029b0e02,,, +70,09ca0301029d0e02,,, +70,09c3020102790e02,,, +70,09c30401027b0e02,,, +70,09c30501027c0e02,,, +70,09c3010102780e02,,, +70,09c30301027a0e02,,, +70,09c8020102920e02,,, +70,09c8040102940e02,,, +70,09c8050102950e02,,, +70,09c8010102910e02,,, +70,09c8030102930e02,,, +70,09c70201028d0e02,,, +70,09c70401028f0e02,,, +70,09c7050102900e02,,, +70,09c70101028c0e02,,, +70,09c70301028e0e02,,, +70,09c10201026f0e02,,, +70,09c1040102710e02,,, +70,09c1050102720e02,,, +70,09c10101026e0e02,,, +70,09c1030102700e02,,, +70,09c00201026a0e02,,, +70,09c00401026c0e02,,, +70,09c00501026d0e02,,, +70,09c0010102690e02,,, +70,09c00301026b0e02,,, +70,09d0020102ba0e02,,, +70,09d0040102bc0e02,,, +70,09d0050102bd0e02,,, +70,09d0010102b90e02,,, +70,09d0030102bb0e02,,, +70,09c2020102740e02,,, +70,09c2040102760e02,,, +70,09c2050102770e02,,, +70,09c2010102730e02,,, +70,09c2030102750e02,,, +70,09d1020102bf0e02,,, +70,09d1040102c10e02,,, +70,09d1050102c20e02,,, +70,09d1010102be0e02,,, +70,09d1030102c00e02,,, +70,09cf020102b50e02,,, +70,09cf040102b70e02,,, +70,09cf050102b80e02,,, +70,09cf010102b40e02,,, +70,09cf030102b60e02,,, +70,09c6020102880e02,,, +70,09c60401028a0e02,,, +70,09c60501028b0e02,,, +70,09c6010102870e02,,, +70,09c6030102890e02,,, +70,09c5020102830e02,,, +70,09c5040102850e02,,, +70,09c5050102860e02,,, +70,09c5010102820e02,,, +70,09c5030102840e02,,, +70,09c40201027e0e02,,, +70,09c4040102800e02,,, +70,09c4050102810e02,,, +70,09c40101027d0e02,,, +70,09c40301027f0e02,,, diff --git a/fw/scripts/amiibo_db_gen.py b/fw/scripts/amiibo_db_gen.py index 5709ca5a..364deff4 100644 --- a/fw/scripts/amiibo_db_gen.py +++ b/fw/scripts/amiibo_db_gen.py @@ -26,6 +26,7 @@ def __init__(self): self.amiibo_id = None self.note_en = None self.note_cn = None + self.note_it = None @@ -34,6 +35,9 @@ def get_prorject_directory(): def fetch_amiibo_from_api(): + import certifi + import os + os.environ['SSL_CERT_FILE'] = certifi.where() conn = urlopen("https://www.amiiboapi.com/api/amiibo/") body = json.loads(conn.read()) amiibos = list() @@ -90,13 +94,13 @@ def merge_amiibo(amiibos_csv, amiibos_api): def gen_amiibo_data_c_file(amiibos): c_file = get_prorject_directory() + "/application/src/amiidb/db_amiibo.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment f.write('#include "db_header.h"\n') f.write('const db_amiibo_t amiibo_list[] = {\n') for amiibo in amiibos: - f.write('{0x%s, 0x%s, "%s", "%s"}, \n' % (amiibo.id[0:8], amiibo.id[8:16], amiibo.name_en, - amiibo.name_cn)) + amiibo.name_cn)) # added amiibo.name_it f.write("{0, 0, 0, 0}\n") f.write("};\n") @@ -112,7 +116,7 @@ def read_games_from_csv(): game.id = r[0] game.parent_id = r[1] game.name_en = r[2] - game.name_cn = r[3] + game.name_cn = r[3] game.order = r[4] games.append(game) return games @@ -125,12 +129,13 @@ def read_link_from_csv(): links = list() with open(csv_file, "r", encoding="utf8") as f: for r in csv.reader(f): - link = Link() - link.game_id = r[0] - link.amiibo_id = r[1] - link.note_en = r[2] - link.note_cn = r[3] - links.append(link) + link = Link() + link.game_id = r[0] + link.amiibo_id = r[1] + link.note_en = r[2] + link.note_cn = r[3] + link.note_it = r[4] + links.append(link) return links @@ -150,19 +155,20 @@ def count_game_links(games, links, game_id): def gen_amiibo_link_c_file(links): c_file = get_prorject_directory() + "/application/src/amiidb/db_link.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment f.write('#include "db_header.h"\n') f.write('const db_link_t link_list[] = {\n') for link in links: - - f.write('{%s, 0x%s, 0x%s, "%s", "%s"}, \n' % + f.write('{%s, 0x%s, 0x%s, "%s", "%s", "%s"}, \n' % (link.game_id, link.amiibo_id[0:8], link.amiibo_id[8:16], link.note_en, - link.note_cn)) - f.write("{0, 0, 0, 0, 0}\n") + link.note_cn, link.note_it)) # added link.note_it + f.write("{0, 0, 0, 0, 0, 0}\n") f.write("};\n") def gen_amiibo_game_c_file(games, links): c_file = get_prorject_directory() + "/application/src/amiidb/db_game.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment f.write('#include "db_header.h"\n') f.write('const db_game_t game_list[] = {\n') for game in games: @@ -184,6 +190,7 @@ def gen_other_link(amiibos, links): link.amiibo_id = amiibo.id link.note_en = "" link.note_cn = "" + link.note_it = "" new_link.append(link) print("uncategorized amiibo (%s, %s)" % (link.amiibo_id, amiibo.name_en)) if len(new_link) > 0: diff --git a/fw/scripts/amiibo_tree_gen.py b/fw/scripts/amiibo_tree_gen.py index 84408fcb..9a30a88c 100644 --- a/fw/scripts/amiibo_tree_gen.py +++ b/fw/scripts/amiibo_tree_gen.py @@ -24,6 +24,7 @@ def __init__(self): self.amiibo_id = None self.note_en = None self.note_cn = None + self.name_it = None def get_prorject_directory(): return os.path.abspath(os.path.dirname(__file__)+"/../") @@ -83,6 +84,7 @@ def read_link_from_csv(): link.amiibo_id = r[1] link.note_en = r[2] link.note_cn = r[3] + link.note_it = r[4] links.append(link) return links @@ -97,6 +99,7 @@ def write_link_to_csv(links): r.append(link.amiibo_id) r.append(link.note_en) r.append(link.note_cn) + r.append(link.note_it) w.writerow(r) @@ -132,6 +135,7 @@ def add_ac_link(amiibo_id, game_name): link.amiibo_id = amiibo_id link.note_cn = "" link.note_en = "" + link.note_it = "" links.append(link) From 681625faf6926c67610020041c3c95af08e13b21 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 12:34:33 +0200 Subject: [PATCH 016/101] italian note-it is now used for LANGUAGE_IT_IT --- fw/application/src/app/amiidb/view/amiibo_view.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fw/application/src/app/amiidb/view/amiibo_view.c b/fw/application/src/app/amiidb/view/amiibo_view.c index f42725dc..9ad258b0 100644 --- a/fw/application/src/app/amiidb/view/amiibo_view.c +++ b/fw/application/src/app/amiidb/view/amiibo_view.c @@ -69,7 +69,14 @@ static void amiibo_view_on_draw(mui_view_t *p_view, mui_canvas_t *p_canvas) { if (strlen(ntag->notes) > 0) { p_amiibo_view->desc_total = mui_element_autowrap_text_box(p_canvas, clip_win_cur.x, clip_win_cur.y, clip_win_cur.w, clip_win_cur.h, p_amiibo_view->desc_offset, square_r, ntag->notes); } else if (link != NULL) { - const char *notes = getLanguage() == LANGUAGE_ZH_HANS ? link->note_cn : link->note_en; + const char *notes; + if (getLanguage() == LANGUAGE_ZH_HANS) { + notes = link->note_cn; + } else if(getLanguage() == LANGUAGE_IT_IT) { + notes = link->note_it; + } else { + notes = link->note_en; + } p_amiibo_view->desc_total = mui_element_autowrap_text_box(p_canvas, clip_win_cur.x, clip_win_cur.y, clip_win_cur.w, clip_win_cur.h, p_amiibo_view->desc_offset, square_r, notes); } mui_canvas_set_clip_window(p_canvas, &clip_win_prev); From b87726913e275e8713ff3cb2eabfcc96d3acbda8 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 13:50:25 +0200 Subject: [PATCH 017/101] traduzioni aggirnate per riflettere i nomi effettivi nel gioco --- fw/application/src/amiidb/db_link.c | 4 ++-- fw/data/amiidb_link.csv | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index 7a70c8ed..cf6e15fb 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -17,7 +17,7 @@ const db_link_t link_list[] = { {1, 0x01000000, 0x04180902, "Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi"}, {1, 0x01000000, 0x034d0902, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, {1, 0x01030000, 0x024f0902, "Meat/Paraglider Skin Material", "肉/滑翔伞皮肤布料", "Carne/Tessuto della Paravela"}, -{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, {1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {1, 0x01010100, 0x00170002, "Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {1, 0x01000100, 0x00160002, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, @@ -50,7 +50,7 @@ const db_link_t link_list[] = { {4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, {4, 0x01000000, 0x034d0902, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, {4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo a 20 Cuori"}, -{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, {4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {4, 0x01010100, 0x00170002, "Sheik Set/Eightfold Blade/Mushroom", "希克服套装/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {4, 0x01000100, 0x00160002, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, diff --git a/fw/data/amiidb_link.csv b/fw/data/amiidb_link.csv index 65b3ffba..b8b30631 100644 --- a/fw/data/amiidb_link.csv +++ b/fw/data/amiidb_link.csv @@ -14,7 +14,7 @@ 1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi 1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo 1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,Carne/Tessuto della Paravela -1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce 1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce @@ -47,7 +47,7 @@ 4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia 4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo 4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo a 20 Cuori -4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce 4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce From 9642b5114848d1a2f66089e2da321b6bcb13028a Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 14:14:11 +0200 Subject: [PATCH 018/101] traduzioni aggirnate per riflettere i nomi effettivi nel gioco --- fw/application/src/amiidb/db_link.c | 28 ++++++++++++++-------------- fw/data/amiidb_link.csv | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index cf6e15fb..f12a8784 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -1,9 +1,9 @@ /* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */ #include "db_header.h" const db_link_t link_list[] = { -{1, 0x01000000, 0x034f0902, "Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia"}, -{1, 0x01410000, 0x035c0902, "Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela"}, -{1, 0x01050000, 0x03580902, "Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石", "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, +{1, 0x01000000, 0x034f0902, "Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie"}, +{1, 0x01410000, 0x035c0902, "Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento Boblin in Ossa di Drago/Carne/Tessuto della Paravela"}, +{1, 0x01050000, 0x03580902, "Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石", "Elmo Sacro di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, {1, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb", "黄昏剑/卢比/宝石/星星碎片炸药桶", "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba"}, {1, 0x01020100, 0x041a0902, "Gerudo-King Fabric", "沼气之枪/滑翔伞皮肤布料", "Tessuto del Re Gerudo"}, {1, 0x01400000, 0x03550902, "Dragonbone Boko related gear/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela"}, @@ -13,17 +13,17 @@ const db_link_t link_list[] = { {1, 0x01000000, 0x034c0902, "Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇", "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi"}, {1, 0x01000000, 0x034b0902, "Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉", "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne"}, {1, 0x01000000, 0x03540902, "Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇", "Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi"}, -{1, 0x01000000, 0x034e0902, "Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, +{1, 0x01000000, 0x034e0902, "Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie"}, {1, 0x01000000, 0x04180902, "Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi"}, {1, 0x01000000, 0x034d0902, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, {1, 0x01030000, 0x024f0902, "Meat/Paraglider Skin Material", "肉/滑翔伞皮肤布料", "Carne/Tessuto della Paravela"}, -{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, -{1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, +{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {1, 0x01010100, 0x00170002, "Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {1, 0x01000100, 0x00160002, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {1, 0x01000100, 0x03500902, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {1, 0x01010000, 0x03520902, "Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, -{1, 0x01060000, 0x03590902, "Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉", "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, +{1, 0x01060000, 0x03590902, "Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉", "Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, {1, 0x01000000, 0x037c0002, "Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish", "时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼", "Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, {1, 0x01010000, 0x000e0002, "Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, {1, 0x01010000, 0x03560902, "Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, @@ -36,9 +36,9 @@ const db_link_t link_list[] = { {3, 0x01000100, 0x00160002, "", "暂无简介", ""}, {3, 0x01000000, 0x037c0002, "", "暂无简介", ""}, {3, 0x01010000, 0x000e0002, "", "暂无简介", ""}, -{4, 0x01000000, 0x034f0902, "Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee", "初始勇者服套装/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia"}, +{4, 0x01000000, 0x034f0902, "Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee", "初始勇者服套装/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie"}, {4, 0x01410000, 0x035c0902, "Champion's Tunic Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi"}, -{4, 0x01050000, 0x03580902, "Rudania's Divine Helm/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/劈石剑/钻石", "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, +{4, 0x01050000, 0x03580902, "Rudania's Divine Helm/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/劈石剑/钻石", "Elmo Sacro di Rudania/Tessuto della Paravela/Battirocce/Diamante"}, {4, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel", "黄昏剑/卢比/宝石/星星碎片炸药桶", "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba"}, {4, 0x01400000, 0x03550902, "Guardian Weapons/Shields/Spears/Core/Treasure/Arrow", "守护者枪 盾 剑/古代兵装 核心/宝石 箭", "Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano"}, {4, 0x01000000, 0x00040002, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, @@ -47,16 +47,16 @@ const db_link_t link_list[] = { {4, 0x01000000, 0x034c0902, "Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom", "鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇", "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi"}, {4, 0x01000000, 0x034b0902, "Time Traveler Set/Biggoron Sword/Meat", "时之勇者服套装/大鼓隆之剑/肉", "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne"}, {4, 0x01000000, 0x03540902, "Bridle and Saddle/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/月光匕首/蘑菇", "Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi"}, -{4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, +{4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie"}, {4, 0x01000000, 0x034d0902, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, -{4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo a 20 Cuori"}, -{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, -{4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, +{4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo con 20 Cuori"}, +{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {4, 0x01010100, 0x00170002, "Sheik Set/Eightfold Blade/Mushroom", "希克服套装/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {4, 0x01000100, 0x00160002, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {4, 0x01000100, 0x03500902, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {4, 0x01010000, 0x03520902, "Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/星星碎片&宝石/草 果实 胡萝卜", "Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, -{4, 0x01060000, 0x03590902, "Naydra's Divine Helm/Gurudo related gear/Meat", "娜波力斯*神兽兵装/格鲁德相关装备/肉", "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, +{4, 0x01060000, 0x03590902, "Naydra's Divine Helm/Gurudo related gear/Meat", "娜波力斯*神兽兵装/格鲁德相关装备/肉", "Set Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, {4, 0x01000000, 0x037c0002, "Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish", "时之勇者服套装/骑士&王族枪 剑 双手剑/鱼", "Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, {4, 0x01010000, 0x000e0002, "Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/星星碎片&宝石/草 果实 胡萝卜", "Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, {4, 0x01010000, 0x03560902, "Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/星星碎片&宝石/草 果实 胡萝卜", "Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, diff --git a/fw/data/amiidb_link.csv b/fw/data/amiidb_link.csv index b8b30631..8f5ecbc2 100644 --- a/fw/data/amiidb_link.csv +++ b/fw/data/amiidb_link.csv @@ -1,6 +1,6 @@ -1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia -1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela -1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie +1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento Boblin in Ossa di Drago/Carne/Tessuto della Paravela +1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,Elmo Sacro di Rudania/Tessuto della Paravela/Rompisassi/Diamante 1,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb,黄昏剑/卢比/宝石/星星碎片炸药桶,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba 1,01020100041a0902,Gerudo-King Fabric,沼气之枪/滑翔伞皮肤布料,Tessuto del Re Gerudo 1,0140000003550902,Dragonbone Boko related gear/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela @@ -10,17 +10,17 @@ 1,01000000034c0902,Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom,鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi 1,01000000034b0902,Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat,时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne 1,0100000003540902,Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom,马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi -1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie 1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi 1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo 1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,Carne/Tessuto della Paravela -1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce -1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 1,0100010003500902,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 1,0101000003520902,Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne 1,01000000037c0002,Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce 1,01010000000e0002,Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota 1,0101000003560902,Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota @@ -33,9 +33,9 @@ 3,0100010000160002,,暂无简介, 3,01000000037c0002,,暂无简介, 3,01010000000e0002,,暂无简介, -4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia +4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie 4,01410000035c0902,Champion's Tunic Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi -4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,Elmo Sacro di Rudania/Tessuto della Paravela/Battirocce/Diamante 4,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel,黄昏剑/卢比/宝石/星星碎片炸药桶,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba 4,0140000003550902,Guardian Weapons/Shields/Spears/Core/Treasure/Arrow,守护者枪 盾 剑/古代兵装 核心/宝石 箭,Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano 4,0100000000040002,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo @@ -44,16 +44,16 @@ 4,01000000034c0902,Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom,鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi 4,01000000034b0902,Time Traveler Set/Biggoron Sword/Meat,时之勇者服套装/大鼓隆之剑/肉,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne 4,0100000003540902,Bridle and Saddle/Moonlight Scimitar/Mushroom,马缰绳&马鞍/月光匕首/蘑菇,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi -4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie 4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo -4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo a 20 Cuori -4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce -4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo con 20 Cuori +4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 4,0100010003500902,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 4,0101000003520902,Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/星星碎片&宝石/草 果实 胡萝卜,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,Set Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne 4,01000000037c0002,Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish,时之勇者服套装/骑士&王族枪 剑 双手剑/鱼,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce 4,01010000000e0002,Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/星星碎片&宝石/草 果实 胡萝卜,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota 4,0101000003560902,Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/星星碎片&宝石/草 果实 胡萝卜,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota From 34be3ceb52e24a3c56ce3fec2adec7ce41b285ff Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 14:51:48 +0200 Subject: [PATCH 019/101] removed double import and moved to the top --- fw/scripts/amiibo_db_gen.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/fw/scripts/amiibo_db_gen.py b/fw/scripts/amiibo_db_gen.py index 364deff4..2901fc81 100644 --- a/fw/scripts/amiibo_db_gen.py +++ b/fw/scripts/amiibo_db_gen.py @@ -5,6 +5,7 @@ import json import os import csv +import certifi class Amiibo: def __init__(self): @@ -35,8 +36,6 @@ def get_prorject_directory(): def fetch_amiibo_from_api(): - import certifi - import os os.environ['SSL_CERT_FILE'] = certifi.where() conn = urlopen("https://www.amiiboapi.com/api/amiibo/") body = json.loads(conn.read()) @@ -94,13 +93,13 @@ def merge_amiibo(amiibos_csv, amiibos_api): def gen_amiibo_data_c_file(amiibos): c_file = get_prorject_directory() + "/application/src/amiidb/db_amiibo.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: - f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') f.write('#include "db_header.h"\n') f.write('const db_amiibo_t amiibo_list[] = {\n') for amiibo in amiibos: f.write('{0x%s, 0x%s, "%s", "%s"}, \n' % (amiibo.id[0:8], amiibo.id[8:16], amiibo.name_en, - amiibo.name_cn)) # added amiibo.name_it + amiibo.name_cn)) f.write("{0, 0, 0, 0}\n") f.write("};\n") @@ -155,20 +154,20 @@ def count_game_links(games, links, game_id): def gen_amiibo_link_c_file(links): c_file = get_prorject_directory() + "/application/src/amiidb/db_link.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: - f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') f.write('#include "db_header.h"\n') f.write('const db_link_t link_list[] = {\n') for link in links: f.write('{%s, 0x%s, 0x%s, "%s", "%s", "%s"}, \n' % (link.game_id, link.amiibo_id[0:8], link.amiibo_id[8:16], link.note_en, - link.note_cn, link.note_it)) # added link.note_it + link.note_cn, link.note_it)) f.write("{0, 0, 0, 0, 0, 0}\n") f.write("};\n") def gen_amiibo_game_c_file(games, links): c_file = get_prorject_directory() + "/application/src/amiidb/db_game.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: - f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') f.write('#include "db_header.h"\n') f.write('const db_game_t game_list[] = {\n') for game in games: From 80b5da2c76a1beea8e014cd4a9b8936af6336a04 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 15:41:11 +0200 Subject: [PATCH 020/101] Update README.md --- README.md | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c4d431c2..cd956dde 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,23 @@ # Pixl.js -这是一个基于原版[Pixl.js](http://www.espruino.com/Pixl.js)的复刻版本,主要的功能是用来模拟Amiibo。 +Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) +Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky -## 图片 +Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. +Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. +Immagini ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) -## 文档 +## Documentazione * [中文文档](docs/zh/README.md) * [English Documentation](docs/en/README.md) -## Credits +## Crediti * [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) * [mlib](https://github.com/P-p-H-d/mlib) @@ -43,12 +46,17 @@ Where do you find the community? 本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 -内置的Amiibo数据库来源分别如下: +## Attenzione +Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+ +Le fonti del database Amiibo integrato sono le seguenti: * [amiiloop](https://download.amiloop.app/) * [AmiiboAPI](https://www.amiiboapi.com/) -源代码没有包含任何有任天堂版权的资源(比如相关密钥,Amiibo原始数据等)。 +Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). + + # License @@ -57,7 +65,15 @@ Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 * 如果对项目做了修改,需要把改后的源码发布出来 * 发布出来的源码必须要使用相同的License发布 +# License + +This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. + +* If modifications are made to the project, the modified source code needs to be released +* The source code released must be released using the same License + + -## 提示 +## suggerimento +L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. -Amiibo无限刷需要网上搜索key_retail.bin文件然后上传到到磁盘根目录后才能使用。 From 1f679b586d0eaba04e94bf27a7aa7e5914fbcd51 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 15:41:32 +0200 Subject: [PATCH 021/101] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cd956dde..ff4e7dc1 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulat Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. Immagini + ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) From 0ed16c9cab1337558e018744d226cefe183c88b8 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 16:23:30 +0200 Subject: [PATCH 022/101] Create 04-Using-Firmware.md start translating using Firmware --- docs/it/04-Using-Firmware.md | 127 +++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 docs/it/04-Using-Firmware.md diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md new file mode 100644 index 00000000..560c60bc --- /dev/null +++ b/docs/it/04-Using-Firmware.md @@ -0,0 +1,127 @@ +Ecco la traduzione mantenendo il formato del testo: + +# Database Amiibo +Questa applicazione permette l'emulazione di amiibo dalla lista di quelli ben noti, utilizzando informazioni legalmente disponibili come le informazioni sul modello, poi quando ne selezioni uno, viene creato un nuovo amiibo virtuale in memoria utilizzando un UUID casuale. Per utilizzare questa applicazione devi fornire il tuo file «key_retail.bin». + +_Ogni volta che si usa un amiibo l'UUID iniziale viene generato casualmente._ + +Una volta aperta l'applicazione il menu principale ha le opzioni + +| | +| ------------ | +| Browser…
Ricerca…
I miei preferiti…
I miei Amiibo…
Impostazioni… | +| | + +## Browser… +Ti permette di sfogliare il database, prima per categoria, poi tutti gli amiibo di quella categoria. +Dopo aver selezionato un amiibo, vengono mostrati i dettagli, la prima riga contiene l'UUID attuale e la seconda riga il nome dell'amiibo. + +Nella pagina dei dettagli dell'amiibo puoi usare i pulsanti laterali per navigare tra tutti gli amiibo della categoria, se premi il pulsante centrale puoi cambiare il comportamento dell'amiibo corrente, con il sottomenu: + +| | +| ------------ | +| Rand. Tag
Auto Rand.
Preferito…
Salva come…
[Torna ai dettagli]
[Torna alla lista]
[Esci] | +| | + +### Rand. Tag +Randomizza Tag, cambia l'UUID corrente presentato al gioco per l'amiibo corrente. Il nuovo UUID rimane invariato fino a quando non cambi l'amiibo corrente o selezioni nuovamente questa opzione. +### Auto Rand. +Random automatico, Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. +### Preferito… +Apri un nuovo sottomenu per gestire le cartelle dei preferiti. Hai le opzioni: + +``` +Nuovo… +Cartella1 +Cartella2 +[Indietro] +``` + +**Nuovo…** ti permette di creare una nuova cartella dei preferiti, **Indietro** torna ai dettagli dell'amiibo corrente, se selezioni una cartella esistente, quella definizione di amiibo verrà aggiunta alla cartella selezionata. + +### Salva come… +Ti permette di assegnare l'amiibo corrente a uno degli slot «I miei Amiibo». +### [Torna ai dettagli] +Ritorna ai dettagli dell'amiibo corrente. +### [Torna alla lista] +Ritorna alla lista degli amiibo della categoria corrente. +### [Esci] +Esci dall'applicazione Database Amiibo. + + +## Ricerca… +Permette di cercare nel database usando un nome parziale, il risultato della ricerca è come una categoria, puoi selezionare qualsiasi amiibo su di essa e impostarlo come un altro. + +## I miei preferiti… +Mostra le cartelle dei preferiti esistenti, puoi sfogliarle con i pulsanti laterali e selezionarne una con il pulsante centrale. Se premi e tieni premuto il pulsante centrale si apre un sottomenu: + +| | +| ------------ | +| Nuovo…
Svuota…
Elimina…
[Indietro] | +| | + +### Nuovo… +Ti permette di creare una nuova cartella dei preferiti. +### Svuota… +Dopo la conferma, rimuove tutti gli amiibo associati alla cartella selezionata. +### Elimina… +Dopo la conferma, rimuove la cartella dei preferiti. +### [Indietro] +Ritorna alla lista delle cartelle. + +Una volta selezionata una cartella viene mostrata una lista degli amiibo associati a quella cartella dei preferiti, puoi sfogliare usando i pulsanti laterali e selezionare un amiibo con il pulsante centrale, l'amiibo selezionato diventa l'attuale e si comporta come un amiibo del browser. + +## I miei Amiibo… +Elenca gli slot configurati, puoi sfogliare gli slot usando i pulsanti laterali, selezionarne uno con il pulsante centrale e l'amiibo associato a quello slot diventa l'attuale. + +Se premi e tieni premuto il pulsante centrale si apre un sottomenu con l'opzione di reimpostare lo slot permettendo di svuotare lo slot. + +## Impostazioni… +Il menu delle impostazioni ti mostra lo stato delle chiavi e il numero di slot impostato. + +| | +| ------------ | +| Chiavi []
Num. Slot []
[Indietro] | +| | + +### Chiavi [] +Mostra lo stato del file «key_retail.bin», può essere «Caricato» o «NON caricato» +### Num. Slot [] +Permette di selezionare quanti slot sono disponibili per la sezione «I miei Amiibo», valori da 10 a 50 con incrementi di decine. +### [Indietro] +Esci dal Database Amiibo e torna al Menu Principale. + +---- +# AmiiboLink +Questa applicazione emula un dispositivo AmiiboLink (AmiLoop o omllbolink). + +Questi dispositivi sono schede espruino generiche vendute in diverse forme, normalmente sono portachiavi a forma di goccia, ma esistono anche alcuni Puck o Sheika Slate. + +Quasi tutti hanno un pulsante e alcuni LED come indicatori e funzionano con batterie a cella CR2032 o celle lipo. + +Tutti sono controllati da applicazioni per telefoni tramite Bluetooth, inoltre puoi caricare uno o più file .BIN amiibo utilizzando il telefono sul dispositivo. + +Avviando questa applicazione vengono mostrati i dettagli per l'amiibo corrente. Se sei in modalità sequenziale puoi usare i pulsanti laterali per scorrere tutti gli amiibo caricati, in tutte le modalità, puoi premere il pulsante centrale per aprire il sottomenu di configurazione dell'APP AmiiboLink, il menu ha queste voci: + +| | +| ------------ | +| Modalità []
Auto Rand. []
Modalità Compati. []
Dettagli Tag
[Menu Principale] | +| | + +## Modalità [] +Mostra la modalità di funzionamento attuale, quando selezionata puoi scegliere la modalità di funzionamento dell'amiibo, le modalità disponibili sono: +- ### Randomizza (Manuale) +Sul dispositivo AmiiboLink attuale l'amiibo corrente cambia l'UUID quando premi il pulsante del dispositivo +- ### Randomizza (Auto) +Un nuovo UUID casuale per l'amiibo corrente viene generato ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. +- ### Modalità sequenziale +In questa modalità puoi cambiare l'amiibo attuale usando i pulsanti laterali, scorrendo tra tutti gli amiibo caricati con l'app del telefono. Tutti i file .BIN caricati sono memorizzati nei file 01.bin a 26.bin nella cartella /amiibolink/. +- ### Modalità lettura-scrittura +Il dispositivo utilizza uno slot amiibo "speciale" dove può essere utilizzato solo un amiibo, l'amiibo può essere sostituito da un altro file .BIN dall'app del telefono. Nella memoria locale questo amiibo viene salvato con il file /amiibolink/99.bin. + +Cambiando la modalità si conserva l'amiibo selezionato corrente, con l'eccezione della modalità «Lettura-scrittura». + +## Auto Rand. [] +Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. Non può essere disattivato per la modalità «Randomizza (Auto)», non può essere attivato per la modalità «Randomizza (Manuale)»; +## Modalità Compati. [] +Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. From d6a636f4bd20f1a17d1874bba40d742b42eb6b84 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 16:24:42 +0200 Subject: [PATCH 023/101] Update 04-Using-Firmware.md --- docs/it/04-Using-Firmware.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md index 560c60bc..13354e36 100644 --- a/docs/it/04-Using-Firmware.md +++ b/docs/it/04-Using-Firmware.md @@ -1,5 +1,3 @@ -Ecco la traduzione mantenendo il formato del testo: - # Database Amiibo Questa applicazione permette l'emulazione di amiibo dalla lista di quelli ben noti, utilizzando informazioni legalmente disponibili come le informazioni sul modello, poi quando ne selezioni uno, viene creato un nuovo amiibo virtuale in memoria utilizzando un UUID casuale. Per utilizzare questa applicazione devi fornire il tuo file «key_retail.bin». From 6baf819685610eda0c40c8c55e06f9fe44bd23ad Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 17:17:33 +0200 Subject: [PATCH 024/101] Create README_IT.md --- README_IT.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 README_IT.md diff --git a/README_IT.md b/README_IT.md new file mode 100644 index 00000000..ff4e7dc1 --- /dev/null +++ b/README_IT.md @@ -0,0 +1,80 @@ +# Pixl.js + +Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) +Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky + +Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. +Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. + +Immagini + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) + +## Documentazione + +* [中文文档](docs/zh/README.md) +* [English Documentation](docs/en/README.md) + +## Crediti + +* [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) +* [mlib](https://github.com/P-p-H-d/mlib) +* [TLSF](https://github.com/mattconte/tlsf) +* [cwalk](https://github.com/likle/cwalk) +* [SPIFFS](https://github.com/pellepl/spiffs) +* [ChameleonUltra](https://github.com/RfidResearchGroup/ChameleonUltra) + +## Contribution + +* 特别感谢 @Caleeeeeeeeeeeee 完善的Bootloader。 +* 特别感谢 @白橙 制作的外壳。 +* 特别感谢 @impeeza 提供的文档翻译 。 + +## 讨论群 + +国内用户可以加入QQ群 109761876 进行交流。 + +## Office Channel + +Where do you find the community? +* [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) + +## 声明 + +本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
+Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 + +## Attenzione +Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+ +Le fonti del database Amiibo integrato sono le seguenti: + +* [amiiloop](https://download.amiloop.app/) +* [AmiiboAPI](https://www.amiiboapi.com/) + +Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). + + + +# License + +本项目基于GPL 2.0 License发布,使用请遵循License的约定。 + +* 如果对项目做了修改,需要把改后的源码发布出来 +* 发布出来的源码必须要使用相同的License发布 + +# License + +This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. + +* If modifications are made to the project, the modified source code needs to be released +* The source code released must be released using the same License + + + +## suggerimento +L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. + From ae361d9c6a6a50e3693546040ce413241392e9c2 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:14:27 +0200 Subject: [PATCH 025/101] Update 04-Using-Firmware.md --- docs/it/04-Using-Firmware.md | 401 ++++++++++++++++++++++++++++++++++- 1 file changed, 394 insertions(+), 7 deletions(-) diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md index 13354e36..658d99d9 100644 --- a/docs/it/04-Using-Firmware.md +++ b/docs/it/04-Using-Firmware.md @@ -1,7 +1,126 @@ +# Concetti del Firmware +## Amiibo +È un dispositivo venduto da Nintendo, normalmente sotto forma di statuetta, ma esistono anche carte, cinturini da polso e altri. + +Ogni amiibo ha un tag NFC incorporato nella base della statuetta. Il tag NFC ha alcuni dati pre-registrati in fabbrica che identificano il tipo di statuetta e rendono ogni amiibo unico rispetto agli altri. I principali dati dell'amiibo sono: + +Come affermato da Nintendo, Amiibo è singolare e plurale (https://twitter.com/NintendoAmerica/status/535485751635763200) + +## Informazioni sul modello +È un numero che descrive la serie amiibo, la serie di giochi, il personaggio e la variazione del personaggio, queste informazioni non possono essere modificate dopo la prima programmazione. + +## UID +È il numero di serie della statuetta, anch'esso preimpostato in fabbrica, rendendo ogni amiibo unico. + +## Dati Amiibo +Questa sezione dei dati sul tag memorizza le informazioni modificabili dall'utente come la registrazione del proprietario e del soprannome o i dati del salvataggio del gioco. + +## UUID +Il termine UUID viene utilizzato nella scena mod per fare riferimento all'UID inviato al gioco da un emulatore amiibo, poiché il gioco usa l'UID per sapere se un amiibo è già stato utilizzato; se l'emulatore cambia l'UID, l'amiibo emulato sembra un amiibo completamente diverso per il gioco, permettendo di utilizzare nuovamente quell'amiibo. + +## key_retail.bin +È un file binario che contiene le chiavi private di Nintendo per criptare amiibo, è un materiale protetto da copyright quindi devi fornire una copia legalmente acquisita, puoi scaricarla da una console 3DS o Switch. + +## File .BIN +I dati di un amiibo possono essere scaricati su un file, quel dump binario del contenuto originale di un amiibo viene memorizzato su un file con estensione `.BIN`, quei dump vengono caricati sul dispositivo per l'applicazione Amiibo Emulator o l'applicazione AmiiboLink Emulator. Devi fornire un file di dump binario legalmente acquisito. + +## Interruttore a cursore Thumbwheel +È il microinterruttore in cima al dispositivo, è un dispositivo che ha tre pulsanti in uno, uno centrale e due laterali. Oscillando il microinterruttore ai lati si premono i pulsanti "**laterali**". Premendo il microinterruttore si preme il pulsante "**centrale**". + +In questo documento, premere i lati del Thumbwheel viene chiamato "**pulsanti laterali**", premere il Thumbwheel viene chiamato "**pulsante centrale**"; per navigare tra gli elementi di un menu si usano i pulsanti laterali, per selezionare un elemento si preme il pulsante centrale. + +# Utilizzo del Firmware +La schermata principale del firmware Pixl.js è divisa in diverse applicazioni, ognuna delle quali può essere eseguita per eseguire alcune azioni, le applicazioni nella schermata principale sono: + + +| | +| ------------ | +|  Emulatore Amiibo
 Database Amiibo
֍ AmiiboLink
ᛡᛒ Trasferimento file BLE
 Impostazioni | +| | + +---- +# Emulatore Amiibo +Questa applicazione ti permette di sfogliare la memoria locale per i file .BIN e usarli come amiibo corrente. + +Puoi sfogliare cartelle e file usando l'interruttore a cursore Thumbwheel, spingendo ai lati cambi gli elementi, premendo il pulsante centrale selezioni l'elemento evidenziato. + +Una volta selezionato un file .BIN, i suoi dati vengono utilizzati come amiibo corrente, lo schermo mostra i dettagli dell'amiibo corrente come UUID corrente dell'amiibo, nome del file e nome dell'amiibo. + +## Schermata dettagli amiibo +Puoi usare i pulsanti laterali per cambiare l'amiibo corrente con il successivo o il precedente nella cartella corrente. Premendo il pulsante centrale puoi cambiare il comportamento dell'amiibo corrente, nel sottomenu: + +| | +| ------------ | +| Rand. Tag
Auto Rand.
Elimina Tag
Torna ai dettagli del Tag
Torna alla lista dei file
Torna al menu principale
Rand. Tag | +| | + +### Rand. Tag +Randomizza Tag, cambia l'UUID corrente presentato al gioco per l'amiibo corrente. Il nuovo UUID rimane invariato fino a quando non cambi l'amiibo corrente o selezioni nuovamente questa opzione. +### Auto Rand. (Random automatico) +Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. +### Elimina Tag +Elimina il file associato all'amiibo corrente. +### Torna ai dettagli del Tag +Ritorna ai dettagli dell'amiibo corrente. +### Torna alla lista dei file +Ritorna alla lista dei file della cartella corrente. +### Torna al menu principale +Esci dall'applicazione emulatore amiibo. + +_Se abiliti la generazione di UUID casuali, manualmente o automaticamente l'UUID originale del file .BIN viene utilizzato la prossima volta che quel file viene caricato._ + +## Esploratore di file. +Se hai **evidenziato una cartella o un file** e tieni premuto il pulsante centrale per 1 secondo si apre un sottomenu delle proprietà: + +| | +| ------------ | +| Crea nuova cartella…
Crea nuovo Tag…
Rinomina…
Elimina...
Torna alla lista dei file
Torna al menu principale | +| | + +### Crea nuova cartella… +Dialogo per creare una nuova sottocartella nella corrente. +### Crea nuovo Tag… +Crea un file .BIN amiibo vuoto nella cartella corrente. Quel file .BIN è ora un simile di un New Ntag215, pronto per essere programmato, puoi assegnare quel file .BIN come amiibo corrente e usando un programmatore NFC puoi scrivere i dati dell'amiibo, ad esempio puoi usare iNFC o Tagmo per i telefoni, Thenaya per il 3DS. Se l'amiibo programmato è nel database il file .BIN viene anche rinominato con il nome dell'amiibo. +### Rinomina… +Dialogo per rinominare il file .BIN o la cartella evidenziata +### Elimina… +Rimuove l'oggetto evidenziato, chiedendo conferma. Se è una cartella, anche tutte le sottocartelle e i file vengono eliminati. +### Torna alla lista dei file +Ritorna alla lista dei file della cartella corrente. +### Torna al menu principale +Esci dall'applicazione emulatore amiibo. + +Se hai **evidenziato una memoria** il sottomenu delle proprietà è diverso: + +| | +| ------------ | +| Stato della memoria
Spazio totale
Spazio libero
Formatta…
Torna alla lista
Torna al menu principale | +| | + +### Stato della memoria +Mostra lo stato corrente e il tipo della memoria, ad esempio: +``` +=====Non montato===== +===Montato[LFS]=== +===Montato[FFS]=== +``` + +### Spazio totale +Mostra lo spazio totale della memoria montata in KB. +### Spazio libero +Mostra lo spazio libero attuale della memoria montata in KB. +### Formatta… +Chiede conferma per formattare la memoria corrente, ATTENZIONE TUTTI I DATI VERRANNO PERSI! +### Torna alla lista +Ritorna alla lista dei file della cartella corrente. +### Torna al menu principale +Esci dall'applicazione emulatore amiibo. + +---- # Database Amiibo Questa applicazione permette l'emulazione di amiibo dalla lista di quelli ben noti, utilizzando informazioni legalmente disponibili come le informazioni sul modello, poi quando ne selezioni uno, viene creato un nuovo amiibo virtuale in memoria utilizzando un UUID casuale. Per utilizzare questa applicazione devi fornire il tuo file «key_retail.bin». -_Ogni volta che si usa un amiibo l'UUID iniziale viene generato casualmente._ +Ogni volta che si usa un amiibo, l'UUID iniziale viene generato casualmente._ Una volta aperta l'applicazione il menu principale ha le opzioni @@ -23,8 +142,8 @@ Nella pagina dei dettagli dell'amiibo puoi usare i pulsanti laterali per navigar ### Rand. Tag Randomizza Tag, cambia l'UUID corrente presentato al gioco per l'amiibo corrente. Il nuovo UUID rimane invariato fino a quando non cambi l'amiibo corrente o selezioni nuovamente questa opzione. -### Auto Rand. -Random automatico, Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. +### Auto Rand. (Random automatico) +Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. ### Preferito… Apri un nuovo sottomenu per gestire le cartelle dei preferiti. Hai le opzioni: @@ -46,7 +165,6 @@ Ritorna alla lista degli amiibo della categoria corrente. ### [Esci] Esci dall'applicazione Database Amiibo. - ## Ricerca… Permette di cercare nel database usando un nome parziale, il risultato della ricerca è come una categoria, puoi selezionare qualsiasi amiibo su di essa e impostarlo come un altro. @@ -120,6 +238,275 @@ Il dispositivo utilizza uno slot amiibo "speciale" dove può essere utilizzato s Cambiando la modalità si conserva l'amiibo selezionato corrente, con l'eccezione della modalità «Lettura-scrittura». ## Auto Rand. [] -Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. Non può essere disattivato per la modalità «Randomizza (Auto)», non può essere attivato per la modalità «Randomizza (Manuale)»; -## Modalità Compati. [] -Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. +Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge, +consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. + + +### Modalità Compati. [] +Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. Utilizzando questa impostazione puoi far corrispondere l'emulazione con il protocollo necessario per l'APP che usi sul tuo telefono. +## Dettagli Tag +Ritorna alla pagina dei dettagli del tag +## [Menu Principale] +Esci dall'applicazione Emulatore AmiiboLink. + +## Applicazioni compatibili con AmiiboLink +Finora le uniche due App di gestione della modalità AmiiboLink/AmiLoop tradotte in inglese sono "Umiibo" e "AmiLoop", queste applicazioni sono compatibili solo con la Modalità AmiLoop. + +Un'altra particolarità è che le modalità sulle applicazioni non corrispondono con le modalità impostate sul dispositivo. + +| App Umiibo | Modalità di emulazione Pixl.js | +| ------------ |------------ | +| Modalità Manuale | Random automatico | +| Modalità File | Sequenziale | +| Modalità Auto | Lettura/Scrittura | + +| App AmiiLoop | Modalità di emulazione Pixl.js | +| ------------ |------------ | +| Modalità Manuale | Random automatico | +| Modalità File | Sequenziale | +| Modalità Auto | Lettura/Scrittura | + + +# Emulatore di Carte + +Questa applicazione può essere utilizzata per emulare carte Mifare e carte della serie NTAG. + +Le carte Mifare sono comunemente utilizzate per le carte di controllo degli accessi, e il dispositivo può emulare completamente i tipi di carte Mifare. I tipi di carte Mifare supportati includono: + +* Mifare Mini +* Mifare 1K +* Mifare 2K +* Mifare 4K + +Le carte della serie NTAG sono comunemente utilizzate per l'identificazione del dispositivo. I tipi di carte NTAG supportati includono: + +* NTAG 213 +* NTAG 215 +* NTAG 216 + +Attualmente, un totale di 8 carte sono supportate, con l'opzione per personalizzare il numero di carte in futuro. + +> Nota:
+> La funzione di emulazione della serie NTAG è ancora in fase di test, e la funzionalità non è ancora completa. Non emula completamente > le caratteristiche di NTAG125.
+> Continueranno ulteriori miglioramenti a questa parte della funzionalità. + +L'emulazione può essere attivata solo in questa interfaccia, e sarà disattivata se si lascia questa interfaccia. + +Dopo la formattazione del disco o il primo ingresso nell'emulatore di carte, i dati verranno inizializzati. Questo processo può richiedere alcuni secondi, quindi si prega di essere pazienti. + + +## Emulazione di Carte + +L'interfaccia della pagina di emulazione delle carte è la seguente: + +| | +| ------------ | +| [01] de:ad:be:ef| +|  | +| < Slot 01 >| +|  | +| MF 1K <08/04 00>  | +| | + +L'interfaccia è spiegata come segue: + +* La prima riga: `01` è il numero della carta, e `de:ad:be:ef` è l'ID della carta. +* La seconda riga: Slot 01 è il nome della carta corrente, che può essere liberamente impostato. +* La terza riga: `MF 1K` visualizza il tipo di carta. Le abbreviazioni del tipo sono mostrate nella tabella sottostante. `08` è il SAK della carta, `04 00` è l'ATQA della carta. L'ultimo simbolo indica la modalità di scrittura. Se è contrassegnato come un disco, la scrittura è consentita; altrimenti, la scrittura non è consentita. +Abbreviazioni per i tipi di carte: + +| Nome visualizzato | Tipo di carta | Dimensione del file di dati | +| ---- | --- | --- | +| MF mini | Mifare Mini | 320 | +| MF 1k | Mifare 1K | 1024 | +| MF 2k | Mifare 2K | 2048 | +| MF 4k | Mifare 4K | 4096 | +| N213 | NTAG 213 | 180 | +| N215 | NTAG 215 | 540 | +| N216 | NTAG 216 | 924 | + +# Menu Principale + +Premendo il pulsante centrale si può entrare nel menu principale. Come segue: + +| | +| ------------ | +|  Slot [01]| +|  Nick [Slot 01]| +|  ID [de:ad:be:ef]| +|  Tipo [MiFare 1K] | +|  Dati.. | +|  Avanzate.. | +|  Impostazioni Slot.. | +|  [Dettagli Tag] | +|  [Menu Principale] | +| | + +* Slot: Visualizza lo slot della carta selezionato corrente. Puoi selezionare uno slot della carta premendo il pulsante centrale. +* Nick: Il nome corrente della carta. Premendo il pulsante centrale si può entrare nell'interfaccia di impostazione del nome della carta. +* ID: Visualizza l'ID corrente della carta. +* Tipo: Visualizza il tipo corrente della carta. +* Dati: Premendo il pulsante centrale si possono gestire i dati della carta. +* Avanzate: Premendo il pulsante centrale si possono impostare le impostazioni avanzate della carta. +* Impostazioni Slot: Premendo il pulsante centrale si entra nell'interfaccia di gestione dello slot, dove si possono abilitare o disabilitare gli slot delle carte. +* [Dettagli Tag]: Ritorna alla pagina dei dettagli del tag. +* [Menu Principale]: Esce da questa applicazione e entra nel menu principale. + +> **Nota speciale:**:
+> Alcune modifiche devono essere salvate nella memoria quando si esce dai dettagli del tag. Se hai modificato alcune configurazioni, assicurati di entrare nella pagina dei dettagli del tag per salvarle. + +## Aggiornamento Nick + +In questa interfaccia, è possibile modificare il nome della carta. + +A causa dello spazio di visualizzazione limitato, è possibile inserire solo caratteri inglesi. + +In particolare, se si utilizzano caratteri cinesi, a causa della codifica UTF-8, l'eliminazione richiede almeno 2 pressioni per eliminare completamente. + +Se si desidera aggiungere note cinesi alla carta, è possibile modificare le note di `/chameleon/slots/00.bin` attraverso la pagina web per ottenere note cinesi.
+00.bin è il file per il primo slot della carta, 01.bin è il file per il secondo slot della carta, e così via. + +> A causa delle limitazioni di dimensione del firmware, attualmente solo circa 1000 caratteri cinesi possono essere visualizzati correttamente. Se i caratteri cinesi non vengono visualizzati, si prega di segnalare un problema con i caratteri che è necessario visualizzare. I caratteri specifici possono essere aggiunti nella prossima versione. + +## Dati della Carta + +In questa interfaccia, è possibile eseguire l'importazione e l'esportazione dei dati della carta. + +| | +| ------------ | +|  Carica.. | +|  Salva.. | +|  Factory.. | +| | + +I file di importazione ed esportazione sono memorizzati nella cartella `/chameleon/dump/`.
+Se è necessario importare dati, è necessario scrivere in anticipo il file di dati che si desidera importare nella cartella sopra tramite la pagina web. + +* Carica: Premendo il pulsante centrale si può entrare nell'interfaccia di caricamento. L'interfaccia leggerà tutti i file sotto `/chameleon/dump/`, e premendo il pulsante centrale si può eseguire l'importazione. +* Salva: Premendo il pulsante centrale si può esportare la carta corrente nella cartella `/chameleon/dump/`. +* Factory: Premendo il pulsante centrale si può reimpostare i dati della carta corrente ai dati della carta vuota predefiniti incorporati. + +## Avanzate + +Questa interfaccia mostra contenuti diversi in base alle carte della serie MiFare e alle carte della serie NTAG. + +> **Nota speciale:**
+> Questa interfaccia è le impostazioni avanzate per l'emulazione della carta, e non è consigliato per gli utenti ordinari modificare. Se intendi apportare modifiche, assicurati di capire cosa stai facendo prima di modificare!
+> Se la modifica di questa parte porta a un fallimento dell'emulazione della carta, prova a ripristinare le impostazioni predefinite prima. + +### Serie MiFare +| | +| ------------ | +|  Modalità personalizzata [OFF] | +|  ID [de:ad:be:ef]| +|  SAK [08] | +|  ATQA: [00 40]| +|  Gen1A Abilitato [OFF] | +|  Gen2 Abilitato [OFF] | +|  Modalità di scrittura [Normale] | +|  [RITORNO] | +| | + + +* Modalità personalizzata: Di default è disattivata. Disattivata: Durante la fase di riconoscimento della carta ID, ID/SAK/ATQA vengono letti dal settore 0 dei dati della carta. Attivata: Puoi impostare risorse indipendenti nel menu ID/SAK/ATQA qui sotto. +* ID: Mostra l'ID corrente della carta. Se la modalità personalizzata è attiva, premendo il pulsante centrale ti permette di entrare nell'interfaccia di input per la modifica. Se la modalità personalizzata è disattivata, premendo il pulsante centrale non ha effetto. +* SAK: Mostra l'SAK corrente della carta. Se la modalità personalizzata è attiva, premendo il pulsante centrale ti permette di entrare nell'interfaccia di input per la modifica. Se la modalità personalizzata è disattivata, premendo il pulsante centrale non ha effetto. +* ATQA: Mostra l'ATQA corrente della carta. Se la modalità personalizzata è attiva, premendo il pulsante centrale ti permette di entrare nell'interfaccia di input per la modifica. Se la modalità personalizzata è disattivata, premendo il pulsante centrale non ha effetto. +* Gen1A Abilitato: Di default è disattivato. Quando abilitato, permette all'emulatore di rispondere ai comandi backdoor avanzati domestici. Questi comandi backdoor possono sbloccare direttamente la carta senza la necessità di una chiave. +* Gen2 Abilitato: Di default è disattivato. Quando abilitato, permette la scrittura nel settore 0. (Il settore 0 memorizza principalmente informazioni come ID/SAK/ATQA, e permettendo la scrittura può modificare l'ID della carta) +* Modalità di scrittura: Di default è normale. Ci possono essere 4 valori, vedi la tabella sottostante. + +| Modalità di scrittura | Descrizione | +| ----- | --- | +| Normale | I dati vengono scritti normalmente in memoria, cambia carta o esci per persistere | +| Nega | Qualsiasi operazione di scrittura restituisce un fallimento | +| Ignora | L'operazione di scrittura restituisce un successo, ma non scrive in memoria o persiste | +| Cache | I dati vengono scritti normalmente in memoria, cambiando le carte o uscendo non persistono | + +> Si consiglia di abilitare la modalità Gen1A e la modalità Gen2 quando si copiano le carte, e chiuderle dopo la copia per evitare di essere riconosciute come una carta clone dai lettori di carte. + +### Serie NTAG +| | +| ------------ | +|  ID [04:68:95:71:fa:5c:64]| +|  SAK [00] | +|  ATQA: [00 44] | +|  Rand. UID | +|  [RITORNO] | +| | + + +* ID: Mostra l'ID corrente della carta. Non modificabile. +* SAK: Mostra l'SAK corrente della carta. Non modificabile. +* ATQA: Mostra l'ATQA corrente della carta. Non modificabile. +* Rand. UID: Premendo il pulsante centrale si può generare casualmente un nuovo ID. Nota che è necessario tornare all'interfaccia di emulazione per simulare e salvare il nuovo ID della carta. + +## Impostazioni Slot + + +Questa interfaccia mostra lo stato di abilitazione/disabilitazione di tutti gli slot delle carte e permette di abilitare o disabilitare individualmente ogni slot delle carte. + +| | +| ------------ | +|  Num. Slot.. [8]| +|  Slot 01 [ON] | +|  Slot 02 [OFF] | +|  .. | +|  [RITORNO] | +| | + +* Num. Slot: Mostra il numero corrente di slot delle carte, che è impostato di default a 8. Attualmente, la modifica della quantità di slot non è supportata, e sarà disponibile negli aggiornamenti futuri del firmware. +* Slot xx: Mostra lo stato di apertura/chiusura dello slot della carta. Premendo il pulsante centrale si può passare tra lo stato di apertura e chiusura. + +---- +# Trasferimento file BLE +Questa applicazione ti permette di connetterti all'iNFC o alla pagina web pixl.js, per gestire i file sulla memoria del dispositivo o aggiornare il firmware. + +La pagina web ufficiale è [https://pixl.amiibo.xyz/](https://pixl.amiibo.xyz/ "https://pixl.amiibo.xyz/."). + +L'**APP iNFC** è un'app di terze parti + +Entrando in questa modalità l'indirizzo MAC Bluetooth del dispositivo e l'URL ufficiale vengono mostrati sullo schermo. + +---- +# Impostazioni +Questa applicazione permette di configurare le impostazioni di funzionamento del dispositivo, l'applicazione ha le seguenti voci nel menu: + +| | +| ------------ | +| Versione []
Lingua []
Memoria Auto []
Retroilluminazione / Contrasto OLED []
Animazione Menu []
Batteria LiPO []
Memoria Utilizzata []
Ripresa Veloce []
Timer Sleep []
Aggiornamento Firmware
Riavvio Sistema | +| | + +## Versione +Questo sottomenu mostra i dettagli della versione del firmware. +- Versione +- Data di costruzione +- Githash +- Branch +- Target +- Dirty +## Lingua +Puoi cambiare la lingua visualizzata sul dispositivo +## Memoria Auto +Attivando questa impostazione le memorie locali del dispositivo sono nascoste alla radice dell'applicazione Emulatore Amiibo, se questa impostazione è OFF l'oggetto «Flash esterno» viene mostrato alla radice dell'applicazione Emulatore Amiibo. +## Retroilluminazione / Contrasto OLED +Con questa impostazione puoi controllare la luminosità dello schermo LCD o il contrasto dello schermo OLED. + +## Animazione Menu +Abilita / disabilita l'animazione degli elementi più grandi dello schermo permettendo di leggerli completamente, abilitando questa opzione aumenta il consumo della batteria. +## Batteria LiPO +Abilita l'uso di una batteria LiPO. Richiede una modifica hardware. Se costruisci una versione Pixl.js del dispositivo con LiPO, puoi abilitare questa opzione. Per la versione CR2032, questa opzione non funzionerà e non dovrebbe essere abilitata. + +Se abiliti l'opzione LiPO, il dispositivo utilizzerà il livello di tensione LiPO per visualizzare il livello della batteria, e può anche visualizzare un'etichetta di carica quando la batteria è in modalità di carica. +## Memoria Utilizzata +Mostra la percentuale di memoria di archiviazione utilizzata in fondo allo schermo +## Risveglio Rapido +Abilita l'ibernazione del dispositivo, permettendo una risposta più veloce alla lettura dell'amiibo corrente da parte di un gioco, e riprende all'applicazione aperta al momento del sonno, quando disabilitato la ripresa dopo il sonno richiede 1 secondo in più e il dispositivo ripristina al Menu Principale. +## Timer Sleep +Imposta il tempo in cui il dispositivo va in sleep dopo l'ultimo input dell'utente o la lettura dell'amiibo. +## Aggiornamento Firmware +Questa opzione mette il dispositivo in modalità DFU, permettendo l'aggiornamento del firmware OTA, puoi aggiornare il firmware utilizzando l'iNFC o la pagina web. + +Puoi andare all'URL [https://thegecko.github.io/web-bluetooth-dfu/](https://thegecko.github.io/web-bluetooth-dfu/) per caricare il firmware, questa pagina può anche essere aperta attraverso il sito ufficiale [https://pixl.amiibo.xyz/](https://pixl.amiibo.xyz/) +## Riavvio Sistema +Ti permette di riavviare il dispositivo e tornare allo stato dopo che hai rimosso e inserito la batteria. From 6ead9239d7785ed40c16ae3627e0fa4044445c47 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:33:49 +0200 Subject: [PATCH 026/101] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit added under 文档 link to Italian Documentation --- README.md | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index ff4e7dc1..1bac3795 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,21 @@ # Pixl.js -Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) -Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky +这是一个基于原版[Pixl.js](http://www.espruino.com/Pixl.js)的复刻版本,主要的功能是用来模拟Amiibo。 -Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. -Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. - -Immagini +## 图片 ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) -## Documentazione +## 文档 * [中文文档](docs/zh/README.md) * [English Documentation](docs/en/README.md) +* [Italian Documentation](docs/it/README.md) -## Crediti +## Credits * [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) * [mlib](https://github.com/P-p-H-d/mlib) @@ -47,17 +44,12 @@ Where do you find the community? 本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 -## Attenzione -Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
- -Le fonti del database Amiibo integrato sono le seguenti: +内置的Amiibo数据库来源分别如下: * [amiiloop](https://download.amiloop.app/) * [AmiiboAPI](https://www.amiiboapi.com/) -Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). - - +源代码没有包含任何有任天堂版权的资源(比如相关密钥,Amiibo原始数据等)。 # License @@ -66,15 +58,7 @@ Il codice sorgente non contiene risorse protette da copyright di Nintendo (come * 如果对项目做了修改,需要把改后的源码发布出来 * 发布出来的源码必须要使用相同的License发布 -# License - -This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. - -* If modifications are made to the project, the modified source code needs to be released -* The source code released must be released using the same License - - -## suggerimento -L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. +## 提示 +Amiibo无限刷需要网上搜索key_retail.bin文件然后上传到到磁盘根目录后才能使用。 From 684cdc241a46b425d0e3dcd65496d6623f0a6959 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:35:21 +0200 Subject: [PATCH 027/101] Create README.md under docs/it/ --- docs/it/README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/it/README.md diff --git a/docs/it/README.md b/docs/it/README.md new file mode 100644 index 00000000..ff4e7dc1 --- /dev/null +++ b/docs/it/README.md @@ -0,0 +1,80 @@ +# Pixl.js + +Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) +Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky + +Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. +Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. + +Immagini + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) + +## Documentazione + +* [中文文档](docs/zh/README.md) +* [English Documentation](docs/en/README.md) + +## Crediti + +* [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) +* [mlib](https://github.com/P-p-H-d/mlib) +* [TLSF](https://github.com/mattconte/tlsf) +* [cwalk](https://github.com/likle/cwalk) +* [SPIFFS](https://github.com/pellepl/spiffs) +* [ChameleonUltra](https://github.com/RfidResearchGroup/ChameleonUltra) + +## Contribution + +* 特别感谢 @Caleeeeeeeeeeeee 完善的Bootloader。 +* 特别感谢 @白橙 制作的外壳。 +* 特别感谢 @impeeza 提供的文档翻译 。 + +## 讨论群 + +国内用户可以加入QQ群 109761876 进行交流。 + +## Office Channel + +Where do you find the community? +* [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) + +## 声明 + +本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
+Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 + +## Attenzione +Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+ +Le fonti del database Amiibo integrato sono le seguenti: + +* [amiiloop](https://download.amiloop.app/) +* [AmiiboAPI](https://www.amiiboapi.com/) + +Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). + + + +# License + +本项目基于GPL 2.0 License发布,使用请遵循License的约定。 + +* 如果对项目做了修改,需要把改后的源码发布出来 +* 发布出来的源码必须要使用相同的License发布 + +# License + +This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. + +* If modifications are made to the project, the modified source code needs to be released +* The source code released must be released using the same License + + + +## suggerimento +L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. + From fd6ea58bc9c9307430282250a9b5dda000ee7966 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:35:56 +0200 Subject: [PATCH 028/101] Update README.md --- docs/it/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/it/README.md b/docs/it/README.md index ff4e7dc1..8fa81292 100644 --- a/docs/it/README.md +++ b/docs/it/README.md @@ -1,7 +1,6 @@ # Pixl.js Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) -Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. From f93285728b4ffa9e3cdee5ca01f1a3e6fc542b88 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:38:58 +0200 Subject: [PATCH 029/101] Update README.md --- docs/it/README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/it/README.md b/docs/it/README.md index 8fa81292..1771bd55 100644 --- a/docs/it/README.md +++ b/docs/it/README.md @@ -32,22 +32,16 @@ Immagini * 特别感谢 @白橙 制作的外壳。 * 特别感谢 @impeeza 提供的文档翻译 。 -## 讨论群 - -国内用户可以加入QQ群 109761876 进行交流。 ## Office Channel Where do you find the community? * [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) -## 声明 - -本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
-Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 -## Attenzione +## Desclaimer Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+Amiibo è un marchio registrato di Nintendo e NTAG21X è un marchio registrato di NXP. Le fonti del database Amiibo integrato sono le seguenti: From 5379abe667cfe37c8c87d2954ddfbce4c060dd22 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:39:38 +0200 Subject: [PATCH 030/101] Delete README_IT.md --- README_IT.md | 80 ---------------------------------------------------- 1 file changed, 80 deletions(-) delete mode 100644 README_IT.md diff --git a/README_IT.md b/README_IT.md deleted file mode 100644 index ff4e7dc1..00000000 --- a/README_IT.md +++ /dev/null @@ -1,80 +0,0 @@ -# Pixl.js - -Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) -Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky - -Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. -Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. - -Immagini - -![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) -![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) - -![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) - -## Documentazione - -* [中文文档](docs/zh/README.md) -* [English Documentation](docs/en/README.md) - -## Crediti - -* [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) -* [mlib](https://github.com/P-p-H-d/mlib) -* [TLSF](https://github.com/mattconte/tlsf) -* [cwalk](https://github.com/likle/cwalk) -* [SPIFFS](https://github.com/pellepl/spiffs) -* [ChameleonUltra](https://github.com/RfidResearchGroup/ChameleonUltra) - -## Contribution - -* 特别感谢 @Caleeeeeeeeeeeee 完善的Bootloader。 -* 特别感谢 @白橙 制作的外壳。 -* 特别感谢 @impeeza 提供的文档翻译 。 - -## 讨论群 - -国内用户可以加入QQ群 109761876 进行交流。 - -## Office Channel - -Where do you find the community? -* [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) - -## 声明 - -本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
-Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 - -## Attenzione -Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
- -Le fonti del database Amiibo integrato sono le seguenti: - -* [amiiloop](https://download.amiloop.app/) -* [AmiiboAPI](https://www.amiiboapi.com/) - -Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). - - - -# License - -本项目基于GPL 2.0 License发布,使用请遵循License的约定。 - -* 如果对项目做了修改,需要把改后的源码发布出来 -* 发布出来的源码必须要使用相同的License发布 - -# License - -This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. - -* If modifications are made to the project, the modified source code needs to be released -* The source code released must be released using the same License - - - -## suggerimento -L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. - From e47e22a958ee1fb6175d211580b154ca588a1a26 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:54:02 +0200 Subject: [PATCH 031/101] update docs/it/README.md --- docs/it/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/it/README.md b/docs/it/README.md index 1771bd55..e4671299 100644 --- a/docs/it/README.md +++ b/docs/it/README.md @@ -3,7 +3,6 @@ Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. -Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. Immagini From 9a44f675479474a83f637302f80a590edc1e96fd Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 21:05:35 +0200 Subject: [PATCH 032/101] added full italian docs --- docs/it/01-Hardware.md | 33 +++ docs/it/02-Flash-Firmware.md | 77 ++++++ docs/it/03-Build-Firmware.md | 30 +++ docs/it/05+1-ble_protocol.md | 411 +++++++++++++++++++++++++++++++++ docs/it/05+2-amiibolink_ble.md | 82 +++++++ docs/it/05+4-video_player.md | 94 ++++++++ docs/it/05+5-translation.md | 27 +++ 7 files changed, 754 insertions(+) create mode 100644 docs/it/01-Hardware.md create mode 100644 docs/it/02-Flash-Firmware.md create mode 100644 docs/it/03-Build-Firmware.md create mode 100644 docs/it/05+1-ble_protocol.md create mode 100644 docs/it/05+2-amiibolink_ble.md create mode 100644 docs/it/05+4-video_player.md create mode 100644 docs/it/05+5-translation.md diff --git a/docs/it/01-Hardware.md b/docs/it/01-Hardware.md new file mode 100644 index 00000000..0f54124b --- /dev/null +++ b/docs/it/01-Hardware.md @@ -0,0 +1,33 @@ +# PCB +L'hardware di pixl.js è sviluppato e mantenuto nel repository, puoi accedere alla versione più recente dell'hardware nella [sezione Hardware del repository GitHub.](https://github.com/solosky/pixl.js/tree/main/hw "Sezione Hardware del repository GitHub.") + +hw/RevC è la versione più recente del PCB, si consiglia di utilizzarla. +Puoi usare [Kicad 6](https://www.kicad.org/download/) per aprire e modificare i file del PCB e dello schema. + +![PCB pixl.js](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-pcb-revc.png) + +# BOM +* Il BOM è riassunto nel documento: [Guida all'acquisto dei materiali di RevC](01+1-RevC-bom) +* I materiali di Bill in formato interattivo sono disponibili, puoi scaricarli da: [RevC InteractiveHtmlBom](docs/RevC-ibom.html) + +# Immagini +Alcune immagini dei dispositivi attuali sono: + +![pixl.js 1](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) +![pixl.js 2](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) +![pixl.js 3](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) + +# Demo + +[L'ultima versione dell'applicazione Emulatore Amiibo può generare UUID casuali permettendo letture illimitate di amiibo sul gioco! Questo video è un esempio](https://www.bilibili.com/video/BV1TD4y1t76A/) + +# Custodia + +Una custodia per questo progetto, realizzata dal signor Baicheng, può essere scaricata [qui](https://www.thingiverse.com/thing:5877482) +![CUSTODIA](https://github.com/solosky/pixl.js/blob/main/assets/pixjs-case1.png) + +# Versione OLED + +La versione OLED è stata contribuita dall'utente @xiaohail. Puoi cliccare [qui](https://gitlab.com/xiaohai/pixl.js) per scaricare il PCB. + +![OLED](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-oled1.png) \ No newline at end of file diff --git a/docs/it/02-Flash-Firmware.md b/docs/it/02-Flash-Firmware.md new file mode 100644 index 00000000..b2a4900b --- /dev/null +++ b/docs/it/02-Flash-Firmware.md @@ -0,0 +1,77 @@ +Dopo aver costruito o acquistato l'hardware, devi flashare il firmware per la prima volta, che può essere ottenuto solo tramite il metodo cablato. + +Il firmware può essere flashato o aggiornato utilizzando uno dei seguenti metodi: + +## Metodo 1: Cablato +Questo metodo richiede un flasher compatibile con CMASS-DAP JLink o DAPLink. Raccomandiamo il programmatore STM32 PWLINK2 Lite Emulator, puoi comprarne uno per circa 9.9 yuan su [Taobao](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.4b942e8deXyaQO&id=675067753017&_u=d2p75qfn774a "Taobao") + +Scarica l'ultima versione del pacchetto zip del firmware. Dovrebbe contenere i seguenti file: +- fw_update.bat +- bootloader.hex +- pixljs.hex +- pixljs_all.hex +- fw_readme.txt +- pixjs_ota_v237.zip + +Devi collegare i cavi da 3.3 Volt, GND, SWDIO e SWDCLK. Puoi utilizzare il file `fw_update.bat` per flashare il firmware `pixjs_all.hex`. + +Puoi anche utilizzare OpenOCD per flashare il dispositivo, questo è un esempio del comando da eseguire: +``` +openocd -f interface/cmsis-dap.cfg -c "transport select swd" -f target/nrf52.cfg -d2 -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program pixjs_all.hex verify" -c "program nrf52832_xxaa.hex verify" -c exit +``` +Dopo che il primo flash è completato, gli aggiornamenti del firmware successivi possono essere effettuati tramite OTA. + +## Metodo 2: Aggiornamento OTA +Questo metodo è applicabile solo ai dispositivi Pixl.js che sono stati programmati con successo tramite il metodo cablato. + +### App nRF Connect +Installa l'applicazione nRF Connect (la puoi trovare sia su iOS che su Android app stores). + +Nella lista dei dispositivi, seleziona pixl.js (o pixl dfu) e tocca il pulsante `CONNECT` + +Metti il tuo dispositivo pixl.js in modalità "Aggiornamento Firmware", poi il dispositivo entrerà in modalità DFU. Per farlo, seleziona l'app `Settings` e seleziona la voce `Firmware Update`. + +Apri l'app "nRF Connect" sul tuo telefono e connettiti al dispositivo chiamato `pixl dfu` per aggiornare il firmware. + +Su iOS, il firmware è `pixjs_ota_vxxx.zip` + +### Metodo della pagina web +Scarica l'ultima versione del pacchetto zip del firmware corrispondente alla versione del tuo dispositivo ed estrailo in una directory. + +Il progetto fornisce due modi per ottenere un aggiornamento DFU: + +#### Pagina web di trasferimento file. +Innanzitutto, puoi collegare il dispositivo alla [pagina web ufficiale](https://pixl.amiibo.xyz/ "pagina web ufficiale"), poi sulla pagina web, dopo che il dispositivo è connesso, premi il pulsante grigio `DFU`, il dispositivo entrerà in modalità DFU e la pagina ti chiederà "Vuoi aprire la pagina di aggiornamento DFU?" se accetti, la Pagina di Aggiornamento Firmware sarà aperta. + +#### Direttamente alla Pagina di Aggiornamento Firmware. +Puoi anche andare direttamente alla Pagina di Aggiornamento Firmware. + +Prima di tutto, devi mettere il tuo dispositivo pixl.js in modalità "Aggiornamento Firmware". Per farlo, seleziona l'app `Impostazioni` e seleziona la voce `Aggiornamento Firmware`. + +Apri la [pagina di aggiornamento firmware](https://thegecko.github.io/web-bluetooth-dfu). Trascina e rilascia o seleziona il file `pixljs_ota_xxx.zip` dalla cartella dove hai estratto il pacchetto firmware. + +Poi premi il pulsante `SELEZIONA DISPOSITIVO` sulla pagina dovresti vedere un dispositivo chiamato `pixl dfu` connetti per iniziare il processo di aggiornamento del firmware. + + +# Riparazione versione firmware errata. + +Se per errore programmi la versione sbagliata (LCD/OLED) sul tuo dispositivo, il dispositivo funzionerà ma non mostrerà informazioni sullo schermo, la retroilluminazione della versione LCD potrebbe accendersi. + +Puoi utilizzare i seguenti metodi per recuperare o flashare la versione firmware corretta. + +## Opzione 1: Flasha il firmware tramite connessione cablata + +Se hai a disposizione un programmatore JLink o DAPLink compatibile con CMASS-DAP, puoi utilizzare il [Metodo Cablato](Flash-Firmware#Method 1: Wired "Metodo Cablato") per flashare manualmente la versione firmware corretta. +Se per errore programmi la versione sbagliata (LCD/OLED) sul tuo dispositivo, il dispositivo funzionerà ma non mostrerà informazioni sullo schermo, la retroilluminazione della versione LCD potrebbe accendersi. + +## Opzione 2: Segui le sequenze di tasti speciali per entrare nuovamente nella modalità DFU e installare la versione corretta del firmware. + +Prima assicurati che il tuo dispositivo sia spento, poi premi le seguenti sequenze di tasti per entrare nella `Modalità DFU` + +- Un qualsiasi tasto per risvegliare il dispositivo +- SINISTRA +- CENTRO +- SINISTRA X 4 +- CENTRO + +Ora il tuo dispositivo è in modalità DFU, usa l'app [nRF Connect APP](#nRF-Connect-APP) o [Direttamente dalla pagina di aggiornamento del firmware](#directly-to-the-firmware-update-page) per aggiornare il firmware. \ No newline at end of file diff --git a/docs/it/03-Build-Firmware.md b/docs/it/03-Build-Firmware.md new file mode 100644 index 00000000..42d256d8 --- /dev/null +++ b/docs/it/03-Build-Firmware.md @@ -0,0 +1,30 @@ + +# Compilazione del firmware + +## Compilazione con Github Actions + +Puoi scaricare l'ultima build di sviluppo da Github Actions + +https://github.com/solosky/pixl.js/actions + +## Compilazione con immagine Docker personalizzata + +Puoi compilare il firmware utilizzando un'immagine Docker personalizzata. + +```bash +# creare i contenitori +docker run -it --rm solosky/nrf52-sdk:latest + +# inizializzare il repository +root@b10d54636088:/builds# git clone https://github.com/solosky/pixl.js +root@b10d54636088:/builds# cd pixl.js +root@b10d54636088:/builds/pixl.js# git submodule update --init --recursive + +# compilare la versione LCD +root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=LCD RELEASE=1 + +# compilare la versione OLED +root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=OLED RELEASE=1 +``` + +Il firmware si trova in fw/_build/pixjs_all.hex, il pacchetto ota si trova in fw/_build/pixjs_ota_vXXXX.zip \ No newline at end of file diff --git a/docs/it/05+1-ble_protocol.md b/docs/it/05+1-ble_protocol.md new file mode 100644 index 00000000..17fe9b27 --- /dev/null +++ b/docs/it/05+1-ble_protocol.md @@ -0,0 +1,411 @@ +# Parametri Bluetooth + +Attualmente, si utilizza l'SDK NRF52 per fornire il servizio UART Nordic, che fornisce una porta seriale virtuale BLE per comunicare con l'host. + +Nome del dispositivo: Pixl.js + +Lista dei servizi: + +1. Servizio UART Nordic + +NUS_SERVICE_UUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e + +Sono fornite due caratteristiche: + +* NUS_CHAR_TX_UUID: 6e400002-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la trasmissione dei dati, supporta la scrittura e la scrittura senza ritorno. +* NUS_CHAR_RX_UUID: 6e400003-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la lettura dei dati e supporta solo le notifiche. + +(La versione ufficiale dei descrittori sopra può essere modificata.) + +# Formato del protocollo + +## Definizione del protocollo + +Considerando l'efficienza, il protocollo BLE è un protocollo binario. +Questo protocollo è un protocollo di richiesta risposta, e tutte le richieste devono essere iniziate dal client. +Per semplificare l'implementazione del protocollo, ci sarà solo un pacchetto di risposta per ogni richiesta. + +### Definizione della struttura del pacchetto + +Per semplificare il protocollo, sia le richieste che le risposte utilizzano la stessa struttura del pacchetto. + +La struttura generale del pacchetto è la seguente + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | tipo di comando | +| status | uint8 | 1 | Codice di stato, vedi la definizione del codice di stato sotto, il pacchetto di richiesta è fisso a 0 | +| chunk | uint16 | 2 | numero di sequenza del frammento | +| data | byte | N | Dati, relativi alla definizione specifica del pacchetto | + +### Modalità di trasferimento del chunk + +L'MTU attuale definito dal dispositivo pixl.js è 250. In una trasmissione di dati ATT, possono essere trasmessi fino a 247 byte di dati. + +Dimensione massima del pacchetto: +L'intestazione del pacchetto fisso è di 4 byte, quindi ogni pacchetto può trasmettere fino a 243 byte. Se i dati trasmessi superano i 243 byte, è necessario trasmetterli a blocchi. + +Quando la richiesta trasmessa o il risultato di ritorno supera l'MTU, è necessario trasmetterlo a chunk, e il valore del chunk aumenta di 1 per ogni trasmissione. +Quando il bit più alto del chunk è 1, significa che i dati sono ancora in fase di invio. Quando è 0, significa che i dati sono stati letti. + +La scrittura e la lettura dei file richiedono l'abilitazione del trasferimento a chunk. +Il campo chunk è di 2 byte, e il flusso di trasporto a chunk può trasmettere fino a 7,8M byte. +Se supera questi 7,8M byte, è necessario aprire un nuovo flusso di trasmissione a chunk. + +Ad esempio, processo di scrittura su un file: + +``` +c -> s: 0x12, modalità: wc, apri file +s -> c: 0x12, stato 0, id file 0xa1, il file è stato creato e può essere scritto +c -> s: 0x15, chunk 0 | 0x8000, id file 0xa1, 246 byte di dati +c -> s: 0x15, chunk 1 | 0x8000, id file 0xa1, 246 byte di dati +... +c -> s: 0x15, chunk N, id file 0xa1, 56 byte di dati +s -> c: 0x15, stato 0, scrittura completata +c -> s: 0x13, id file 0xa1, chiudi il file, +s -> c: 0x13, stato 0, +``` + +Processo di lettura del file + +``` +c -> s: 0x12, modalità: r, apri file +s -> c: 0x12, stato 0, id file 0xa1, il file è aperto e può essere letto +c -> s: 0x14, chunk 0, id file 0xa1 +s -> c: 0x14, stato 0, chunk 1 | 0x8000, id file 0xa1, 246 byte di dati +... +s -> c: 0x14, stato 0, chunk N, id file 0xa1, 56 byte di dati +c -> s: 0x13, id file 0xa1, chiudi il file, +s -> c: 0x13, stato 0, +``` + +### Definizione del percorso + +Le operazioni sui file richiedono il trasferimento del percorso completo del file. Espressione del percorso standard di Windows con lettera di unità. +Ad esempio, E:/amiibo/mifa.bin. + +### tipo + +I tipi numerici sono tutti interi senza segno, modalità little endian. +La codifica della stringa è lunga 2 byte + array di stringhe, e le stringhe sono codificate uniformemente utilizzando utf8. + +### Informazioni meta del file +Le informazioni meta del file vengono utilizzate per memorizzare alcuni dati relativi al file, con una lunghezza massima di 128 byte. Si distingue in base al campo tipo. I dati sono di lunghezza variabile e i dati vengono analizzati in base al tipo. + +Il formato di base è il seguente: + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| dimensione meta | uint8 | 1 | La dimensione di tutte le informazioni meta, 0xFF o 0 senza metadati | +| tipo meta N | uint8 | 1 | Tipo di informazione meta, definito nella sezione seguente | +| dati meta N | byte | N | La lunghezza varia in base al tipo | + +I tipi attualmente definiti possono assumere i seguenti valori: + +1: annotazioni amiibo +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| lunghezza nota | uint8 | 1 | lunghezza nota | +| dati nota | byte | N | Stringa di note, massimo 90 byte, codifica UTF8. | + +2: Proprietà del file +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| flag | uint8 | N | Attributi del file, definiti a bit | + +* 0b0000_0001: Il file è impostato come attributo nascosto e non verrà visualizzato sulla pagina amiibo, ma può essere visualizzato sulla pagina web. settings.bin imposterà questo flag per impostazione predefinita. +* 0bxxxx_xxxx: Altri bit sono temporaneamente non definiti. + +3: attributi amiibo +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| testa | uint32 | N | id testa amiibo | +| coda | uint32 | N | id coda amiibo | + +Nota: +* Questo attributo è attualmente utilizzato solo in amiibo/data/*.bin ed è utilizzato per identificare rapidamente se si tratta di un file amiibo. + + + +### Definizione del codice di stato globale + +| Codice di stato | Descrizione | +| ---- | ---- | +| 0 | La richiesta è stata completata con successo | +| 0xFF | Il firmware non supporta l'attuale messaggio | + +TODO Integrare il codice di errore in dettaglio. + + + +#Definizione del protocollo + +## 0x01: Ottieni informazioni sulla versione + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x01 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | + + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x01 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| lunghezza versione | uint16 | 2 | lunghezza stringa versione | +| versione | byte | N | versione | + +## 0x02: Entra in modalità DFU + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x02 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x102 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x10: Ottieni lista dischi + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x10 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x10 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| conteggio unità | uint8 | 1 | Numero di dischi | +| codice di stato unità N | uint8 | 1 | Codice di stato disco N 0: Il disco è disponibile, non-0 disco non è disponibile | +| etichetta unità N |char | 1| lettera di unità disco | +| lunghezza nome unità N | uint16 | 2 | lunghezza nome disco | +| nome unità N | byte | N | stringa nome disco | +| dimensione totale unità N |uint32 | 4 | Spazio totale su disco | +| dimensione utilizzata unità N | uint32 | 4 | spazio libero su disco | + +## 0x11: Formatta disco + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x11 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| etichetta unità | char | 1 | Lettera di unità disco: E/I | + +## 0x12: Apri file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x12 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | lunghezza percorso | +| percorso | byte | N | stringa percorso | +| modalità | uint8 | 1 | modalità di apertura | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | fisso 0x12 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1 | id file, utilizzato per le successive richieste di lettura e scrittura | + +## 0x13: Chiudi file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x13 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1 | id file | + +2. Risposta del servizio + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x13 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1 | id file, utilizzato per le successive richieste di lettura e scrittura | + +## 0x14: Leggi file + +1. Il client invia una richiesta + +Supporta solo la lettura sequenziale. + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x14 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1| id file | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x14 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| data | byte | N | Dati del file | + +## 0x15 Scrivi su file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x15 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| id file | uint8 | 1 | id file | +| data | byte | N | Dati del file, lunghezza massima = MTU - 4 | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x15 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | Stesso della richiesta | + +## 0x16:Leggi cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x16 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x16 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| lunghezza nome file N | uint16 | 2 | Lunghezza nome file in byte| +| nome file N | byte | N| Stringa nome file | +| dimensione file N | uint32 | 4 |Dimensione file | +| tipo file N | uint8 | 1 | Tipo file: 0 => File, 1 => Cartella | +| lunghezza meta file N | uint8 | 1 | Lunghezza dati meta file, 64 max| +| meta file N | byte | N | Dati meta file | + +## 0x17 Crea cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x17 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x17 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x18 Elimina file o cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x19 Rinomina file o cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| vecchia lunghezza percorso | uint16 | 2 | Lunghezza vecchio percorso in byte | +| vecchio percorso | byte | N | Vecchia stringa percorso | +| nuova lunghezza percorso | uint16 | 2 | Lunghezza nuovo percorso in byte | +| nuovo percorso | byte | N | Nuova stringa percorso | + +Se la lunghezza dei dati è maggiore dell'MTU, utilizza il trasferimento a chunk. + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x1A Aggiorna meta file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x1a | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | +| dati meta | byte | N | Dati Meta File | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x1a | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | \ No newline at end of file diff --git a/docs/it/05+2-amiibolink_ble.md b/docs/it/05+2-amiibolink_ble.md new file mode 100644 index 00000000..b014667d --- /dev/null +++ b/docs/it/05+2-amiibolink_ble.md @@ -0,0 +1,82 @@ +Certo, ecco la traduzione in italiano: + +# Protocollo di trasferimento Amiibolink + +## Parametri Bluetooth + +L'attuale protocollo utilizza ancora il servizio NUS Nordic come protocollo di porta seriale Bluetooth. + +Nome del dispositivo di trasmissione: amiibolink + +Lista dei servizi: + +1. Servizio UART Nordic + +NUS_SERVICE_UUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e + +Sono fornite due caratteristiche: + +* NUS_CHAR_TX_UUID: 6e400002-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la trasmissione dei dati, supporta la scrittura e la scrittura senza ritorno. +* NUS_CHAR_RX_UUID: 6e400003-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la lettura dei dati e supporta solo le notifiche. + +## Protocollo di trasferimento amiibo + +## Descrizione del protocollo + + +| Funzione | Invio | Risposta | Descrizione | +|---------|--------------|------|--------------------------| +| Imposta modalità dispositivo | a1 b1 01 | b1 a1 | 01: Modalità casuale 02: Modalità sequenziale 03: Modalità di lettura e scrittura | +| Preparazione scrittura carta | a0 b0 | b0 a0 | Invia prima di inviare dati | +| ?? | ac ac 00 04 00 00 02 1c | ca ca | Invia 540 byte di dati | +| ?? | ab ab 02 1c | ba ba | Non so perché è stato inviato un pacchetto con lo stesso significato | +| Invia dati | dd aa 00 96 ... 00 01 | aa dd | 0x96 lunghezza dati, seguita da dati, gli ultimi due byte sono il numero di sequenza del pacchetto | +| ?? | bc bc | cb cb | fine trasferimento | +| ?? | cc dd | dd cc | Non so perché sto inviando questo pacchetto | + + +## Processo di interazione + +### Processo di interazione del mini programma ufficiale + +``` +c->s: a0 b0 +s->c: b0 a0 +c->s: ac ac 00 04 00 00 02 1c //540 +s->c: ca ca +c->s: ab ab 02 1c +s->c: ba ba +c->s: + +0000 dd aa 00 96 (0x96 byte di dati) 00 00 + +dd aa 00 +96 //150 +04 51 91 4c e2 ..//150 byte +00 00 //seq, inizia da 0 + + +c->s: aadd +s->c: +0000 dd aa 00 96 (0x96 byte di dati) 00 01 +c->s: aadd +s->c: +0000 dd aa 00 96 (0x96 byte di dati) 00 02 +c->s: aadd +s->c: dd aa 00 5a (0x5a byte dati) 00 03 +s->c: aadd +c->s: bcbc +s->c: cbcb +s->c:ccdd +c->s: ddcc +``` + +### Processo di interazione iNFC +Il processo è sostanzialmente lo stesso di sopra, ma c'è un comando in più +``` +c->s: a1 b1 01 +s->c: b1 a1 +c->s: a0b0 +s->c: b0a0 +... +``` \ No newline at end of file diff --git a/docs/it/05+4-video_player.md b/docs/it/05+4-video_player.md new file mode 100644 index 00000000..93ca9ad4 --- /dev/null +++ b/docs/it/05+4-video_player.md @@ -0,0 +1,94 @@ +Certo, ecco la traduzione in italiano: + +# Lettore di animazioni + +Il lettore di animazioni può riprodurre file di animazione convertiti in formati personalizzati. Richiede la versione del firmware 2.3.0 o superiore. + +## Formato del file di animazione + +Il formato di base del file è intestazione + frame1 + frame2 +... + frameN + + # magic + frame_count + fps + width + height + reserved + # 4b + 2b + 2b + 2b + 2b + 4b = 16 byte + +Il formato dell'intestazione è il seguente + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| magic | bytes | 4 | Prefisso fisso, utilizzato per determinare rapidamente se è un file di animazione, fisso a 0x56 0x58 0x49 0x50 | +| conteggio frame | uint16 | 2 | Quanti frame di animazione ci sono in totale | +| fps | uint16 | 2 | Quanti frame di animazione al secondo | +| larghezza | uint16 | 2 | larghezza dell'animazione | +| altezza | uint16 | 2 | altezza dell'animazione | +| riservato | uint32 | 4 | byte riservati | + +Il formato dei dati del frame N è i dati di animazione di ogni frame in formato xbm, e la dimensione è larghezza * altezza / 8. +Se la lunghezza della larghezza non è un multiplo di 8, arrotonda per eccesso. + +## Come generare file di animazione + +Prima prepara il file video che deve essere convertito, di solito termina in mp4, ma sono accettabili anche altri formati. + +Le seguenti operazioni devono essere eseguite sotto Linux. +Inoltre, puoi utilizzare WSL2 per creare rapidamente un ambiente Linux Ubuntu sotto Windows. + +Esegui prima il seguente comando per installare gli strumenti necessari + +``` +sudo apt install ffmpeg python3-pip +sudo pip3 install imageio -i https://pypi.tuna.tsinghua.edu.cn/simple +``` + +Per Ubuntu avrai bisogno di installare i pacchetti eseguendo il prossimo comando: + +``` +sudo apt install ffmpeg python3 python3-imageio +``` + +Se preferisci l'ambiente MSYS MINGW64 puoi installare i pacchetti utilizzando questi comandi: + +``` +pacman -S mingw-w64-x86_64-ffmpeg mingw-w64-x86_64-python mingw-w64-x86_64-python-imageio +``` + +Quindi esegui il comando ffmpeg per convertire l'animazione in immagini di frame indipendenti. +``` +mkdir frames +ffmpeg -y -i badapple.mp4 -ss 0:0 -t 60 -vf "scale=128:64:decrease:flags=lanczos,hue=s=0" -r 10 "frames/%04d.bmp" +``` +La descrizione del parametro è la seguente: + +* -i badapple.mp4: Questo è il file video di input +* -ss 0:0: intercetta da 0:0 del video. Se non vuoi intercettare parte del video, non hai bisogno di fornire questo parametro. +* -t 60: intercetta 60 secondi di video. Se converti l'intero video, non hai bisogno di fornire questo parametro. +* -vf "scale=128:64:decrease:flags=lanczos,hue=s=0" : Converti il video in un'immagine 128x64, mantenendo l'aspect ratio del video +* -r 10: L'fps convertito è 10 +* "frames/%04d.bmp": I file video convertiti sono memorizzati nella directory frames e il formato è bmp + +Se il video è più grande, puoi ridurre le dimensioni del video come segue: + +* Dato i parametri -ss -t, intercetta parte del video +* Riduci la risoluzione di output, come 80x64, ecc. + +Infine, esegui il seguente comando per convertirlo in un file di animazione personalizzato + +``` +python3 fw/scripts/video_clip_gen.py 10 frames badapple.bin +``` +La descrizione del parametro è la seguente: + +* 10: L'fps convertito è 10, ad esempio, è lo stesso dell'fps convertito da ffmpeg, altrimenti la velocità di riproduzione sarà errata. +* frames: directory delle immagini convertite da ffmpeg +* badapple.bin: file di animazione convertito + +## Riproduci file di animazione + +Trasferisci i file video convertiti nella directory del lettore dello storage Flash in Pixl.js tramite la pagina web. La directory del lettore non può essere creata manualmente. + +Apri Pixl.js, seleziona [Animation Player], elenca tutti i file nella directory del lettore, quindi seleziona il file video che vuoi riprodurre e premi il pulsante centrale per riprodurre. + +Avviso: + +* Sebbene lo storage Flash sia uno spazio di 1,8 MB, a causa delle caratteristiche del file system SPIFFS, quando lo spazio disponibile è inferiore al 30%, la scrittura sarà molto lenta o addirittura fallirà. +* Se incontri una scrittura lenta, puoi ripristinare la velocità di caricamento formattando il disco. +* La cancellazione di file di grandi dimensioni è lenta, per favore sii paziente. \ No newline at end of file diff --git a/docs/it/05+5-translation.md b/docs/it/05+5-translation.md new file mode 100644 index 00000000..a05d1133 --- /dev/null +++ b/docs/it/05+5-translation.md @@ -0,0 +1,27 @@ + +# Traduzione + +## Come aggiornare una traduzione esistente + +1. Modifica fw/data/i18n.csv con il tuo editor di testo preferito. Per vscode, si consiglia l'estensione "Edit csv". +2. Esegui `fw/scripts/i18n_gen.py` per generare nuovi file di lingua. +3. Opzionale: Esegui `fw/scripts/font_data_gen.sh` per generare nuovi dati di font se aggiungi nuovi caratteri in i18n.csv +4. Esegui `make full` per ricostruire il firmware + +nota:
+Lo script `font_data_gen.sh` può essere eseguito solo in Git Bash windows in Windows. + +## Come aggiungere una nuova traduzione di lingua + +1. Aggiungi una nuova colonna in fw/data/i18n.csv, ad esempio "ja_JP" +2. Esegui `fw/scripts/i18n_gen.py` per generare nuovi file di lingua. +3. Opzionale: Esegui `fw/scripts/font_data_gen.sh` per generare nuovi dati di font se aggiungi nuovi caratteri in i18n.csv +4. Modifica `fw/application/src/i18n/language.h` e `fw/application/src/i18n/language.c` per adottare la nuova lingua +5. Modifica il Makefile per includere `$(PROJ_DIR)/i18n/ja_JP.c` come file sorgente C +6. Esegui `make full` per ricostruire il firmware + +## Note sui font + +Per la build di rilascio (RELEASE=1), il firmware utilizza wenquanyi_9pt_u8g2.bdf per visualizzare i caratteri unicode.
+Controlla se il punto di codice del carattere della nuova lingua è incluso in wenquanyi_9pt_u8g2.bdf o meno.
+In caso contrario, non si consiglia di supportare la nuova lingua a causa della restrizione del flash interno dell'MCU. \ No newline at end of file From ae0b66263ade23e002906d182bb86510eea98417 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 12:34:33 +0200 Subject: [PATCH 033/101] italian note-it is now used for LANGUAGE_IT_IT --- fw/application/src/app/amiidb/view/amiibo_view.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fw/application/src/app/amiidb/view/amiibo_view.c b/fw/application/src/app/amiidb/view/amiibo_view.c index f42725dc..9ad258b0 100644 --- a/fw/application/src/app/amiidb/view/amiibo_view.c +++ b/fw/application/src/app/amiidb/view/amiibo_view.c @@ -69,7 +69,14 @@ static void amiibo_view_on_draw(mui_view_t *p_view, mui_canvas_t *p_canvas) { if (strlen(ntag->notes) > 0) { p_amiibo_view->desc_total = mui_element_autowrap_text_box(p_canvas, clip_win_cur.x, clip_win_cur.y, clip_win_cur.w, clip_win_cur.h, p_amiibo_view->desc_offset, square_r, ntag->notes); } else if (link != NULL) { - const char *notes = getLanguage() == LANGUAGE_ZH_HANS ? link->note_cn : link->note_en; + const char *notes; + if (getLanguage() == LANGUAGE_ZH_HANS) { + notes = link->note_cn; + } else if(getLanguage() == LANGUAGE_IT_IT) { + notes = link->note_it; + } else { + notes = link->note_en; + } p_amiibo_view->desc_total = mui_element_autowrap_text_box(p_canvas, clip_win_cur.x, clip_win_cur.y, clip_win_cur.w, clip_win_cur.h, p_amiibo_view->desc_offset, square_r, notes); } mui_canvas_set_clip_window(p_canvas, &clip_win_prev); From 04be1f238c93fa8e420c85e951ac5be3a64a3170 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 13:50:25 +0200 Subject: [PATCH 034/101] traduzioni aggirnate per riflettere i nomi effettivi nel gioco --- fw/application/src/amiidb/db_link.c | 4 ++-- fw/data/amiidb_link.csv | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index 7a70c8ed..cf6e15fb 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -17,7 +17,7 @@ const db_link_t link_list[] = { {1, 0x01000000, 0x04180902, "Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi"}, {1, 0x01000000, 0x034d0902, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, {1, 0x01030000, 0x024f0902, "Meat/Paraglider Skin Material", "肉/滑翔伞皮肤布料", "Carne/Tessuto della Paravela"}, -{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, {1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {1, 0x01010100, 0x00170002, "Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {1, 0x01000100, 0x00160002, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, @@ -50,7 +50,7 @@ const db_link_t link_list[] = { {4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, {4, 0x01000000, 0x034d0902, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, {4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo a 20 Cuori"}, -{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, {4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {4, 0x01010100, 0x00170002, "Sheik Set/Eightfold Blade/Mushroom", "希克服套装/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {4, 0x01000100, 0x00160002, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, diff --git a/fw/data/amiidb_link.csv b/fw/data/amiidb_link.csv index 65b3ffba..b8b30631 100644 --- a/fw/data/amiidb_link.csv +++ b/fw/data/amiidb_link.csv @@ -14,7 +14,7 @@ 1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi 1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo 1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,Carne/Tessuto della Paravela -1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce 1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce @@ -47,7 +47,7 @@ 4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia 4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo 4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo a 20 Cuori -4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruto/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce 4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce From e9d3a4f28c0929ad8aa8f5d009859d7e269a82f5 Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 14:14:11 +0200 Subject: [PATCH 035/101] traduzioni aggirnate per riflettere i nomi effettivi nel gioco --- fw/application/src/amiidb/db_link.c | 28 ++++++++++++++-------------- fw/data/amiidb_link.csv | 28 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/fw/application/src/amiidb/db_link.c b/fw/application/src/amiidb/db_link.c index cf6e15fb..f12a8784 100644 --- a/fw/application/src/amiidb/db_link.c +++ b/fw/application/src/amiidb/db_link.c @@ -1,9 +1,9 @@ /* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */ #include "db_header.h" const db_link_t link_list[] = { -{1, 0x01000000, 0x034f0902, "Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia"}, -{1, 0x01410000, 0x035c0902, "Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela"}, -{1, 0x01050000, 0x03580902, "Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石", "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, +{1, 0x01000000, 0x034f0902, "Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee", "初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie"}, +{1, 0x01410000, 0x035c0902, "Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento Boblin in Ossa di Drago/Carne/Tessuto della Paravela"}, +{1, 0x01050000, 0x03580902, "Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石", "Elmo Sacro di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, {1, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb", "黄昏剑/卢比/宝石/星星碎片炸药桶", "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba"}, {1, 0x01020100, 0x041a0902, "Gerudo-King Fabric", "沼气之枪/滑翔伞皮肤布料", "Tessuto del Re Gerudo"}, {1, 0x01400000, 0x03550902, "Dragonbone Boko related gear/Meat/Paraglider Skin Material", "龙骨波克相关装备/肉/滑翔伞皮肤布料", "Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela"}, @@ -13,17 +13,17 @@ const db_link_t link_list[] = { {1, 0x01000000, 0x034c0902, "Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom", "鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇", "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi"}, {1, 0x01000000, 0x034b0902, "Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat", "时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉", "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne"}, {1, 0x01000000, 0x03540902, "Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇", "Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi"}, -{1, 0x01000000, 0x034e0902, "Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, +{1, 0x01000000, 0x034e0902, "Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee", "天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie"}, {1, 0x01000000, 0x04180902, "Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi"}, {1, 0x01000000, 0x034d0902, "Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse", "黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, {1, 0x01030000, 0x024f0902, "Meat/Paraglider Skin Material", "肉/滑翔伞皮肤布料", "Carne/Tessuto della Paravela"}, -{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, -{1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, +{1, 0x01070000, 0x035a0902, "Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish", "露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼", "Set Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{1, 0x01080000, 0x035b0902, "Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond", "梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石", "Set Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {1, 0x01010100, 0x00170002, "Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom", "希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {1, 0x01000100, 0x00160002, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {1, 0x01000100, 0x03500902, "Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish", "风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {1, 0x01010000, 0x03520902, "Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, -{1, 0x01060000, 0x03590902, "Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉", "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, +{1, 0x01060000, 0x03590902, "Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat", "娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉", "Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, {1, 0x01000000, 0x037c0002, "Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish", "时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼", "Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, {1, 0x01010000, 0x000e0002, "Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, {1, 0x01010000, 0x03560902, "Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜", "Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, @@ -36,9 +36,9 @@ const db_link_t link_list[] = { {3, 0x01000100, 0x00160002, "", "暂无简介", ""}, {3, 0x01000000, 0x037c0002, "", "暂无简介", ""}, {3, 0x01010000, 0x000e0002, "", "暂无简介", ""}, -{4, 0x01000000, 0x034f0902, "Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee", "初始勇者服套装/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia"}, +{4, 0x01000000, 0x034f0902, "Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee", "初始勇者服套装/旅人&士兵剑&盾/卢比", "Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie"}, {4, 0x01410000, 0x035c0902, "Champion's Tunic Fabric/Paraglider Skin Material/Mushroom", "新式英杰服布料/滑翔伞皮肤布料/蘑菇", "Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi"}, -{4, 0x01050000, 0x03580902, "Rudania's Divine Helm/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/劈石剑/钻石", "Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante"}, +{4, 0x01050000, 0x03580902, "Rudania's Divine Helm/Boulder Breaker/Diamond", "鲁达尼亚*神兽兵装/劈石剑/钻石", "Elmo Sacro di Rudania/Tessuto della Paravela/Battirocce/Diamante"}, {4, 0x01020100, 0x001b0002, "Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel", "黄昏剑/卢比/宝石/星星碎片炸药桶", "Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba"}, {4, 0x01400000, 0x03550902, "Guardian Weapons/Shields/Spears/Core/Treasure/Arrow", "守护者枪 盾 剑/古代兵装 核心/宝石 箭", "Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano"}, {4, 0x01000000, 0x00040002, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, @@ -47,16 +47,16 @@ const db_link_t link_list[] = { {4, 0x01000000, 0x034c0902, "Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom", "鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇", "Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi"}, {4, 0x01000000, 0x034b0902, "Time Traveler Set/Biggoron Sword/Meat", "时之勇者服套装/大鼓隆之剑/肉", "Set Viaggiatore nel Tempo/Spada di Biggoron/Carne"}, {4, 0x01000000, 0x03540902, "Bridle and Saddle/Moonlight Scimitar/Mushroom", "马缰绳&马鞍/月光匕首/蘑菇", "Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi"}, -{4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia"}, +{4, 0x01000000, 0x034e0902, "Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee", "天空勇者服套装/天空剑/士兵&旅人剑盾/卢比", "Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie"}, {4, 0x01000000, 0x034d0902, "Twilight Set/Traveler's Sword & Shield/Fruit/Horse", "黄昏服套装/旅人剑&盾/水果/马", "Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo"}, -{4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo a 20 Cuori"}, -{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, -{4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, +{4, 0x01030000, 0x024f0902, "20 Heart Wolf Link", "20心林克狼", "Link Lupo con 20 Cuori"}, +{4, 0x01070000, 0x035a0902, "Ruto's Divine Helm/Silver Long Spear/Fish", "露塔*神兽兵装/银鳞之枪/鱼", "Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce"}, +{4, 0x01080000, 0x035b0902, "Medoh's Divine Helm/Falcon Bow/Fruit/Diamond", "梅德*神兽兵装/游隼弓/水果 钻石", "Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante"}, {4, 0x01010100, 0x00170002, "Sheik Set/Eightfold Blade/Mushroom", "希克服套装/戒心刀/蘑菇", "Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi"}, {4, 0x01000100, 0x00160002, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {4, 0x01000100, 0x03500902, "Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish", "风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼", "Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce"}, {4, 0x01010000, 0x03520902, "Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "勇者盾/星星碎片&宝石/草 果实 胡萝卜", "Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, -{4, 0x01060000, 0x03590902, "Naydra's Divine Helm/Gurudo related gear/Meat", "娜波力斯*神兽兵装/格鲁德相关装备/肉", "Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, +{4, 0x01060000, 0x03590902, "Naydra's Divine Helm/Gurudo related gear/Meat", "娜波力斯*神兽兵装/格鲁德相关装备/肉", "Set Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne"}, {4, 0x01000000, 0x037c0002, "Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish", "时之勇者服套装/骑士&王族枪 剑 双手剑/鱼", "Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce"}, {4, 0x01010000, 0x000e0002, "Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot", "黄昏弓/星星碎片&宝石/草 果实 胡萝卜", "Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, {4, 0x01010000, 0x03560902, "Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot", "太阳盾/星星碎片&宝石/草 果实 胡萝卜", "Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota"}, diff --git a/fw/data/amiidb_link.csv b/fw/data/amiidb_link.csv index b8b30631..8f5ecbc2 100644 --- a/fw/data/amiidb_link.csv +++ b/fw/data/amiidb_link.csv @@ -1,6 +1,6 @@ -1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia -1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela -1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +1,01000000034f0902,Starting Champion Dress Set/Paraglider Skin Material/Traveler's & Soldier's Sword & Shield/Rupee,初始勇者服套装/滑翔伞皮肤布料/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie +1,01410000035c0902,Dragon Bone Boko-related equipment/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento Boblin in Ossa di Drago/Carne/Tessuto della Paravela +1,0105000003580902,Rudania's Divine Helm Set/Paraglider Skin Material/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/滑翔伞皮肤布料/劈石剑/钻石,Elmo Sacro di Rudania/Tessuto della Paravela/Rompisassi/Diamante 1,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb,黄昏剑/卢比/宝石/星星碎片炸药桶,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba 1,01020100041a0902,Gerudo-King Fabric,沼气之枪/滑翔伞皮肤布料,Tessuto del Re Gerudo 1,0140000003550902,Dragonbone Boko related gear/Meat/Paraglider Skin Material,龙骨波克相关装备/肉/滑翔伞皮肤布料,Equipaggiamento correlato al Boko di Ossa di Drago/Carne/Tessuto della Paravela @@ -10,17 +10,17 @@ 1,01000000034c0902,Fierce Deity Dress Set/Fierce Deity Sword/Paraglider Skin Material/Mushroom,鬼神服套装/鬼神大剑/滑翔伞皮肤布料/蘑菇,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi 1,01000000034b0902,Hero of Time Dress Set/Master Sword/Paraglider Skin Material/Meat,时之勇者服套装/大鼓隆之剑/滑翔伞皮肤布料/肉,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne 1,0100000003540902,Bridle & Saddle/Paraglider Skin Material/Moonlight Scimitar/Mushroom,马缰绳&马鞍/滑翔伞皮肤布料/月光匕首/蘑菇,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi -1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +1,01000000034e0902,Skyward Sword Dress Set/Skyward Sword/Paraglider Skin Material/Rupee,天空勇者服套装/天空剑/滑翔伞皮肤布料/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie 1,0100000004180902,Modern Hero Cloth Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto dell'Eroe Moderno/Tessuto della Paravela/Funghi 1,01000000034d0902,Twilight Dress Set/Traveler's Sword & Shield/Paraglider Skin Material/Fruit/Horse,黄昏服套装/旅人剑&盾/滑翔伞皮肤布料/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo 1,01030000024f0902,Meat/Paraglider Skin Material,肉/滑翔伞皮肤布料,Carne/Tessuto della Paravela -1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce -1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +1,01070000035a0902,Ruto's Divine Helm Set/Paraglider Skin Material/Silver Scale Spear/Fish,露塔*神兽兵装/滑翔伞皮肤布料/银鳞之枪/鱼,Set Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +1,01080000035b0902,Medoh's Divine Helm Set/Paraglider Skin Material/Great Eagle Bow/Fruit/Diamond,梅德*神兽兵装/滑翔伞皮肤布料/游隼弓/水果 钻石,Set Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 1,0101010000170002,Sheikah Suit Set/Paraglider Skin Material/Curved Longsword/Mushroom,希克服套装/滑翔伞皮肤布料/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 1,0100010000160002,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 1,0100010003500902,Hero of Wind Dress Set/Paraglider Skin Material/Sea-Breeze Boomerang/Traveler's & Soldier's Sword/Fish,风之勇者服套装/滑翔伞皮肤布料/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 1,0101000003520902,Hero's Shield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +1,0106000003590902,Naydra's Divine Helm Set/Paraglider Skin Material/Revali-related equipment/Meat,娜波力斯*神兽兵装/滑翔伞皮肤布料/格鲁德相关装备/肉,Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne 1,01000000037c0002,Hero of Time Dress Set/Paraglider Skin Material/Knight's & Royal Spear/Sword & Two-handed Sword/Fish,时之勇者服套装/滑翔伞皮肤布料/骑士&王族枪 剑 双手剑/鱼,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce 1,01010000000e0002,Twilight Bow/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota 1,0101000003560902,Sunshield/Paraglider Skin Material/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/滑翔伞皮肤布料/星星碎片&宝石/草 果实 胡萝卜,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota @@ -33,9 +33,9 @@ 3,0100010000160002,,暂无简介, 3,01000000037c0002,,暂无简介, 3,01010000000e0002,,暂无简介, -4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupia +4,01000000034f0902,Hero of the Wild Set/Traveler's and Soldier's Sword & Shield/Rupee,初始勇者服套装/旅人&士兵剑&盾/卢比,Set Eroe Selvaggio/Spada & Scudo del Viaggiatore e del Soldato/Rupie 4,01410000035c0902,Champion's Tunic Fabric/Paraglider Skin Material/Mushroom,新式英杰服布料/滑翔伞皮肤布料/蘑菇,Tessuto della Tunica del Campione/Tessuto della Paravela/Funghi -4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,Set Elmo Divino di Rudania/Tessuto della Paravela/Rompisassi/Diamante +4,0105000003580902,Rudania's Divine Helm/Boulder Breaker/Diamond,鲁达尼亚*神兽兵装/劈石剑/钻石,Elmo Sacro di Rudania/Tessuto della Paravela/Battirocce/Diamante 4,01020100001b0002,Twilight Sword/Rupee/Gem/Star Fragment Bomb Barrel,黄昏剑/卢比/宝石/星星碎片炸药桶,Spada del Crepuscolo/Rupia/Gemma/Frammento di Stella Bomba 4,0140000003550902,Guardian Weapons/Shields/Spears/Core/Treasure/Arrow,守护者枪 盾 剑/古代兵装 核心/宝石 箭,Armi/Scudi/Lance/Core/Tesoro/Freccia del Guardiano 4,0100000000040002,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo @@ -44,16 +44,16 @@ 4,01000000034c0902,Phantom Set/Phantom Greatsword/Soldier's and Knight's Claymore/Mushroom,鬼神服套装/鬼神大剑/士兵&骑士双手剑/蘑菇,Set Fantasma/Grande Spada Fantasma/Spadone del Soldato e del Cavaliere/Funghi 4,01000000034b0902,Time Traveler Set/Biggoron Sword/Meat,时之勇者服套装/大鼓隆之剑/肉,Set Viaggiatore nel Tempo/Spada di Biggoron/Carne 4,0100000003540902,Bridle and Saddle/Moonlight Scimitar/Mushroom,马缰绳&马鞍/月光匕首/蘑菇,Redini e Sella/Tessuto della Paravela/Scimitarra di Luce/Funghi -4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupia +4,01000000034e0902,Skyward Set/Skyward Sword/Soldier's and Traveler's Sword & Shield/Rupee,天空勇者服套装/天空剑/士兵&旅人剑盾/卢比,Set Spada del Cielo/Spada del Cielo/Tessuto della Paravela/Rupie 4,01000000034d0902,Twilight Set/Traveler's Sword & Shield/Fruit/Horse,黄昏服套装/旅人剑&盾/水果/马,Set Crepuscolo/Spada & Scudo del Viaggiatore/Tessuto della Paravela/Frutto/Cavallo -4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo a 20 Cuori -4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Set Elmo Divino di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce -4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Set Elmo Divino di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante +4,01030000024f0902,20 Heart Wolf Link,20心林克狼,Link Lupo con 20 Cuori +4,01070000035a0902,Ruto's Divine Helm/Silver Long Spear/Fish,露塔*神兽兵装/银鳞之枪/鱼,Elmo Sacro di Ruta/Tessuto della Paravela/Lancia a Scaglie d'Argento/Pesce +4,01080000035b0902,Medoh's Divine Helm/Falcon Bow/Fruit/Diamond,梅德*神兽兵装/游隼弓/水果 钻石,Elmo Sacro di Medoh/Tessuto della Paravela/Grande Arco dell'Aquila/Frutto/Diamante 4,0101010000170002,Sheik Set/Eightfold Blade/Mushroom,希克服套装/戒心刀/蘑菇,Set Sheikah/Tessuto della Paravela/Spadone Curvo/Funghi 4,0100010000160002,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 4,0100010003500902,Wind Set/Boomerang/Traveler's and Soldier's Sword/Fish,风之勇者服套装/海风回旋镖/旅人&士兵剑/鱼,Set Eroe del Vento/Tessuto della Paravela/Boomerang/Spada & Scudo del Viaggiatore e del Soldato/Pesce 4,0101000003520902,Hylian Shield/Star Fragment & Gem/Grass/Fruit/Carrot,勇者盾/星星碎片&宝石/草 果实 胡萝卜,Scudo Hyliano/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota -4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,Set Elmo Divino di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne +4,0106000003590902,Naydra's Divine Helm/Gurudo related gear/Meat,娜波力斯*神兽兵装/格鲁德相关装备/肉,Set Elmo Sacro di Naydra/Tessuto della Paravela/Equipaggiamento correlato a Revali/Carne 4,01000000037c0002,Time Traveler Set/Knight's and Royal Spear/Sword/and Claymore/Fish,时之勇者服套装/骑士&王族枪 剑 双手剑/鱼,Set Viaggiatore nel Tempo/Tessuto della Paravela/Lancia & Spada & Spadone del Cavaliere & Reale/Pesce 4,01010000000e0002,Twilight Bow/Star Fragment & Gem/Grass/Fruit/Carrot,黄昏弓/星星碎片&宝石/草 果实 胡萝卜,Arco del Crepuscolo/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota 4,0101000003560902,Daybreaker Shield/Star Fragment & Gem/Grass/Fruit/Carrot,太阳盾/星星碎片&宝石/草 果实 胡萝卜,Scudo dell'Alba/Tessuto della Paravela/Frammento di Stella & Gemma/Erba/Frutto/Carota From 59ce5ba024870bd2bc48f6f3eb3dc613af0fcf4e Mon Sep 17 00:00:00 2001 From: Stefano Navarria Date: Tue, 2 Apr 2024 14:51:48 +0200 Subject: [PATCH 036/101] removed double import and moved to the top --- fw/scripts/amiibo_db_gen.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/fw/scripts/amiibo_db_gen.py b/fw/scripts/amiibo_db_gen.py index 364deff4..2901fc81 100644 --- a/fw/scripts/amiibo_db_gen.py +++ b/fw/scripts/amiibo_db_gen.py @@ -5,6 +5,7 @@ import json import os import csv +import certifi class Amiibo: def __init__(self): @@ -35,8 +36,6 @@ def get_prorject_directory(): def fetch_amiibo_from_api(): - import certifi - import os os.environ['SSL_CERT_FILE'] = certifi.where() conn = urlopen("https://www.amiiboapi.com/api/amiibo/") body = json.loads(conn.read()) @@ -94,13 +93,13 @@ def merge_amiibo(amiibos_csv, amiibos_api): def gen_amiibo_data_c_file(amiibos): c_file = get_prorject_directory() + "/application/src/amiidb/db_amiibo.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: - f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') f.write('#include "db_header.h"\n') f.write('const db_amiibo_t amiibo_list[] = {\n') for amiibo in amiibos: f.write('{0x%s, 0x%s, "%s", "%s"}, \n' % (amiibo.id[0:8], amiibo.id[8:16], amiibo.name_en, - amiibo.name_cn)) # added amiibo.name_it + amiibo.name_cn)) f.write("{0, 0, 0, 0}\n") f.write("};\n") @@ -155,20 +154,20 @@ def count_game_links(games, links, game_id): def gen_amiibo_link_c_file(links): c_file = get_prorject_directory() + "/application/src/amiidb/db_link.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: - f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') f.write('#include "db_header.h"\n') f.write('const db_link_t link_list[] = {\n') for link in links: f.write('{%s, 0x%s, 0x%s, "%s", "%s", "%s"}, \n' % (link.game_id, link.amiibo_id[0:8], link.amiibo_id[8:16], link.note_en, - link.note_cn, link.note_it)) # added link.note_it + link.note_cn, link.note_it)) f.write("{0, 0, 0, 0, 0, 0}\n") f.write("};\n") def gen_amiibo_game_c_file(games, links): c_file = get_prorject_directory() + "/application/src/amiidb/db_game.c" with open(c_file, "w+", newline="\n", encoding="utf8") as f: - f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') # added comment + f.write('/* This file is auto-generated by amiibo_db_gen.py. Do not edit directly. */\n') f.write('#include "db_header.h"\n') f.write('const db_game_t game_list[] = {\n') for game in games: From 659f40a2bcdba2cd6f6066ca2e31e38e5ff0f75d Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 15:41:11 +0200 Subject: [PATCH 037/101] Update README.md --- README.md | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c4d431c2..cd956dde 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,23 @@ # Pixl.js -这是一个基于原版[Pixl.js](http://www.espruino.com/Pixl.js)的复刻版本,主要的功能是用来模拟Amiibo。 +Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) +Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky -## 图片 +Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. +Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. +Immagini ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) -## 文档 +## Documentazione * [中文文档](docs/zh/README.md) * [English Documentation](docs/en/README.md) -## Credits +## Crediti * [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) * [mlib](https://github.com/P-p-H-d/mlib) @@ -43,12 +46,17 @@ Where do you find the community? 本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 -内置的Amiibo数据库来源分别如下: +## Attenzione +Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+ +Le fonti del database Amiibo integrato sono le seguenti: * [amiiloop](https://download.amiloop.app/) * [AmiiboAPI](https://www.amiiboapi.com/) -源代码没有包含任何有任天堂版权的资源(比如相关密钥,Amiibo原始数据等)。 +Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). + + # License @@ -57,7 +65,15 @@ Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 * 如果对项目做了修改,需要把改后的源码发布出来 * 发布出来的源码必须要使用相同的License发布 +# License + +This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. + +* If modifications are made to the project, the modified source code needs to be released +* The source code released must be released using the same License + + -## 提示 +## suggerimento +L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. -Amiibo无限刷需要网上搜索key_retail.bin文件然后上传到到磁盘根目录后才能使用。 From 77e1b0e8e051a469c729a0e7c0c0d5745ef05362 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 15:41:32 +0200 Subject: [PATCH 038/101] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cd956dde..ff4e7dc1 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulat Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. Immagini + ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) From f7f5573be5d5b30060de531584adbedc73014ab2 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 16:23:30 +0200 Subject: [PATCH 039/101] Create 04-Using-Firmware.md start translating using Firmware --- docs/it/04-Using-Firmware.md | 127 +++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 docs/it/04-Using-Firmware.md diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md new file mode 100644 index 00000000..560c60bc --- /dev/null +++ b/docs/it/04-Using-Firmware.md @@ -0,0 +1,127 @@ +Ecco la traduzione mantenendo il formato del testo: + +# Database Amiibo +Questa applicazione permette l'emulazione di amiibo dalla lista di quelli ben noti, utilizzando informazioni legalmente disponibili come le informazioni sul modello, poi quando ne selezioni uno, viene creato un nuovo amiibo virtuale in memoria utilizzando un UUID casuale. Per utilizzare questa applicazione devi fornire il tuo file «key_retail.bin». + +_Ogni volta che si usa un amiibo l'UUID iniziale viene generato casualmente._ + +Una volta aperta l'applicazione il menu principale ha le opzioni + +| | +| ------------ | +| Browser…
Ricerca…
I miei preferiti…
I miei Amiibo…
Impostazioni… | +| | + +## Browser… +Ti permette di sfogliare il database, prima per categoria, poi tutti gli amiibo di quella categoria. +Dopo aver selezionato un amiibo, vengono mostrati i dettagli, la prima riga contiene l'UUID attuale e la seconda riga il nome dell'amiibo. + +Nella pagina dei dettagli dell'amiibo puoi usare i pulsanti laterali per navigare tra tutti gli amiibo della categoria, se premi il pulsante centrale puoi cambiare il comportamento dell'amiibo corrente, con il sottomenu: + +| | +| ------------ | +| Rand. Tag
Auto Rand.
Preferito…
Salva come…
[Torna ai dettagli]
[Torna alla lista]
[Esci] | +| | + +### Rand. Tag +Randomizza Tag, cambia l'UUID corrente presentato al gioco per l'amiibo corrente. Il nuovo UUID rimane invariato fino a quando non cambi l'amiibo corrente o selezioni nuovamente questa opzione. +### Auto Rand. +Random automatico, Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. +### Preferito… +Apri un nuovo sottomenu per gestire le cartelle dei preferiti. Hai le opzioni: + +``` +Nuovo… +Cartella1 +Cartella2 +[Indietro] +``` + +**Nuovo…** ti permette di creare una nuova cartella dei preferiti, **Indietro** torna ai dettagli dell'amiibo corrente, se selezioni una cartella esistente, quella definizione di amiibo verrà aggiunta alla cartella selezionata. + +### Salva come… +Ti permette di assegnare l'amiibo corrente a uno degli slot «I miei Amiibo». +### [Torna ai dettagli] +Ritorna ai dettagli dell'amiibo corrente. +### [Torna alla lista] +Ritorna alla lista degli amiibo della categoria corrente. +### [Esci] +Esci dall'applicazione Database Amiibo. + + +## Ricerca… +Permette di cercare nel database usando un nome parziale, il risultato della ricerca è come una categoria, puoi selezionare qualsiasi amiibo su di essa e impostarlo come un altro. + +## I miei preferiti… +Mostra le cartelle dei preferiti esistenti, puoi sfogliarle con i pulsanti laterali e selezionarne una con il pulsante centrale. Se premi e tieni premuto il pulsante centrale si apre un sottomenu: + +| | +| ------------ | +| Nuovo…
Svuota…
Elimina…
[Indietro] | +| | + +### Nuovo… +Ti permette di creare una nuova cartella dei preferiti. +### Svuota… +Dopo la conferma, rimuove tutti gli amiibo associati alla cartella selezionata. +### Elimina… +Dopo la conferma, rimuove la cartella dei preferiti. +### [Indietro] +Ritorna alla lista delle cartelle. + +Una volta selezionata una cartella viene mostrata una lista degli amiibo associati a quella cartella dei preferiti, puoi sfogliare usando i pulsanti laterali e selezionare un amiibo con il pulsante centrale, l'amiibo selezionato diventa l'attuale e si comporta come un amiibo del browser. + +## I miei Amiibo… +Elenca gli slot configurati, puoi sfogliare gli slot usando i pulsanti laterali, selezionarne uno con il pulsante centrale e l'amiibo associato a quello slot diventa l'attuale. + +Se premi e tieni premuto il pulsante centrale si apre un sottomenu con l'opzione di reimpostare lo slot permettendo di svuotare lo slot. + +## Impostazioni… +Il menu delle impostazioni ti mostra lo stato delle chiavi e il numero di slot impostato. + +| | +| ------------ | +| Chiavi []
Num. Slot []
[Indietro] | +| | + +### Chiavi [] +Mostra lo stato del file «key_retail.bin», può essere «Caricato» o «NON caricato» +### Num. Slot [] +Permette di selezionare quanti slot sono disponibili per la sezione «I miei Amiibo», valori da 10 a 50 con incrementi di decine. +### [Indietro] +Esci dal Database Amiibo e torna al Menu Principale. + +---- +# AmiiboLink +Questa applicazione emula un dispositivo AmiiboLink (AmiLoop o omllbolink). + +Questi dispositivi sono schede espruino generiche vendute in diverse forme, normalmente sono portachiavi a forma di goccia, ma esistono anche alcuni Puck o Sheika Slate. + +Quasi tutti hanno un pulsante e alcuni LED come indicatori e funzionano con batterie a cella CR2032 o celle lipo. + +Tutti sono controllati da applicazioni per telefoni tramite Bluetooth, inoltre puoi caricare uno o più file .BIN amiibo utilizzando il telefono sul dispositivo. + +Avviando questa applicazione vengono mostrati i dettagli per l'amiibo corrente. Se sei in modalità sequenziale puoi usare i pulsanti laterali per scorrere tutti gli amiibo caricati, in tutte le modalità, puoi premere il pulsante centrale per aprire il sottomenu di configurazione dell'APP AmiiboLink, il menu ha queste voci: + +| | +| ------------ | +| Modalità []
Auto Rand. []
Modalità Compati. []
Dettagli Tag
[Menu Principale] | +| | + +## Modalità [] +Mostra la modalità di funzionamento attuale, quando selezionata puoi scegliere la modalità di funzionamento dell'amiibo, le modalità disponibili sono: +- ### Randomizza (Manuale) +Sul dispositivo AmiiboLink attuale l'amiibo corrente cambia l'UUID quando premi il pulsante del dispositivo +- ### Randomizza (Auto) +Un nuovo UUID casuale per l'amiibo corrente viene generato ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. +- ### Modalità sequenziale +In questa modalità puoi cambiare l'amiibo attuale usando i pulsanti laterali, scorrendo tra tutti gli amiibo caricati con l'app del telefono. Tutti i file .BIN caricati sono memorizzati nei file 01.bin a 26.bin nella cartella /amiibolink/. +- ### Modalità lettura-scrittura +Il dispositivo utilizza uno slot amiibo "speciale" dove può essere utilizzato solo un amiibo, l'amiibo può essere sostituito da un altro file .BIN dall'app del telefono. Nella memoria locale questo amiibo viene salvato con il file /amiibolink/99.bin. + +Cambiando la modalità si conserva l'amiibo selezionato corrente, con l'eccezione della modalità «Lettura-scrittura». + +## Auto Rand. [] +Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. Non può essere disattivato per la modalità «Randomizza (Auto)», non può essere attivato per la modalità «Randomizza (Manuale)»; +## Modalità Compati. [] +Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. From 6e9ae4f1f819f1a2c96d86de6f08dfb9571c98ed Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 16:24:42 +0200 Subject: [PATCH 040/101] Update 04-Using-Firmware.md --- docs/it/04-Using-Firmware.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md index 560c60bc..13354e36 100644 --- a/docs/it/04-Using-Firmware.md +++ b/docs/it/04-Using-Firmware.md @@ -1,5 +1,3 @@ -Ecco la traduzione mantenendo il formato del testo: - # Database Amiibo Questa applicazione permette l'emulazione di amiibo dalla lista di quelli ben noti, utilizzando informazioni legalmente disponibili come le informazioni sul modello, poi quando ne selezioni uno, viene creato un nuovo amiibo virtuale in memoria utilizzando un UUID casuale. Per utilizzare questa applicazione devi fornire il tuo file «key_retail.bin». From b6c8d2acda776dafbe31ceba619812af70b4918c Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 17:17:33 +0200 Subject: [PATCH 041/101] Create README_IT.md --- README_IT.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 README_IT.md diff --git a/README_IT.md b/README_IT.md new file mode 100644 index 00000000..ff4e7dc1 --- /dev/null +++ b/README_IT.md @@ -0,0 +1,80 @@ +# Pixl.js + +Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) +Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky + +Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. +Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. + +Immagini + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) + +## Documentazione + +* [中文文档](docs/zh/README.md) +* [English Documentation](docs/en/README.md) + +## Crediti + +* [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) +* [mlib](https://github.com/P-p-H-d/mlib) +* [TLSF](https://github.com/mattconte/tlsf) +* [cwalk](https://github.com/likle/cwalk) +* [SPIFFS](https://github.com/pellepl/spiffs) +* [ChameleonUltra](https://github.com/RfidResearchGroup/ChameleonUltra) + +## Contribution + +* 特别感谢 @Caleeeeeeeeeeeee 完善的Bootloader。 +* 特别感谢 @白橙 制作的外壳。 +* 特别感谢 @impeeza 提供的文档翻译 。 + +## 讨论群 + +国内用户可以加入QQ群 109761876 进行交流。 + +## Office Channel + +Where do you find the community? +* [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) + +## 声明 + +本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
+Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 + +## Attenzione +Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+ +Le fonti del database Amiibo integrato sono le seguenti: + +* [amiiloop](https://download.amiloop.app/) +* [AmiiboAPI](https://www.amiiboapi.com/) + +Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). + + + +# License + +本项目基于GPL 2.0 License发布,使用请遵循License的约定。 + +* 如果对项目做了修改,需要把改后的源码发布出来 +* 发布出来的源码必须要使用相同的License发布 + +# License + +This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. + +* If modifications are made to the project, the modified source code needs to be released +* The source code released must be released using the same License + + + +## suggerimento +L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. + From bbc514bb92a23b82c7ab4dd676075a8e0bbfb3bf Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:14:27 +0200 Subject: [PATCH 042/101] Update 04-Using-Firmware.md --- docs/it/04-Using-Firmware.md | 401 ++++++++++++++++++++++++++++++++++- 1 file changed, 394 insertions(+), 7 deletions(-) diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md index 13354e36..658d99d9 100644 --- a/docs/it/04-Using-Firmware.md +++ b/docs/it/04-Using-Firmware.md @@ -1,7 +1,126 @@ +# Concetti del Firmware +## Amiibo +È un dispositivo venduto da Nintendo, normalmente sotto forma di statuetta, ma esistono anche carte, cinturini da polso e altri. + +Ogni amiibo ha un tag NFC incorporato nella base della statuetta. Il tag NFC ha alcuni dati pre-registrati in fabbrica che identificano il tipo di statuetta e rendono ogni amiibo unico rispetto agli altri. I principali dati dell'amiibo sono: + +Come affermato da Nintendo, Amiibo è singolare e plurale (https://twitter.com/NintendoAmerica/status/535485751635763200) + +## Informazioni sul modello +È un numero che descrive la serie amiibo, la serie di giochi, il personaggio e la variazione del personaggio, queste informazioni non possono essere modificate dopo la prima programmazione. + +## UID +È il numero di serie della statuetta, anch'esso preimpostato in fabbrica, rendendo ogni amiibo unico. + +## Dati Amiibo +Questa sezione dei dati sul tag memorizza le informazioni modificabili dall'utente come la registrazione del proprietario e del soprannome o i dati del salvataggio del gioco. + +## UUID +Il termine UUID viene utilizzato nella scena mod per fare riferimento all'UID inviato al gioco da un emulatore amiibo, poiché il gioco usa l'UID per sapere se un amiibo è già stato utilizzato; se l'emulatore cambia l'UID, l'amiibo emulato sembra un amiibo completamente diverso per il gioco, permettendo di utilizzare nuovamente quell'amiibo. + +## key_retail.bin +È un file binario che contiene le chiavi private di Nintendo per criptare amiibo, è un materiale protetto da copyright quindi devi fornire una copia legalmente acquisita, puoi scaricarla da una console 3DS o Switch. + +## File .BIN +I dati di un amiibo possono essere scaricati su un file, quel dump binario del contenuto originale di un amiibo viene memorizzato su un file con estensione `.BIN`, quei dump vengono caricati sul dispositivo per l'applicazione Amiibo Emulator o l'applicazione AmiiboLink Emulator. Devi fornire un file di dump binario legalmente acquisito. + +## Interruttore a cursore Thumbwheel +È il microinterruttore in cima al dispositivo, è un dispositivo che ha tre pulsanti in uno, uno centrale e due laterali. Oscillando il microinterruttore ai lati si premono i pulsanti "**laterali**". Premendo il microinterruttore si preme il pulsante "**centrale**". + +In questo documento, premere i lati del Thumbwheel viene chiamato "**pulsanti laterali**", premere il Thumbwheel viene chiamato "**pulsante centrale**"; per navigare tra gli elementi di un menu si usano i pulsanti laterali, per selezionare un elemento si preme il pulsante centrale. + +# Utilizzo del Firmware +La schermata principale del firmware Pixl.js è divisa in diverse applicazioni, ognuna delle quali può essere eseguita per eseguire alcune azioni, le applicazioni nella schermata principale sono: + + +| | +| ------------ | +|  Emulatore Amiibo
 Database Amiibo
֍ AmiiboLink
ᛡᛒ Trasferimento file BLE
 Impostazioni | +| | + +---- +# Emulatore Amiibo +Questa applicazione ti permette di sfogliare la memoria locale per i file .BIN e usarli come amiibo corrente. + +Puoi sfogliare cartelle e file usando l'interruttore a cursore Thumbwheel, spingendo ai lati cambi gli elementi, premendo il pulsante centrale selezioni l'elemento evidenziato. + +Una volta selezionato un file .BIN, i suoi dati vengono utilizzati come amiibo corrente, lo schermo mostra i dettagli dell'amiibo corrente come UUID corrente dell'amiibo, nome del file e nome dell'amiibo. + +## Schermata dettagli amiibo +Puoi usare i pulsanti laterali per cambiare l'amiibo corrente con il successivo o il precedente nella cartella corrente. Premendo il pulsante centrale puoi cambiare il comportamento dell'amiibo corrente, nel sottomenu: + +| | +| ------------ | +| Rand. Tag
Auto Rand.
Elimina Tag
Torna ai dettagli del Tag
Torna alla lista dei file
Torna al menu principale
Rand. Tag | +| | + +### Rand. Tag +Randomizza Tag, cambia l'UUID corrente presentato al gioco per l'amiibo corrente. Il nuovo UUID rimane invariato fino a quando non cambi l'amiibo corrente o selezioni nuovamente questa opzione. +### Auto Rand. (Random automatico) +Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. +### Elimina Tag +Elimina il file associato all'amiibo corrente. +### Torna ai dettagli del Tag +Ritorna ai dettagli dell'amiibo corrente. +### Torna alla lista dei file +Ritorna alla lista dei file della cartella corrente. +### Torna al menu principale +Esci dall'applicazione emulatore amiibo. + +_Se abiliti la generazione di UUID casuali, manualmente o automaticamente l'UUID originale del file .BIN viene utilizzato la prossima volta che quel file viene caricato._ + +## Esploratore di file. +Se hai **evidenziato una cartella o un file** e tieni premuto il pulsante centrale per 1 secondo si apre un sottomenu delle proprietà: + +| | +| ------------ | +| Crea nuova cartella…
Crea nuovo Tag…
Rinomina…
Elimina...
Torna alla lista dei file
Torna al menu principale | +| | + +### Crea nuova cartella… +Dialogo per creare una nuova sottocartella nella corrente. +### Crea nuovo Tag… +Crea un file .BIN amiibo vuoto nella cartella corrente. Quel file .BIN è ora un simile di un New Ntag215, pronto per essere programmato, puoi assegnare quel file .BIN come amiibo corrente e usando un programmatore NFC puoi scrivere i dati dell'amiibo, ad esempio puoi usare iNFC o Tagmo per i telefoni, Thenaya per il 3DS. Se l'amiibo programmato è nel database il file .BIN viene anche rinominato con il nome dell'amiibo. +### Rinomina… +Dialogo per rinominare il file .BIN o la cartella evidenziata +### Elimina… +Rimuove l'oggetto evidenziato, chiedendo conferma. Se è una cartella, anche tutte le sottocartelle e i file vengono eliminati. +### Torna alla lista dei file +Ritorna alla lista dei file della cartella corrente. +### Torna al menu principale +Esci dall'applicazione emulatore amiibo. + +Se hai **evidenziato una memoria** il sottomenu delle proprietà è diverso: + +| | +| ------------ | +| Stato della memoria
Spazio totale
Spazio libero
Formatta…
Torna alla lista
Torna al menu principale | +| | + +### Stato della memoria +Mostra lo stato corrente e il tipo della memoria, ad esempio: +``` +=====Non montato===== +===Montato[LFS]=== +===Montato[FFS]=== +``` + +### Spazio totale +Mostra lo spazio totale della memoria montata in KB. +### Spazio libero +Mostra lo spazio libero attuale della memoria montata in KB. +### Formatta… +Chiede conferma per formattare la memoria corrente, ATTENZIONE TUTTI I DATI VERRANNO PERSI! +### Torna alla lista +Ritorna alla lista dei file della cartella corrente. +### Torna al menu principale +Esci dall'applicazione emulatore amiibo. + +---- # Database Amiibo Questa applicazione permette l'emulazione di amiibo dalla lista di quelli ben noti, utilizzando informazioni legalmente disponibili come le informazioni sul modello, poi quando ne selezioni uno, viene creato un nuovo amiibo virtuale in memoria utilizzando un UUID casuale. Per utilizzare questa applicazione devi fornire il tuo file «key_retail.bin». -_Ogni volta che si usa un amiibo l'UUID iniziale viene generato casualmente._ +Ogni volta che si usa un amiibo, l'UUID iniziale viene generato casualmente._ Una volta aperta l'applicazione il menu principale ha le opzioni @@ -23,8 +142,8 @@ Nella pagina dei dettagli dell'amiibo puoi usare i pulsanti laterali per navigar ### Rand. Tag Randomizza Tag, cambia l'UUID corrente presentato al gioco per l'amiibo corrente. Il nuovo UUID rimane invariato fino a quando non cambi l'amiibo corrente o selezioni nuovamente questa opzione. -### Auto Rand. -Random automatico, Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. +### Auto Rand. (Random automatico) +Attivando questa funzione, verrà generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. ### Preferito… Apri un nuovo sottomenu per gestire le cartelle dei preferiti. Hai le opzioni: @@ -46,7 +165,6 @@ Ritorna alla lista degli amiibo della categoria corrente. ### [Esci] Esci dall'applicazione Database Amiibo. - ## Ricerca… Permette di cercare nel database usando un nome parziale, il risultato della ricerca è come una categoria, puoi selezionare qualsiasi amiibo su di essa e impostarlo come un altro. @@ -120,6 +238,275 @@ Il dispositivo utilizza uno slot amiibo "speciale" dove può essere utilizzato s Cambiando la modalità si conserva l'amiibo selezionato corrente, con l'eccezione della modalità «Lettura-scrittura». ## Auto Rand. [] -Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge. Consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. Non può essere disattivato per la modalità «Randomizza (Auto)», non può essere attivato per la modalità «Randomizza (Manuale)»; -## Modalità Compati. [] -Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. +Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge, +consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. + + +### Modalità Compati. [] +Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. Utilizzando questa impostazione puoi far corrispondere l'emulazione con il protocollo necessario per l'APP che usi sul tuo telefono. +## Dettagli Tag +Ritorna alla pagina dei dettagli del tag +## [Menu Principale] +Esci dall'applicazione Emulatore AmiiboLink. + +## Applicazioni compatibili con AmiiboLink +Finora le uniche due App di gestione della modalità AmiiboLink/AmiLoop tradotte in inglese sono "Umiibo" e "AmiLoop", queste applicazioni sono compatibili solo con la Modalità AmiLoop. + +Un'altra particolarità è che le modalità sulle applicazioni non corrispondono con le modalità impostate sul dispositivo. + +| App Umiibo | Modalità di emulazione Pixl.js | +| ------------ |------------ | +| Modalità Manuale | Random automatico | +| Modalità File | Sequenziale | +| Modalità Auto | Lettura/Scrittura | + +| App AmiiLoop | Modalità di emulazione Pixl.js | +| ------------ |------------ | +| Modalità Manuale | Random automatico | +| Modalità File | Sequenziale | +| Modalità Auto | Lettura/Scrittura | + + +# Emulatore di Carte + +Questa applicazione può essere utilizzata per emulare carte Mifare e carte della serie NTAG. + +Le carte Mifare sono comunemente utilizzate per le carte di controllo degli accessi, e il dispositivo può emulare completamente i tipi di carte Mifare. I tipi di carte Mifare supportati includono: + +* Mifare Mini +* Mifare 1K +* Mifare 2K +* Mifare 4K + +Le carte della serie NTAG sono comunemente utilizzate per l'identificazione del dispositivo. I tipi di carte NTAG supportati includono: + +* NTAG 213 +* NTAG 215 +* NTAG 216 + +Attualmente, un totale di 8 carte sono supportate, con l'opzione per personalizzare il numero di carte in futuro. + +> Nota:
+> La funzione di emulazione della serie NTAG è ancora in fase di test, e la funzionalità non è ancora completa. Non emula completamente > le caratteristiche di NTAG125.
+> Continueranno ulteriori miglioramenti a questa parte della funzionalità. + +L'emulazione può essere attivata solo in questa interfaccia, e sarà disattivata se si lascia questa interfaccia. + +Dopo la formattazione del disco o il primo ingresso nell'emulatore di carte, i dati verranno inizializzati. Questo processo può richiedere alcuni secondi, quindi si prega di essere pazienti. + + +## Emulazione di Carte + +L'interfaccia della pagina di emulazione delle carte è la seguente: + +| | +| ------------ | +| [01] de:ad:be:ef| +|  | +| < Slot 01 >| +|  | +| MF 1K <08/04 00>  | +| | + +L'interfaccia è spiegata come segue: + +* La prima riga: `01` è il numero della carta, e `de:ad:be:ef` è l'ID della carta. +* La seconda riga: Slot 01 è il nome della carta corrente, che può essere liberamente impostato. +* La terza riga: `MF 1K` visualizza il tipo di carta. Le abbreviazioni del tipo sono mostrate nella tabella sottostante. `08` è il SAK della carta, `04 00` è l'ATQA della carta. L'ultimo simbolo indica la modalità di scrittura. Se è contrassegnato come un disco, la scrittura è consentita; altrimenti, la scrittura non è consentita. +Abbreviazioni per i tipi di carte: + +| Nome visualizzato | Tipo di carta | Dimensione del file di dati | +| ---- | --- | --- | +| MF mini | Mifare Mini | 320 | +| MF 1k | Mifare 1K | 1024 | +| MF 2k | Mifare 2K | 2048 | +| MF 4k | Mifare 4K | 4096 | +| N213 | NTAG 213 | 180 | +| N215 | NTAG 215 | 540 | +| N216 | NTAG 216 | 924 | + +# Menu Principale + +Premendo il pulsante centrale si può entrare nel menu principale. Come segue: + +| | +| ------------ | +|  Slot [01]| +|  Nick [Slot 01]| +|  ID [de:ad:be:ef]| +|  Tipo [MiFare 1K] | +|  Dati.. | +|  Avanzate.. | +|  Impostazioni Slot.. | +|  [Dettagli Tag] | +|  [Menu Principale] | +| | + +* Slot: Visualizza lo slot della carta selezionato corrente. Puoi selezionare uno slot della carta premendo il pulsante centrale. +* Nick: Il nome corrente della carta. Premendo il pulsante centrale si può entrare nell'interfaccia di impostazione del nome della carta. +* ID: Visualizza l'ID corrente della carta. +* Tipo: Visualizza il tipo corrente della carta. +* Dati: Premendo il pulsante centrale si possono gestire i dati della carta. +* Avanzate: Premendo il pulsante centrale si possono impostare le impostazioni avanzate della carta. +* Impostazioni Slot: Premendo il pulsante centrale si entra nell'interfaccia di gestione dello slot, dove si possono abilitare o disabilitare gli slot delle carte. +* [Dettagli Tag]: Ritorna alla pagina dei dettagli del tag. +* [Menu Principale]: Esce da questa applicazione e entra nel menu principale. + +> **Nota speciale:**:
+> Alcune modifiche devono essere salvate nella memoria quando si esce dai dettagli del tag. Se hai modificato alcune configurazioni, assicurati di entrare nella pagina dei dettagli del tag per salvarle. + +## Aggiornamento Nick + +In questa interfaccia, è possibile modificare il nome della carta. + +A causa dello spazio di visualizzazione limitato, è possibile inserire solo caratteri inglesi. + +In particolare, se si utilizzano caratteri cinesi, a causa della codifica UTF-8, l'eliminazione richiede almeno 2 pressioni per eliminare completamente. + +Se si desidera aggiungere note cinesi alla carta, è possibile modificare le note di `/chameleon/slots/00.bin` attraverso la pagina web per ottenere note cinesi.
+00.bin è il file per il primo slot della carta, 01.bin è il file per il secondo slot della carta, e così via. + +> A causa delle limitazioni di dimensione del firmware, attualmente solo circa 1000 caratteri cinesi possono essere visualizzati correttamente. Se i caratteri cinesi non vengono visualizzati, si prega di segnalare un problema con i caratteri che è necessario visualizzare. I caratteri specifici possono essere aggiunti nella prossima versione. + +## Dati della Carta + +In questa interfaccia, è possibile eseguire l'importazione e l'esportazione dei dati della carta. + +| | +| ------------ | +|  Carica.. | +|  Salva.. | +|  Factory.. | +| | + +I file di importazione ed esportazione sono memorizzati nella cartella `/chameleon/dump/`.
+Se è necessario importare dati, è necessario scrivere in anticipo il file di dati che si desidera importare nella cartella sopra tramite la pagina web. + +* Carica: Premendo il pulsante centrale si può entrare nell'interfaccia di caricamento. L'interfaccia leggerà tutti i file sotto `/chameleon/dump/`, e premendo il pulsante centrale si può eseguire l'importazione. +* Salva: Premendo il pulsante centrale si può esportare la carta corrente nella cartella `/chameleon/dump/`. +* Factory: Premendo il pulsante centrale si può reimpostare i dati della carta corrente ai dati della carta vuota predefiniti incorporati. + +## Avanzate + +Questa interfaccia mostra contenuti diversi in base alle carte della serie MiFare e alle carte della serie NTAG. + +> **Nota speciale:**
+> Questa interfaccia è le impostazioni avanzate per l'emulazione della carta, e non è consigliato per gli utenti ordinari modificare. Se intendi apportare modifiche, assicurati di capire cosa stai facendo prima di modificare!
+> Se la modifica di questa parte porta a un fallimento dell'emulazione della carta, prova a ripristinare le impostazioni predefinite prima. + +### Serie MiFare +| | +| ------------ | +|  Modalità personalizzata [OFF] | +|  ID [de:ad:be:ef]| +|  SAK [08] | +|  ATQA: [00 40]| +|  Gen1A Abilitato [OFF] | +|  Gen2 Abilitato [OFF] | +|  Modalità di scrittura [Normale] | +|  [RITORNO] | +| | + + +* Modalità personalizzata: Di default è disattivata. Disattivata: Durante la fase di riconoscimento della carta ID, ID/SAK/ATQA vengono letti dal settore 0 dei dati della carta. Attivata: Puoi impostare risorse indipendenti nel menu ID/SAK/ATQA qui sotto. +* ID: Mostra l'ID corrente della carta. Se la modalità personalizzata è attiva, premendo il pulsante centrale ti permette di entrare nell'interfaccia di input per la modifica. Se la modalità personalizzata è disattivata, premendo il pulsante centrale non ha effetto. +* SAK: Mostra l'SAK corrente della carta. Se la modalità personalizzata è attiva, premendo il pulsante centrale ti permette di entrare nell'interfaccia di input per la modifica. Se la modalità personalizzata è disattivata, premendo il pulsante centrale non ha effetto. +* ATQA: Mostra l'ATQA corrente della carta. Se la modalità personalizzata è attiva, premendo il pulsante centrale ti permette di entrare nell'interfaccia di input per la modifica. Se la modalità personalizzata è disattivata, premendo il pulsante centrale non ha effetto. +* Gen1A Abilitato: Di default è disattivato. Quando abilitato, permette all'emulatore di rispondere ai comandi backdoor avanzati domestici. Questi comandi backdoor possono sbloccare direttamente la carta senza la necessità di una chiave. +* Gen2 Abilitato: Di default è disattivato. Quando abilitato, permette la scrittura nel settore 0. (Il settore 0 memorizza principalmente informazioni come ID/SAK/ATQA, e permettendo la scrittura può modificare l'ID della carta) +* Modalità di scrittura: Di default è normale. Ci possono essere 4 valori, vedi la tabella sottostante. + +| Modalità di scrittura | Descrizione | +| ----- | --- | +| Normale | I dati vengono scritti normalmente in memoria, cambia carta o esci per persistere | +| Nega | Qualsiasi operazione di scrittura restituisce un fallimento | +| Ignora | L'operazione di scrittura restituisce un successo, ma non scrive in memoria o persiste | +| Cache | I dati vengono scritti normalmente in memoria, cambiando le carte o uscendo non persistono | + +> Si consiglia di abilitare la modalità Gen1A e la modalità Gen2 quando si copiano le carte, e chiuderle dopo la copia per evitare di essere riconosciute come una carta clone dai lettori di carte. + +### Serie NTAG +| | +| ------------ | +|  ID [04:68:95:71:fa:5c:64]| +|  SAK [00] | +|  ATQA: [00 44] | +|  Rand. UID | +|  [RITORNO] | +| | + + +* ID: Mostra l'ID corrente della carta. Non modificabile. +* SAK: Mostra l'SAK corrente della carta. Non modificabile. +* ATQA: Mostra l'ATQA corrente della carta. Non modificabile. +* Rand. UID: Premendo il pulsante centrale si può generare casualmente un nuovo ID. Nota che è necessario tornare all'interfaccia di emulazione per simulare e salvare il nuovo ID della carta. + +## Impostazioni Slot + + +Questa interfaccia mostra lo stato di abilitazione/disabilitazione di tutti gli slot delle carte e permette di abilitare o disabilitare individualmente ogni slot delle carte. + +| | +| ------------ | +|  Num. Slot.. [8]| +|  Slot 01 [ON] | +|  Slot 02 [OFF] | +|  .. | +|  [RITORNO] | +| | + +* Num. Slot: Mostra il numero corrente di slot delle carte, che è impostato di default a 8. Attualmente, la modifica della quantità di slot non è supportata, e sarà disponibile negli aggiornamenti futuri del firmware. +* Slot xx: Mostra lo stato di apertura/chiusura dello slot della carta. Premendo il pulsante centrale si può passare tra lo stato di apertura e chiusura. + +---- +# Trasferimento file BLE +Questa applicazione ti permette di connetterti all'iNFC o alla pagina web pixl.js, per gestire i file sulla memoria del dispositivo o aggiornare il firmware. + +La pagina web ufficiale è [https://pixl.amiibo.xyz/](https://pixl.amiibo.xyz/ "https://pixl.amiibo.xyz/."). + +L'**APP iNFC** è un'app di terze parti + +Entrando in questa modalità l'indirizzo MAC Bluetooth del dispositivo e l'URL ufficiale vengono mostrati sullo schermo. + +---- +# Impostazioni +Questa applicazione permette di configurare le impostazioni di funzionamento del dispositivo, l'applicazione ha le seguenti voci nel menu: + +| | +| ------------ | +| Versione []
Lingua []
Memoria Auto []
Retroilluminazione / Contrasto OLED []
Animazione Menu []
Batteria LiPO []
Memoria Utilizzata []
Ripresa Veloce []
Timer Sleep []
Aggiornamento Firmware
Riavvio Sistema | +| | + +## Versione +Questo sottomenu mostra i dettagli della versione del firmware. +- Versione +- Data di costruzione +- Githash +- Branch +- Target +- Dirty +## Lingua +Puoi cambiare la lingua visualizzata sul dispositivo +## Memoria Auto +Attivando questa impostazione le memorie locali del dispositivo sono nascoste alla radice dell'applicazione Emulatore Amiibo, se questa impostazione è OFF l'oggetto «Flash esterno» viene mostrato alla radice dell'applicazione Emulatore Amiibo. +## Retroilluminazione / Contrasto OLED +Con questa impostazione puoi controllare la luminosità dello schermo LCD o il contrasto dello schermo OLED. + +## Animazione Menu +Abilita / disabilita l'animazione degli elementi più grandi dello schermo permettendo di leggerli completamente, abilitando questa opzione aumenta il consumo della batteria. +## Batteria LiPO +Abilita l'uso di una batteria LiPO. Richiede una modifica hardware. Se costruisci una versione Pixl.js del dispositivo con LiPO, puoi abilitare questa opzione. Per la versione CR2032, questa opzione non funzionerà e non dovrebbe essere abilitata. + +Se abiliti l'opzione LiPO, il dispositivo utilizzerà il livello di tensione LiPO per visualizzare il livello della batteria, e può anche visualizzare un'etichetta di carica quando la batteria è in modalità di carica. +## Memoria Utilizzata +Mostra la percentuale di memoria di archiviazione utilizzata in fondo allo schermo +## Risveglio Rapido +Abilita l'ibernazione del dispositivo, permettendo una risposta più veloce alla lettura dell'amiibo corrente da parte di un gioco, e riprende all'applicazione aperta al momento del sonno, quando disabilitato la ripresa dopo il sonno richiede 1 secondo in più e il dispositivo ripristina al Menu Principale. +## Timer Sleep +Imposta il tempo in cui il dispositivo va in sleep dopo l'ultimo input dell'utente o la lettura dell'amiibo. +## Aggiornamento Firmware +Questa opzione mette il dispositivo in modalità DFU, permettendo l'aggiornamento del firmware OTA, puoi aggiornare il firmware utilizzando l'iNFC o la pagina web. + +Puoi andare all'URL [https://thegecko.github.io/web-bluetooth-dfu/](https://thegecko.github.io/web-bluetooth-dfu/) per caricare il firmware, questa pagina può anche essere aperta attraverso il sito ufficiale [https://pixl.amiibo.xyz/](https://pixl.amiibo.xyz/) +## Riavvio Sistema +Ti permette di riavviare il dispositivo e tornare allo stato dopo che hai rimosso e inserito la batteria. From 381117d0d84c56b9c494cbc82f090be301efed12 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:33:49 +0200 Subject: [PATCH 043/101] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit added under 文档 link to Italian Documentation --- README.md | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index ff4e7dc1..1bac3795 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,21 @@ # Pixl.js -Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) -Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky +这是一个基于原版[Pixl.js](http://www.espruino.com/Pixl.js)的复刻版本,主要的功能是用来模拟Amiibo。 -Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. -Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. - -Immagini +## 图片 ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) ![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) -## Documentazione +## 文档 * [中文文档](docs/zh/README.md) * [English Documentation](docs/en/README.md) +* [Italian Documentation](docs/it/README.md) -## Crediti +## Credits * [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) * [mlib](https://github.com/P-p-H-d/mlib) @@ -47,17 +44,12 @@ Where do you find the community? 本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 -## Attenzione -Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
- -Le fonti del database Amiibo integrato sono le seguenti: +内置的Amiibo数据库来源分别如下: * [amiiloop](https://download.amiloop.app/) * [AmiiboAPI](https://www.amiiboapi.com/) -Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). - - +源代码没有包含任何有任天堂版权的资源(比如相关密钥,Amiibo原始数据等)。 # License @@ -66,15 +58,7 @@ Il codice sorgente non contiene risorse protette da copyright di Nintendo (come * 如果对项目做了修改,需要把改后的源码发布出来 * 发布出来的源码必须要使用相同的License发布 -# License - -This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. - -* If modifications are made to the project, the modified source code needs to be released -* The source code released must be released using the same License - - -## suggerimento -L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. +## 提示 +Amiibo无限刷需要网上搜索key_retail.bin文件然后上传到到磁盘根目录后才能使用。 From fa34e835ac61da615b23128d7751a471c1c23d17 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:35:21 +0200 Subject: [PATCH 044/101] Create README.md under docs/it/ --- docs/it/README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/it/README.md diff --git a/docs/it/README.md b/docs/it/README.md new file mode 100644 index 00000000..ff4e7dc1 --- /dev/null +++ b/docs/it/README.md @@ -0,0 +1,80 @@ +# Pixl.js + +Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) +Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky + +Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. +Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. + +Immagini + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) + +![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) + +## Documentazione + +* [中文文档](docs/zh/README.md) +* [English Documentation](docs/en/README.md) + +## Crediti + +* [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) +* [mlib](https://github.com/P-p-H-d/mlib) +* [TLSF](https://github.com/mattconte/tlsf) +* [cwalk](https://github.com/likle/cwalk) +* [SPIFFS](https://github.com/pellepl/spiffs) +* [ChameleonUltra](https://github.com/RfidResearchGroup/ChameleonUltra) + +## Contribution + +* 特别感谢 @Caleeeeeeeeeeeee 完善的Bootloader。 +* 特别感谢 @白橙 制作的外壳。 +* 特别感谢 @impeeza 提供的文档翻译 。 + +## 讨论群 + +国内用户可以加入QQ群 109761876 进行交流。 + +## Office Channel + +Where do you find the community? +* [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) + +## 声明 + +本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
+Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 + +## Attenzione +Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+ +Le fonti del database Amiibo integrato sono le seguenti: + +* [amiiloop](https://download.amiloop.app/) +* [AmiiboAPI](https://www.amiiboapi.com/) + +Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). + + + +# License + +本项目基于GPL 2.0 License发布,使用请遵循License的约定。 + +* 如果对项目做了修改,需要把改后的源码发布出来 +* 发布出来的源码必须要使用相同的License发布 + +# License + +This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. + +* If modifications are made to the project, the modified source code needs to be released +* The source code released must be released using the same License + + + +## suggerimento +L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. + From 030e0bf0e382877375495fc8dee54dde7235da33 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:35:56 +0200 Subject: [PATCH 045/101] Update README.md --- docs/it/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/it/README.md b/docs/it/README.md index ff4e7dc1..8fa81292 100644 --- a/docs/it/README.md +++ b/docs/it/README.md @@ -1,7 +1,6 @@ # Pixl.js Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) -Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. From c48a5328795ebae343fc7d0b359c0e91f0ee9928 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:38:58 +0200 Subject: [PATCH 046/101] Update README.md --- docs/it/README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/it/README.md b/docs/it/README.md index 8fa81292..1771bd55 100644 --- a/docs/it/README.md +++ b/docs/it/README.md @@ -32,22 +32,16 @@ Immagini * 特别感谢 @白橙 制作的外壳。 * 特别感谢 @impeeza 提供的文档翻译 。 -## 讨论群 - -国内用户可以加入QQ群 109761876 进行交流。 ## Office Channel Where do you find the community? * [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) -## 声明 - -本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
-Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 -## Attenzione +## Desclaimer Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
+Amiibo è un marchio registrato di Nintendo e NTAG21X è un marchio registrato di NXP. Le fonti del database Amiibo integrato sono le seguenti: From 86de203ae421b5a0512516bab72e5392603f7134 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:39:38 +0200 Subject: [PATCH 047/101] Delete README_IT.md --- README_IT.md | 80 ---------------------------------------------------- 1 file changed, 80 deletions(-) delete mode 100644 README_IT.md diff --git a/README_IT.md b/README_IT.md deleted file mode 100644 index ff4e7dc1..00000000 --- a/README_IT.md +++ /dev/null @@ -1,80 +0,0 @@ -# Pixl.js - -Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) -Fork italiano del progetto [Pixl.js](https://github.com/solosky/pixl.js) di solosky - -Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. -Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. - -Immagini - -![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) -![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) - -![image](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) - -## Documentazione - -* [中文文档](docs/zh/README.md) -* [English Documentation](docs/en/README.md) - -## Crediti - -* [FlipperZero Firmware](https://github.com/flipperdevices/flipperzero-firmware) -* [mlib](https://github.com/P-p-H-d/mlib) -* [TLSF](https://github.com/mattconte/tlsf) -* [cwalk](https://github.com/likle/cwalk) -* [SPIFFS](https://github.com/pellepl/spiffs) -* [ChameleonUltra](https://github.com/RfidResearchGroup/ChameleonUltra) - -## Contribution - -* 特别感谢 @Caleeeeeeeeeeeee 完善的Bootloader。 -* 特别感谢 @白橙 制作的外壳。 -* 特别感谢 @impeeza 提供的文档翻译 。 - -## 讨论群 - -国内用户可以加入QQ群 109761876 进行交流。 - -## Office Channel - -Where do you find the community? -* [Pixl.js community discord server](https://discord.gg/4mqeQwcAB2) - -## 声明 - -本项目为开源项目,仅为学习研究用途,请勿用于商业用途。
-Amiibo是任天堂的注册商标,NTAG21X为NXP的注册商标。 - -## Attenzione -Questo progetto è un progetto open source ed è destinato esclusivamente a scopi di apprendimento e ricerca. Si prega di non utilizzarlo per scopi commerciali.
- -Le fonti del database Amiibo integrato sono le seguenti: - -* [amiiloop](https://download.amiloop.app/) -* [AmiiboAPI](https://www.amiiboapi.com/) - -Il codice sorgente non contiene risorse protette da copyright di Nintendo (come chiavi correlate, dati originali degli Amiibo, ecc.). - - - -# License - -本项目基于GPL 2.0 License发布,使用请遵循License的约定。 - -* 如果对项目做了修改,需要把改后的源码发布出来 -* 发布出来的源码必须要使用相同的License发布 - -# License - -This project is released based on the GPL 2.0 License. Please follow the terms of the License when using it. - -* If modifications are made to the project, the modified source code needs to be released -* The source code released must be released using the same License - - - -## suggerimento -L'utilizzo illimitato di uno stesso Amiibo più volte al giorno (per esempio su Zelda btow) richiede la ricerca del file key_retail.bin online e il caricamento nella cartella principale del disco prima di poter essere utilizzato. - From c0fd740089008d98bbc1d442e379ccc52638e470 Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 18:54:02 +0200 Subject: [PATCH 048/101] update docs/it/README.md --- docs/it/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/it/README.md b/docs/it/README.md index 1771bd55..e4671299 100644 --- a/docs/it/README.md +++ b/docs/it/README.md @@ -3,7 +3,6 @@ Fork progetto originale [Pixl.js](http://www.espruino.com/Pixl.js) Il progetto mira principalmente ad utilizzare il dispositivo Pixl.js come emulatore tag nfc per gli Amiibo. -Questo fork italiano mira a fornire aiuto e una localizzazione più accurata. Le varie build tradotte vengono condivise con il fork originale ma potrebbero necessitare di maggior tempo prima di avere la release con la lingua italiana. Immagini From 99fd4998c873dfe6f51c5d1fb1f917a213d2651e Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 21:05:35 +0200 Subject: [PATCH 049/101] added full italian docs --- docs/it/01-Hardware.md | 33 +++ docs/it/02-Flash-Firmware.md | 77 ++++++ docs/it/03-Build-Firmware.md | 30 +++ docs/it/05+1-ble_protocol.md | 411 +++++++++++++++++++++++++++++++++ docs/it/05+2-amiibolink_ble.md | 82 +++++++ docs/it/05+4-video_player.md | 94 ++++++++ docs/it/05+5-translation.md | 27 +++ 7 files changed, 754 insertions(+) create mode 100644 docs/it/01-Hardware.md create mode 100644 docs/it/02-Flash-Firmware.md create mode 100644 docs/it/03-Build-Firmware.md create mode 100644 docs/it/05+1-ble_protocol.md create mode 100644 docs/it/05+2-amiibolink_ble.md create mode 100644 docs/it/05+4-video_player.md create mode 100644 docs/it/05+5-translation.md diff --git a/docs/it/01-Hardware.md b/docs/it/01-Hardware.md new file mode 100644 index 00000000..0f54124b --- /dev/null +++ b/docs/it/01-Hardware.md @@ -0,0 +1,33 @@ +# PCB +L'hardware di pixl.js è sviluppato e mantenuto nel repository, puoi accedere alla versione più recente dell'hardware nella [sezione Hardware del repository GitHub.](https://github.com/solosky/pixl.js/tree/main/hw "Sezione Hardware del repository GitHub.") + +hw/RevC è la versione più recente del PCB, si consiglia di utilizzarla. +Puoi usare [Kicad 6](https://www.kicad.org/download/) per aprire e modificare i file del PCB e dello schema. + +![PCB pixl.js](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-pcb-revc.png) + +# BOM +* Il BOM è riassunto nel documento: [Guida all'acquisto dei materiali di RevC](01+1-RevC-bom) +* I materiali di Bill in formato interattivo sono disponibili, puoi scaricarli da: [RevC InteractiveHtmlBom](docs/RevC-ibom.html) + +# Immagini +Alcune immagini dei dispositivi attuali sono: + +![pixl.js 1](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-3.jpg) +![pixl.js 2](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-4.jpg) +![pixl.js 3](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-5.jpg) + +# Demo + +[L'ultima versione dell'applicazione Emulatore Amiibo può generare UUID casuali permettendo letture illimitate di amiibo sul gioco! Questo video è un esempio](https://www.bilibili.com/video/BV1TD4y1t76A/) + +# Custodia + +Una custodia per questo progetto, realizzata dal signor Baicheng, può essere scaricata [qui](https://www.thingiverse.com/thing:5877482) +![CUSTODIA](https://github.com/solosky/pixl.js/blob/main/assets/pixjs-case1.png) + +# Versione OLED + +La versione OLED è stata contribuita dall'utente @xiaohail. Puoi cliccare [qui](https://gitlab.com/xiaohai/pixl.js) per scaricare il PCB. + +![OLED](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-oled1.png) \ No newline at end of file diff --git a/docs/it/02-Flash-Firmware.md b/docs/it/02-Flash-Firmware.md new file mode 100644 index 00000000..b2a4900b --- /dev/null +++ b/docs/it/02-Flash-Firmware.md @@ -0,0 +1,77 @@ +Dopo aver costruito o acquistato l'hardware, devi flashare il firmware per la prima volta, che può essere ottenuto solo tramite il metodo cablato. + +Il firmware può essere flashato o aggiornato utilizzando uno dei seguenti metodi: + +## Metodo 1: Cablato +Questo metodo richiede un flasher compatibile con CMASS-DAP JLink o DAPLink. Raccomandiamo il programmatore STM32 PWLINK2 Lite Emulator, puoi comprarne uno per circa 9.9 yuan su [Taobao](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.4b942e8deXyaQO&id=675067753017&_u=d2p75qfn774a "Taobao") + +Scarica l'ultima versione del pacchetto zip del firmware. Dovrebbe contenere i seguenti file: +- fw_update.bat +- bootloader.hex +- pixljs.hex +- pixljs_all.hex +- fw_readme.txt +- pixjs_ota_v237.zip + +Devi collegare i cavi da 3.3 Volt, GND, SWDIO e SWDCLK. Puoi utilizzare il file `fw_update.bat` per flashare il firmware `pixjs_all.hex`. + +Puoi anche utilizzare OpenOCD per flashare il dispositivo, questo è un esempio del comando da eseguire: +``` +openocd -f interface/cmsis-dap.cfg -c "transport select swd" -f target/nrf52.cfg -d2 -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program pixjs_all.hex verify" -c "program nrf52832_xxaa.hex verify" -c exit +``` +Dopo che il primo flash è completato, gli aggiornamenti del firmware successivi possono essere effettuati tramite OTA. + +## Metodo 2: Aggiornamento OTA +Questo metodo è applicabile solo ai dispositivi Pixl.js che sono stati programmati con successo tramite il metodo cablato. + +### App nRF Connect +Installa l'applicazione nRF Connect (la puoi trovare sia su iOS che su Android app stores). + +Nella lista dei dispositivi, seleziona pixl.js (o pixl dfu) e tocca il pulsante `CONNECT` + +Metti il tuo dispositivo pixl.js in modalità "Aggiornamento Firmware", poi il dispositivo entrerà in modalità DFU. Per farlo, seleziona l'app `Settings` e seleziona la voce `Firmware Update`. + +Apri l'app "nRF Connect" sul tuo telefono e connettiti al dispositivo chiamato `pixl dfu` per aggiornare il firmware. + +Su iOS, il firmware è `pixjs_ota_vxxx.zip` + +### Metodo della pagina web +Scarica l'ultima versione del pacchetto zip del firmware corrispondente alla versione del tuo dispositivo ed estrailo in una directory. + +Il progetto fornisce due modi per ottenere un aggiornamento DFU: + +#### Pagina web di trasferimento file. +Innanzitutto, puoi collegare il dispositivo alla [pagina web ufficiale](https://pixl.amiibo.xyz/ "pagina web ufficiale"), poi sulla pagina web, dopo che il dispositivo è connesso, premi il pulsante grigio `DFU`, il dispositivo entrerà in modalità DFU e la pagina ti chiederà "Vuoi aprire la pagina di aggiornamento DFU?" se accetti, la Pagina di Aggiornamento Firmware sarà aperta. + +#### Direttamente alla Pagina di Aggiornamento Firmware. +Puoi anche andare direttamente alla Pagina di Aggiornamento Firmware. + +Prima di tutto, devi mettere il tuo dispositivo pixl.js in modalità "Aggiornamento Firmware". Per farlo, seleziona l'app `Impostazioni` e seleziona la voce `Aggiornamento Firmware`. + +Apri la [pagina di aggiornamento firmware](https://thegecko.github.io/web-bluetooth-dfu). Trascina e rilascia o seleziona il file `pixljs_ota_xxx.zip` dalla cartella dove hai estratto il pacchetto firmware. + +Poi premi il pulsante `SELEZIONA DISPOSITIVO` sulla pagina dovresti vedere un dispositivo chiamato `pixl dfu` connetti per iniziare il processo di aggiornamento del firmware. + + +# Riparazione versione firmware errata. + +Se per errore programmi la versione sbagliata (LCD/OLED) sul tuo dispositivo, il dispositivo funzionerà ma non mostrerà informazioni sullo schermo, la retroilluminazione della versione LCD potrebbe accendersi. + +Puoi utilizzare i seguenti metodi per recuperare o flashare la versione firmware corretta. + +## Opzione 1: Flasha il firmware tramite connessione cablata + +Se hai a disposizione un programmatore JLink o DAPLink compatibile con CMASS-DAP, puoi utilizzare il [Metodo Cablato](Flash-Firmware#Method 1: Wired "Metodo Cablato") per flashare manualmente la versione firmware corretta. +Se per errore programmi la versione sbagliata (LCD/OLED) sul tuo dispositivo, il dispositivo funzionerà ma non mostrerà informazioni sullo schermo, la retroilluminazione della versione LCD potrebbe accendersi. + +## Opzione 2: Segui le sequenze di tasti speciali per entrare nuovamente nella modalità DFU e installare la versione corretta del firmware. + +Prima assicurati che il tuo dispositivo sia spento, poi premi le seguenti sequenze di tasti per entrare nella `Modalità DFU` + +- Un qualsiasi tasto per risvegliare il dispositivo +- SINISTRA +- CENTRO +- SINISTRA X 4 +- CENTRO + +Ora il tuo dispositivo è in modalità DFU, usa l'app [nRF Connect APP](#nRF-Connect-APP) o [Direttamente dalla pagina di aggiornamento del firmware](#directly-to-the-firmware-update-page) per aggiornare il firmware. \ No newline at end of file diff --git a/docs/it/03-Build-Firmware.md b/docs/it/03-Build-Firmware.md new file mode 100644 index 00000000..42d256d8 --- /dev/null +++ b/docs/it/03-Build-Firmware.md @@ -0,0 +1,30 @@ + +# Compilazione del firmware + +## Compilazione con Github Actions + +Puoi scaricare l'ultima build di sviluppo da Github Actions + +https://github.com/solosky/pixl.js/actions + +## Compilazione con immagine Docker personalizzata + +Puoi compilare il firmware utilizzando un'immagine Docker personalizzata. + +```bash +# creare i contenitori +docker run -it --rm solosky/nrf52-sdk:latest + +# inizializzare il repository +root@b10d54636088:/builds# git clone https://github.com/solosky/pixl.js +root@b10d54636088:/builds# cd pixl.js +root@b10d54636088:/builds/pixl.js# git submodule update --init --recursive + +# compilare la versione LCD +root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=LCD RELEASE=1 + +# compilare la versione OLED +root@b10d54636088:/builds/pixl.js# cd fw && make all BOARD=OLED RELEASE=1 +``` + +Il firmware si trova in fw/_build/pixjs_all.hex, il pacchetto ota si trova in fw/_build/pixjs_ota_vXXXX.zip \ No newline at end of file diff --git a/docs/it/05+1-ble_protocol.md b/docs/it/05+1-ble_protocol.md new file mode 100644 index 00000000..17fe9b27 --- /dev/null +++ b/docs/it/05+1-ble_protocol.md @@ -0,0 +1,411 @@ +# Parametri Bluetooth + +Attualmente, si utilizza l'SDK NRF52 per fornire il servizio UART Nordic, che fornisce una porta seriale virtuale BLE per comunicare con l'host. + +Nome del dispositivo: Pixl.js + +Lista dei servizi: + +1. Servizio UART Nordic + +NUS_SERVICE_UUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e + +Sono fornite due caratteristiche: + +* NUS_CHAR_TX_UUID: 6e400002-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la trasmissione dei dati, supporta la scrittura e la scrittura senza ritorno. +* NUS_CHAR_RX_UUID: 6e400003-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la lettura dei dati e supporta solo le notifiche. + +(La versione ufficiale dei descrittori sopra può essere modificata.) + +# Formato del protocollo + +## Definizione del protocollo + +Considerando l'efficienza, il protocollo BLE è un protocollo binario. +Questo protocollo è un protocollo di richiesta risposta, e tutte le richieste devono essere iniziate dal client. +Per semplificare l'implementazione del protocollo, ci sarà solo un pacchetto di risposta per ogni richiesta. + +### Definizione della struttura del pacchetto + +Per semplificare il protocollo, sia le richieste che le risposte utilizzano la stessa struttura del pacchetto. + +La struttura generale del pacchetto è la seguente + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | tipo di comando | +| status | uint8 | 1 | Codice di stato, vedi la definizione del codice di stato sotto, il pacchetto di richiesta è fisso a 0 | +| chunk | uint16 | 2 | numero di sequenza del frammento | +| data | byte | N | Dati, relativi alla definizione specifica del pacchetto | + +### Modalità di trasferimento del chunk + +L'MTU attuale definito dal dispositivo pixl.js è 250. In una trasmissione di dati ATT, possono essere trasmessi fino a 247 byte di dati. + +Dimensione massima del pacchetto: +L'intestazione del pacchetto fisso è di 4 byte, quindi ogni pacchetto può trasmettere fino a 243 byte. Se i dati trasmessi superano i 243 byte, è necessario trasmetterli a blocchi. + +Quando la richiesta trasmessa o il risultato di ritorno supera l'MTU, è necessario trasmetterlo a chunk, e il valore del chunk aumenta di 1 per ogni trasmissione. +Quando il bit più alto del chunk è 1, significa che i dati sono ancora in fase di invio. Quando è 0, significa che i dati sono stati letti. + +La scrittura e la lettura dei file richiedono l'abilitazione del trasferimento a chunk. +Il campo chunk è di 2 byte, e il flusso di trasporto a chunk può trasmettere fino a 7,8M byte. +Se supera questi 7,8M byte, è necessario aprire un nuovo flusso di trasmissione a chunk. + +Ad esempio, processo di scrittura su un file: + +``` +c -> s: 0x12, modalità: wc, apri file +s -> c: 0x12, stato 0, id file 0xa1, il file è stato creato e può essere scritto +c -> s: 0x15, chunk 0 | 0x8000, id file 0xa1, 246 byte di dati +c -> s: 0x15, chunk 1 | 0x8000, id file 0xa1, 246 byte di dati +... +c -> s: 0x15, chunk N, id file 0xa1, 56 byte di dati +s -> c: 0x15, stato 0, scrittura completata +c -> s: 0x13, id file 0xa1, chiudi il file, +s -> c: 0x13, stato 0, +``` + +Processo di lettura del file + +``` +c -> s: 0x12, modalità: r, apri file +s -> c: 0x12, stato 0, id file 0xa1, il file è aperto e può essere letto +c -> s: 0x14, chunk 0, id file 0xa1 +s -> c: 0x14, stato 0, chunk 1 | 0x8000, id file 0xa1, 246 byte di dati +... +s -> c: 0x14, stato 0, chunk N, id file 0xa1, 56 byte di dati +c -> s: 0x13, id file 0xa1, chiudi il file, +s -> c: 0x13, stato 0, +``` + +### Definizione del percorso + +Le operazioni sui file richiedono il trasferimento del percorso completo del file. Espressione del percorso standard di Windows con lettera di unità. +Ad esempio, E:/amiibo/mifa.bin. + +### tipo + +I tipi numerici sono tutti interi senza segno, modalità little endian. +La codifica della stringa è lunga 2 byte + array di stringhe, e le stringhe sono codificate uniformemente utilizzando utf8. + +### Informazioni meta del file +Le informazioni meta del file vengono utilizzate per memorizzare alcuni dati relativi al file, con una lunghezza massima di 128 byte. Si distingue in base al campo tipo. I dati sono di lunghezza variabile e i dati vengono analizzati in base al tipo. + +Il formato di base è il seguente: + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| dimensione meta | uint8 | 1 | La dimensione di tutte le informazioni meta, 0xFF o 0 senza metadati | +| tipo meta N | uint8 | 1 | Tipo di informazione meta, definito nella sezione seguente | +| dati meta N | byte | N | La lunghezza varia in base al tipo | + +I tipi attualmente definiti possono assumere i seguenti valori: + +1: annotazioni amiibo +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| lunghezza nota | uint8 | 1 | lunghezza nota | +| dati nota | byte | N | Stringa di note, massimo 90 byte, codifica UTF8. | + +2: Proprietà del file +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| flag | uint8 | N | Attributi del file, definiti a bit | + +* 0b0000_0001: Il file è impostato come attributo nascosto e non verrà visualizzato sulla pagina amiibo, ma può essere visualizzato sulla pagina web. settings.bin imposterà questo flag per impostazione predefinita. +* 0bxxxx_xxxx: Altri bit sono temporaneamente non definiti. + +3: attributi amiibo +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| testa | uint32 | N | id testa amiibo | +| coda | uint32 | N | id coda amiibo | + +Nota: +* Questo attributo è attualmente utilizzato solo in amiibo/data/*.bin ed è utilizzato per identificare rapidamente se si tratta di un file amiibo. + + + +### Definizione del codice di stato globale + +| Codice di stato | Descrizione | +| ---- | ---- | +| 0 | La richiesta è stata completata con successo | +| 0xFF | Il firmware non supporta l'attuale messaggio | + +TODO Integrare il codice di errore in dettaglio. + + + +#Definizione del protocollo + +## 0x01: Ottieni informazioni sulla versione + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x01 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | + + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x01 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| lunghezza versione | uint16 | 2 | lunghezza stringa versione | +| versione | byte | N | versione | + +## 0x02: Entra in modalità DFU + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x02 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x102 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x10: Ottieni lista dischi + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x10 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x10 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| conteggio unità | uint8 | 1 | Numero di dischi | +| codice di stato unità N | uint8 | 1 | Codice di stato disco N 0: Il disco è disponibile, non-0 disco non è disponibile | +| etichetta unità N |char | 1| lettera di unità disco | +| lunghezza nome unità N | uint16 | 2 | lunghezza nome disco | +| nome unità N | byte | N | stringa nome disco | +| dimensione totale unità N |uint32 | 4 | Spazio totale su disco | +| dimensione utilizzata unità N | uint32 | 4 | spazio libero su disco | + +## 0x11: Formatta disco + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x11 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| etichetta unità | char | 1 | Lettera di unità disco: E/I | + +## 0x12: Apri file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x12 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | lunghezza percorso | +| percorso | byte | N | stringa percorso | +| modalità | uint8 | 1 | modalità di apertura | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | fisso 0x12 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1 | id file, utilizzato per le successive richieste di lettura e scrittura | + +## 0x13: Chiudi file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x13 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1 | id file | + +2. Risposta del servizio + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x13 | +| status | uint8 | 1 | Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1 | id file, utilizzato per le successive richieste di lettura e scrittura | + +## 0x14: Leggi file + +1. Il client invia una richiesta + +Supporta solo la lettura sequenziale. + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x14 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| id file | uint8 | 1| id file | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x14 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| data | byte | N | Dati del file | + +## 0x15 Scrivi su file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x15 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| id file | uint8 | 1 | id file | +| data | byte | N | Dati del file, lunghezza massima = MTU - 4 | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x15 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | Stesso della richiesta | + +## 0x16:Leggi cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x16 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x16 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| lunghezza nome file N | uint16 | 2 | Lunghezza nome file in byte| +| nome file N | byte | N| Stringa nome file | +| dimensione file N | uint32 | 4 |Dimensione file | +| tipo file N | uint8 | 1 | Tipo file: 0 => File, 1 => Cartella | +| lunghezza meta file N | uint8 | 1 | Lunghezza dati meta file, 64 max| +| meta file N | byte | N | Dati meta file | + +## 0x17 Crea cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x17 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x17 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x18 Elimina file o cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x19 Rinomina file o cartella + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | Abilita trasferimento a chunk | +| vecchia lunghezza percorso | uint16 | 2 | Lunghezza vecchio percorso in byte | +| vecchio percorso | byte | N | Vecchia stringa percorso | +| nuova lunghezza percorso | uint16 | 2 | Lunghezza nuovo percorso in byte | +| nuovo percorso | byte | N | Nuova stringa percorso | + +Se la lunghezza dei dati è maggiore dell'MTU, utilizza il trasferimento a chunk. + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x18 | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | + +## 0x1A Aggiorna meta file + +1. Il client invia una richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x1a | +| status | uint8 | 1 | 0 | +| chunk | uint16 | 2 | 0 | +| lunghezza percorso | uint16 | 2 | Lunghezza percorso in byte | +| percorso | byte | N | Stringa percorso | +| dati meta | byte | N | Dati Meta File | + +2. Il server risponde alla richiesta + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| cmd | uint8 | 1 | 0x1a | +| status | uint8 | 1 |Codice di stato, vedi descrizione del codice di stato | +| chunk | uint16 | 2 | 0 | \ No newline at end of file diff --git a/docs/it/05+2-amiibolink_ble.md b/docs/it/05+2-amiibolink_ble.md new file mode 100644 index 00000000..b014667d --- /dev/null +++ b/docs/it/05+2-amiibolink_ble.md @@ -0,0 +1,82 @@ +Certo, ecco la traduzione in italiano: + +# Protocollo di trasferimento Amiibolink + +## Parametri Bluetooth + +L'attuale protocollo utilizza ancora il servizio NUS Nordic come protocollo di porta seriale Bluetooth. + +Nome del dispositivo di trasmissione: amiibolink + +Lista dei servizi: + +1. Servizio UART Nordic + +NUS_SERVICE_UUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e + +Sono fornite due caratteristiche: + +* NUS_CHAR_TX_UUID: 6e400002-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la trasmissione dei dati, supporta la scrittura e la scrittura senza ritorno. +* NUS_CHAR_RX_UUID: 6e400003-b5a3-f393-e0a9-e50e24dcca9e => Fornisce la lettura dei dati e supporta solo le notifiche. + +## Protocollo di trasferimento amiibo + +## Descrizione del protocollo + + +| Funzione | Invio | Risposta | Descrizione | +|---------|--------------|------|--------------------------| +| Imposta modalità dispositivo | a1 b1 01 | b1 a1 | 01: Modalità casuale 02: Modalità sequenziale 03: Modalità di lettura e scrittura | +| Preparazione scrittura carta | a0 b0 | b0 a0 | Invia prima di inviare dati | +| ?? | ac ac 00 04 00 00 02 1c | ca ca | Invia 540 byte di dati | +| ?? | ab ab 02 1c | ba ba | Non so perché è stato inviato un pacchetto con lo stesso significato | +| Invia dati | dd aa 00 96 ... 00 01 | aa dd | 0x96 lunghezza dati, seguita da dati, gli ultimi due byte sono il numero di sequenza del pacchetto | +| ?? | bc bc | cb cb | fine trasferimento | +| ?? | cc dd | dd cc | Non so perché sto inviando questo pacchetto | + + +## Processo di interazione + +### Processo di interazione del mini programma ufficiale + +``` +c->s: a0 b0 +s->c: b0 a0 +c->s: ac ac 00 04 00 00 02 1c //540 +s->c: ca ca +c->s: ab ab 02 1c +s->c: ba ba +c->s: + +0000 dd aa 00 96 (0x96 byte di dati) 00 00 + +dd aa 00 +96 //150 +04 51 91 4c e2 ..//150 byte +00 00 //seq, inizia da 0 + + +c->s: aadd +s->c: +0000 dd aa 00 96 (0x96 byte di dati) 00 01 +c->s: aadd +s->c: +0000 dd aa 00 96 (0x96 byte di dati) 00 02 +c->s: aadd +s->c: dd aa 00 5a (0x5a byte dati) 00 03 +s->c: aadd +c->s: bcbc +s->c: cbcb +s->c:ccdd +c->s: ddcc +``` + +### Processo di interazione iNFC +Il processo è sostanzialmente lo stesso di sopra, ma c'è un comando in più +``` +c->s: a1 b1 01 +s->c: b1 a1 +c->s: a0b0 +s->c: b0a0 +... +``` \ No newline at end of file diff --git a/docs/it/05+4-video_player.md b/docs/it/05+4-video_player.md new file mode 100644 index 00000000..93ca9ad4 --- /dev/null +++ b/docs/it/05+4-video_player.md @@ -0,0 +1,94 @@ +Certo, ecco la traduzione in italiano: + +# Lettore di animazioni + +Il lettore di animazioni può riprodurre file di animazione convertiti in formati personalizzati. Richiede la versione del firmware 2.3.0 o superiore. + +## Formato del file di animazione + +Il formato di base del file è intestazione + frame1 + frame2 +... + frameN + + # magic + frame_count + fps + width + height + reserved + # 4b + 2b + 2b + 2b + 2b + 4b = 16 byte + +Il formato dell'intestazione è il seguente + +| Nome del campo | Tipo | Lunghezza (byte) | Descrizione | +| ---- | ----- |---- | ---- | +| magic | bytes | 4 | Prefisso fisso, utilizzato per determinare rapidamente se è un file di animazione, fisso a 0x56 0x58 0x49 0x50 | +| conteggio frame | uint16 | 2 | Quanti frame di animazione ci sono in totale | +| fps | uint16 | 2 | Quanti frame di animazione al secondo | +| larghezza | uint16 | 2 | larghezza dell'animazione | +| altezza | uint16 | 2 | altezza dell'animazione | +| riservato | uint32 | 4 | byte riservati | + +Il formato dei dati del frame N è i dati di animazione di ogni frame in formato xbm, e la dimensione è larghezza * altezza / 8. +Se la lunghezza della larghezza non è un multiplo di 8, arrotonda per eccesso. + +## Come generare file di animazione + +Prima prepara il file video che deve essere convertito, di solito termina in mp4, ma sono accettabili anche altri formati. + +Le seguenti operazioni devono essere eseguite sotto Linux. +Inoltre, puoi utilizzare WSL2 per creare rapidamente un ambiente Linux Ubuntu sotto Windows. + +Esegui prima il seguente comando per installare gli strumenti necessari + +``` +sudo apt install ffmpeg python3-pip +sudo pip3 install imageio -i https://pypi.tuna.tsinghua.edu.cn/simple +``` + +Per Ubuntu avrai bisogno di installare i pacchetti eseguendo il prossimo comando: + +``` +sudo apt install ffmpeg python3 python3-imageio +``` + +Se preferisci l'ambiente MSYS MINGW64 puoi installare i pacchetti utilizzando questi comandi: + +``` +pacman -S mingw-w64-x86_64-ffmpeg mingw-w64-x86_64-python mingw-w64-x86_64-python-imageio +``` + +Quindi esegui il comando ffmpeg per convertire l'animazione in immagini di frame indipendenti. +``` +mkdir frames +ffmpeg -y -i badapple.mp4 -ss 0:0 -t 60 -vf "scale=128:64:decrease:flags=lanczos,hue=s=0" -r 10 "frames/%04d.bmp" +``` +La descrizione del parametro è la seguente: + +* -i badapple.mp4: Questo è il file video di input +* -ss 0:0: intercetta da 0:0 del video. Se non vuoi intercettare parte del video, non hai bisogno di fornire questo parametro. +* -t 60: intercetta 60 secondi di video. Se converti l'intero video, non hai bisogno di fornire questo parametro. +* -vf "scale=128:64:decrease:flags=lanczos,hue=s=0" : Converti il video in un'immagine 128x64, mantenendo l'aspect ratio del video +* -r 10: L'fps convertito è 10 +* "frames/%04d.bmp": I file video convertiti sono memorizzati nella directory frames e il formato è bmp + +Se il video è più grande, puoi ridurre le dimensioni del video come segue: + +* Dato i parametri -ss -t, intercetta parte del video +* Riduci la risoluzione di output, come 80x64, ecc. + +Infine, esegui il seguente comando per convertirlo in un file di animazione personalizzato + +``` +python3 fw/scripts/video_clip_gen.py 10 frames badapple.bin +``` +La descrizione del parametro è la seguente: + +* 10: L'fps convertito è 10, ad esempio, è lo stesso dell'fps convertito da ffmpeg, altrimenti la velocità di riproduzione sarà errata. +* frames: directory delle immagini convertite da ffmpeg +* badapple.bin: file di animazione convertito + +## Riproduci file di animazione + +Trasferisci i file video convertiti nella directory del lettore dello storage Flash in Pixl.js tramite la pagina web. La directory del lettore non può essere creata manualmente. + +Apri Pixl.js, seleziona [Animation Player], elenca tutti i file nella directory del lettore, quindi seleziona il file video che vuoi riprodurre e premi il pulsante centrale per riprodurre. + +Avviso: + +* Sebbene lo storage Flash sia uno spazio di 1,8 MB, a causa delle caratteristiche del file system SPIFFS, quando lo spazio disponibile è inferiore al 30%, la scrittura sarà molto lenta o addirittura fallirà. +* Se incontri una scrittura lenta, puoi ripristinare la velocità di caricamento formattando il disco. +* La cancellazione di file di grandi dimensioni è lenta, per favore sii paziente. \ No newline at end of file diff --git a/docs/it/05+5-translation.md b/docs/it/05+5-translation.md new file mode 100644 index 00000000..a05d1133 --- /dev/null +++ b/docs/it/05+5-translation.md @@ -0,0 +1,27 @@ + +# Traduzione + +## Come aggiornare una traduzione esistente + +1. Modifica fw/data/i18n.csv con il tuo editor di testo preferito. Per vscode, si consiglia l'estensione "Edit csv". +2. Esegui `fw/scripts/i18n_gen.py` per generare nuovi file di lingua. +3. Opzionale: Esegui `fw/scripts/font_data_gen.sh` per generare nuovi dati di font se aggiungi nuovi caratteri in i18n.csv +4. Esegui `make full` per ricostruire il firmware + +nota:
+Lo script `font_data_gen.sh` può essere eseguito solo in Git Bash windows in Windows. + +## Come aggiungere una nuova traduzione di lingua + +1. Aggiungi una nuova colonna in fw/data/i18n.csv, ad esempio "ja_JP" +2. Esegui `fw/scripts/i18n_gen.py` per generare nuovi file di lingua. +3. Opzionale: Esegui `fw/scripts/font_data_gen.sh` per generare nuovi dati di font se aggiungi nuovi caratteri in i18n.csv +4. Modifica `fw/application/src/i18n/language.h` e `fw/application/src/i18n/language.c` per adottare la nuova lingua +5. Modifica il Makefile per includere `$(PROJ_DIR)/i18n/ja_JP.c` come file sorgente C +6. Esegui `make full` per ricostruire il firmware + +## Note sui font + +Per la build di rilascio (RELEASE=1), il firmware utilizza wenquanyi_9pt_u8g2.bdf per visualizzare i caratteri unicode.
+Controlla se il punto di codice del carattere della nuova lingua è incluso in wenquanyi_9pt_u8g2.bdf o meno.
+In caso contrario, non si consiglia di supportare la nuova lingua a causa della restrizione del flash interno dell'MCU. \ No newline at end of file From c42801fc9845d00421c12148c176c3f86f850b9a Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Sat, 30 Mar 2024 14:22:49 +0100 Subject: [PATCH 050/101] lang IT index moved after French --- fw/application/src/i18n/language.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index 42a2bb72..b647fe21 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -18,6 +18,7 @@ typedef enum { LANGUAGE_HU_HU, LANGUAGE_DE_DE, LANGUAGE_FR_FR, + LANGUAGE_IT_IT, LANGUAGE_NL_NL, LANGUAGE_PT_BR, LANGUAGE_JA_JP, From 05d4910880863b3406cd5b73077a13f34c9c146c Mon Sep 17 00:00:00 2001 From: JostenSyon Date: Tue, 2 Apr 2024 23:02:08 +0200 Subject: [PATCH 051/101] Update 01-Hardware.md --- docs/it/01-Hardware.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/it/01-Hardware.md b/docs/it/01-Hardware.md index 0f54124b..370fcf37 100644 --- a/docs/it/01-Hardware.md +++ b/docs/it/01-Hardware.md @@ -8,7 +8,7 @@ Puoi usare [Kicad 6](https://www.kicad.org/download/) per aprire e modificare i # BOM * Il BOM è riassunto nel documento: [Guida all'acquisto dei materiali di RevC](01+1-RevC-bom) -* I materiali di Bill in formato interattivo sono disponibili, puoi scaricarli da: [RevC InteractiveHtmlBom](docs/RevC-ibom.html) +* La lista dei materiali in formato interattivo sono disponibili, puoi scaricarli da: [RevC InteractiveHtmlBom](docs/RevC-ibom.html) # Immagini Alcune immagini dei dispositivi attuali sono: @@ -30,4 +30,4 @@ Una custodia per questo progetto, realizzata dal signor Baicheng, può essere sc La versione OLED è stata contribuita dall'utente @xiaohail. Puoi cliccare [qui](https://gitlab.com/xiaohai/pixl.js) per scaricare il PCB. -![OLED](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-oled1.png) \ No newline at end of file +![OLED](https://github.com/solosky/pixl.js/blob/main/assets/pixljs-oled1.png) From df555de0c1b8c22e5378de6bddfe253a55b16d9f Mon Sep 17 00:00:00 2001 From: solosky Date: Wed, 3 Apr 2024 22:44:24 +0800 Subject: [PATCH 052/101] remove duplicate IT_IT declaration --- fw/application/src/i18n/language.h | 1 - 1 file changed, 1 deletion(-) diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index b647fe21..42a2bb72 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -18,7 +18,6 @@ typedef enum { LANGUAGE_HU_HU, LANGUAGE_DE_DE, LANGUAGE_FR_FR, - LANGUAGE_IT_IT, LANGUAGE_NL_NL, LANGUAGE_PT_BR, LANGUAGE_JA_JP, From 62dba4c4a0604f31e525755682d60aad65bdc437 Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 03:53:02 +0700 Subject: [PATCH 053/101] Update FW Language file --- fw/data/i18n.csv | 334 +++++++++++++++++++++++------------------------ 1 file changed, 167 insertions(+), 167 deletions(-) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index f852973c..55e74701 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -1,167 +1,167 @@ -CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP,it_IT -_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン,SI -_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ,NO -_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン],[SI] -_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ],[NO] -_L_BACK,Back,返回,返回,[Atrás],Vissza,[Zurück],Retour,Terug,Voltar,戻る,Indietro -_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー,Errore -_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード,Codice errore -_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo-Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ,Emulatore Amiibo -_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink -_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE -_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE-Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE -_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videospieler,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー,Lettore video -_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定,Impostazioni -_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン,Versione -_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ,Usato -_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ,Memoria esterna -_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED -_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED-Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED -_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト,Luminosità -_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ,Luminosità schermo -_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü-Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション,Animazione menu -_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO-Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO -_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata -_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnell-Wecken,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido -_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Schlaf-Timeout,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione -_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua -_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw.-Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware -_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System-Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema -_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す,Ripristina impostazioni predefinite -_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化,Ripristino riuscito! -_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,,,Conferma il ripristino delle impostazioni? -_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒,15 secondi -_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒,30 secondi -_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒,45 secondi -_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto -_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti -_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Min,3 min.,3 min.,3 min.,3分,3 minuti -_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Schlüssel nicht gefunden,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata -_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria. -_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito -_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige Tag-Nummer,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale -_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Autom. random.,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico -_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR-Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR -_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag -_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Bestätigen Sie das\nLöschen %s?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n? -_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag] -_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,[Zurück zur Liste],Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file] -_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,[Hauptmenü],Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale] -_L_FORMAT,Format,格式化,格式化,Formatear..,"Formátum ",Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta.. -_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria -_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione? -_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formázás ..,Formatierung..,Formatage ..,Formatteren ..,Formatando ..,書式設定 ..,Formattazione in corso .. -_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Nachricht,Message,Bericht,Mensagem,メッセージ,Messaggio -_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma -_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla -_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,[Zurück zur Liste],Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト,[Torna alla lista] -_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht ausgerüstet,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません,Non montato -_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]===,===Montato[LFS]=== -_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]=== -_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale -_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero -_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Dies ist keine Amiibo-Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido -_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file -_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella: -_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo-Name eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo: -_L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除,Elimina -_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome: -_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido -_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成..,Crea cartella.. -_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成..,Crea Amiibo.. -_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Kötegelt Új Címke Létrehozása..,Mehrere Tags..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成..,Crea Amiibo in serie.. -_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag-Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag: -_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Nur maximal %d Tags in einem Stapel erstellt.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie. -_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag -_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita! -_L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更,Rinomina -_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,"Mappa megnyitása sikertelen ",Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella -_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore -_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro] -_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale) -_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico) -_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale -_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreib-Modus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura -_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1 -_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2 -_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop -_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità -_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Autom. randomisieren,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale -_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompat. Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità -_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli] -_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale] -_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Manuell,Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man. -_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale -_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lese/Schreib,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt. -_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Automatisch,Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale -_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC-Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato -_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo-Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo -_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Böngésző..,Browser..,Naviguer..,Browser..,Navegador..,ブラウザ..,Esplora.. -_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索..,Cerca.. -_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り..,I miei preferiti.. -_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo..,I miei Amiibo.. -_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定..,Impostazioni.. -_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale] -_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro] -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate -_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,fehlend,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate -_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot -_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り..,Preferito.. -_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存..,Assegna a.. -_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli] -_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista] -_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca: -_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..],[Più..] -_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,, -_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット..,Elimina.. -_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma -_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla -_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma -_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規..,Nuovo.. -_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空..,Svuota.. -_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除..,Cancella.. -_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Favoriten-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti: -_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Favoritenordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti? -_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Favoritenordner löschen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione? -_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択..,Selez. cart. preferiti.. -_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,"Favorit erstellt ",Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto! -_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorit fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto! -_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta -_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita! -_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten-Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID -_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale -_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega -_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora -_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Zwischenspeicher,Cache,Cache,キャッシュ,Cache -_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 ..,Inizializzazione ambiente.\nPer favore attendi.. -_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot -_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname -_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID -_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo -_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ..,Dati.. -_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定..,Avanzato.. -_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Cella Beállításai..,Steckplätze..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定..,Impostazioni.. -_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Cella Száma..,Steckplätze,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号..,Num. slot.. -_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito. -_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito! -_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitzname eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname: -_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード..,Carica.. -_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存..,Salva.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化..,Inizializza.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati! -_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato -_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße inkorrekt,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta -_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito -_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Laden erfolgreich,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito -_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Dateinamen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file: -_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio! -_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Speichern erfolgreich,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito -_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzermodus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata -_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata -_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Randomisierte UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID -_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato -_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata -_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura -_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido! -_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta? \ No newline at end of file +CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP,it_IT +_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン,SI +_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ,NO +_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン],[SI] +_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ],[NO] +_L_BACK,Back,返回,返回,[Atrás],Vissza,Zurück,Retour,Terug,Voltar,戻る,Indietro +_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー,Errore +_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード,Codice errore +_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ,Emulatore Amiibo +_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink +_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE +_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE +_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videoplayer,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー,Lettore video +_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定,Impostazioni +_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン,Versione +_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ,Usato +_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Externer Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ,Memoria esterna +_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED +_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED +_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト,Luminosità +_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ,Luminosità schermo +_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション,Animazione menu +_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO +_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata +_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnelles Aufwachen,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido +_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Energiesparmodus,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione +_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua +_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw. Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware +_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema +_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す,Ripristina impostazioni predefinite +_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化,Ripristino riuscito! +_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,,,Conferma il ripristino delle impostazioni? +_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒,15 secondi +_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒,30 secondi +_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒,45 secondi +_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto +_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti +_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Minuten,3 min.,3 min.,3 min.,3分,3 minuti +_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel nicht geladen,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata +_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria. +_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito +_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufälliger Tag,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale +_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Automatische Zufallsauswahl,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico +_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR +_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag +_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Löschen von %s bestätigen?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n? +_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag] +_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,Zurück zur Liste,Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file] +_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,Hauptmenü,Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale] +_L_FORMAT,Format,格式化,格式化,Formatear..,Formátum ,Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta.. +_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria +_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione? +_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formázás ..,Formatiere..,Formatage ..,Formatteren ..,Formatando ..,書式設定 ..,Formattazione in corso .. +_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Meldung,Message,Bericht,Mensagem,メッセージ,Messaggio +_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma +_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla +_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,Zurück zur Liste,Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト,[Torna alla lista] +_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht eingebunden,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません,Non montato +_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]===,===Montato[LFS]=== +_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]=== +_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale +_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero +_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Dies ist keine Amiibo Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido +_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file +_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella: +_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo Namen eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo: +_L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除,Elimina +_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome: +_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido +_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成..,Crea cartella.. +_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成..,Crea Amiibo.. +_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Kötegelt Új Címke Létrehozása..,Mehrere Tags erstellen..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成..,Crea Amiibo in serie.. +_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag: +_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Sie können nur maximal %d Tags auf einmal erstellen.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie. +_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag +_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita! +_L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更,Rinomina +_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Mappa megnyitása sikertelen ,Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella +_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore +_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro] +_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale) +_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico) +_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale +_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreibmodus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura +_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1 +_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2 +_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop +_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità +_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Automatische Zufallsauswahl,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale +_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompabilitäts Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità +_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli] +_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale] +_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Zufällig (Manuell),Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man. +_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale +_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lesen/Schreiben,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt. +_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Zufällig (Auto.),Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale +_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato +_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo +_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Böngésző..,Navigieren..,Naviguer..,Browser..,Navegador..,ブラウザ..,Esplora.. +_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索..,Cerca.. +_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り..,I miei preferiti.. +_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo..,I miei Amiibo.. +_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定..,Impostazioni.. +_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale] +_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro] +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,NICHT geladen,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate +_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot +_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り..,Preferito.. +_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存..,Assegna a.. +_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli] +_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista] +_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca: +_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..],[Più..] +_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,, +_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット..,Elimina.. +_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma +_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla +_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma +_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規..,Nuovo.. +_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空..,Svuota.. +_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除..,Cancella.. +_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Fav.-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti: +_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Fav.-Ordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti? +_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Löschen Bestätigen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione? +_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択..,Selez. cart. preferiti.. +_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,Favorit erstellt ,Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto! +_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorisieren fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto! +_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta +_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita! +_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID +_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale +_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega +_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora +_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Cache,Cache,Cache,キャッシュ,Cache +_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 ..,Inizializzazione ambiente.\nPer favore attendi.. +_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot +_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname +_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID +_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo +_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ..,Dati.. +_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定..,Avanzato.. +_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Cella Beállításai..,Steckplatz Einstellungen..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定..,Impostazioni.. +_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Cella Száma..,Steckplatz Nummer,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号..,Num. slot.. +_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich gesetzt,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito. +_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname setzen fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito! +_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitznamen eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname: +_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード..,Carica.. +_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存..,Salva.. +_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化..,Inizializza.. +_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati! +_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato +_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße stimmt nicht überein,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta +_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden der Datei fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito +_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Datei erfolgreich geladen,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito +_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Datei Namen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file: +_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Datei speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio! +_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Datei erfolgreich gespeichert,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito +_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzerdefinierter Modus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata +_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata +_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Zufällige UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID +_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato +_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata +_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura +_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido! +_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta? From b31a8c72141a17e308de7eb8c93f4c8494f166a9 Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 04:03:43 +0700 Subject: [PATCH 054/101] Add German language to Web App --- web/src/App.vue | 3 ++ web/src/i18n/de_DE.js | 113 ++++++++++++++++++++++++++++++++++++++++ web/src/i18n/es_ES.js | 1 + web/src/i18n/index.js | 6 +++ web/src/i18n/ru_RU.js | 1 + web/src/i18n/zh_Hans.js | 1 + web/src/i18n/zh_TW.js | 1 + 7 files changed, 126 insertions(+) create mode 100644 web/src/i18n/de_DE.js diff --git a/web/src/App.vue b/web/src/App.vue index 5b7f5483..036fba84 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -22,6 +22,9 @@ {{ $t('lang.ru') }} + + {{ $t('lang.de') }} + diff --git a/web/src/i18n/de_DE.js b/web/src/i18n/de_DE.js new file mode 100644 index 00000000..0c23e127 --- /dev/null +++ b/web/src/i18n/de_DE.js @@ -0,0 +1,113 @@ +export default { + lang: { + choose: '语言/Language', + zhcn: '简体中文', + zhtw: '繁體中文(臺灣)', + en: 'English', + es: 'Español', + ru: 'Русский', + de: 'Deutsch', + changeok: 'Sprache erfolgreich geändert' + }, + btn: { + ok: 'OK', + cancel: 'Abbrechen', + cont: 'Weiter' + }, + menu: { + upload: 'Hochladen', + newfolder: 'Neuer Ordner', + del: 'Löschen', + up: 'Übergeordneter Ordner', + refresh: 'Aktualisieren', + dfu: 'DFU', + }, + status: { + connected: 'Verbunden, Version: ', + version: 'Version:', + mac: 'MAC Adresse:', + loading: 'Lade…', + }, + conn: { + connect: 'Vebinden', + connecting: 'Verbinde…', + disconnect: 'Trenne…', + consuccess: 'Erfolgreich mit Pixl.js verbunden!', + disconnected: 'Pixl.js wurde getrennt!', + connfailed: 'Verbindung mit Pixl.js fehlgeschlagen!' + }, + labels: { + name: 'Name', + size: 'Größe', + type: 'Typ', + remark: 'Notiz' + }, + contxmenu: { + del: 'Löschen…', + rename: 'Umbenennen…', + prop: 'Eigenenschaften…', + format: 'Formatieren…' + }, + properties: { + title: 'Eigenenschaften', + remark: 'Notiz', + entermsg: 'Bitte Notiz eingeben', + attrib: 'Attribute', + hide: 'Ausblenden', + errupdate: 'Eigenschaften aktualisieren fehlgeschlagen!', + remarktoolong: 'Notizen können maximal ist 90 Bytes lang sein! Das entspricht 90 Buchstaben or 30 chinesischen Buchstaben (Aktuell: ', + remarktoolongend: ' Bytes)' + }, + upload: { + title: 'Hochladen', + drag: 'Dateien hier rein ziehen, oder', + click: 'klicken zum Hochladen.', + maxsize: 'Die Gesamtlänge des Dateipfads darf 63 Bytes nicht überschreiten.', + maxname: 'Der Dateiname darf 47 Bytes nicht überschreiten.', + closetitle: 'Schließen bestätigen?', + closemessage: 'Das Schließen des Hochladen Dialogs bricht das Hochladen ab und leert die Warteschlange.', + errupload: 'Hochladen fehlgeschlagen: ' + }, + format: { + title: 'Formatieren', + messrow1a: 'Möchten Sie ', + messrow1b: ' formatieren?', + messrow2: 'Formatieren löscht alle Daten!', + messrow3: 'Formatieren dauert ca. 10 Sekunden, bitte warten.', + formatok: 'Formatieren erfolgreich!', + formaterr: 'Formatieren fehlgeschlagen!: ' + }, + del: { + title: 'Löschen', + message: 'Dateien: ', + messageend: ' löschen?', + error: 'Löschen der Datei fehlgeschlagen!: ', + deleteok: 'Datei erfolgreich gelöscht!' + }, + dfumode: { + title: 'DFU Modus', + startconfirm: 'DFU Modus aktivieren?', + updateconfirm: 'DFU Modus erfolgreich aktiviert. Möchten Sie die DFU Aktualisierungs Seite aufrufen?', + updatetitle: 'DFU Modus akzeptiert' + }, + oldfirm: { + title: 'Aktualisierungs Tips', + message: 'Die Firmware Version ihres Gerätes ist zu niedrig. Bitte aktualisieren Sie es auf die neueste Firmware, bevor Sie die Hochladen Funktion verwenden.' + }, + newfolder: { + title: 'Neuer Ordner', + message: 'Bitte geben Sie den Ordner Namen ein', + newfoldererr: 'Ordner erstellen fehlgeschlagen!:' + }, + rename: { + title: 'Umbennenen', + message: 'Bitte geben Sie den neuen Dateinamen ein: ', + errrename: 'Umbenennen fehlgeschlagen!: ', + nametoolong: 'Die maximale Dateipfadlänge darf 63 Bytes nicht überschreiten', + pathtoolong: 'Die maximale Dateinamenlänge darf 47 Bytes nicht überschreiten' + }, + drive: { + message: '(Speicher nicht verügbar [Fehler: ', + messageend: '])' + } +} diff --git a/web/src/i18n/es_ES.js b/web/src/i18n/es_ES.js index 6e9d94b2..485be0e2 100644 --- a/web/src/i18n/es_ES.js +++ b/web/src/i18n/es_ES.js @@ -6,6 +6,7 @@ export default { en: 'English', es: 'Español', ru: 'Русский', + de: 'Deutsch', changeok: 'Cambio Idioma Satisfactorio' }, btn: { diff --git a/web/src/i18n/index.js b/web/src/i18n/index.js index 23019b95..88aa677e 100644 --- a/web/src/i18n/index.js +++ b/web/src/i18n/index.js @@ -5,11 +5,13 @@ import elementZhCnLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui la import elementEsLocale from 'element-ui/lib/locale/lang/es'// element-ui lang import elementZhTwLocale from 'element-ui/lib/locale/lang/zh-TW'// element-ui lang import elementRuLocale from 'element-ui/lib/locale/lang/ru-RU'// element-ui lang +import elementDeLocale from 'element-ui/lib/locale/lang/de' // element-ui lang import enLocale from './en_US' import zhTWLocale from './zh_TW' import zhCNLocale from './zh_Hans' import esLocale from './es_ES' import ruLocale from "./ru_RU"; +import deLocale from "./de_DE"; Vue.use(VueI18n) @@ -34,6 +36,10 @@ const messages = { ru_RU: { ... ruLocale, ... elementRuLocale + }, + de_DE: { + ... deLocale, + ... elementDeLocale } } export function getLanguage() { diff --git a/web/src/i18n/ru_RU.js b/web/src/i18n/ru_RU.js index 71134018..3cda5253 100644 --- a/web/src/i18n/ru_RU.js +++ b/web/src/i18n/ru_RU.js @@ -6,6 +6,7 @@ export default { en: 'English', es: 'Español', ru: 'Русский', + de: 'Deutsch', changeok: 'Язык изменен успешно!', }, diff --git a/web/src/i18n/zh_Hans.js b/web/src/i18n/zh_Hans.js index 9eb1c8c0..7478e397 100644 --- a/web/src/i18n/zh_Hans.js +++ b/web/src/i18n/zh_Hans.js @@ -6,6 +6,7 @@ export default { en: 'English', es: 'Español', ru: 'Русский', + de: 'Deutsch', changeok: '语言切换成功!' }, btn: { diff --git a/web/src/i18n/zh_TW.js b/web/src/i18n/zh_TW.js index c41fc784..a6aa4bd5 100644 --- a/web/src/i18n/zh_TW.js +++ b/web/src/i18n/zh_TW.js @@ -6,6 +6,7 @@ export default { en: 'English', es: 'Español', ru: 'Русский', + de: 'Deutsch', changeok: '語言切換成功!' }, btn: { From 62ffb034523194f92b7c7f9dd3132e1662f17739 Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 04:08:43 +0700 Subject: [PATCH 055/101] Updated Language Files --- fw/application/src/i18n/de_DE.c | 120 ++++++++++++++++---------------- fw/application/src/i18n/fr_FR.c | 2 +- 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index 1b62f1b2..24873186 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -4,30 +4,30 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_OFF] = "AUS", [_L_ON_F] = "[AN]", [_L_OFF_F] = "[AUS]", - [_L_BACK] = "[Zurück]", + [_L_BACK] = "Zurück", [_L_ERR] = "Fehler", [_L_ERR_CODE] = "Fehlercode", - [_L_APP_AMIIBO] = "Amiibo-Emulator", + [_L_APP_AMIIBO] = "Amiibo Emulator", [_L_APP_AMIIBOLINK] = "AmiiboLink", - [_L_APP_BLE] = "BLE-Dateitransfer", - [_L_APP_BLE_TITLE] = "BLE-Dateitransfer", - [_L_APP_PLAYER] = "Videospieler", + [_L_APP_BLE] = "BLE Dateitransfer", + [_L_APP_BLE_TITLE] = "BLE Dateitransfer", + [_L_APP_PLAYER] = "Videoplayer", [_L_APP_SET] = "Einstellungen", [_L_APP_SET_VERSION] = "Version", [_L_APP_SET_STORAGE_USED] = "Belegt", - [_L_APP_SET_STORAGE] = "Speicher", - [_L_APP_SET_OLED_CONTRAST] = "OLED-Kontrast", - [_L_APP_SET_OLED_CONTRAST_TITLE] = "OLED-Kontrast", + [_L_APP_SET_STORAGE] = "Externer Speicher", + [_L_APP_SET_OLED_CONTRAST] = "OLED Kontrast", + [_L_APP_SET_OLED_CONTRAST_TITLE] = "OLED Kontrast", [_L_APP_SET_LCD_BACKLIGHT] = "Beleuchtung", [_L_APP_SET_LCD_BACKLIGHT_TITLE] = "Helligkeit", - [_L_APP_SET_ANIM] = "Menü-Animation", - [_L_APP_SET_LIPO_BAT] = "LiPO-Batterie", + [_L_APP_SET_ANIM] = "Menü Animation", + [_L_APP_SET_LIPO_BAT] = "LiPO Batterie", [_L_APP_SET_SHOW_MEM_USAGE] = "Speicheranzeige", - [_L_APP_SET_HIBERNATE] = "Schnell-Wecken", - [_L_APP_SET_SLEEP_TIMEOUT] = "Schlaf-Timeout", + [_L_APP_SET_HIBERNATE] = "Schnelles Aufwachen", + [_L_APP_SET_SLEEP_TIMEOUT] = "Energiesparmodus", [_L_APP_SET_LANGUAGE] = "Sprache", - [_L_APP_SET_DFU] = "Firmw.-Aktualisierung", - [_L_APP_SET_REBOOT] = "System-Neustart", + [_L_APP_SET_DFU] = "Firmw. Aktualisierung", + [_L_APP_SET_REBOOT] = "System Neustart", [_L_APP_SET_RESET_DEFAULT] = "Standardeinstellungen", [_L_APP_SET_RESET_DEFAULT_SUCCESS] = "Einstellungen zurückgesetzt!", [_L_APP_SET_RESET_DEFAULT_CONFIRM] = "Auf Standardeinstellungen zurücksetzen?", @@ -36,43 +36,43 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_45S] = "45 Sekunden", [_L_1MIN] = "1 Minute", [_L_2MIN] = "2 Minuten", - [_L_3MIN] = "3 Min", - [_L_AMIIBO_KEY_UNLOADED] = "Schlüssel nicht gefunden", - [_L_UPLOAD_KEY_RETAIL_BIN] = "Laden Sie die Datei key_retail.bin in das Stammverzeichnis des Speichers.", + [_L_3MIN] = "3 Minuten", + [_L_AMIIBO_KEY_UNLOADED] = "Amiibo Schlüssel nicht geladen", + [_L_UPLOAD_KEY_RETAIL_BIN] = "Platzieren Sie die Datei key_retail.bin im Stammverzeichnis des Speichers.", [_L_KNOW] = "Verstanden", - [_L_RANDOM_GENERATION] = "Zufällige Tag-Nummer", - [_L_AUTO_RANDOM_GENERATION] = "Autom. random.", - [_L_SHOW_QRCODE] = "QR-Code", + [_L_RANDOM_GENERATION] = "Zufälliger Tag", + [_L_AUTO_RANDOM_GENERATION] = "Automatische Zufallsauswahl", + [_L_SHOW_QRCODE] = "QR Code", [_L_DELETE_TAG] = "Tag löschen", - [_L_DELETE_TAG_CONFIRM] = "Bestätigen Sie das\nLöschen %s?", + [_L_DELETE_TAG_CONFIRM] = "Löschen von %s bestätigen?", [_L_BACK_TO_DETAILS] = "Zurück zu Tag-Details", - [_L_BACK_TO_FILE_LIST] = "[Zurück zur Liste]", - [_L_BACK_TO_MAIN_MENU] = "[Hauptmenü]", + [_L_BACK_TO_FILE_LIST] = "Zurück zur Liste", + [_L_BACK_TO_MAIN_MENU] = "Hauptmenü", [_L_FORMAT] = "Formatieren", [_L_FORMAT_STORAGE] = "Speicher formatieren", [_L_DELETE_ALL_DATA] = "Alle Daten löschen?", - [_L_DELETING_MESSAGE] = "Formatierung..", - [_L_MESSAGE] = "Nachricht", + [_L_DELETING_MESSAGE] = "Formatiere..", + [_L_MESSAGE] = "Meldung", [_L_CONFIRM] = "Bestätigen", [_L_CANCEL] = "Abbrechen", - [_L_BACK_TO_LIST] = "[Zurück zur Liste]", - [_L_NOT_MOUNTED] = "Speicher nicht ausgerüstet", + [_L_BACK_TO_LIST] = "Zurück zur Liste", + [_L_NOT_MOUNTED] = "Speicher nicht eingebunden", [_L_MOUNTED_LFS] = "===Speicher [LFS]===", [_L_MOUNTED_FFS] = "===Speicher [FFS]===", [_L_TOTAL_SPACE] = "Gesamt", [_L_AVAILABLE_SPACE] = "Frei", - [_L_NOT_AMIIBO_FILE] = "Dies ist keine Amiibo-Datei", + [_L_NOT_AMIIBO_FILE] = "Dies ist keine Amiibo Datei", [_L_READ_FILE_FAILED] = "Lesen fehlgeschlagen", [_L_INPUT_FOLDER_NAME] = "Ordnername eingeben:", - [_L_INPUT_AMIIBO_NAME] = "Amiibo-Name eingeben:", + [_L_INPUT_AMIIBO_NAME] = "Amiibo Namen eingeben:", [_L_DELETE] = "Löschen", [_L_INPUT_NEW_NAME] = "Neuen Namen eingeben:", [_L_INVALID_INPUT] = "Ungültige Eingabe", [_L_CREATE_NEW_FOLDER] = "Neuer Ordner..", [_L_CREATE_NEW_TAG] = "Neuer Tag..", - [_L_CREATE_NEW_TAG_BATCH] = "Mehrere Tags..", - [_L_INPUT_TAG_NUM] = "Tag-Anzahl eingeben:", - [_L_CREATE_TOO_MANY_NUM] = "Nur maximal %d Tags in einem Stapel erstellt.", + [_L_CREATE_NEW_TAG_BATCH] = "Mehrere Tags erstellen..", + [_L_INPUT_TAG_NUM] = "Tag Anzahl eingeben:", + [_L_CREATE_TOO_MANY_NUM] = "Sie können nur maximal %d Tags auf einmal erstellen.", [_L_CREATING_TAG_BATCH] = "Tag erstellen", [_L_CREATING_TAG_FAILED] = "Erstellen von Tag %s fehlgeschlagen!", [_L_RENAME] = "Umbenennen", @@ -82,22 +82,22 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_RANDOM_MODE_MANUAL] = "Zufällig (Manuell)", [_L_RANDOM_MODE_AUTO] = "Zufällig (Automatisch)", [_L_SEQUENCE_MODE] = "Sequentieller Modus", - [_L_READ_WRITE_MODE] = "Lese-Schreib-Modus", + [_L_READ_WRITE_MODE] = "Lese-Schreibmodus", [_L_AMIIBOLINK_V1] = "V1", [_L_AMIIBOLINK_V2] = "V2", [_L_AMILOOP] = "AmiLoop", [_L_MODE] = "Modus", - [_L_AUTO_RANDOM] = "Autom. randomisieren", - [_L_COMPATIBLE_MODE] = "Kompat. Modus", + [_L_AUTO_RANDOM] = "Automatische Zufallsauswahl", + [_L_COMPATIBLE_MODE] = "Kompabilitäts Modus", [_L_TAG_DETAILS] = "[Zurück zu Details]", [_L_MAIN_MENU] = "[Hauptmenü]", - [_L_MODE_RANDOM] = "Manuell", + [_L_MODE_RANDOM] = "Zufällig (Manuell)", [_L_MODE_CYCLE] = "Sequentiell", - [_L_MODE_NTAG] = "Lese/Schreib", - [_L_MODE_RANDOM_AUTO_GEN] = "Automatisch", - [_L_BLANK_TAG] = "Leerer NFC-Tag", - [_L_APP_AMIIDB] = "Amiibo-Datenbank", - [_L_APP_AMMIDB_BROWSER] = "Browser..", + [_L_MODE_NTAG] = "Lesen/Schreiben", + [_L_MODE_RANDOM_AUTO_GEN] = "Zufällig (Auto.)", + [_L_BLANK_TAG] = "Leerer NFC Tag", + [_L_APP_AMIIDB] = "Amiibo Datenbank", + [_L_APP_AMMIDB_BROWSER] = "Navigieren..", [_L_APP_AMIIDB_SEARCH] = "Suche..", [_L_APP_AMIIDB_MY_FAVORITES] = "Meine Favoriten..", [_L_APP_AMIIDB_MY_TAGS] = "Meine Amiibo..", @@ -106,7 +106,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_AMIIDB_BACK] = "[Zurück]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Schlüssel", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "geladen", - [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "fehlend", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NICHT geladen", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Steckplatznummer", [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorit..", [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Speichern unter..", @@ -122,15 +122,15 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_AMIIDB_NEW] = "Neu..", [_L_APP_AMIIDB_EMPTY] = "Leeren..", [_L_APP_AMIIDB_DELETE] = "Löschen..", - [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Neuer Favoriten-Ordner:", - [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Favoritenordner leeren?", - [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Favoritenordner löschen?", + [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Neuer Fav.-Ordner:", + [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Fav.-Ordner leeren?", + [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Löschen Bestätigen?", [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Fav.-Ordner auswählen..", [_L_APP_AMIIDB_FAV_SUCCESS] = "Favorit erstellt ", - [_L_APP_AMIIDB_FAV_FAILED] = "Favorit fehlgeschlagen!", + [_L_APP_AMIIDB_FAV_FAILED] = "Favorisieren fehlgeschlagen!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Speichern erfolgreich", [_L_APP_AMIIDB_SLOT_SAVE_FAILED] = "Speichern fehlgeschlagen!", - [_L_APP_CHAMELEON] = "Karten-Emulator", + [_L_APP_CHAMELEON] = "Karten Emulator", [_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Normal", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Verweigern", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorieren", @@ -142,25 +142,25 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_CHAMELEON_CARD_TYPE] = "Typ", [_L_APP_CHAMELEON_CARD_DATA] = "Daten..", [_L_APP_CHAMELEON_CARD_ADVANCED] = "Erweitert..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Steckplätze..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Steckplätze", - [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Spitzname erfolgreich", - [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Spitzname fehlgeschlagen!", - [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Spitzname eingeben:", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Steckplatz Einstellungen..", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Steckplatz Nummer", + [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Spitzname erfolgreich gesetzt", + [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Spitzname setzen fehlgeschlagen!", + [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Spitznamen eingeben:", [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden..", [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Speichern..", [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Zurücksetzen..", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Daten zurückgesetzt", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Datei nicht gefunden", - [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dateigröße inkorrekt", - [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Laden fehlgeschlagen", - [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Laden erfolgreich", - [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Dateinamen eingeben:", - [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Speichern fehlgeschlagen!", - [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Speichern erfolgreich", - [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Benutzermodus", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dateigröße stimmt nicht überein", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Laden der Datei fehlgeschlagen", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Datei erfolgreich geladen", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Datei Namen eingeben:", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Datei speichern fehlgeschlagen!", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Datei erfolgreich gespeichert", + [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Benutzerdefinierter Modus", [_L_APP_CHAMELEON_CARD_GEN1A_MODE] = "Gen1A aktiv", - [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Randomisierte UID", + [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Zufällige UID", [_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS] = "UID generiert", [_L_APP_CHAMELEON_CARD_GEN2_MODE] = "Gen2 aktiv", [_L_APP_CHAMELEON_CARD_WRITE_MODE] = "Schreibmodus", diff --git a/fw/application/src/i18n/fr_FR.c b/fw/application/src/i18n/fr_FR.c index 34188da9..170c4c56 100644 --- a/fw/application/src/i18n/fr_FR.c +++ b/fw/application/src/i18n/fr_FR.c @@ -134,7 +134,7 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Normal", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Refuser", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorer", - [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Zwischenspeicher", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", [_L_APP_CHAMELEON_INITIALIZING] = "Initialisation des données ..", [_L_APP_CHAMELEON_CARD_SLOT] = "Fente", [_L_APP_CHAMELEON_CARD_NICK] = "Pseudo", From a8f9c4cb65db5864936636dabd5a4eed6fc41c3f Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 04:23:40 +0700 Subject: [PATCH 056/101] Updated Glyphs --- .../src/mui/u8g2_font_wqy12_t_gb2312a.c | 2067 +++++++---------- 1 file changed, 825 insertions(+), 1242 deletions(-) diff --git a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c index 5d8e7a1d..4d46355a 100644 --- a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c +++ b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c @@ -7,1247 +7,830 @@ /* Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--12-120-75-75-P-119-ISO10646-1 Copyright: (null) - Glyphs: 1552/30503 + Glyphs: 1050/30503 BBX Build Mode: 0 */ -#ifdef U8G2_USE_LARGE_GB2312_FONT -const uint8_t u8g2_font_wqy12_t_gb2312a[39601] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") = - "\20\0\3\2\4\4\4\4\5\14\15\0\376\10\376\12\377\1d\2\332\5n \5\0\230\26!\7\221\212" - "\26\247\0\42\7\64\371\26\221)#\16\226\210\67Q\313\260D\275\14K\324\2$\17\245xV\331RQ" - "\62QK\224\312\26\1%\20\226x\66Q\322EK\302\64\211\222.Z\2&\16\205\210VY\22%Y" - "eJ\242H\11'\6\61\372\25\3(\13\263yVI\224D\335\242,)\14\263y\26Y\224E]\242" - "$\2*\14u\210V\225\312AY\232\42\0+\13w\210xqm\30\262\270\6,\7\62z\26\212\2" - "-\7\25\310\26\203\0.\6!\212\25\2/\14\304xvMY)+e\65\0\60\12\205\210\66K\346" - "[\262\0\61\11\205\210\26c\237\6\1\62\13\205\210\66K\26\326\332\6\1\63\15\205\210\26C\32&k" - "\30\16\12\0\64\16\206\210wZ\22u\311\222aL\23\0\65\15\205\210\26C\22\206C\32\206\203\2\66" - "\15\205\210\66K\30\16IfK\26\0\67\13\205\210\26\203X\13\263\260\4\70\15\205\210\66K\246%K" - "fK\26\0\71\15\205\210\66KfK\206PK\26\0:\7a\210\22\222\0;\11\202z\26C\254(" - "\0<\10\225\210\226Y\327\16=\10\65\270\26\203:\10>\11\225\210\26i\267\216\0\77\15\225\210\66K" - "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" - "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" - "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" - "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" - "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" - "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" - "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX[" - "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256" - "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d" - "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D" - "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z" - "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V" - "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205" - "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210" - "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210" - "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i" - "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222" - "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226" - "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm" - "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE" - "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e" - "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT" - "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311" - "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X" - "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17" - "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266" - "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314" - "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210" - "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22" - "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V" - "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361" - "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c" - "\62$\0\366\13\205\210\66u`\311\334\222\5\372\13\225\210vu \363\226\14\1\374\12\205\210\66\345\314" - "[\62\4\0\0\0\70N\11\7\270P\31\12 SN\12fWO\12P\134B\12\200`o\12\231e" - "\317\13Pl\21\12\267t\366\13\14|s\12\257\202\371\12\375\214\23\12\343\224\303\13\63\377\377\1M\14" - "\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311\2 \23\10\33\311\34\17\2 \34" - "\13E\376<\221\224(C\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13" - "D\213\30\273x\34" - "\273x\134\311\260\225\262R\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a" - "\32\246a\66,i\224\14Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321" - "p\210\243b\224\225\222,\211\264h\323r,G\24\0WO\32\273x\134\71\226\14C\224F\203\26V" - "C\61S\62\245\64\265\3\71\226\1WP\27\273x\274\71\20\25\243bTKz\333\322x\70\347X:" - "\34\4WW\35\273x\134a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\16d\241\32W" - "[\32\273x\134\71\26\15Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y" - "\34\246\321p\320\221(+eM\331\22%b\222c\361\60\4W\213\37\273x<\303\224%Q\222%Q" - "\222\14\203\222%Q\222%a\24\231s\340\220\3\351p\20W\316\33\273x<\261\24'\245\341\255\264\64" - "%]\224DR\232\224D\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213" - "&F\232R\223\22\71\13W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10" - "X\2\32\273x\134\255Imx\207\224aH\242\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134" - "\265\312\60D\225\312\240\24\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224" - "E\311p\314\262\341\240U\243Z\62(q:\34\4X\203\36\273x\134a\232\14C\224%\321p\220j" - "\245A\213\262L\31\24\61\311\201(\311D\1X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p" - "\220\232\224AQ\343\341\2X\231\37\273x\32\273x\274" - "\351pPs *F\265\244\267-Lr K\323A\7\22\0YG\33\273x\274\361pMr \313" - "\206\203\216\204\203\22fI\70(\71\226C\22\0YH\27\273x\274\351p\320\252%ePtt\70\347" - "@Tk\311\304\0YO\31\273x\274\361p\215\207\203V\35\206H\313\244a\210\223\34\310BU\1Y" - "V\33\273x\34Q\26&\321\240%RfR\262\70\321\241t\70\210I\254I: YW\32\273x\234" - "\361p\320\302pX\22%\316\6\71\7\36\304\34\12\303aP\0Ye\31\273x\234\71\360\224t\212\246" - "h\70ES\245\313p\20\223\34\310\262uYs\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351" - "H\244\255\11\0Yy\36\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11\223" - "Fu\20Y}\33\273x\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202" - " \273x\134\71\226#\203\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y\231" - "\34\273x\134a\32f\203\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x<" - "\331\260d\341\60\204IeX\232\223&)i\222\22Q)%QI\12\7Y\306 \273x<\331 e" - "R\62$MI-J\206S\42%Q\322$e\231\62H\305$\7\24\0Y\313 \273x\134a\32f" - "\203\22eI-J\206!\211r \211\6I\312\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65" - "\15S\226T\246\244S\322)\351\26%\233\22e\221T\34\6Z\1 \273x\374@\222#Q\62\34\222" - "\64L\226(\211Z\206!\211\222N\221\224H\221\262Da\0Z\3\34\273x\134a\32fC\62HI" - "\26&\303)\13\223,\215\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245" - "\27KT\311\264$\314\222,\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211" - "\322\242$\203\222(}JZ\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI" - "\42)\345\244\62hQ\226)\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7" - "\65\307r,G\352P\14[W\31\273x\274\361pHrD\32\224\34\310\241t\70\250\71\226c\71\262" - "\2[X\31\273x\234\361p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\31\272y<" - "QVJ\242\341\240#\321\260#\71\22\16\207\64\207r`\4[i\33\273x\34\203\24'\303\24\246Y" - "\224)C\64F\265(\213\212\225\266J$\6[\203\30\273x\274\361pHrDJ\303\34\213\326\35\311" - "\261\70\213\303a\10[\210\31\273x\274\71\230\16\207$\7\222\64\35\356@\234\345@\224c\71\62\2[" - "\211\30\273x\274\361pHrD\13\323x\70hU-\7v$\322V\1[\214\33\273x\274\361pH" - "rD\32\224\34\36\16a\222\3Q\16DY\224U\322![\230\32\273x\274\361pHrD\32\206\260" - ":\254\71\66\14a\32\16C\230&\0[\232\33\273x\274\361pHrDG\262a\220s \312\201h" - "\10\243\70\251f\303\20[\235\32\273x\234\71\230\16\357P\64\14\71\220c\71p\310\201$G\242h\70" - "\10[\236\31\273x\334\351pH\312Z\22eu J\207C\234CI\16d\331*[\242\30\272y\234" - "\351p\220\322h\330\222(\313dI\32\16Q\330\70L\0[\243\31\273x\274\351\360\16E\303\220S\206" - "!L\303a\10\323p\30\242\341 [\244\32\273x\274\351\360\16)\303\220\204\71\224\245\203\222\3\71p" - "\310\201t\70\10[\253\30\272y\234\351p\320\221h\30\213\303\16\17\203\24G\303 \305\11\0[\263\32" - "\273x\274\351\360\30*\303\220\244\71p\310\201t\70Hi\230\206\303\20\1[\264\31\272y\234\351pP" - "\302D\31\226(\14\207\71\35\16Q\26\17\331\220\15[\266\31\273x\274\351\360\16)\303\220dIVi" - "\215DeI\243\222VT\1[\271\30\273x\274\351\360\224E\335\242$\12\263\264\244\14\212V\316\342A" - "\3[\275\32\273x\274\351\360\224E\311p\314\322a\10\243bTL\272E\331\20\16\1[\304\32\273x" - "\274\351\360\30*\303\220d\265\341\240#\341\20\205Qq\210rd\2[\306\32\273x\274\351\360V\351-" - "jL\242dH\6%\315\201\250\30\25\207!\2[\314\30\273x\274\351\360\16E\303\220\16r\26\16\247" - "\254\64\234\262\322p\1[\337\35\273x\274\351\360\222e\312\220\14\211\22%Q\22V\206$\321\221d\270" - "E%\233\0[\353\31\273x\274\351\360\226*\322\22\245\341\62\246\341pP\232*=%\211\2[\371\33" - "\273x\374H\64\204\351p\12\263$,\25\263$K\302,\11\243\64\311\241\14[\373\33\273x<\303\240" - "c\341\60\344X\66\14:\224\15\7)\214\263\34\251C!\0[\374\35\273x\134\303\20\246\341\60$Q" - "\16d\303\240\3\331p\320\352@\224\3Q\16i\0\134\4\34\273x\134q\64hQV\32\16IV\32" - "\246ZR\31\266R\26e\225LR\0\134\6\34\273x\134Y\34\15J\251\246$j\226\204QM\31\6" - "%*fI\230\206\241\4\134\7\37\273x|\305$\32\224\236\222(\211\206,\11\243\312pPJ-Y" - "\22%i\22e\13\0\134\15\35\273x\134I\230t\212\24-\31\16R\22F\203R\14\245A\13\323p" - "\251\254\21\0\134\16\35\273x\34a\224%\303 V\244!\211*CTL\222\341\216D\303A\13\343H" - "\2\134\17\30\273x\274\71\226c\71\20\25\243,\312JY(Vs\244\16\305\0\134\21\32\273x\274\71" - "\226#\245\64\311Ja\222E\71\220\344P\16\345\210\274#\0\134\24\30\272y\134\71\64\14J\16\210Q" - "\134J\302\250-\252eb\226\215\0\134$\32\273x\234Q\16dq<\34\304$G\352@\224\3Q\234" - "U\302L\36\2\134\61\36\273x|\265a\251#Q\62\34\222(\251\15I\65J\262D\351EI\244J" - "I\311\4\134<\33\273x\134\303\240\305Y\234\15\203\226cI\230%\221\230\254Q\232D\251\70\14\134=" - "\31\273x\134\303\20\246a\32\16C\230\305aI\312\302(\211\324:\30\2\134>\33\273x\134\303\240\305" - "\331\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\36\273x\134\303\240\305\331\60h\71\66" - "\234r J\206\250\22U\242!J\242\222\16(\0\134B\33\273x\134\303\240\305\331\60h\71\226\14[" - "\216\15\247,\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226" - "\204Q\64,Y\230\0\134O\31\273x\134\303)\7\242\341\224\204YT\34N\215\303\251-\312\242b\4" - "\134U\31\273x<\303)\7\242\341\324\70\234\32\207CRj\311\244JT\22\5\134^\37\273x<\303" - ")\7\242\341\224\3Q\62la\232\14C\224D\225d\70$Y\246$C\42\134q\27\271y\234\71\22" - "f\231\226i\231\226i\231\226i\331p\320\201\0\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$J\262$+EZ\224DI\224" - "\204\1e\77\37\273x\374@\66,q\66d\221\22%K)\311\222(\311\222(\11\263d\212\306$\326" - "\2eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224eC\224D\321\26eH\35\273" - "x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212Z\0eL\34\273x|R" - "\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO\37\273x\34\273x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\35\273" - "x\374@\66$\203\22e\245,\33\236\302(\32NI\24\15Q\222c\71\62\1fZ\36\273x\274\351" - "\64DI)K\206AYJI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246" - "\341\60\204i\66\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262" - "\244i\70\350\360\60\204i\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220" - "DI\244\14C\226f\303\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15" - "I\24\16C\230\206\303\20\246\341\60D\0f\227\36\273x\374@\66<%Y\22U\242\341)\7\242d" - "P\206$K\242d\220\263xP\0f\362\27\272y|Q\34e\303A*I%\251\64<\225\244\322\360" - "\216\4f\364\31\273x<\303!\216\207A+e\303\240\225\262aP\223\34\312\21\333:f\370\33\273x" - "\134\303\220\3Q\64\34\324(\33\316\351p\220\322p\30\302\64\34\206\10f\374\32\272y\134\303\230Da" - "\224D\303A*\15\7\35\35\326(\7\304!\32\2f\376\31\271y\134\265\341 EK\313p\310\261a" - "\210\322h\30\242\64\32\206\4g\0\33\273x\134\303\20\246\341\60\204i\64\34\224(\7\236*Q\64D" - "\246H\236\4g\10\32\271y\134\303\20\245Q\32\15C\224Fi\64\14Q\32\245I\230\310\11\0g\11" - "\30\273x\234\361p\320rl\30\305,\31\246b:\254a\32\246\231\4g\13\36\273x\33\273x|\265a\211\263!\31\222,G*C\226c\321\60e" - "IOMK\30kL\37\273x\34\227\34\210\262%\32\224\266aP\342,Z\262()%\311\22%i" - "\222ec\0kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205\303!kc\32\253x" - "\34\17j\216\345@\224\3\321\240E\71\20\345@\224\3Q:\34\4kd\36\273x|\345,\316\242\244" - "\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\31\273x\274\71\20\15Z\224\3Q" - ":\34\324\34\251\225ji\216\210\203\14kw\34\273x<\303!\311J\211\244EY\66\34\222(\253\234" - "\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%R\245\16Dq\26\25\243y" - "k\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301\33\273" - "x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303\20&" - "Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(\32\326" - "$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i\70(" - "Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27\273x" - "\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\31\272y\34/\71\220\344@\62\134\262" - "\64K\207\203XJ\62%\213\326\1l\24\32\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224\3" - "Q\216\324!\1l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302," - "l\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30" - "\17Y\34ECRN\344(I\243ZmJr(\6lB\32\273x\274Q\16d\311pPs \252" - "&u`\7\222jT\322\62Q\5lI\33\273x<\71\220%\303 fQR\13\223\254%\314\222H" - "\15+YS\242\6l_\32\273x<\71\30\15J\34&Y\234\245a\32fj\230\206\311\60(\71\4" - "l`\37\273x\35\273x<\261\226\14\71\20n\311\226(\305\244SR\61%\265(\211Z\242J$\5m" - "A\32\273x\34ie\30\324Z\313\60dq\226\64II-J:%=E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222" - "\205\311\240\345\330pQ\242HI\206!J\242\226a\10y\273\33\273x\274\351p\220\222\306\250\230\64\16" - "C\16\304\303\251%J\6%\212\25\0y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312" - "\60D\305(G\0y\315\33\273x|R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314" - "\0y\321\34\273x|b\262EY\230$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33" - "\273x|\265\61\215\222\312\220\224Z\242d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270" - "\305\321p\220\32\303\245IJz*iQ\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J" - "\230DC\242eJ\224\324\322\60\332\0z\13\36\273x|\311\240LY)K\206d\320rL\31$%" - "\12\245A)\246a\232\14C\0z\15\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224" - "\6-\312JY)R\0z.\34\273x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264" - "\60M\206!z\61\35\273x|\241\62M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244" - "\0z\77\36\273x|R\66\15S\26%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5z" - "v\30\273x\274\351\360\224E\325,\12\323\34\31v \212\263\250\30\315\3zz\30\273x\274\361pH" - "rD\213\342\60\223\303a\7r,\307\342\341\20z\177\32\273x\274\351\360\224EJ\232$\303 f\351" - "pMr \212\263P\32\1z\201\31\273x\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223" - "t@z\227\36\272y\274\341pP\302\244\224%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0" - "z\313\30\273x\274\71\230\16\207\234\20\246a\34\345@\224\3I\216\205\303Az\326\36\273x|\311 " - "%\265(\211\222,\311\302$J\322$\223\323\341\230\345@\22\16\7\1z\331\34\273x\65" - "&\215Z\0\226b\35\273x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244" - "T\226d\36\273x\34CV\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226" - "\206 \273x\34C\222F\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226" - "\217 \273x\34c\226(\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226" - "\220\42\273x\34C\62D\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207" - "\10\226\250!\273x\34CVR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22e" - "C\0\226\274\30\273x\134Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334" - "I\64DI\232\14C\64eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211" - "\206\203\224%a\244dI\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351" - "pP\242\34\70hQ\16\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203" - "\22%\225a\351\224T\206\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235" - "\42O\225NY)\213\24\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15" - "\27\0\226\366\31\273x<\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x" - "<\303\71\35\36CEI\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62" - "\234\262\322p\312J\303\71L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j" - "\211Z\22\5\227\6\34\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0" - "\227\23\34\273x<\303\71\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273" - "x<\303\71\35\236\222\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236" - "\222\322 \15I\224H\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322" - "p\220*Q\62(C\322)\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13" - "\323a\15\323a\15#\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!" - "J\244\60*&\66\0\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224AL" - "r\244\10\227`\34\273x\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227" - "b\30\272y\34\17a\216\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240" - "\225\7\35\311\201C\30\25\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360" - "RJ\222A\211\262P\32\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206" - "\303\20\246\341\60D\0\227\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i" - "\351\260)\0\230\30\36\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230" - "\204\1\230^\36\273x\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0" - "\230o\42\273x<\203\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372" - "\267\0\230u\31\273x\34\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x" - "\134\331 \245\321\240\14R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240" - "\205\225(\224\206!\252\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224" - "R\66\14J-J\272(-JE\252\224\302$\321\264\0\230\230!\273x\13E\1" + "-\6\25d\213A.\6!\306\12\1/\14\304<\273\246\254\224\225\262\32\0\60\12\205D\233%\363-" + "Y\0\61\11\205D\213\261O\203\0\62\13\205D\233%\13km\203\0\63\14\205D\213!\15\223\65\14" + "\7\5\64\16\206\304;-\211\272d\311\60\246\11\0\65\15\205D\213!\11\303!\15\303A\1\66\15\205" + "D\233%\14\207$\263%\13\0\67\13\205D\213A\254\205YX\2\70\15\205D\233%\323\222%\263%" + "\13\0\71\15\205D\233%\263%C\250%\13\0:\6aD\11I;\11\202>\213!V\24\0<\10" + "\225D\313\254k\7=\10\65\134\213A\35\4>\11\225D\213\264[G\0\77\15\225D\233%\323\302H" + "\313\241\60\2@\24\247<\254\255\222HZ\42)JE\251H\211\222e\23\0A\16\207D\274\70M\302" + "$+\15J\252\6B\15\206\304\213A\11\305a\11\215\303\2C\14\206\304\233!\11\325\216\311\220\0D" + "\15\207D\214A\12\223\324c\62H\0E\12\205D\213c\70\214\305AF\13\205D\213c\70$a#" + "\0G\15\206\304\233!\11\325\332(&\203\0H\13\206\304\213\320\70\14\242c\0I\10\203D\212%\352" + "eJ\10\243\64\252\376\264\0K\15\205D\213LJJ\232\226D\225,L\11\205D\213\260\217\203\0M" + "\20\207D\14m\310\226\212R\221\42)R\325\0N\15\206\304\213pS\42)\321Fc\0O\14\207D" + "\254\255\222\272&Y\66\1P\14\205D\213!\311l\203\22\26\1Q\15\227<\254\255\222\272&Y\266'" + "\0R\20\206\304\213!\312\222,\311\222!jK\302\0S\14\205D\233AL\327\60\34\24\0T\11\207" + "D\214C\26\367\15U\12\206\304\213\320\217\311\220\0V\17\207D\214TM\262(\253\204I\32g\0W" + "\21\211D\215,\323\62\255\322)iJ\332\212Y\4X\15\206\304\213PL\242L\213ZB\61Y\13\207" + "D\214\64\311*i\334\15Z\12\207D\214C\332\347a\10[\11\263>\213!\352O\3\134\14\245<\213" + "\60\15\323\60\15\323\60]\11\263=\213\251\77\15\1^\10\65t\253,\251\5_\6\25<\213A`\7" + "\62\375\212$\12a\14eD\233%K\6MK\206\0b\14\205D\213\60\34\222\314mP\0c\10d" + "\304\232!k\34d\13\205D\313\312\240\271%C\0e\13eD\233%\33\206\60\35\2f\11\203D\232" + "i\210:\1g\14\205\64\233AsK\206\60Y\0h\13\205D\213\60\34\222\314[\0i\7\201D\211" + "d\30j\10\242\264\231,\351ek\15\205D\213\260\224\224\264$\252d\1l\7\201D\211\203\0m\16" + "gD\214E\211\42)\222\42)\222\12n\11eD\213!\311\274\5o\12eD\233%sK\26\0p" + "\14\205\64\213!\311\334\6%\14\1q\13\205\64\233AsK\206\260\0r\10cD\212!\352\4s\14" + "eD\233%K\324$K\26\0t\12\203D\212(\32\242\66\1u\11eD\213\314[\62\4v\14e" + "D\213LKJI\26F\0w\16gD\214(\222\42\245\242t\213\262\4x\13eD\213,\251Uj" + "Z\0y\15\205\64\213LKJI\26fa\6z\12eD\213A\314\332\6\1{\13\243<\252$\252" + "dQ[\0|\7\261\276\212\7\1}\13\243<\212,\252%QK\4~\7&\334\33\311\2\200\17\225" + "D+\251\222\15Q\66Da\24)\0\0\0\0$QC\11\262S\353\11\344[\243\12.a\17\12S" + "g:\12\330ri\12\251~\270\12\210\213\306\12\225\377\377 \23\10\33e\216\7\1N\0\12+d~" + "(\31\16\2N\1\24\252=\216\207\64\207r(\207r(\207r(\207\362\21N\3\26\272=\316\34\312" + "\241\34\312\304!\32t(\207r(l\35\4N\7\25\253<\216\7\61\307rl\220\263\70K\303\64\254" + "f\241\6N\11\17\253<\236\341\316\313\60\344|\34\16\2N\12\27\273<\336\34\313\261\34\313\261A\316" + "\261\34\313\261\34K\207\203\0N\13\26\253<\216\7\65\307rL\207\222\34\211\362(\317\261\34K\1N" + "\15\31\273<\216\7\71\307r(\207\224\70\211\302(\213\262P\314\261\34K\1N\16\31\273<\276\34\313" + "\261a\320r,\307\206!\307\222a\210r,\307\362\11N\23\30\273<\336|\30\344\34K\207\203\230C" + "\303\220C\261\222C\71\230\1N\24\20\272=\256a\354\70\214}\34\306N\303!N\26\30\273<\336(" + "\214\212Qi\70H\215Q\61*FC\230c\71\66\34N\32\33\273<\316(\217\362(\322\242JT\311" + "\222(\311\222H\216\362(\217\262\341 N\34\30\272=\316\34J\207C\226\304Q:\14r)\311JI" + "\230e#\0N$\32\273<\216\7-\312\243t\70%QK\324b\211\244H*Fy\24+\0N%" + "\31\272<\236\341\230\204Q\22UZ\223p\270\344P\16\345P\216\344\20\0N*\26\272=\316\34\312\221" + "r\26Fm\231\230C\71\224C\71\224\2N-\26\271=\316\34\11\207C\226i\231\226\15\7\255\230#" + "\71\22\2N:\31\271=\236(Nr$\34\216Y(eQ\222EI\224&Y\244*\0N;\26\273" + "<\316\34L\207\203\232c\71\26\17\347\34\313\261t\70\10N>\30\273<\236(\314\242\322p\320\252Q" + "-\31\224b\65\36\316\71\226\2NE\25\273<\316\34\313\241A\15\333\261\34\312\241$\317\322\222.N" + "H\25\273<\336\34\313\241\34\312\322\260w(KK\303!\312\3NI\27\273<\316,\214\212Q\261\234" + "\305Q\216\324\241\34JbM\322\5NK\27\273<\316\34\214\207;\224C\71\224C\71\224#:\22\305" + "\341\60NN\30\273<\376i\230\243,L\242\64\251\15\7\65\307r,G\352P\14NP\27\272=\356" + "iPs(K\263t\270\306Q\222\225\222\60\13E\0N]\27\272=\276\34\312\241x\30\342(\216\342" + "(\315\322,J\302H\36N_\33\273<\336\34\313\243H\213\226l\310\222)+%\265\250\30\205Q\236" + "\15\203\0Na\21\271=\316\274\226\15z\326\64\14yY\234\1Nf\32\273<\316,\16\225aP\302" + ",\316\242\341 \246a\32FI\232\305\61\0Np\30\273<\216\7\35\312\242j\22gy\224\16\7\65" + "\207\222X\223t\1N\206\22\271=\216\367\262\236#\71\222#\71\22'y\12N\211\30\273<\276\34\33" + "\324,\35\316Y\62\34\324,\32\316\71\226#+\0N\213\27\273<\336t\70H\215Qm\70g\311p" + "P\263h\70\347\310\12N\214\14\213D\236\341\316\77\16\7\1N\216\27\273<\236\341\234c\71\226\16\7" + "\65\307r,\307r,GV\0N\221\24\273<\256a\310\271\17\7\61\207r\254Z\33nq\2N\222" + "\30\273<\216\7\61\307rlP\303\64L\303p\330\261\34\313\206\203\0N\224\26\253<\236\341\234c\71" + "\226\17C\234\305Y\234\305Y\64\34\4N\232\31\253<\236\341\232\344H\65J\242,)eIc\322\234" + "\344Hq\70\10N\233\34\273<\276(\217Z\224Z\22II)K\22%\33\302!\207\207!\207\207\203" + "\0N\244\27\273<\336t\70\350x\226\326\222,\11\263<\311\241\34\61\252\3N\247\27\273<\336x\70" + "da\34\245\303)\307r,\207r,\207r\14N\254\26\273<\336t\70\350\360\60\204i\230\206\303\220" + "\227j-\231\30N\256\25\273<\336t\70h\345A\307\207w(\33\344,\15\243yN\262\26\273<\336" + "x\70fy\22\16\7\65\36\316yTk\311\304\0N\272\26\273<\336\34\313\261\34\313\261\34\313\241$" + "G\352YZ\322\5N\277\32\273<\276\34K\6-\15\213Z\230dq\224Gy\222FI\32E\303\0" + "N\300\30\273<\276r\226\206i\30*\303\240\204i\230\206i\230\206i\230\1N\305\33\273<\276\34\33" + "\206,\312JY$eI-\11\263$\254fI\30e\225\64N\312\30\273<\336\34J\362,\215Jb" + "\244\303\303\220C\71\224c\71\224\2N\315\34\273<\256d\330\242\254T+e\225a\13\223,L\262\60" + "\211\322$\312\222\326\4N\316\26\273<\276r\26gq\26gq\226&\215I[K\26\226\3N\326\35" + "\273<\276r\226FI-J&eH\232\222Z\224\324\242D\214\222\250\61\312\6\1N\343\31\273<\276" + "(I\243Z\71\33\24eL\262\70\213\303\64\214\252I\24\13N\344\31\273<\336\34\313\241$\317\322\250" + "$F\322\60\344P\236\344P\16\206\0N\345\30\272=\376(\216jQ\26\325\242rT\213\222\60\22\223" + "b\226\211\1N\352\34\273<\276(\317\222,\211\222,\11#)KJ\305,\11\253Y\22FY%\15" + "N\354\35\273<\256z\226,Q\222%Q:\245I\224&Q\232Di\22\245I\224&Q(N\366\32" + "\273<\276rR\215\222\64\31\246\255\22\246\311\60Da\32\246a\32f\0N\367\31\273<\276(\217\324" + "\250\70*RKT\214\212Q\61*&Y(F\0N\373\32\273<\276PL\326\60\15C\61K\222a" + "\210\302\64L\303\64L\243A\1N\375\34\273<\276\60\215\222\60\213\262(\213\224T\211\6\255\224\225\262" + "R\26e\225L\1O\1\27\273<\336\34\323\221(\16k\321\20\346\321\32\345Q\36\245\303!O\27\27" + "\273<\336\34\313\241$\317\322\222\222%Z\71K\223\266\226,\15O\30\33\273<\276\250\30eQ\26\17" + "\27-L\62\65S\243$\215\222\250\22\225\304\1O\32\27\273<\336\34J\362,-)\203\242\63\15\327" + "\34\12\303aP\0O\37\33\273<\276r\226&\303\20\205\241\64(\305\64\31\206(\214\212Q\61\221\302" + "\14O \30\273<\276r\226F\303\24\206\312\60(Y\34\15S\234U\302j\11O$\34\273<\276$" + "G\352\321\60%Q(fI\64LaT\214j\245\226(\11\23\0O\64\31\273<\276\262\324\245\26\206" + "\322\240\24\323\60M\206!\12\323\60\15\63\0O<\36\273<\256\70KJY\22%Y\22%\221\22&" + "\215Y\22fIc\42iZT\322\2OF\33\273<\276\34K\6-\312JY$\15J)+e\245" + "A\313\261\34K\206!OM\31\273<\276(\317\322\34K\206!\321\221R\326\224U\302\64\254&\303\20" + "ON\37\273<\276P\34\324$J\223(T\242,I\206!J\242\64\211Z:%J\42%Y\22O" + "O\33\273<\276(\317\322d\30\242\60\24\263$L\243A\13\323\60\15\323d\30\2OS\33\273<\256" + ",\316\322d\30\242\60\324\306(\251%QI\253D\203\26\246a\10OU\36\273<\276\34\33\6)\216" + "\224!\351\224dI\224d\311\220dI\224dq\26g\251\2OY\30\273<\336\34J\362,-)\203" + "\242\306\303\71GZ\243Z\244%\0O\134\32\273<\276$G\352\321\60%\325)L\262!+gq\66" + "HY\234\205\0O`\34\273<\276$G\352\321\60%i\42fI\224\324\242\244\226D%-*F\65" + "\15O\177\35\273<\276\362\60Ha\232\14C\242D\221\222\14C\224Di\224\244Y\34%\342(O\233" + "\33\273<\276$J\223(\214\212\311\60$RKT\34N\71\26\25\223\60\223\3O\235\35\273<\276(" + "\317\322d\30\242\60\324$%Jj\211\24*Q\30e\245$*i\1O\277\36\273<\256d\30\242\60" + "M\206!J\242\212\62\14J\251e\30\242J\232\305Q\222n\3O\335\34\273<\276d\20\223\254\224\225" + "\6I\314\222d\30\242\60\315\306(\251%Qc\6O\341\34\273<\276(\317\322d\30\242\34\222\6\245" + "\216E\203\226c\321\240EYiP\0P\22\36\273<\256<\32\246$\312\222\246$\71,\265(\251E" + "IeXjQR\233\222D\24P\31\35\273<\256h\10\323,\31\6\245UI\6)\221\302d\30\224" + "Z\230DI\326T\15P<\34\273<\276\362\60HY\34\15\222\224%\245A\213\262\322\222E\311\26e" + "\225a\10PG\36\273<\256\344\224\324\242\244\26%\27%N\222S\222%Q\262\224\222\60K\62-\211" + "\12PO \273<\256\60M\206!J\322(\31\206D\211\223d\30\242\244S\62\14Q\322iiJB" + "\1PZ\35\273<\256$\13\223\254\224e\303S%\252(Q\262\224\222NI)K\226R\230\5P\134" + "\33\273<\256,\36N\71\24\15S\61Q\206A)'\321\60\245a\32f\33\0Pv\37\273<\276d" + "\20\223\266h\320\242\244$\15J\61M\206!J\242\226H\211\222!\252\204\2P\250!\273<\36\61J" + "*\203\224&\321\62\14J\26&\321\20%\211T\211\206(Q\242J\324\70$\0P\317\37\273<\276h" + "\10\223(L\206!RJ\211\64\14IVJ\224Z%L\224\255RJL\0Q\77\27\273<\276r\26" + "gq\26gq\26gq\226\206Q\222F\372\0QC\25\252=\236a\320\351\303!\213\342(\315\322," + "J\302H\36QE\30\272=\336p\70\204\71\222e\303 FI\30\305Q\232E\265h\35QF\32\272" + "=\276(\213ZJI\224Dj\224JS\22ER\65\213\222\60\222\7QH\31\273<\336<\312\207A" + "\312\322\60\35\16Z\224Gy\224EY\266\16\1QI\27\273<\336\70k\252\247\303A\213\362(\217\262" + "R\26e\331:\4QK\31\273<\336t\70\250\371\60\204i\230\206\303\20'y\224EY\266\16\1Q" + "Z\31\272=\236\250\230\324\206\203\216(\303\22\205\341\260&y\222E\265q\10Qe\27\273<>\35\314" + "\261\34\313\241$G\352Y\234\245\265<\311\241\0Qh\30\273<\336\34J\362,-)\203\242\346X\216" + "\14:\222c\361p\1Qk\24\253D\356<\312\243<\312\263\70K\213i\226'\71\24Ql\30\273<" + "\376\70\213\303j\30eQ\26j\71\26\305a\70\14b\232\0Qm\24\273<\316\34\314I\303Ag\314" + "\342\260\34\345\210\16\5Qp\21\273<\256\264\26\16w^\206!\347>\34\4Qq\26\273<\276r\26" + "\16\307,\316\342,\33\16:\236\245\265<\1Qs\25\273<\256\264\26\16\347\34K\207C\234CI\236" + "\245%]Qt\26\273<\316R\326TLs(\33\16:\236\305a\71\312\23\0Qu\25\273<~q" + "\220sl\70\205i\230\206\331p\320\252%]Qv\26\273<\276\342p\314\342A\316\342A\316\262\341\240" + "UKz\2Qw\32\273<\256a\10\323p\30\302\64\34\206\60\15\207!L\243\341\240\325\326\1Q\205" + "\26\272=\316\34J\207\203\26j\241f*)a\242#:\42\17Q\214\36\273<\236!\31\242J\324\22" + "\265D\311pP\242$j\211Z\242\226\250%J\242I\1Q\215\31\273<\216\7\65\37\206\60*\16C" + "\30\25\243\322p\220\322\60\15C\11Q\231\33\273<\236\341\220\344\210\224\206\303\232c\303\220c\321\60$" + "\71\226'\71\224\1Q\233\30\272=\216\7\35\11\343a\20s$J\207A\16\207C\232C!\0Q\234" + "\32\273<\336x\70$Y\250ia\224G\65)\311\222\254\224D\251\250\305\1Q\245\31\273<\216\357\220" + "\62\14I\224\206\303\20\246\341\60\344\351p\320j\353\0Q\262\32\273<\236\264\230&\303\20F-QK" + "\24\35\206$jI\303\64\307\62\0Q\263\31\273<\236\60\316\342d\330\243\254\224\225*\303!L\263$" + "\214\262J*Q\265\35\273<\216l\230\212Q\61\15\263d\330\242$\323\222\60K\302,\211\222\250\245\66" + "\4Q\267\32\273<\216\264\230CI\232d\241\24)i\30\15K\36\205[\234\203\21\0Q\306\35\273<" + "\316$\314\242\60\32\206$\221\362(M\206-\211\62i\230\32\243b\64\14\1Q\340\27\273<\276A\316" + "\342,\316\342,\316\342,\316\322\60*F\363\0Q\372\26\273<\336\70+e\245\254\64\234\323\60\24C" + "\61\24\303\341\1Q\373\26\273<\336\34\213\207s\216\245\303A\215\263RV\312J\303\5R\6\30\273<" + "\276r\226\26\323,O\222aH\302,\316\322\260\32\211\32\0R\7\33\273<\256\34\213\206)\214\242)" + "\32\302\250\30U\242\222\224EY\65\254)\0R\12\30\273<\236A\314JY)+\15\247\254\224\225\262" + "R\26gq\26\16R\27\31\273<\236a+g\245hH\242\226(\221\222\310T\214jq\224\317\3R" + "\30\36\273<\256<\213\207A\251FI\324\222iI\230%Y\22%QV\11\223DG\22\0R\31\26" + "\272<\236AK\262\244-\351\377\377[%J\302$\313\344\1R\32\36\273<\216C\246&\211\226T\246" + "\244bJ\22\251\222(]\246\244\242fZ\222\211\321\0R\33\33\273<\276\70S\243\226b\222(C\224" + "D-QK\264%QV\312jC$R\35\33\273<\236\34\214\206\203T+\25\243D\211\42E\213*" + "Q[\251\30%\231\2R \33\273<\216eS\272(]\224.\303!Q\272(]\224.J\233\322\246" + "X\6R$\35\273<\216\250\226\224\222\236\222,L\222AJ\262\60\31\6\245\26&Y\34\345\363\0R" + ")\35\273\34\273<\256d\330JY)\31\224b\226LY\251\30)" + "-R\226fI\26i\1W@\35\273<\256\60\15\323\60\33\226\64J\206\250\222FI\32%\351\220d" + "Z\22\17\203\0WG\33\273<\256,\316\342h\70\304Q\61\312JI\226DZ\264i\71\226#\12\0" + "WP\26\273<\336<*F\305\250\226\364\266\245\361p\316\261t\70\10WW\34\273<\256\60\15\323h" + "P\6)\311\302$\13\223,\31\206H\313\304$\317B\65W[\32\273<\256\34\213\6-G\206\34J" + "\206!\12\323,\226B\255\70\14b\32W\203\32\273<\256,\16\323h\70\350H\224\225\262\246l\211\22" + "\61\311\261x\30\2W\316\32\273<\236X\212\223\322\360VZ\232\222.J\42)MJ\242\324*RV" + "W\337\33\273<\256TK\223(\31\16be)%\235\222E\23#M\251I\211\234\5W\372\30\273<" + "\276\342p\314\342%N\346,\33\16R\223\62(j:\34\4X\203\35\273<\256\60M\206!\312\222h" + "\70H\265\322\240EY\246\14\212\230\344Q\222\211\2X\223\32\273<\216\7\61J\207!L\303a\10\323" + "h\70HM\312\240\250\361p\1X\231\37\273<\236\64\214\206!\211J\203\322\24\15C\222c\321\60$" + "C:%K\230\64\16C\0X\236\33\273<\256ZK\230\14O-\311\22%Q\313\60D\265L\31\24" + "\255<(\0X\353\27\273<\336\34\313\261\34K\207\203\232c\71\226c\71\26\17\27\0X\360\31\273<" + "\336t\70\250\371\60\350\370\60hQ\226\15\203\226C\71\224c\0X\363\26\273<\336t\70\250\371\60\350" + "\350\360\16e\203\234E\305h\36Y\4\32\273<\256\60\15\323!I\243D\253\364\324\22\305Y\232Da" + "&\306C\0Y\7\31\273<\276\34\33F-\214v$Q\305\341\61*\16C\30\25\207!\2Y\15\33" + "\273<\256\34\33.j\224\14C\230\206\303\220\346\320\60DR\35\21\7i\10Y\17\31\273<\216\7\65" + "G\206\65L\247\64\31\322\60\34\206,\252\205\362\64\4Y\26\33\273<\256\60\15\323!I\243$\314\22" + ")\211\222\242T\214\342,\15\253\31\0Y\32\27\271=\316|\320\302(\211bU\311\244A\13\23%\212" + "\245A\4Y\34\34\273<\336t\70hQ\36\15Y$EJ\224T\224(\314\222\260\232%a\242\11Y" + "\37\34\273<\236\64\34\224!\311\214Ii\211\262$\31\226N\311\242T\263\70J\25\15Y'\26\273<" + "\336\34\313\261t\70\250\71\226CI\216\324\263\264\244\13Y)\26\273<\236\341\234c\71\226\16\7\65\207" + "\222\34\251giI\27Y*\30\273<\336\34\313\261t\70\250\71\224\344H=\213\245\64*i\231\0Y" + "+\25\273<\336\34\213\207s\216\245\303A\315\241$\317\322\222.Y\61\27\273<\256z\224\17\203\224\345" + "X:\34\324\34J\362,-\351\2Y\64\27\273<\276(G\312Y\36\345X\70\34\344\34J\362,-" + "\351\1Y\71\26\273<\336x\70\347Q\65\251\15\7\65\207\222%-Je)%Q%\212\0ZZ\37" + "\273<\256h\320\242\322pP\232\262$\221\224rR\31\264(\313\224A\212\264$\34\24\0[P\30\273" + "<\256a\310\241\34\312\241\34K\207\203\232c\71\226#u(\6[W\30\273<\336x\70$\71\42\15" + "J\236C\351pPs,\307rd\5[X\31\273<\316x\70h\71\224\14[\232\211Y\62\234\302\64" + "L\303\64\332\0[f\30\272=\236(+%\321p\320\221h\330\221\34\11\207C\232C\371\10[i\33" + "\273<\216A\212\223a\12\323,\312\224!\32\243Z\224E\305J[%\22\3[\203\30\273<\336x\70" + "$\71\42\245a\216E\353\216\344X\234\305\341\60\4[\211\27\273<\336x\70$\71\242\205i<\34\264" + "\252\226\357H\244\255\2[\214\32\273<\336x\70$\71\42\15J\16\17\207\60\311\243<\312\242\254\222\16" + "\1[\230\32\273<\336x\70$\71\42\15CX\35\326\34\33\206\60\15\207!L\23\0[\232\32\273<" + "\336x\70$\71\242#\331\60\310y\224GC\30\305I\65\33\206\0[\235\30\273<\316\34L\207w(" + "\32\206<\307\362a\310\223\34\211\242\341 [\236\30\273<\356t\70$e-\211\262z\224\16\207\70\207" + "\222<\313V\1[\242\30\272=\316t\70Hi\64lI\224e\262$\15\207(l\34&\0[\243\31" + "\273<\336tx\207\242a\310)\303\20\246\341\60\204i\70\14\321p\20[\244\30\273<\336tx\207\224" + "aH\302\34\312\322A\311\363a\310\323\341 [\264\31\272=\316t\70(a\242\14K\24\206\303\234\16" + "\207(\213\207l\310\6[\266\31\273<\336tx\207\224aH\262$\253\264F\242\262\244QI+\252\0" + "[\271\30\273<\336tx\312\242nQ\22\205YZR\6E+g\361\240\1[\275\32\273<\336tx" + "\312\242d\70f\351\60\204Q\61*&\335\242l\10\207\0[\304\32\273<\336tx\14\225aH\262\332" + "p\320\221p\210\302\250\70D\71\62\1[\306\31\273<\336tx\253\364\26\65&Q\62$\203\222\346Q" + "\61*\16C\4[\314\30\273<\336tx\207\242aH\7\71\13\207SV\32NYi\270\0[\337\34" + "\273<\336tx\311\62eH\206D\211\222(\11+C\222\350H\62\334\242\222M[\371\33\273<~$" + "\32\302t\70\205Y\22\226\212Y\222%a\226\204Q\232\344P\6[\374\32\273<\256a\10\323p\30\222" + "(\317\206A\317\206\203V\217\362(\207\64\0\134\6\34\273<\256,\216\6\245TS\22\65K\302\250\246" + "\14\203\22\25\263$L\303P\2\134\17\27\273<\336\34\313\261<*FY\224\225\262P\254\346H\35\212" + "\1\134\21\31\273<\336\34\313\221R\232d\245\60\311\242<\311\241\34\312\21yG\0\134\24\27\272=\256" + "\34\32\6%\27\243\270\224\204Q[T\313\304,\33\1\134\61\36\273<\276\332\260\324\221(\31\16I\224" + "\324\206\244\32%Y\242\364\242$R\245\244d\2\134=\31\273<\256a\10\323\60\15\207!\314\342\260$" + "ea\224Dj\35\14\1\134>\33\273<\256a\320\342l\30\264P\34\344l\310\6\71\33\262AK\302" + "L\35\4\134@\34\273<\256a\320\342l\30\264\34\33Ny\224\14Q%\252DC\224D%]\1\134" + "B\33\273<\256a\320\342l\30\264\34K\206-\307\206S\26G\265(L\262a\10\134E\34\273<\256" + "a\320\342l\30\264\362p\312\342d\330\222\60K\302(\32\226,L\0\134O\30\273<\256\341\224G\303" + ")\11\263\250\70\234\32\207S[\224E\305\10\134U\30\273<\236\341\224G\303\251q\70\65\16\207\244\324" + "\222I\225\250$\12\134^\36\273<\236\341\224G\303)\217\222a\13\323d\30\242$\252$\303!\311\62" + "%\31\22\1\134q\26\271=\316\34\11\263L\313\264L\313\264L\313\264l\70\350\1\134\201\30\272<\236" + "\254\222U\206c\16\15[\232(Y\234\344H.\16\61\0]\26\31\273<\256\254\224\225\206S\26'\203" + "\230\305\303)\213\223a\12+\303\1]\336\34\273<\276\70\213\262R\226$\246\244\242$R\245\26e\245" + "\254\224EY%G\2]\345\24\233D\236\341\234c\71\226c\71\226c\71\226\16\7\1]\347\30\273<" + "\336\341 \245a\232\305\331 \345\321\272#\71\26G\71\42\1]\356\30\273<\276\60\216\262\341\240\306\303" + "\65\36\16Z\16%\203\26V\206\3]\361\26\253<\216w,\307\262a\320r,\307r,G\352H\64" + "\34]\362\26\252=\216\203\16\345P\71\32\6)\207rDGt$\31\16]\364\26\252=\216\227\254\222" + "U\262\312p\311\241\34\312\21\35I\206\3]\376\27\271=\316\34\11\207C\226i\231\226i\231\226$Z" + "\224\346H\10^\1\27\272<\376\341\220#\351p\311*Y%\253dI[\24\347P\10^\2\30\273<" + "\336\34K\207\203\232\17\203\26e\245\254\224\225\222ZTO\1^\3\31\273<\316\34\213\207\203\26\345Q" + "<\14R\22U\242\306\250\30%z\10^\10\37\273<\256d\30\224\60K\302,I\206A)EJ)" + "RJ-QK\224(i\26g\0^\14\30\272=.iU\247\65\35\16Y\22\17C\62\325\242Z\224" + "\310!\0^\26\35\273<\256\64L\243A\33\222Z\224\324\242\244\62,m\312\222EY)\33\244\254\0" + "^&\31\273<\256\246\341 \65F\245\341\61T\206!\211\32\243b\224\350)\0^.\34\273<\276\34" + "\31\224!+%\203R\314\242aH\206\250\22\16\267(+Er\12^\70\31\273<\256\266\341\220\344\210" + "\64,Y\230\16{>\14Z\224\225\42\71\5^=\37\273<\256h\230\212\303\220X\22Q\251\14I\247" + "\244eH\222%\312\262!+e\331\220\0^E\36\273<\256h\230rdP\206\244S\322\62$\315I" + "\62\14\312\220D\245a\252D\245a^U\34\273<\216\7\255:\14a\32\16C\230d\321p\320\222(" + "\32\16Rc\224H\0^r\27\273<\236\341\234c\71\226\16\7\65\307r,\307r,\307R\0^s" + "\27\273<\236\341\234G\325\244\216\244\303A\315\261\34\313\261\34K\1^t\27\273<\256\34\33.a\65" + "\36\6\255\234\205\303A\316\261\34\13\1^v\26\273<\256\264\26\16\307,\316\342,\33\16Z\71K\303" + "j\6^x\26\273<\336x\70\247\303A\253'\351pN\207\203\232c)\0^{\34\273<\256\34\213" + "\206)O\242\64\211\322A\216\362(I\223,\34\206\244\16E\0^\177\27\273<\336\34L\207C\222c" + "\71\226c\71\226c\71\224c\71\6^\217\30\273<\336x\70$\71\226\14[%\254\16\207$\214\212\325" + "\60\33\1^\224\30\273<\336\34L\207C\222cMI\324%j+Gq\26\15\203\0^\225\34\273<" + "\356x\70\345X\62lI\224&\303\20%Q\232da\322\223\222lQ\1^\227\32\273<\356x\70\345" + "X\71\33\262r\62lI\230%a\24\15K\26&\0^\234\33\273<\356t\70$Y\251\30U\6%" + "\21#\245\324%*&Y\224\324J\0^\246\31\273<\336x\70$Qq\70\65FC\230c\311\260E" + "\265PL\246\5^\255\36\273<\356t\70$\71\66$\203R\314\206dP\242,S\262J\64Ly\222" + "\14C\0^\366\35\273<\216!\325\222!L\263\70\32\222hK\242\226(KJa\64,\365l\30\2" + "^\372\34\273<\356p\31\266Re\70hQ\226\14K-U\206!\312\322$\12\263a\10_\0\27\273" + "<\236\341\230\305Y\234\305Y\66\34\264j\230\206\325,\316\0_\17\31\273<\356$G\242<\34\16r" + ":$y\224gq\26eZ\62\304\2_\25\31\272=\216[\232\245Y\62hI>\14Y\232\245Y\232" + "EI\230\245\1_\37\30\273<\276z\222\16\347,\33\6)\213\207C\226\204Q\313VN\1_ \32" + "\273<\216)+e\245\322-L\243\341 %i\224\244QK$\325\302\0_:\35\273<\216i\320\242" + "\254\64(c\226\15\203\26EC\22\265\14[\30\25\207i\210\2_S\26\271=\316Z%\252%\245\341" + "\216\344H\62\14:\222#\303!_U\33\273<\256a\310\261p\30r,\32\16R-L\224XI\225" + "(\322\62Q\5_b\33\273<\236a\213j\245b\24\16\203\224E\305(I\243\60\252EYT\334\0" + "_i\33\273Q\321\266\60\35\222\64J\6%J\242hH\242bT\214j\225,L\0b" + "K\27\273<\356!\32t,\36\316\71\226\16\7\65\307r,\207T\0bM\27\273<\376\34\13\207C" + "\254#\365(\316\322\60Ss\244\16\205\0bS\32\273<\256\34\213\206\203\26\246a\222\205b\246FI" + "\32\246a\32m\23\0bk\32\273<\256\34\213\206\203\32\345Q\222F\322\240\350J\36\345Q\64\334\21" + "\0by\35\273<\256\306\250\64LaT\211\222aS\242Lj\211\212Q\242D\221\222\14Q&b~" + "\34\273<\256,\11\263(\31\16R\26'\245L*iI\224\204i&u\31\222Pb\177\31\273<\256" + "a\207r(\34\16ZT\34\206\60\312\242\341\224\205bm\5b\200\33\273<\256\60\15\263\341 \205i" + "\62lJ\26IYRK\302j\226D\213&b\204\33\273<\256\60\15\263AQ\262(\211*Q\252E" + "\211\230\264\206\325,\134T\0b\212\35\273<\256\34\213\6eXjQRK\224\232\62HR\232Dy" + "\24F\305!\32\6b\225\36\273<\256l\310J\311\240DY\224II\216(\203$eI-\11\253Y" + "\22-\232\0b\227\34\273<\256,\16\263\341 \345X\64\204J\224I-Q\61\252DI\226\14\252\0" + "b\244\32\273<\256\60-\15\311\60\25\243b\244\14\213\224&Q\36\345I<\344\0b\245\35\273<\256" + "h\320\242,\31\266R\42&\272\62,R\322)\251E\305(\251LZ\0b\261\36\273<\256z\64\34" + "\324(\32\222\250%R\242$\221\206D\211\42-\12\243\342\220\15\2b\311\33\273<\256,\16\263\341 " + "\345X\234)Y\244EI-\11\323\260\266\14C\0b\322\33\273<\256h\230\252\303\36\15Z\242eJ" + "\26I\203R\312Jy\224N\303\0b\333\32\273<\256h\230\302h\230\32\243J\311\22k\303\222\225\262" + "R\66\14Z\1b\345\36\273<\256d\30\242$\212\206\251e\30\242$*M\25e\30\224RK\324\22" + "E\203*b\377\26\273<\316=\313\226[u\30\362|\30\362t\70\250\71\244\2c\1\35\273<\256\60" + "\215\6e\220\322\60M\206!\22\63e\30\224\250\230%a\32\215\22\0c\7\35\273<\256,\316\242a" + "H\306\254\224$\203\244#\332\260d\245l\220\262l\310\6\1c\11\34\273<\256\60-\15\7\251\22U" + "\242T\31\26-JJR\26\212Y\22-\232\0cn\35\273<\256h\230\212\303\20F\321\60%R\250" + "\14\213\324\22\15S\262)mIi\20c\211\34\273<\256\60\15\207S\32\15Z\242e\312 IYR" + "\32\264\60M\206C\230\1c\222 \273<\256,\11\263$\32\206d\312\222\60K\302AY\264$J\262" + "$LNY\22mI\4c\245\34\273<\256\60M\206\203\222\265\204\311\60DZ\250\14\203\222EY\244" + "\204\225\344\26c\247\33\273<\256\60M\206\327(K\302(\313\326D\32\224b\32\246a\266\14C\0c" + "\250\32\273<\256J\32\225\206d\230\32\23)T\206Ej\211\206\251\61*\35\6c\317\36\273<\256," + "\11\223\341 %a\216E\303\244\224\22)\211\224h\230*Qi\70\205\1c\320 \273<\256h\320\242" + ",\31\16Y\224\225\6MG\224aP\242$\215\222!J\22m\310\206\0c\322\37\273<\256T\213\266" + "!K\223a\210\302T\251X\242HI\224DJ\242\226(\32\222a\10d\34\35\273<\256J\232(\311" + "\60D-J\42%Qi\270\210Y\222\14[T\314\264E\32dD\36\273<\256d\30\242,J\6e" + "\310JY\222\14\231TR\206A\351\251Vi\31\264(dX\36\273<\256\60M\206\203\224\204\311\60D" + "IT\32^\242\226d\211\222NI\262$J(dx\36\273<\256,\11\223\341 %a\64hQ\226" + ")\203\62e\331p\12\263$K\62E\23d\222\37\273<\256\244q\30\242\245\62\15C\22%]\224%" + "QzJ\226RRJ\372\242\14Q\0d\255 \273<\256tJ\206lH\332\222a\210*\265)\32\222" + "a\210\222\250e\30\242$\252(\303\20d\316\32\273<\216K\232D\303K\224\224\262\245\242\15C\34\17" + "\207\64\35\16\242\12e\66\36\273<\276(\217\302(\32\246$K\42%J\242\226DJ\42%+ej" + "TL\302\0e\71\31\273<\376l\220\362d\20\265hH\242bT\214\252Z\222\331\242\222\30e> " + "\273<\256\60\316\262a\31\242,\312\242\244\66%Y\22%Y\222\225\42-J\242$J\302\0e\77\36" + "\273<\376lX\342l\310\42%J\226R\222%Q\222%Q\22f\311\24\215I\254\5eE\33\273<" + "\276r\226\15\313\220U\302\250\64(\245\226\250V\312\262!J\242h\13eY\34\273<\256J\66,i" + "\22\15/a\226D\203Rj)-\245\61\315\222h\312\2eb!\273<\236!\212\263lX\206$J" + "\224h\210\222\250%\32\242$j\211\222)Z\242$M\262\0ec\36\273<\256$\12\7%M\242\341" + "%j\211\206(\211Z\242!J\242Z\251\22%J\26ep \273<\216()&R\66,Cd\211" + "\22))%-\303RK\242$R\262\64K\222[\0et\32\273<\276\332pPz\32\244pJ\242" + "$\321\222\341\234GC\30\245\303Ae\207\26\273<\316\34L\207\203V\316\342,Or\244\16\345\210m" + "\35e\227\26\273<\276z\224Gi\30gq\226c\303;\226c\71\226\1e\231\34\273<\256\64J\22" + ")\233\222\60\215\206)\314\222P\134\224AJ\322\60\15\323\10e\244\26\273<\376m\220s,\307\206S" + "\230\206i\230\206\325,\316\0e\255\37\273<\276tH*R\62eQ\226\15\313\240hIbJ\22\245" + "\247,I\6%\212\263\4e\257!\273<\236(\34\6E\213\212C\24F\321\220\14Q\22\265$\303R" + "K\242$\312\244$\314\22\0e\260\35\273<\276t\30\24\255\222&Q\66,CVI\206\245\230%Q" + "\322S\233\222%\0e\271\27\273<\316\34L\207\203\230c\71\66\250a\32V\263\70\12\67\0e\305\33" + "\273<\256,\217\206\347(\322\26\65\351\224T\264\244-J\242\226(\211\24)e\317\35\273<\256,\217" + "\206\203\236\305\313 %R\230d\245aH\242,JJI)\321\2e\340\30\273<\236\341\234c\71\226" + "\16\7\61\311\221z\224GY\224e\353\20e\345\15\247>\216\203j\35\256\326\341\32e\347\27\251=\216" + "h\30\242P\12\245P\32\206(\224B)\224Bi\30e\351\31\273<\256a\10\323p\30\302\64\34\206" + "<\307\322\341\240\346X\216\245\0e\366\34\273<~$\32\302(\32NaT\211\242!J\242\226\250\30" + "\25\243!\314\221\11f\16\31\273<\356\341\224I\65)\32N\231T\223\242\341\224\245a-\211\324\4f" + "\23\33\272<\256a\310\322l\30\262\64\33\206,\207\206A\211\222H\352-\211\42\5f\37\32\273<\256" + "a\10\323p\30\302\64\34\206\60\212\207K\230\17C\236\16\7\1f%\32\273<\336x\70\244\371\60\250" + "\361p\220DE\231\222,\31\322\60\35&\0f/\30\273<\276a\15\323a\15\323a\207\207\203T\217" + "\206,\251f\303\20f<\32\273<\256a\10\323p\30\302\352\60d\352\220\14C\230\206\303\220\303\303A" + "f>\34\273<\256a\10\323p\30\302\64\34\206\70I\243$\312\222R\226\64'\341p\20fZ\35\273" + "<\336t\32\242\244\224%\303\240,\245\244SR\31\226\232\66%Q\30\325\262!fh\36\273<\256a" + "\10\323p\30\302\64\33\16I\216%\303\20\345\330pHJI\24I\13\0fn\32\273<\276\342p\252" + "DY\322\64\34tx\30\302\64\34\206\60\15\207!\2fz\37\272=\236\34\32\222A\311\242a\220\42" + "iH\242$R\206!K\263a\310\322l\30\22\0f\362\27\272=\276(\216\262\341 \225\244\222T\32" + "\236JRixG\2f\364\31\273<\236\341\20\307\303\240\225\262a\320J\331\60\250I\16\345\210m\35" + "f\376\31\271=\256\332p\220\242\245e\70\344\330\60Di\64\14Q\32\15C\2g\0\33\273<\256a" + "\10\323p\30\302\64\32\16J\224\17\247J\24\15\221)\222'\1g\10\31\271=\256a\210\322(\215\206" + "!J\243\64\32\206(\215\322$L\344\4g\11\30\273<\316x\70h\71\66\214b\226\14S\61\35\326" + "\60\15\323L\2g\13\35\273<\236!\32\222\250%j\31\242!\211Z\242\226!\32\222\250%j\211J" + "\226Hg\15%\273<\236!\31\224(\311\222(\311\222!I\226(I\243dP\206$K\242$\221*" + "Q\222%\25I\221\2g\33\33\273<\256l\10\243\312\240\14Y)[\206,\312\242\341\234\17C\236\16" + "\7\1g\35!\273<\276lx\312J\311\240\14I\226D\311\240DI\226\14\311\240DYi\30\222(" + "\213\42\1g\37\37\273<\236(\32\16I\224D-C\64$Q\313\20U\242h\70$Q\36%QI" + "\224\4g*\26\273<\336\34\213\207s:\34\324\34\332\223jT\322\62\65\5g,\27\273<\336\34K" + "\207\203\270'\345\244\32\325Z\242AJs,\5g/\26\273<\336$G\242<\35\16j\16\355I\65" + "\252\265\204\325\24g:\34\273<\256\34\213\206\60*\15S\30\325\226(S\244J\324\22\25\223,\211\304" + "\1g@\30\273<\256\64\225rD\227B)\222\323\341\240%\325\250\244e\242\12gC\34\273<\256\34" + "K\206eH\262RV\312\242)\311\224\246$L\263$\214\262J\32gN\30\273<\336t\70hI\65" + "*i\231\66\350P\16\245\303A\315!\25gQ\33\273<\256\70\213\223A\31\244\70\232JJ\224\64&" + "Y\234\305Y\234\205\13\0ga\33\273<\276\34\33\306$\12\63\35)+\211\244e\322\60\244I\65*" + ")[\2ge\27\273<\336x\270E\325\244\66\34\324\34\332\223jT\322\62\65\5go\32\273<\256" + "\34\213\206\203\26V\265\64I\224HJ\42\245\324\230\206i\230\1g\177\35\273<\256T\213\266a\217\362" + "h\220\226,R\246\244\224\210I\26&Q\222)Z\0g\201\35\273<\256h\230\262(\31\224b\226L" + "Ye\312\22K\247\244\26\25\223(\311\244,g\227\32\273<\256\60\15\263\341 \205\341\26*\311\224D" + "IO\215i\230\206\31\0g\234\31\273<\256a\10\243\342\60\204Qq\30\362t\70\210{R\215JZ" + "&g\317\32\273<\256\64\254\15\312 e\245\254$\15\212RS\262RV\312\6)+g\320\30\273<" + "\276\332p\320\312\203\234\305\203\216\244\303AK\252QI\313\4g\345\31\273<\336t\70hI\65*\15" + "\7)\15\207!L\303a\310\341\341 h\7\34\273<\256h\320rd\320\221d\30\242\60\334B)\351" + "\224D\225\250\61\315\64\0h\17\34\273<\256b\224E\311\220C\311\60$:\264'\321\240\324\261\34\313" + "\261d\30\2h!\33\273<\256,\16\323d\70\350P\226dK\26)-J\226\204\325,\11\23Mh" + "\67\33\273<\256ZK\64\34\244\60\134\6I\314\222\60M\206!\12\323\60\15\63\0h\71\34\273<\256" + "h\320\242,\31\16Y\224\225\6M)%\226N\305\250\30%\265H\13h<\34\273<\256,\316\206d" + "H\262JcqJ\62E[\242A\213\262RV\32\24\0hH\30\273<\336txK\207\267(G\206" + "l\320\326t\70hIm\212\6hL\30\273<\336A\316\207!L\303a\10\323p\30\362t\70HM" + "Z&hc\34\273<\256\60\215\222hX\224,L\243a\231\23%U\242a\312\243<\212\206\1h\205" + "\34\273<\256z\64\34t$\32\244\245I\31\6%J:%\265h\230\342,\224\0h\246\32\273<\276" + "\60\32\224A\13\303iQ\22\245\230c\303\64\306J\216\250C\14h\257\35\273<\256ZK\30\15\312 " + "%Y\64HKQ\31\6%\223Z\242J\264\205\31\0h\313\37\273<\256,\312\242\341\240DY\66d" + "\245L\32\42\245\224T\206!\312\222\60\312*i\0i|\36\273<\256$\352R\31\262\64\31\206di" + "R\242H\11\323d\30\242,\312B\61\231\4i\375\36\273<\256,\11\223\341\245)\31\206(\351\64\134" + "\244,)\15Z\224\225\6-\312\22\0j!\37\273<\256,\11\223\341 %a\64hJ\26)\303$" + "eIe\30\242\60\315\222\60\321\4j\61\36\273<\256d\30\242$\35\226\246\244S\322IiR\242H" + "I\206!\312\222\60\24\223Ik!\30\273<\236\60\316\342hX\263J\224\206\231\32V\262\60\311\32\325" + "\0k\42\31\273<\356pP\6\61\311,\245$K\303TK\223\266()\205YZk'\33\273<\376" + "lX\262x\230\222LI\244\306\250\30%\265H\252T\243d\30\3k>\33\273<\276\332\260\304\331\220" + "\14I\226#\225!\313\261h\230\262\244\247\246%\14kL\36\273<\216K\36eK\64(m\303\240\304" + "Y\264dQRJ\222%J\322$\313\306\0kb\27\272=\336\34\312\241\70\212\243!\213\342(\216\342" + "(\216\302\341\20kc\26\253<\216\7\65\307\362(\217\6-\312\243<\312\243t\70\10kd\35\273<" + "\276r\26gQRK\242d\321\222,L\262\60\311\302$\213\222d\211\206tke\30\273<\336<\32" + "\264(\217\322\341\240\346H\255TKsD\34d\0k{\30\273<\216\7-\307\312K\324R\222\22\251" + "R\217\342,*F\363\0k\265\34\273<>e\323\222,L\262%Zrl\31\244\254\24&\321\220\205" + "\225,\322\4k\315\33\273<\256a\10\223,\214\212i\64\34\244$\13\243b\232\15\207\34\311\21\15k" + "\317\33\273<\256\34\33.\71\24\15k\22E\303Aj\314\222l\70\344H\216h\0k\322\30\273<\336" + "t\70\250\361pN\207\203\324\64\34\224,\312\206C\254\1k\324\25\272=\216\260\247$L\242!\321\302" + "\276(\331\226\251C\0k\333\27\273<\356m\320\261\34\33\262A\307rlx\307\302\64\214\7\1l\21" + "\27\272=\216\227<\311\223\341\222\245Y:\34\304R\222)Y\264\16l\24\31\273<\276\34\33\206,\207" + "\222a\312\321a\307r,\312\243\34\251C\2l\64\30\273<\336\34\313\261\312\220(iRN\252Q\61" + "\252\265DIX\6l\70\31\273<\336\34\214\207,\216\242!)'r\224\244Q\255\66%\71\24\3l" + "B\27\273<\336(\317\222\341\240\346Q\65\251\357I\65*i\231\250\2lI\32\273<\236\14Q\230\211iV\212\6\245\26\6l\341\37\273<" + "\236(G\312\331\60%i\226\14I\226DI\226\14I\42eR\65\211\322$\33\6l\342\34\273<\236" + "\264\230e\303\220DmR\232\14[\22&RR\213\212I\224d\212&l\350\32\273<\236\60\16\263l" + "\30\222Z\234\245a\32\15\212\32\246a\32F\303\20m\62\34\273<\236\250K\24iQ%\221\212\212\22" + "%\211)\211\242\251%j\211Z\312\1m;\32\273<\236X\213\266\70L\206A\253\206i\64(Z)" + "+e\203\224U\0mA\32\273<\216\264\62\14j\255e\30\262\70K\232\244\244\26%\235\222\236\42\1" + "mN\34\273<\236\264\62\14b\224%\221\234Da\22JMZ\224\225\262(\253\204\21\0mO\32\273" + "<\236(\215\212\322\220\64&\305\244\251%j\231\222\236\262DOr\1mj\34\273<\236\60N\206%" + "\13\243h\30\305,\31\266\244\66U\242\222\26%\265H\23mw\37\273<\236,\217\206!\313\223d\20" + "\223\266d\30\242$J\22\251\22E\303\220\344Q*\1m\210\33\273<\236\250\227\346\60I\206-\11\243" + "h\230\212\333\260da\222\205I\226\11m\330\35\273<\236,\217\206\321\224\14IE\311\242d\30\242," + "\233\222N\203RG\312\12\0m\361\34\273<\236h\30\242$-\325\242$J+\303\20\205\231\270UJ" + "\211TI\63\0n\5\36\273<\236\264\62\14y\26%\203\224di\62\14Q-\321\226(K\246\254\224" + "E\12\0n/\36\273<\236,\12\223aH\243\322\60(Ma\64h\211\224,\311\220\25\223,L\302" + "An\70\37\273<\236(\13\243h\33\264\332\222\14Y\224\224\262$\31\206(\211Z\242JT\262(\0" + "n\220$\273<\236h\30\242$\213\262dP\242$\313\224AJjQ\222\14C\224\225\222DJJI" + "\242DJ\0n\321\36\273<\236l\320\242,^\212I)\31\6I\311\244hP\264R\66HY)\213" + "\24\0n\341 \273<\236\60\11\223a\310\242$\212\206A\11\223\60\31\206(i\231\222NJ\242D-" + "Q(o\24\35\273<\236\264\62\14a*\15\203RK\243A\213\222\212\66HYR\312\6)\322\4o" + " \34\273<\236,\12\207kT\33\246b\226\14[\22&\312\60(\241\230EY\42\12on \273<" + "\236,:(\325(\221\206d)%\265!)I\311\240\14I[\224T\206\244-I\4pk\27\273<" + "\336\34\313\243\254T\214\222\60\313\241$G\352YZ\322\5po\30\273<\276\34K\206\245)K\264J" + "\30\25\323\60\15+YSY\2p\271\30\273<\336\34\313\261A\316\207!L\303\64\34\206\34O\242J" + "\26\25p\337 \273<\256h\230*QE\211\24e\30\222(\211\224(\211Z\224H\221\224HL\262a" + "\10\13p\355\36\273<\256,\34\222!\314\222PJ\62I\211\222l\214*\211\22\352h\22U\262\250\0" + "q\66\33\273<\256,\316\222Pj\32\6EJ\223\326(\11\243,\252*\245J\26\25qg \273<" + "\236\341\220D-Q\222%\203\26U\6%J\262dH\262$J\6\35M\242J\26\25q\212 \273<" + "\236(\211\222A\331\221,\31\222A\211\362!\211Z\266!\311\222(\31\224R%\213\12r\61\31\273<" + "~D\32\206$\213J\303ce\270\346\320\60&Q&\315\332\20r\66\27\273<\276j-O\242,\11" + "\263\70\313\223\34\312\241$\326$]r\67\27\273<\276j-\311\222t\326$]\32\206\70\213\223r\224" + "\307\0rG\30\273<\256\60\15\323\60\35N\71\226c\303\20\246a\232\305Q\36\1rH\34\273<\276" + "PJ\222\61)\17\207$\223jIiiJJYRj\351\244d\1rL\36\273<\236Z\230$\303" + "\322)\31\16I\226D\311a)%Y\62\14J\61*F\305\10rY\30\273<\236\341\220\307Y\32\206" + "\303!\326\221z\24g\331\230C\32\0ri\36\273<\256,L\262\60\211\206\203RQ\262\244$%\25" + "\251\242\224\332J\225\250\222)\0ry\36\273<\256\60K\242A\31\262J\230%\311\60Db\246\14\203" + "\22\25\263$L\303l\2r\257\36\273<\216l\230\222Z)\213\222Z\22%Y\246$ZR\215\222\34" + ")&\215Q\66\10r\302\34\273<\216l\30\222Z\32V\262R\226*\203\224d\245,\316\302$K\223" + "a\10r\354\37\273<\216(\13\223,\215\206\245\223\224\224\42\245\224T\206!\312\342,J\222a\220\362" + "\0s\213\27\273<\236\341\234c\71\226c\371\60\344\71\226c\71\226\16\7\1s\251\33\273<\356!\31" + "t$\307rh\31\246,\11\263$\134JbR\215\222L\24s\260\36\273<\336A\31\222\254\224\324\242" + "\244\62$mQR\213\222\232\224DbR\215\222L\33s\262\32\273<\376lP\212QV\251%[\232" + "c\321\60\215\211\230\344P\16F\0s\355\35\273<\356p\210\6)K\302\244iP\212I\62HIc" + "TT\242H\312\322h\20t\3\34\273<\376$\31\244\226a\210\302\64J\242AR\262P\314\224L)" + "M\315\32\0t\6\32\273<\316\341\251e\30\242$j\211\242\341)L\243A\323\62\65\37\206\0t\64" + "\32\273<\216A\31\244\64\273\245\321\240\14j\216\330\246h\33t(\207R\0t\334\34\273<\376mX" + "\243$\215\222\64J\322\250\30\25\243,\312\222R\66$\232\224\4t\343 \273<\236\60J\206eP\224" + "D\351\313\220$C\322S\322eH\222!\351)I\226\306$\1t\366 \273<\216,\31\224Z\66," + "a\222MIT\31\6%J\242DJ\242\226\250%R\246D\22u\32\31\273<\276\332p\320\312\203\234" + "\305\203\234e\303AJ\242T\14\207A\1u\37\25\273<\356Z\234\305\303%\254\346\303\220\347X\216\245" + "\303!u(\30\272<\236\341\222U\262\312p\311*Ye\270d\225,\23\63\61\22u\61\26\271=\316" + "\34\11\207C\226i\331p\320\62-\323\262\341\240\7u\65\25\272=\316\34J\207KV\31.Y%\253" + "\14\327\260u\20u\67\31\272=\236a\220j\321\60H\265h\30\324t\70\204\265\64\312\242U\1u;" + "\35\273<\216\7\35\36\206(\211*JTQ\206!Q\242\212\22U\224aHthxuL\30\273<" + "\236\341\224\225\206SV\32\256I\254IJ\226h\325\260\232\1uY\32\272=.Y\33\246\222\42EK" + "\213V\32\6\251\26\15\203T\213\206A\1u\305\32\273<\356x\70$\71\64\34\242\60T\206A)\265" + "tJ\64%J\265lv{\33\273<\236!\211Z\212I\224\204\305aPt$\33\326\60\35\346(\33" + "\16\2v}\20\270>\276\70\35\316\362p\210\315\303!\16v~\30\253<\216\7\65\207rd\30\302\64" + "L\303a\10\323\60\15\207!\2v\204\31\272=\256,\254\15\311\60\211R:(\231T\222JR:\250" + "R\246\0v\256\32\273<\356\34\213\207S\26e\345a\10\223,\214\222\64K\263$\213\264\1v\312\31" + "\273<\256\264\226\15\7\255Z\313\223d\30\222(iL\32\223\246\341 v\330\37\273<\336\34\31\326$" + "J\243$\33\16Y\22\205Y\22\16\203\226DI\226DI\62\34\4v\356\17\267>\216\203\252\16Wu" + "\270\252\303\65v\364\31\273<\336t\70\250\371\60\204i\70\14a\32\16C\230\206i\64\34\4v\370\35" + "\273<\276h\320\242,\31\266\322\240EY\264dIe\30\242Z)+\15Z\224\5w\1\32\273<\336" + "\34)\205Q\222(\231\226\15\243\30)\303\32\246\303\32\246\303\4w\13\32\273<\236\341\34\17\203\34\17" + "\7-\14\207!K\302(\32\326\60\35&\0w\37\27\272=\316t\70\204\371\60\26\207$L\206\260\64" + "\34\262(\264\0w<#\273<\216!\31\224(\311\222(\31\224!\311\222(\31\224(\251\15IIJ" + ":%Q\64$\315Z\0w@\31\273<\276\342p\316\207!\216\207\203\26\206\203\222%\311\20\25\323a" + "\2w\345\33\273<\256\34\313\241A\31\244,\312J\303)+e\245JT\311\222A\307\0w\355\37\273" + "<\236h\30\222\34[\6\245\224\225\262dH\6-\307\242,J\242$\213\243l\30\2w\356\34\273<" + "\236X\312\306!\312\222d\30\242Je\220\32\323d\30\222R')\224\4w\363\31\253<\216\7\65\207" + "r(\207\206AJ\322$J\303\64\34\206\60M\0x\1\36\273<\336A\31\304\254\224\225\242!\211\22" + "i\30\222(M\242AI\206\64\211\332\21\5x\24\36\273<\216!\31\246,\312J\305(\31\16J\224" + "D-QK\24\15IT\322\322\60\1x\64\35\273<~$\32\264\60\32\246\226d\211\42%\31\226N" + "IOK\24GI\230h\1xl\34\273<\336\341\220\245\321\60U\242\344\60(MIeX\22)\134" + "\212I\244K\3xn\36\273<\356p\210\206,\252E\303A)%\225a\351\224T\206e)%Y\22" + "\205\241\0x\237\37\273<\336\244\62\34\244J-J\246%U\222a\251\205\311\60(K\242%R\22f" + "Q\0x\301\37\273<\336,\31\242$L\206!j[\242d\61%\311\60DITZ\242,\261\204\213" + "\22y:\24\253<\236\341\316\64\34\324<*FY\224\205bQ\5y>\32\273<\236\264\230\15R\234" + "\245\321\240i\241\22eI\230\206i\230&\303\20yV\35\273<\256\34L\6e\330\302$+\15\232\222" + "E\212\226\224\6-\312JYe\30\2y^\35\273<\236\70L\243\341\240%Q\22E\303\244DIb" + "J\224h\230\322\60\15\323\10yh\30\273<\216\7\61I\207S%\212\206;>\14\71<\34\244&\233" + "\0y\201\27\273<\256\64\32\224AJ\263K\237\322l\270\243\303Aj\262\11y\217\37\273<\236h\30" + "\242\34\36\224!\311\302d\320rl\270(Q\244$\303\20%Q\313\60\4y\273\32\273<\336t\70H" + "IcTL\32\207!\217\207SK\224\14J\24+\0y\301\32\273<>yL\303l\220\322,\235R" + "\245\230DYe\30\242b\224#\0y\315\33\273<>)\33\323hx\211Z\242H)%\312\60(a" + "\32\246a\32f\0y\321\34\273<>\61\331\242,L\222A\314J\231\226DJ\270\204[$eq\26" + "'\0y\360\31\273<>%\334\342h\70H\215\341\322$%=\225\264\250\230f\32\0y\373\33\273<" + "\276\332A*\16K\224\205\26%L\242!\321\62%Jji\30m\0z\13\35\273<\276dP\246\254" + "\224%C\62h\71\246\14\222\22\205\322\240\24\323\60M\206!z\77\36\273<>)\233\206)\213\222A" + "\31\262\34\33NI\232(\311\242\364\224$K\224\204\2zv\27\273<\336tx\312\242j\26\205i\216" + "\14{\24gQ\61\232\7zz\27\273<\336x\70$\71\242Eq\230\311\341\260\347X\216\305\303!z" + "\177\31\273<\336tx\312\42%M\222a\20\263t\270&y\24g\241\64\2z\201\31\273<\336x\70" + "$QI\12KI\71\312\206C\232CI\254I\272\0z\227\36\272=\336p\70(aR\312\222\341\220" + "DY\224\14\323\224D\221T\211\222h\30\24\0z\313\27\273<\336\34L\207C\216\207i\30Gy\224" + "'\71\26\16\7\1z\326\35\273<\276d\220\222Z\224DI\226da\22%i\222\311\351p\314\362$" + "\34\16\2z\331\33\273<\236\264\230\15\322\220gQ\26&\311 %\265R\226)Y\242\225\7\5z\337" + "\32\273<\336x\70f\331p\220\322p\30\302\64\34\206\70\311J\331\20\16\1z\340\30\273<\336x\70" + "f\331p\220\322p\30\302\64\34\206<\35\16j\12z\345\27\273<\336x\70fy\22\16\7\251q\30" + "\302\250\66\234\323\341 {\21\32\273<\236\64\34\224A\311\222\64\311\362q\310\261t\70\210I\254I\272" + "\0{\24\33\273<\236\60\35\222Ai\252\15I\64\344\330\20\16\71\66,\203\216\245\351\60{,\34\273" + "<\236\60\35\222Ai\252\14\203\234E\303)\213\207C\226\204QI\321R\0{I\31\273<\236\60\35" + "\222aJ\242l\70\247\303A\17\207c\226G\71\244\1{R\37\273<\236\64\34\224A\252d\303)\217" + "\222A\211\362(\31\224(\311\222(\31\224(V\0{T\33\273<\256\60\35\222!\251(Q\226D\231" + "I\31\24\35\37\326\60\15\323a\2{~\33\273<\236\60\35\222Ai*fi\22k\222\62(Rc" + "\224\304Y\70\34\2{\200 \273<\236\60\35\222aJ\242\60\32\244$\215\242!\211Z\242hH\242\226" + "(\32\222(V\0{\227\34\273<\236!\31\224R%\31\206\60\15\207!L\303aH\263l\70hE" + "\61\3{\241\34\273<\256\60\35\222!)%\321\360\16E\303\20\246\341\60hq\26g\303\240\0{\261" + "\37\273<\256\60\35\222!\211\222R%\213\206cT[\206(I\244$\212\206\60*FC\2|s\27" + "\273<\336\70k\252&\265\341\240\346\320\236T\243\222\226\251)\0|{\27\273<\256\326\244\66\34\264\244" + "\32\325\362\70\35\16b\222g\331:|\230\35\273<\256\60KJ\341\66Da\66Hi\64,K\250$" + "\242\22\205Q\64L\305\0|\256\36\273<\256,LJ\341\62hQ\226\14\207,\312\242e\30\222D\351" + "T\214\222Z\244\5|\276 \273<\256\60K\222aH\266\64\32\224!K\223aH\226,R\206\245\224" + "\225\6-\312\22\0|\373\25\271=\356\341\234E\303\234g\311p\314\242\244\26U\42-} \30\273<" + "\236\341\234\17C\236\16\7\61J\207!\16\243\341\26\225l\2}\42\27\273<\336x\70\247\303S\26E" + "\203\216d\331p\316J%\233\0~\242\32\273<\256\34\213\6)\15\223,\33\323\260\232\15Y\216\245Z" + "&\15C\0~\246\33\273<\256,\316\322(\31\224\306!\217\262J\32\15Z\24\246\221\26\315\12\0~" + "\247\34\273<\256d\330J-Q%J\242-\231\262J\230\15J\253\24*-R\222\5~\252\32\273<" + "\256\34\213\6)O\206\64\213\243lP\206$\307r%\334\302x\20~\270\35\273<\256X\212\206,\222" + "\262\244\24\35\246\266R\64$Q\22*J\244HC\26\6~\277\35\273<\256,\11\263\250\70D\321\270" + "\15R\262\206Q\62DI\34\225\244$\231\64\1~\304\36\273<\256\34\213\6)+%\265d\32\264(" + "\213\262\312\220\14r\226)Y\42\15C\0~\306 \273<\256\34\213\206%\213\222N\311\20U\242hX" + "\262(\31\224(I\243$R\206A\13\3~\310\30\273<\256,\316\206(\251%Kc\227h\321\364T" + "TD\35T\0~\312\33\273<\256\60M\242J\226\224\222,\233\6-\254d\331\62\14y\252ej\6" + "~\317\35\273<\256h\320\322,*&Q\22MY%M\262A\31\262\34K\265L\32\206\0~\323\34" + "\273<\256\60\15K\303\220\324\262i\320r(\33\224!\311R-S\6E\253\0~\331\34\273<\256\60" + "\15[\262\244\226,i\24\15R\16\15\311\240j\231\222%\332\240\0~\334\36\273<\256,\316\206(+" + "%\211\22-Q\232%Y\244\15\313 g\231\222%\332\240\0~\335\34\273<\256,\316\206(\213\262$" + "\31.R\22\265\324\206C\222ca\244\204\7\1~\337\36\273<\256\60M\206!\11\323\244\226\34\206(" + "K\32\223h\210\222\34iR\242d\312\6~\355\33\273<\256\60\215\6)\15\223d\70U\242\244\255\24" + "-\303\220\247Rb\22\3~\364\34\273<\256L\215j\321\60$M\321A\213j\245hH\6U\12\225" + "(\322\206\1~\377\33\273<\256h\320\342(\34\222!\315\222aH\322hP\332G\245Ej\326\0\177" + "\26\36\273<\256\60M\206!\211\322$\31\16J\216$\303\220DIexL\232\226\312\24\12\177:\35" + "\273<\236\64L\303!\31\222b\222\205I\62\34\244\60KJY\322iP\242\70\14\177Q\32\272=\216" + "\7\35\221\262diQ\262H*)\211\222lI\242\205:\42\17\177W\26\272=\216\7\251$\225\206\203" + "\226C\303\26fI\224[w\0\177j\34\272=\216\7\251\64\34\264(\33\242!\213\262!\32\262(\33" + "\242!\213\342(\3\177\216\25\273<\276\342p\316\207!O\207\203\32\17\327$\317\262u\177\244\42\273<" + "\236!\311\242$J\222\341 %Y\66$\203\224fC\26%\311\60DI\26&Y\270E\0\177\330\37" + "\273<\236h\70hQ\322\242DI\242\14\211TV\206AQ\332\242\244\42)em\30\2\200\1\30\273" + "<\336\34\253\15C\236d\303A\314!c\62Ja\32\306\203\2\200\3\30\273<\316\322\60\310Q\66\34" + "\324\34\32\66%\225\6\35\313\261|\3\200\5\32\273<\336|X\342(O\262\341 \346\310\60DJ\230" + "\16k\230\16\23\0\200\14\30\273<\216\7\65\207\362\341\220D-QK\324\22\265D-QK<\200\63" + "\24\272=\216\207(l\34\306\342\60\66\16\7\35\312\241\10\200J \273<\216!\12\223D\32\222.C" + "\322\242t\31\222\26\245\213\222,\311 %Sc\222E\0\200L!\273<\216\7%J\262$J\262d" + "H\262$J\262dH\6%\312#\245\62HI\232d\241\30\200T\36\273<\216[\224DI\226$\303" + "\262\205I\26\16\207\244\26&Y\66(\325$\13\325\0\200\241 \273<\236!\31\242J\324\22E\203\246" + "Dy\224\14\312\220dIT\211jQ\26%\245!\13\200\262\31\273<\336t\70h\305\341\216e\303\20" + "\246\341\60\204i\70\14a\32\1\200\334\34\273<\236-L\32\223\306eX\22)L\262p\31\244$\13" + "\223\254\224U\206\3\200\375\37\273<\256\260TI\206E\207*\203\62$Y<(\245,\321\6%J\262" + "$J\42e\10\201\21\36\273<\236-L\302,I\206eG\232\222\26\245\262\224\222\212\322\243\224\14C" + "\242\204\1\201\32\37\273<\236%Z\232\222\312\260$K\224tJ*\303\222,QRQ\272\14\247\60J" + "\304\10\201\70\36\273<\236!+e\245J\64$Y\22\15S\227AJJI\247$J\262\60\211\206A" + "\201\352\20\267>\256p\30Tu\270\16Wu\270\6\201\363\26\273<\236\341\232CYZ\33\316\71\226\17" + "C\236c\351p\20\201\364\34\273<\216K\32\246I\64$Q\22EKc\226D\203R\314\222\260\272T" + "\266\2\202\36\34\273<\236\34\33\16J\247\341 %M\303AJ\303e\30\242\244\250\14\203\34\1\202\37" + "\34\273<\336\34\31\326\60M\242\64J\242\341\240%Q\32%a\226dq\224N\0\202, \273<\276" + "h\210\206$j\211\42\245\244$\353\240\14J\224d\211\22%Q\242\225*%%\13\202r\31\273<\316" + "\34\32\306,\35.\245\254\224e\303\240\345X\36\345\331\60\10\202z\31\273<\316(\33\16b\224G\351" + "\60\344P\216\350:\222Gy\66\14\2\202\202\26\273<\276\332p\320\352\224a\220\263\70\213\263\70\231s" + ",\6\202\261\27\273<\276\332p\320\352\264\250V\311lI$/Y\224\225\302!\202\275\30\273<\276\332" + "p\320\212\303\61K\303p\70\244I\36\245Z&j\0\202\317\31\273<\276\332p\320\352\371\60\310Y)" + "\223j\211\24&Q\32\211\32\0\202\345\31\272=\276\322p\310\312\351p\310rd\30\242$L\242\60\34" + "\306\12\0\202\346\30\273<\276\342p\314r$\35\16j>\14a\32\246\341\60\204i\4\202\361\30\273<" + "\276\332p\320\352H>\14aT\214J\303ALbM\322\5\202\371\30\273<\276\332p\320\212\303-\252" + "&Q\232\324\206\203\232c\71\226\2\203\66\31\273<\276\332p\320\352H\16%\261\222HZ&\15C\232" + "T\243\222M\203\253\30\273<\216\7\255:\14a\32\16C\230\206\303\220\247\303A\253\255\3\203\267\34\273" + "<\276\332p\320\212I&V\242$\31\206(K\265\60\211\222\64\311\42%\15\203\334\32\273<\276\332p" + "\320\352\330\64,a\222\245Im\70hI\65*i\231\0\204%\32\272=\276(\33\16Y\224\15\7\35" + "Q\206\261\66\14R\34\305\321\60(\0\204=\33\273<\276\332p\320\212\331\20&RULJa\22\16" + "\331\220\225\262l\210\0\204c\30\273<\216\7\255:\14y:\34\244\306a\10\243\332pN\207\203\0\204" + "\335\33\273<\276\332p\320\212I\224&\321\20%\315a\66\234*QK\224\14\7\1\204\354\31\273<\276" + "\332p\320\242\255\24f\263\222\14\332X\215\6)\311j\303\20\205\317\37\273<\316(\33\16b\224T\206" + "C\322i\31\224(\311\222!\31\226^\224dP\252\211\0\206k\26\273<\336\34\213\207SV\312J\303" + "\71\307\242<\213\207\203\32\206}\30\273<\256a\10\323p\30\302\250\36\17\247\254\64\234s\254\62\34\4" + "\206~\35\273<\256\34\213\206\203\224%\245,)II)I\6\251\61M\242t\312\264$\3\207\203\37" + "\273<\256\60\215\206\203RJ\222aP\22)Q\222\341%\316\6)\251EC\70$\231\2\207\371\35\273" + "<\256eP\242\322\60$\211\322\224\15\207\244\251\62\234j\331\60\310Y\62\134\2\210L\32\273<\256h" + "\220r(\207s(\31\206D\215\222\64L\303\64L\303l\2\210W\33\273<\256\322\222\14a}\30\263" + "h\320J\311\240DY)[\242d\213b\5\210c\31\273<\336\34\14\207\203\232CI\24FI\250\205" + "IVJ\242T,\7\210h\30\273<\336x\70\347\303\220\247\303AL\242\60JB-SJ\251(\210" + "\253\37\273<\236\70L\243\341\240%Q\22%R\266\14C\222(\265(\251E\305$J\62E\13\210\305" + "\33\273<\276\246aPj\251\226)\311 F\341p\20\265LJ\42%\213\265\1\211\177\30\253<\216\7" + "\61I\207S%j\211*QI\234\362h\70\345\11\0\211\201\31\273<\216\7\61I\207S%\212\206k" + "<\34\264\352\222#C\70*\0\211\301\31\273<\256a\10\323\60*F\305\250\30\25\243r\222GY\224" + "e\353\20\211\302\36\273<\336A\31\222,L:%MI\267(\251EI)\311\264$J\22\61J\62" + "Q\211\304\35\273<\256h\320\242,\31\226Z\224\324\242\244\62,\265(\251\31\223\336\242D\22\5\211\306" + "\34\273<\236l\320\242,\31\222\306\244-JJKOI-L\63\251%\252d\3\211\310\34\273<\276" + "(M\242Ai\312\222\64\33\206\60\15\243bT\214*\231\222\15\331 \211\311\35\273<\256Z\30%\331" + "pHrD\32\326\60M\242\64\211\322$J\302$K\246A\211\322\33\272<\276\34\32\304,\34\16I" + "\224E\303 \325\242a\220jI\226$z\2\211\343\37\273<\256lP\206\250R\312\206!\222\222D\311" + "\206C\322\224\15\207\244)KJ\65)\2\211\346\36\273<\236\70\33\262\250\30\15\312\260t\31\226\212R" + "\31\16Y\224\324\22\245\66D\312\22\212\0\30\273<\316\34L\207\203\16\17CN\31\206\234\62\14a\32" + "\16C\4\213f\32\273<\216K\30E\303A\311\222.\303AG\207;>\14a\32\16C\4\213\241\27" + "\273<\236\264\230c\371p\10\323\60\15\323$J\265\64\314\261\14\213\242\31\273<\236\34L\206!Gr" + ",Z\303\64L\303\64L\262P\254M\0\213\244\27\273<\236\264\230c\71\226\215i\230fI\230\64*" + "Y%,\7\213\251\31\273<\236\264\230\206\71\226\215C\24\246a\32\246I\224ji\62\14\1\213\256\32" + "\273<\236\60\16\223\70)g\311\224\265\204Y\22&Q*%a\224\245\5\213\260\32\273<\236\34\214\6" + "\35\313\261d\316\242A\213\362(O\304H\11\243l\20\213\262\35\273<\216\60\312J\351p\310\242\254\224" + "%\303\240dQ\226\224\62\251\26ei\30\1\213\270\32\273<\236,\217rlP\243lL\223a\210\302" + "\64\211R-\15s,\3\213\272\33\273<\236\264\230CI\236%K\32eQV\11\63\65\251ER\26" + "e\203\0\213\276\31\273<\236l\10\243z\24g\303\216%\303\26e-\241\226fI\272\11\213\277\32\273" + "<\236\60\16\363a\210\303m\310JY)KJ\231T\213\262\64\222\0\213\301\35\273<\236\34L\206!" + "\12s,\233\222\64J\266(I\23%U\252Q\22\17\203\0\213\304\33\273<\236h\30\242\60\217\252I" + "eL\223a\210\302\64\211R-\15s,\3\213\306\31\273<\236l\230\212i\230\206C\24F\321\60\25" + "\243\244Q\252Ea\65\213\311\33\273<\236X\213v$\307\206S\61J\304(\322\22)\211\224(\211\232" + "\263\10\213\335\33\273<\236X\213v,[\206!\12\323\60\215\6-\312\62%+\15r\226\0\213\345\31" + "\273<\236\60\16\363\341\20\246Y\224ECX\252\224\62%\12+\261\26\213\355\35\273<\236h\30\242\60" + "G\6e\213\262R\226\14C\224c\311\260)Y)\213\7\5\213\364\30\273<\236\254K>\310Y\62e" + "\245A\253\204I\243\224\224Z\302l\213\367\35\273<\236\264\62\14Q\230#\203\62\246\311\60D\265\322\240" + "EY\246\14Z\224%\0\213\373\34\273<\236\264\64\350H\266\14C\224%\245\212\230%a\62\14\221&" + "fQ*\6\213\376\36\273<\236h\330\222(I\207E\252D\321\60\245a\62\14JhJ\264\250\22f" + "Q\0\214\1\33\273<\236,I\243\362pP\242\60\32\246\306h\230\22)T\242\60\32\326\24\214\3\37" + "\273<\236h\30\242$*&\207$j\31\206(I\243$Y\242\244\323\262DI\232\205\3\214\10\34\273" + "<\236\64j\251%\221\216D\311\42Fa\32%Q\244\264%\221\230E\251\30\214\20\35\273<\236,\12" + "\243J:(S%J&)L\243AK\264L\31\264(\213\7\5\214\23\36\273<\236h\30\242$*" + "\16\207$j\31\206\250V\32\264D\313\224A\213\262\70R\0\214\42!\273<\216,\214\222!\12\243\212" + "\62\14J\251eP\242$J\244d\210\42\245T\211j\221\242\0\214\67\32\273<\316(\16KY\224i" + "a\24\207\341\60(J\230da:\254a\4\214a\34\273<\276A\315\322\341R\312\262a\20\223,R" + "\226\64\22%%U\242A\22\1\215\37\30\272<\276\34\32\304,\34\6\245\232E\265\250\26\325\242\242\42" + "\255\2\215\42\37\273<\216A\213\262R\222\14\203R\213\222\222\224\224\244\244c\226dI)\213\262(\226" + "\0\215#\27\273<\336t\70\250\361pN\207\203\224\206Q\61*G\331\20\16\215%\36\273<\216A\312" + "JYR\32\224R\322EiQzJ\262\60\211\222\60\213*\265$\13\215'\31\273<\276\250\226m\312" + "\246\204C\16\17C\230\206Q\61*'\351\266\0\215(\33\273<\376iX\303t\70$a\232\14C\224" + "\244Q\22\265D\225\60\311\222m\215-\36\273<\216A\11\263$L*\303\222\210J)R\332\224\236\242" + "E)'Q\252e\12\0\215\64\36\273<\216A\213\262RR\33\222Z\224\324\242\244\62,mJ[\224" + "UJ\303\226d\1\215\65\30\273<\336|\30\302\250\70\14y:\34\244\64\214\212Q\71\321\206p\215\71" + "\32\272=\276(\33\216Q\222\14\227\250\66\34\222\64)\325\242j\242\215\12\0\215D\33\273<\236(G" + "\222\341\22\265%a\224i\303\20\246aT\214\312I\272-\0\215[\31\273<\336tx\252%\303\61\12" + "\207\203\244IJ\213\226\324\23qT\0\215p\30\273<\336x\70\347X:\34\324<\312\243A\213\342\244" + "\232\15C\0\215v\35\273<\276h\320\302l\220\322\60\32\16Z\230%S\226\204Y\22fc\224\15C" + "\0\215w\35\273<\276\34\213\206h\320\302\64\31\16a\224&Q\226$C\226\224\206E\317\206!\215\212" + "\35\273<\276P\254$\303!\213\222h\30\222Z\224\264\14Q%J*[d\11\303a\215\263\30\273<" + "\256a\10\323\60\15\207!/\345\321\240EqR\216\324t\20\215\337\42\273<\216!\31\224(\311\222(" + "\31\224(\311\222!\31\264(\311\22\245\244D\221RjQZ\64-\215\357#\273<\216!I\243dP" + "\242$K\42\245\64di\226D\211\222%\225aP\242,I\224,\321\6\5\216\253\30\272=\316|\30" + "\213\303X\211\206!\13\243a\220\243P)\211\31\0\217f\26\273<\316\34\313\207c\16\325\207!\317\261" + "t\70\250\71\226\2\217l\33\273<\256\60\33\222AJCe\30\224,\34\222A\213\263\245\64\246\305\64" + "\2\217o\34\273<\236\60\15\303A\31\224\60S\242\244\62Hi\230.\245-\11\243\254\222\6\217{\32" + "\273<\256lH\6\61\212\63\61i\322\206\35\311\6i\213\326\60\15\243a\217}\35\273<\276\342\240\24" + "\263hx\12\263a\211\222Z\22\15R\32&\303\220$Z\224\5\217\203\33\273<\256\60\33\264\332\260h" + "QR\12\207%\312J\331$\255a%\213\264\0\217\221\36\273<\256lH\6%*\16\221\216\224\206\203" + "\22e\231\222-\211\262ER\62lq\2\217\271\32\273<\236\264\230&\303\220GC\30\25\243Z\251\30" + "%\231\224\344\331\60\4\217\276\30\273<\236\264\230\206\371p\10\323\60\315\222\60\312*iR\317\206!\217" + "\307\32\273<\236\70L\303d\30r$\232\212Y\22\246a\32\206Z\222g\303\20\217\320\33\273<\236l" + "\320r,G\207C\26gI\30e\225A\211\212I=\33\206\0\217\321\31\273<\236X\213\326(\307\206" + "S\61*F\305\250\230d\225<\33\206\0\217\324\34\273<\236\134\212\206\60\312\261\341\244E\225ZTL" + "\242$\213\264\244\236\15C\0\217\330\32\273<\236h\30\242\64\254c\331\246dQ\22U\242\306\64\254\344" + "\331\60\4\217\331\32\273<\236\60\16\363\341\220\206Q\61K\302j\226\204\211\26%y\66\14\1\217\333\32" + "\273<\236,\12\243b\62\314Q\64\25\207ScTL\262J\30e\303\20\217\334\34\273<\236l\320r" + ",G\207C\226\204Y\22fI\251%JB\245\236\15C\0\217\336\34\273<\236\60N\206!\312r(" + "\311\226a\13\323d\30\242\60\15+Ym\30\2\217\367\33\273<\236\264\22u\251#\331\62\14Q\230f" + "c\224\324\222\250R\253\15C\0\220\1\33\273<\236\254K\30\15:\222\215i\62\14Q\230fI\30e" + "Q\242j\303\20\220\2\33\273<\236XK\206\64\314\207C\230F\203\26e\245A\213\262(\311\263a\10" + "\220\11\36\273<\236,I\243$\215\6\65\312\226a\210\262$\314\222RK\224\204J=\33\206\0\220\32" + "\37\273<\236h\330*a\62\14a\24\15\311\60DI\324\62\14Q\22\265D\211R\317\206!\220\37\33" + "\273<\236\64\35Na>\34\222\250e\30\242l\214\222Z\22Uj\265a\10\220 \34\273<\236\264\224" + "\244\321\240F\331\62\14Q\216E\203\26e\245AJ\362l\30\2\220G\36\273<\316a\311\222\250\64\254" + "I\224H\303\24\246\311\60(\245\244\313\220X\223h\30\4\220S\33\273<\236\254K\230\14C\236M\203" + "\26e\245A\213\262\322 %y\66\14\1\220W\36\273<\236\264\62lI\224\204\303A\307\222aK\242" + "$K\242$\253dI-\311\206!\220\243\37\273<\216\313\20U\242\226\312\260\324\242\244\26%\321\60$" + "Q\213\22UJY\222eJ\6\220\256\35\273<\256l\220\262lX\242\244S\322\323\240DI\67\245m" + "X*Z\22\345!\0\220\350!\273<\276lxJ\262$\252DI\62\334\241$\32\224(\311\222(\311" + "\22%\31\224R\226d\0\220\375 \273<\276hP\6%\312\222\226\341X\311\206$J\244$R\206$" + "jQ\242!\251EI\6\221M\36\273<\216A\31\224rR\36V\245\62\14\211\22fI\70(a\226" + "d\303\222i\311 \221R!\273<\236h\30\242,\211\322$K\206AJ:%\322\224\244\323\60$Q" + "\232D\303\220Di\0\221w\36\273<\216A\253DI\226D\303A\252\324\42E\31\266xP\206-\311" + "\206e\330\222,\221\307\27\273<\336!\33\302,\252f\71\222\16\7qO\252Q\255\66\26\221\314\27\273" + "<\236\341\224\225\262\322p\312JYi\70\307\303\71\35\16\2\221\315\27\273<\236\341\234\16\7\251q\30" + "\302\250\70\14y<\234\323\341 \221\317\31\273<\256a\10\323p\30\302\64\32\16R\343\60\204Qm\70" + "\247\303A\221\321\27\273<\336\34J\362,-)\203\242\306\303\71\217\252Im\70\10\224\237\32\273<\236" + "\64L\303\341 &Q\262\224Z\242\341)L\223(\325\322\60\3\224\242\37\273<\236lX\262\60\31\244" + "DT\222aH\242\226h\30\22%\212L\211\30)aT\32\224\256\37\273<\236\34\313\6i\210\222r" + "\222\14R\222E\203\62(QV\312\222R&\325\222a\10\224\261\36\273<\236\60\311\302(\232\222!\334" + "\206(\222\242!\32\242Z%,ERRJ\64\1\224\376\33\273<\236\64\214\222AYji\22\15\7" + "\251i\70H\215Qq\211\223h\10\225\1\35\273<\256$\352RJ\303eP\302,Z\332\242\244\62$" + "mQR\223\222\60\321\4\225!\36\273<\236l\220\262\322\62(a\226\14\207,J\207d\230\222NY" + "RRJ\265D\1\225.\37\273<\236d\312\262aQ\262DK\206\203\224\324\206S-I\206%\312\62" + "E\312\222h\20\225\177\26\272=\256\260\226Fq\222\313\303!J\362(\316\322$\12\15\225\350\26\272=" + "\236h\230b\35\321\21\35\321\21\35\321\21\35\321\21y\225\355\32\273<\236l\230r\65S\63e\30\22" + "Q\323\222L\252)Y&j\372\0\225\356\30\272=\236h\230b\35\221\206H*I%\251$\15\221\216" + "\350\210<\225\364\31\272=\236h\230b\35\221\206H*IC$\225\244\222\64D:\42\17\225\371\36\273" + "<\236h\30\242\134\14\225aH\304P\31\206D\211*JTQ\242\304\30\352\210\0\225\373\32\272=\236" + "h\230beX\244\222\64DRI\32\42)R\224AR#]\226\1\37\273<\216h\30\224(\15\207" + "\310\24)\221\246E\221\62\14\211\224E\322 IY\244#\2\226\37\36\273<\216!+e\225\60S\263" + "$\314\242\254\224eJ\224DI\226Da\226Dj\0\226\62\36\273<\216!\12\243\254\222\14\307J\66" + "$QK\324\242D\225R\226da\22e\22\0\226\63\36\273<\216!\31\206(\11\225(\334B%\32" + "\206(\11\245$\134\212J\24\212\303\20\26\226\77\35\273<\216!\31\206(M\312IiiJ\232\222N" + "I\213\222,\315I\216\324\25\0\226D!\273<\216!\252D-\245,\321\206!I\264$J:%\221" + "\242\324\222R\226\204Y\22F\12\0\226E\35\273<\216!\31\224(OrD\32\6%\314\242\244S\322" + "\242\64)\245H\316R\15\226F\36\273<\216!+%\203R\314\324,I\206A\312JIiPJJ" + "\224D\342\60\204\5\226H\36\273<\216!\12\243\341\22\245Z\222%\311\60HY)I\244!\351S$" + "%%\65\4\226b\35\273<\216!\12\243\254\222\14\247T\211\6%\312\243\341\220\224*QE\253H\251" + "\0\226d\36\273<\216!+U\242$\312\22)Y\224\60\213\206S\226MI[\24IY\244j\0\226" + "\217 \273<\216\61K\224aH\32\265A\251EIrH:%R\62$Y\22%\231\32E\203\0\226" + "\220\42\273<\216!\31\242JTI\206EI\223\322\240Di\22%\203\242Da\222(MI\224\210C" + "\4\226\276\34\273<\356$\32\242$M\206!\232\262\244\24F\303\324\226$\303\322T\214\362a\226\306\33" + "\273<\276$\317\322\341\240D\371\60hQ>\14Z\224\16\7-\251M\321\0\226\350\30\273<\216\7\65" + "\307\342\341\224\225\222N\221\247J\247\254\224E\12\0\226\366\30\273<\236\341\234\16OI)\234\65I\313" + "\244a\310\241|\307\64\0\227\0\31\273<\236\341\234\16/J\242\244\351p\20\363\341T\211Z\242\226D" + "\1\227\36\32\273<\236\341\234\16OIiX\206\250\30\15\247\60\212\206$\252j\321$\227\62\36\273<" + "\236\341\234\16OIi\220\206$J\244d\310\304HZ\16I-J\206hH\0\227R\27\273<\336x" + "\70\347\303\220\247\303A\13\323a\15\323a\15#\0\227Y\37\273<\256\60\33\226\255\222\15\311\220\205I" + "\62\34\224\250\22)\311\20%R\30\25\23\33\0\227^\34\273<\316$G\212\203\62\210I\216T\207d" + "H\223\34)\16\312 &\71R\4\227`\34\273<\256\372\60HY:\34\244\64\34\206\70\11\7e\20" + "\223pP\6\61\11\1\227b\30\272=\216\207\60G\342\341 \225\244!\222J\322\20I\245\341\35\11\227" + "i\30\273<\276\332p\320\312\203\216\344\303\20F\305a\310\323\341\240\246\0\227\363\31\273<\336x\70f" + "y\22\16\7\35\36\206\60\15\207!L\303a\210\0\227\365\34\273<\256,\34\224\60K\6\245qX\262" + "<\32V-R\206A\323\322aS\0\230u\31\273<\216\7\65\37\206\60\15\243bT\214\212\221\22G" + "q(\311\11\0\230\177\35\273<\256l\220\322hP\6)\313\224.J\227ai\312\222R\222\205Z\22" + "k\1\230\206\33\273<\276h\320\302J\24J\303\20\325\342\244\62$\215I[\330\22FY\0\230\221\37" + "\273<\276hP\212Y\62\14J)\33\6\245\26%]\224\26\245\42UJa\222hZ\0\230\230!\273" + "<\236!\31\224(\313\206dP\242$K\206\244\71I\206A\351\224d\311\322\42e\332\60\4\230\235\37" + "\273<\256l\70H\305a\31\222lJ\232\244\244)\251\14\203\322\224\264\14Q\22E[\0\230\316\36\273" + "<\236a\320\342,L\262$J\262H\312JY$eI\224dZ\222\350\310\16\5\230\336\26\273<\216" + ";V\216\362$Gv$\312\263<\307\352Q\216\14\230\337\30\273<\336\34J\362\244:\34\224\60\35\326" + "\60\35\326\250\230$\252(\231\20\35\273<\256\341\224E\321\222HISe\30\222DL*\303\32\246\303" + "\222%\215\332\0\231m\35\273<\236X\312\306A\216\206\245\224\225\244,Jj\211RS\242\60\211\222\60" + "\321\2\231p\37\273<\236\60\15\7e\220\262(\213\222h\230Z\242\226(\221\222H\211\222\250\264#\21" + "\0\231\206\35\273<\236\64\314\206e\20\223\322\220\324\242,\33\262r\222\14\222\224E\331 g\1\231\226" + "\32\273<\256\264\226\15\7\61G\206!L\303a\10\323p\30\302\64\34\206\10\231\231\32\273<~m\330" + "\241t\70hI\65*\15\7)\15\207!L\303a\210\0\232l\30\273<\236a\320\261\64L\263\64L" + "\207;\226c\303)\307rD\1\232\214\36\273<\216!\213\263\60\211\222,\331\224\322\66\344X\22eC" + "R\221\222r\224*\303\0\232\330\33\273<\336t\70\350\370 g\341p\312\243dP\242$K\242dP" + "\242X\1\234\234\36\273<\236\60K\206()%\303A\213\222\312p\310\242\244\26\15\7\35\11\267H\216" + "\0\234\262\36\273<\236pP\206$\223\242\341\220dJe\70$\245\244\313\260\14yRZ\216\311\0\236" + "!\35\273<\376lH\6\61\311\222(iJ\272E\305hX\312I\64(:\224#\12\0\236O\32\273" + "<\376l\31\226N\311!\351E\351\270\14\203\322\246T\26\245Mq\1\236\246\30\273<\336x\70\347\303" + "\220\247\303A\314\241aS\242\34Q\207h\10\236\273\33\273<\356t\70$QV\312\262\341\220DY\345" + "\244T\244HJ\264RV\2\236\304\31\273<\276\342p\314\262\341\240\346\303\20F\305a\10\243\342\60d" + "\252\2\236\321\31\273<\236\341\224\225\222N\321\24\15\347x\70\247\303A)U\262\250\0\237 \34\272=" + "\216!\31\222<\31\222!\311\223\341\16JJ\224T$K\242\264\14\312\24\0"; From 9d525e2ef1990b6b429075a8ef25bb153589df3f Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 04:28:06 +0700 Subject: [PATCH 057/101] Make Font Data Generation script multi-platform --- fw/scripts/font_data_gen.sh | 41 +++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/fw/scripts/font_data_gen.sh b/fw/scripts/font_data_gen.sh index 09f764f1..61a7b6a9 100644 --- a/fw/scripts/font_data_gen.sh +++ b/fw/scripts/font_data_gen.sh @@ -1,10 +1,37 @@ #!/bin/bash -cd $(dirname "$0") && cd .. -cat application/src/i18n/*.c application/src/amiidb/*.c |grep -Po '".*?"' | tr -d '[:print:]' |sort|uniq > data/pixjs.txt +# Check the operating system +if [[ "$OSTYPE" == "darwin"* ]]; then + # MacOS + GREP="ggrep" + SED="gsed" + BDFCONV="bdfconv" # Assuming bdfconv is in PATH +elif [[ "$OSTYPE" == "linux-gnu"* ]]; then + # Linux + GREP="grep" + SED="sed" + BDFCONV=$(command -v bdfconv) # Check if bdfconv is in PATH +else + # Windows + GREP="grep" + SED="sed" + BDFCONV="scripts/bdfconv" # Assuming bdfconv is in scripts folder +fi + +# Change directory to script's directory +cd "$(dirname "$0")" && cd .. + +# Generate pixjs.txt file +cat application/src/i18n/*.c application/src/amiidb/*.c | $GREP -Po '".*?"' | tr -d '[:print:]' | sort | uniq > data/pixjs.txt + +# Create gb2312a.map file echo '32-128,' > data/gb2312a.map -cat data/chinese3.txt data/pixjs.txt | iconv -f utf-8 -t c99 | sed 's/\\u\([0-9a-f]\{4\}\)/\$\1,\n/g' | sort | uniq | sed '/^$/d' | tr '/a-f/' '/A-F/' >> data/gb2312a.map -scripts/bdfconv -b 0 -f 1 -M data/gb2312a.map -n u8g2_font_wqy12_t_gb2312a -o application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c data/wenquanyi_9pt_u8g2.bdf +cat data/chinese3.txt data/pixjs.txt | iconv -f utf-8 -t c99 | $SED 's/\\u\([0-9a-f]\{4\}\)/\$\1,\n/g' | sort | uniq | $SED '/^$/d' | tr '/a-f/' '/A-F/' >> data/gb2312a.map + +# Convert font using bdfconv +$BDFCONV -b 0 -f 1 -M data/gb2312a.map -n u8g2_font_wqy12_t_gb2312a -o application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c data/wenquanyi_9pt_u8g2.bdf + +# Generate u8g2_font_wqy12_t_gb2312a.c file echo ''' #include "mui_u8g2.h" @@ -12,6 +39,8 @@ echo ''' ''' > application/src/mui/u8g2_font_wqy12_t_gb2312a.c cat application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c >> application/src/mui/u8g2_font_wqy12_t_gb2312a.c -sed -i 's/U8G2_USE_LARGE_FONTS/U8G2_USE_LARGE_GB2312_FONT/g' application/src/mui/u8g2_font_wqy12_t_gb2312a.c +$SED -i 's/U8G2_USE_LARGE_FONTS/U8G2_USE_LARGE_GB2312_FONT/g' application/src/mui/u8g2_font_wqy12_t_gb2312a.c + +# Clean up temporary files rm application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c -rm data/gb2312a.map data/pixjs.txt \ No newline at end of file +rm data/gb2312a.map data/pixjs.txt \ No newline at end of file From 8a6417246934258c2bd41d948ba33e261d7eb7da Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 04:33:08 +0700 Subject: [PATCH 058/101] Better version of Generation script --- fw/scripts/font_data_gen.sh | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/fw/scripts/font_data_gen.sh b/fw/scripts/font_data_gen.sh index 61a7b6a9..572877f0 100644 --- a/fw/scripts/font_data_gen.sh +++ b/fw/scripts/font_data_gen.sh @@ -1,21 +1,28 @@ #!/bin/bash -# Check the operating system +# Check for bdfconv in PATH +BDFCONV=$(command -v bdfconv) + +# Check if bdfconv is not found in PATH and exit with an error message +if [ -z "$BDFCONV" ]; then + if [[ "$OSTYPE" == "darwin"* || "$OSTYPE" == "linux-gnu"* ]]; then + echo "Error: bdfconv not found in PATH. Please ensure it is installed or specify the correct path." >&2 + exit 1 + else + # Windows + BDFCONV="scripts/bdfconv" # Assuming bdfconv is in scripts folder + fi +fi + +# Set variables for grep and sed based on the operating system if [[ "$OSTYPE" == "darwin"* ]]; then - # MacOS + # MacOS requires the use of GNU grep and sed GREP="ggrep" SED="gsed" - BDFCONV="bdfconv" # Assuming bdfconv is in PATH -elif [[ "$OSTYPE" == "linux-gnu"* ]]; then - # Linux - GREP="grep" - SED="sed" - BDFCONV=$(command -v bdfconv) # Check if bdfconv is in PATH else - # Windows + # Linux or Windows GREP="grep" SED="sed" - BDFCONV="scripts/bdfconv" # Assuming bdfconv is in scripts folder fi # Change directory to script's directory From 12b448c2a1a849bcb9d97e81641933f30d047153 Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 05:07:06 +0700 Subject: [PATCH 059/101] Update English Translation Guide --- docs/en/05+5-translation.md | 70 ++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md index 76f6d4b2..0f5df46a 100644 --- a/docs/en/05+5-translation.md +++ b/docs/en/05+5-translation.md @@ -1,26 +1,70 @@ # Transalation -## How to update exists translation +## Firmware -1. Edit fw/data/i18n.csv with your favorite text editor. For vscode, extension "Edit csv" is recommended. -2. Run `fw/scripts/i18n_gen.py` to generate new language files. -3. Optional: Run `fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in i18n.csv -4. Run `make full` rebuild firmware +## How to update existing translation + +When editing CSV files with VSCode, the extension [Edit CSV](https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv) is recommended. + + +### Windows + +Windows requires you to have [Python](https://www.python.org/downloads/) and [Git Client](https://git-scm.com/downloads) installed and within your `$PATH` + + +1. Clone this repository + `git clone https://github.com/solosky/pixl.js.git` +2. Edit `fw/data/i18n.csv` +3. Run `py.exe fw/scripts/i18n_gen.py` to generate new language files. +4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` +5. [Build the Firmware](03-Build-Firmware.md) + + +### Linux +You will need to build [bdfconv](https://github.com/olikraus/u8g2/tree/master/tools/font/bdfconv) yourself and place it within `$PATH`. + +`git`, `grep`, and `sed` should be included with your distribtion. + +1. Clone this repository + `git clone https://github.com/solosky/pixl.js.git` +2. Edit `fw/data/i18n.csv` +3. Run `python3 fw/scripts/i18n_gen.py` to generate new language files. +4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` +5. [Build the Firmware](03-Build-Firmware.md) + + +### MacOS +You will need to build [bdfconv](https://github.com/olikraus/u8g2/tree/master/tools/font/bdfconv) yourself and place it within `$PATH`. +This requires to have XCode or the Command Line Utilities to be installed. + +You can either manually install them via +`xcode-select –-install` or they will automatically installed when installing Homebrew (see next step) + +In addition you will need the GNU version of `grep` and `sed` as the buil-in versions are not compatible. +If you have [Homebrew](https://brew.sh) installed, you can install those via: +`brew install grep` +`brew install gnu-sed` + +1. Clone this repository + `git clone https://github.com/solosky/pixl.js.git` +2. Edit `fw/data/i18n.csv` +3. Run `python3 fw/scripts/i18n_gen.py` to generate new language files. +4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` +5. [Build the Firmware](03-Build-Firmware.md) -note:
-The script `font_data_gen.sh` only can be run in Git Bash windows in Windows. ## How to add new language translation +The process is similar to updating an existing translation, and has the same requirements dependin on your Operating System. -1. Add new column in fw/data/i18n.csv, for example "ja_JP" +1. Add new column in `fw/data/i18n.csv`, for example "ja_JP" 2. Run `fw/scripts/i18n_gen.py` to generate new language files. -3. Optional: Run `fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in i18n.csv +4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` 4. Edit `fw/application/src/i18n/language.h` and `fw/application/src/i18n/language.c` to adopt new language 5. Edit Makefile to include `$(PROJ_DIR)/i18n/ja_JP.c` as C source files -6. Run `make full` rebuild firmware +5. [Build the Firmware](03-Build-Firmware.md) ## Font notes -For release build (RELEASE=1), the firmware use wenquanyi_9pt_u8g2.bdf to display unicode characters.
-Please check new language charater codepoint is included in wenquanyi_9pt_u8g2.bdf or not.
-If not, I am not recommended to support the new language due to the MCU internal flash restrction. \ No newline at end of file +For release builds (RELEASE=1), the firmware uses wenquanyi_9pt_u8g2.bdf to display unicode characters.
+Please check if the new language charater codepoint is included in wenquanyi_9pt_u8g2.bdf or not.
+If not, it's not recommended to support the new language due to the MCU internal flash restrction. From e71598a810cebbaaad494194daf1b028a4b52259 Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 05:32:16 +0700 Subject: [PATCH 060/101] Add Web App translation guide --- docs/en/05+5-translation.md | 44 ++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md index 0f5df46a..9927d747 100644 --- a/docs/en/05+5-translation.md +++ b/docs/en/05+5-translation.md @@ -54,7 +54,7 @@ If you have [Homebrew](https://brew.sh) installed, you can install those via: ## How to add new language translation -The process is similar to updating an existing translation, and has the same requirements dependin on your Operating System. +The process is similar to updating an existing translation, and has the same requirements depending on your Operating System. 1. Add new column in `fw/data/i18n.csv`, for example "ja_JP" 2. Run `fw/scripts/i18n_gen.py` to generate new language files. @@ -68,3 +68,45 @@ The process is similar to updating an existing translation, and has the same req For release builds (RELEASE=1), the firmware uses wenquanyi_9pt_u8g2.bdf to display unicode characters.
Please check if the new language charater codepoint is included in wenquanyi_9pt_u8g2.bdf or not.
If not, it's not recommended to support the new language due to the MCU internal flash restrction. + + +## Web App + +### How to update existing translation + +The language file can be found under `web/src/i18n' + +## How to add new language translation + +In this example, we will add a Japanese (jp_JP) translation: + +1. Copy the `en_US.js` file and name it `jp_JP.js` +2. Translate the string within `jp_JP.js` including the `changeok` message. + +Don't translate the other language names. + +Add your language at the bottom of the `lang {` section: + `jp: '日本語',` + +3. Edit `index.js` while keeping it's current structure: + +Adding +``` +import elementJpLocale from 'element-ui/lib/locale/lang/jp' // element-ui lang` + +import jpLocale from “./jp_JP”; + jp_JP: { + ... jpLocale, + ... elementJpLocale + } + ``` +4. Add your language to the other `.js` files (within the `lang: {` section): + + `jp: '日本語',` +5. Add your langaguge to the `web/src/App.vue` file: + +``` + + {{ $t('lang.jp') }} + + ``` \ No newline at end of file From 41c6cf1a25ea6f7f653f63d25ed0c9fffd60326b Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 07:12:22 +0700 Subject: [PATCH 061/101] Minor rephrasing for better spacing --- fw/application/src/i18n/de_DE.c | 10 +++++----- fw/data/i18n.csv | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index 24873186..d57fd4c0 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -24,7 +24,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_SET_LIPO_BAT] = "LiPO Batterie", [_L_APP_SET_SHOW_MEM_USAGE] = "Speicheranzeige", [_L_APP_SET_HIBERNATE] = "Schnelles Aufwachen", - [_L_APP_SET_SLEEP_TIMEOUT] = "Energiesparmodus", + [_L_APP_SET_SLEEP_TIMEOUT] = "Standby nach", [_L_APP_SET_LANGUAGE] = "Sprache", [_L_APP_SET_DFU] = "Firmw. Aktualisierung", [_L_APP_SET_REBOOT] = "System Neustart", @@ -37,15 +37,15 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_1MIN] = "1 Minute", [_L_2MIN] = "2 Minuten", [_L_3MIN] = "3 Minuten", - [_L_AMIIBO_KEY_UNLOADED] = "Amiibo Schlüssel nicht geladen", - [_L_UPLOAD_KEY_RETAIL_BIN] = "Platzieren Sie die Datei key_retail.bin im Stammverzeichnis des Speichers.", + [_L_AMIIBO_KEY_UNLOADED] = "Amiibo Schlüssel fehlt", + [_L_UPLOAD_KEY_RETAIL_BIN] = "Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.", [_L_KNOW] = "Verstanden", [_L_RANDOM_GENERATION] = "Zufälliger Tag", [_L_AUTO_RANDOM_GENERATION] = "Automatische Zufallsauswahl", [_L_SHOW_QRCODE] = "QR Code", [_L_DELETE_TAG] = "Tag löschen", [_L_DELETE_TAG_CONFIRM] = "Löschen von %s bestätigen?", - [_L_BACK_TO_DETAILS] = "Zurück zu Tag-Details", + [_L_BACK_TO_DETAILS] = "Zurück zu Tag Details", [_L_BACK_TO_FILE_LIST] = "Zurück zur Liste", [_L_BACK_TO_MAIN_MENU] = "Hauptmenü", [_L_FORMAT] = "Formatieren", @@ -107,7 +107,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Schlüssel", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "geladen", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NICHT geladen", - [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Steckplatznummer", + [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Steckplatzanzahl", [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorit..", [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Speichern unter..", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Zurück zu Details]", diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 55e74701..fe876507 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -23,7 +23,7 @@ _L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Anim _L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO _L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata _L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnelles Aufwachen,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido -_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Energiesparmodus,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione +_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Standby nach,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione _L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua _L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw. Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware _L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema @@ -36,15 +36,15 @@ _L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 _L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto _L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti _L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Minuten,3 min.,3 min.,3 min.,3分,3 minuti -_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel nicht geladen,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata -_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Stammverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria. +_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel fehlt,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata +_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria. _L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito _L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufälliger Tag,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale _L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Automatische Zufallsauswahl,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico _L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR _L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag _L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Löschen von %s bestätigen?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n? -_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag-Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag] +_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag] _L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,Zurück zur Liste,Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file] _L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,Hauptmenü,Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale] _L_FORMAT,Format,格式化,格式化,Formatear..,Formátum ,Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta.. @@ -106,7 +106,7 @@ _L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour] _L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi _L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate _L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,NICHT geladen,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate -_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatznummer,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot +_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatzanzahl,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot _L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り..,Preferito.. _L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存..,Assegna a.. _L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli] From 79b5fb801dafe4c73b4810df6837b44c6f558db3 Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 07:18:04 +0700 Subject: [PATCH 062/101] Restore font data --- .../src/mui/u8g2_font_wqy12_t_gb2312a.c | 2067 ++++++++++------- 1 file changed, 1242 insertions(+), 825 deletions(-) diff --git a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c index 4d46355a..edcbff38 100644 --- a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c +++ b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c @@ -7,830 +7,1247 @@ /* Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--12-120-75-75-P-119-ISO10646-1 Copyright: (null) - Glyphs: 1050/30503 + Glyphs: 1552/30503 BBX Build Mode: 0 */ -const uint8_t u8g2_font_wqy12_t_gb2312a[26329] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") = - "\32\0\3\2\4\4\3\4\5\14\15\0\376\10\376\12\377\1a\2\316\4\27 \5\0L\13!\7\221F" - "\213S\0\42\7\64}\213\310\24#\16\226\304\233\250eX\242^\206%j\1$\17\245<\253l\251(" - "\231\250%Je\213\0%\20\226<\233(\351\242%a\232DI\27-\1&\16\205D\253,\211\222\254" - "\62%Q\244\4'\6\61\376\212\1(\13\263=\253$J\242nQ\26)\14\263=\213,\312\242.Q" - "\22\1*\14uD\253J\345\240,M\21\0+\13wD\274\270\66\14Y\134\3,\7\62>\13E\1" - "-\6\25d\213A.\6!\306\12\1/\14\304<\273\246\254\224\225\262\32\0\60\12\205D\233%\363-" - "Y\0\61\11\205D\213\261O\203\0\62\13\205D\233%\13km\203\0\63\14\205D\213!\15\223\65\14" - "\7\5\64\16\206\304;-\211\272d\311\60\246\11\0\65\15\205D\213!\11\303!\15\303A\1\66\15\205" - "D\233%\14\207$\263%\13\0\67\13\205D\213A\254\205YX\2\70\15\205D\233%\323\222%\263%" - "\13\0\71\15\205D\233%\263%C\250%\13\0:\6aD\11I;\11\202>\213!V\24\0<\10" - "\225D\313\254k\7=\10\65\134\213A\35\4>\11\225D\213\264[G\0\77\15\225D\233%\323\302H" - "\313\241\60\2@\24\247<\254\255\222HZ\42)JE\251H\211\222e\23\0A\16\207D\274\70M\302" - "$+\15J\252\6B\15\206\304\213A\11\305a\11\215\303\2C\14\206\304\233!\11\325\216\311\220\0D" - "\15\207D\214A\12\223\324c\62H\0E\12\205D\213c\70\214\305AF\13\205D\213c\70$a#" - "\0G\15\206\304\233!\11\325\332(&\203\0H\13\206\304\213\320\70\14\242c\0I\10\203D\212%\352" - "eJ\10\243\64\252\376\264\0K\15\205D\213LJJ\232\226D\225,L\11\205D\213\260\217\203\0M" - "\20\207D\14m\310\226\212R\221\42)R\325\0N\15\206\304\213pS\42)\321Fc\0O\14\207D" - "\254\255\222\272&Y\66\1P\14\205D\213!\311l\203\22\26\1Q\15\227<\254\255\222\272&Y\266'" - "\0R\20\206\304\213!\312\222,\311\222!jK\302\0S\14\205D\233AL\327\60\34\24\0T\11\207" - "D\214C\26\367\15U\12\206\304\213\320\217\311\220\0V\17\207D\214TM\262(\253\204I\32g\0W" - "\21\211D\215,\323\62\255\322)iJ\332\212Y\4X\15\206\304\213PL\242L\213ZB\61Y\13\207" - "D\214\64\311*i\334\15Z\12\207D\214C\332\347a\10[\11\263>\213!\352O\3\134\14\245<\213" - "\60\15\323\60\15\323\60]\11\263=\213\251\77\15\1^\10\65t\253,\251\5_\6\25<\213A`\7" - "\62\375\212$\12a\14eD\233%K\6MK\206\0b\14\205D\213\60\34\222\314mP\0c\10d" - "\304\232!k\34d\13\205D\313\312\240\271%C\0e\13eD\233%\33\206\60\35\2f\11\203D\232" - "i\210:\1g\14\205\64\233AsK\206\60Y\0h\13\205D\213\60\34\222\314[\0i\7\201D\211" - "d\30j\10\242\264\231,\351ek\15\205D\213\260\224\224\264$\252d\1l\7\201D\211\203\0m\16" - "gD\214E\211\42)\222\42)\222\12n\11eD\213!\311\274\5o\12eD\233%sK\26\0p" - "\14\205\64\213!\311\334\6%\14\1q\13\205\64\233AsK\206\260\0r\10cD\212!\352\4s\14" - "eD\233%K\324$K\26\0t\12\203D\212(\32\242\66\1u\11eD\213\314[\62\4v\14e" - "D\213LKJI\26F\0w\16gD\214(\222\42\245\242t\213\262\4x\13eD\213,\251Uj" - "Z\0y\15\205\64\213LKJI\26fa\6z\12eD\213A\314\332\6\1{\13\243<\252$\252" - "dQ[\0|\7\261\276\212\7\1}\13\243<\212,\252%QK\4~\7&\334\33\311\2\200\17\225" - "D+\251\222\15Q\66Da\24)\0\0\0\0$QC\11\262S\353\11\344[\243\12.a\17\12S" - "g:\12\330ri\12\251~\270\12\210\213\306\12\225\377\377 \23\10\33e\216\7\1N\0\12+d~" - "(\31\16\2N\1\24\252=\216\207\64\207r(\207r(\207r(\207\362\21N\3\26\272=\316\34\312" - "\241\34\312\304!\32t(\207r(l\35\4N\7\25\253<\216\7\61\307rl\220\263\70K\303\64\254" - "f\241\6N\11\17\253<\236\341\316\313\60\344|\34\16\2N\12\27\273<\336\34\313\261\34\313\261A\316" - "\261\34\313\261\34K\207\203\0N\13\26\253<\216\7\65\307rL\207\222\34\211\362(\317\261\34K\1N" - "\15\31\273<\216\7\71\307r(\207\224\70\211\302(\213\262P\314\261\34K\1N\16\31\273<\276\34\313" - "\261a\320r,\307\206!\307\222a\210r,\307\362\11N\23\30\273<\336|\30\344\34K\207\203\230C" - "\303\220C\261\222C\71\230\1N\24\20\272=\256a\354\70\214}\34\306N\303!N\26\30\273<\336(" - "\214\212Qi\70H\215Q\61*FC\230c\71\66\34N\32\33\273<\316(\217\362(\322\242JT\311" - "\222(\311\222H\216\362(\217\262\341 N\34\30\272=\316\34J\207C\226\304Q:\14r)\311JI" - "\230e#\0N$\32\273<\216\7-\312\243t\70%QK\324b\211\244H*Fy\24+\0N%" - "\31\272<\236\341\230\204Q\22UZ\223p\270\344P\16\345P\216\344\20\0N*\26\272=\316\34\312\221" - "r\26Fm\231\230C\71\224C\71\224\2N-\26\271=\316\34\11\207C\226i\231\226\15\7\255\230#" - "\71\22\2N:\31\271=\236(Nr$\34\216Y(eQ\222EI\224&Y\244*\0N;\26\273" - "<\316\34L\207\203\232c\71\26\17\347\34\313\261t\70\10N>\30\273<\236(\314\242\322p\320\252Q" - "-\31\224b\65\36\316\71\226\2NE\25\273<\316\34\313\241A\15\333\261\34\312\241$\317\322\222.N" - "H\25\273<\336\34\313\241\34\312\322\260w(KK\303!\312\3NI\27\273<\316,\214\212Q\261\234" - "\305Q\216\324\241\34JbM\322\5NK\27\273<\316\34\214\207;\224C\71\224C\71\224#:\22\305" - "\341\60NN\30\273<\376i\230\243,L\242\64\251\15\7\65\307r,G\352P\14NP\27\272=\356" - "iPs(K\263t\270\306Q\222\225\222\60\13E\0N]\27\272=\276\34\312\241x\30\342(\216\342" - "(\315\322,J\302H\36N_\33\273<\336\34\313\243H\213\226l\310\222)+%\265\250\30\205Q\236" - "\15\203\0Na\21\271=\316\274\226\15z\326\64\14yY\234\1Nf\32\273<\316,\16\225aP\302" - ",\316\242\341 \246a\32FI\232\305\61\0Np\30\273<\216\7\35\312\242j\22gy\224\16\7\65" - "\207\222X\223t\1N\206\22\271=\216\367\262\236#\71\222#\71\22'y\12N\211\30\273<\276\34\33" - "\324,\35\316Y\62\34\324,\32\316\71\226#+\0N\213\27\273<\336t\70H\215Qm\70g\311p" - "P\263h\70\347\310\12N\214\14\213D\236\341\316\77\16\7\1N\216\27\273<\236\341\234c\71\226\16\7" - "\65\307r,\307r,GV\0N\221\24\273<\256a\310\271\17\7\61\207r\254Z\33nq\2N\222" - "\30\273<\216\7\61\307rlP\303\64L\303p\330\261\34\313\206\203\0N\224\26\253<\236\341\234c\71" - "\226\17C\234\305Y\234\305Y\64\34\4N\232\31\253<\236\341\232\344H\65J\242,)eIc\322\234" - "\344Hq\70\10N\233\34\273<\276(\217Z\224Z\22II)K\22%\33\302!\207\207!\207\207\203" - "\0N\244\27\273<\336t\70\350x\226\326\222,\11\263<\311\241\34\61\252\3N\247\27\273<\336x\70" - "da\34\245\303)\307r,\207r,\207r\14N\254\26\273<\336t\70\350\360\60\204i\230\206\303\220" - "\227j-\231\30N\256\25\273<\336t\70h\345A\307\207w(\33\344,\15\243yN\262\26\273<\336" - "x\70fy\22\16\7\65\36\316yTk\311\304\0N\272\26\273<\336\34\313\261\34\313\261\34\313\241$" - "G\352YZ\322\5N\277\32\273<\276\34K\6-\15\213Z\230dq\224Gy\222FI\32E\303\0" - "N\300\30\273<\276r\226\206i\30*\303\240\204i\230\206i\230\206i\230\1N\305\33\273<\276\34\33" - "\206,\312JY$eI-\11\263$\254fI\30e\225\64N\312\30\273<\336\34J\362,\215Jb" - "\244\303\303\220C\71\224c\71\224\2N\315\34\273<\256d\330\242\254T+e\225a\13\223,L\262\60" - "\211\322$\312\222\326\4N\316\26\273<\276r\26gq\26gq\226&\215I[K\26\226\3N\326\35" - "\273<\276r\226FI-J&eH\232\222Z\224\324\242D\214\222\250\61\312\6\1N\343\31\273<\276" - "(I\243Z\71\33\24eL\262\70\213\303\64\214\252I\24\13N\344\31\273<\336\34\313\241$\317\322\250" - "$F\322\60\344P\236\344P\16\206\0N\345\30\272=\376(\216jQ\26\325\242rT\213\222\60\22\223" - "b\226\211\1N\352\34\273<\276(\317\222,\211\222,\11#)KJ\305,\11\253Y\22FY%\15" - "N\354\35\273<\256z\226,Q\222%Q:\245I\224&Q\232Di\22\245I\224&Q(N\366\32" - "\273<\276rR\215\222\64\31\246\255\22\246\311\60Da\32\246a\32f\0N\367\31\273<\276(\217\324" - "\250\70*RKT\214\212Q\61*&Y(F\0N\373\32\273<\276PL\326\60\15C\61K\222a" - "\210\302\64L\303\64L\243A\1N\375\34\273<\276\60\215\222\60\213\262(\213\224T\211\6\255\224\225\262" - "R\26e\225L\1O\1\27\273<\336\34\323\221(\16k\321\20\346\321\32\345Q\36\245\303!O\27\27" - "\273<\336\34\313\241$\317\322\222\222%Z\71K\223\266\226,\15O\30\33\273<\276\250\30eQ\26\17" - "\27-L\62\65S\243$\215\222\250\22\225\304\1O\32\27\273<\336\34J\362,-)\203\242\63\15\327" - "\34\12\303aP\0O\37\33\273<\276r\226&\303\20\205\241\64(\305\64\31\206(\214\212Q\61\221\302" - "\14O \30\273<\276r\226F\303\24\206\312\60(Y\34\15S\234U\302j\11O$\34\273<\276$" - "G\352\321\60%Q(fI\64LaT\214j\245\226(\11\23\0O\64\31\273<\276\262\324\245\26\206" - "\322\240\24\323\60M\206!\12\323\60\15\63\0O<\36\273<\256\70KJY\22%Y\22%\221\22&" - "\215Y\22fIc\42iZT\322\2OF\33\273<\276\34K\6-\312JY$\15J)+e\245" - "A\313\261\34K\206!OM\31\273<\276(\317\322\34K\206!\321\221R\326\224U\302\64\254&\303\20" - "ON\37\273<\276P\34\324$J\223(T\242,I\206!J\242\64\211Z:%J\42%Y\22O" - "O\33\273<\276(\317\322d\30\242\60\24\263$L\243A\13\323\60\15\323d\30\2OS\33\273<\256" - ",\316\322d\30\242\60\324\306(\251%QI\253D\203\26\246a\10OU\36\273<\276\34\33\6)\216" - "\224!\351\224dI\224d\311\220dI\224dq\26g\251\2OY\30\273<\336\34J\362,-)\203" - "\242\306\303\71GZ\243Z\244%\0O\134\32\273<\276$G\352\321\60%\325)L\262!+gq\66" - "HY\234\205\0O`\34\273<\276$G\352\321\60%i\42fI\224\324\242\244\226D%-*F\65" - "\15O\177\35\273<\276\362\60Ha\232\14C\242D\221\222\14C\224Di\224\244Y\34%\342(O\233" - "\33\273<\276$J\223(\214\212\311\60$RKT\34N\71\26\25\223\60\223\3O\235\35\273<\276(" - "\317\322d\30\242\60\324$%Jj\211\24*Q\30e\245$*i\1O\277\36\273<\256d\30\242\60" - "M\206!J\242\212\62\14J\251e\30\242J\232\305Q\222n\3O\335\34\273<\276d\20\223\254\224\225" - "\6I\314\222d\30\242\60\315\306(\251%Qc\6O\341\34\273<\276(\317\322d\30\242\34\222\6\245" - "\216E\203\226c\321\240EYiP\0P\22\36\273<\256<\32\246$\312\222\246$\71,\265(\251E" - "IeXjQR\233\222D\24P\31\35\273<\256h\10\323,\31\6\245UI\6)\221\302d\30\224" - "Z\230DI\326T\15P<\34\273<\276\362\60HY\34\15\222\224%\245A\213\262\322\222E\311\26e" - "\225a\10PG\36\273<\256\344\224\324\242\244\26%\27%N\222S\222%Q\262\224\222\60K\62-\211" - "\12PO \273<\256\60M\206!J\322(\31\206D\211\223d\30\242\244S\62\14Q\322iiJB" - "\1PZ\35\273<\256$\13\223\254\224e\303S%\252(Q\262\224\222NI)K\226R\230\5P\134" - "\33\273<\256,\36N\71\24\15S\61Q\206A)'\321\60\245a\32f\33\0Pv\37\273<\276d" - "\20\223\266h\320\242\244$\15J\61M\206!J\242\226H\211\222!\252\204\2P\250!\273<\36\61J" - "*\203\224&\321\62\14J\26&\321\20%\211T\211\206(Q\242J\324\70$\0P\317\37\273<\276h" - "\10\223(L\206!RJ\211\64\14IVJ\224Z%L\224\255RJL\0Q\77\27\273<\276r\26" - "gq\26gq\26gq\226\206Q\222F\372\0QC\25\252=\236a\320\351\303!\213\342(\315\322," - "J\302H\36QE\30\272=\336p\70\204\71\222e\303 FI\30\305Q\232E\265h\35QF\32\272" - "=\276(\213ZJI\224Dj\224JS\22ER\65\213\222\60\222\7QH\31\273<\336<\312\207A" - "\312\322\60\35\16Z\224Gy\224EY\266\16\1QI\27\273<\336\70k\252\247\303A\213\362(\217\262" - "R\26e\331:\4QK\31\273<\336t\70\250\371\60\204i\230\206\303\20'y\224EY\266\16\1Q" - "Z\31\272=\236\250\230\324\206\203\216(\303\22\205\341\260&y\222E\265q\10Qe\27\273<>\35\314" - "\261\34\313\241$G\352Y\234\245\265<\311\241\0Qh\30\273<\336\34J\362,-)\203\242\346X\216" - "\14:\222c\361p\1Qk\24\253D\356<\312\243<\312\263\70K\213i\226'\71\24Ql\30\273<" - "\376\70\213\303j\30eQ\26j\71\26\305a\70\14b\232\0Qm\24\273<\316\34\314I\303Ag\314" - "\342\260\34\345\210\16\5Qp\21\273<\256\264\26\16w^\206!\347>\34\4Qq\26\273<\276r\26" - "\16\307,\316\342,\33\16:\236\245\265<\1Qs\25\273<\256\264\26\16\347\34K\207C\234CI\236" - "\245%]Qt\26\273<\316R\326TLs(\33\16:\236\305a\71\312\23\0Qu\25\273<~q" - "\220sl\70\205i\230\206\331p\320\252%]Qv\26\273<\276\342p\314\342A\316\342A\316\262\341\240" - "UKz\2Qw\32\273<\256a\10\323p\30\302\64\34\206\60\15\207!L\243\341\240\325\326\1Q\205" - "\26\272=\316\34J\207\203\26j\241f*)a\242#:\42\17Q\214\36\273<\236!\31\242J\324\22" - "\265D\311pP\242$j\211Z\242\226\250%J\242I\1Q\215\31\273<\216\7\65\37\206\60*\16C" - "\30\25\243\322p\220\322\60\15C\11Q\231\33\273<\236\341\220\344\210\224\206\303\232c\303\220c\321\60$" - "\71\226'\71\224\1Q\233\30\272=\216\7\35\11\343a\20s$J\207A\16\207C\232C!\0Q\234" - "\32\273<\336x\70$Y\250ia\224G\65)\311\222\254\224D\251\250\305\1Q\245\31\273<\216\357\220" - "\62\14I\224\206\303\20\246\341\60\344\351p\320j\353\0Q\262\32\273<\236\264\230&\303\20F-QK" - "\24\35\206$jI\303\64\307\62\0Q\263\31\273<\236\60\316\342d\330\243\254\224\225*\303!L\263$" - "\214\262J*Q\265\35\273<\216l\230\212Q\61\15\263d\330\242$\323\222\60K\302,\211\222\250\245\66" - "\4Q\267\32\273<\216\264\230CI\232d\241\24)i\30\15K\36\205[\234\203\21\0Q\306\35\273<" - "\316$\314\242\60\32\206$\221\362(M\206-\211\62i\230\32\243b\64\14\1Q\340\27\273<\276A\316" - "\342,\316\342,\316\342,\316\322\60*F\363\0Q\372\26\273<\336\70+e\245\254\64\234\323\60\24C" - "\61\24\303\341\1Q\373\26\273<\336\34\213\207s\216\245\303A\215\263RV\312J\303\5R\6\30\273<" - "\276r\226\26\323,O\222aH\302,\316\322\260\32\211\32\0R\7\33\273<\256\34\213\206)\214\242)" - "\32\302\250\30U\242\222\224EY\65\254)\0R\12\30\273<\236A\314JY)+\15\247\254\224\225\262" - "R\26gq\26\16R\27\31\273<\236a+g\245hH\242\226(\221\222\310T\214jq\224\317\3R" - "\30\36\273<\256<\213\207A\251FI\324\222iI\230%Y\22%QV\11\223DG\22\0R\31\26" - "\272<\236AK\262\244-\351\377\377[%J\302$\313\344\1R\32\36\273<\216C\246&\211\226T\246" - "\244bJ\22\251\222(]\246\244\242fZ\222\211\321\0R\33\33\273<\276\70S\243\226b\222(C\224" - "D-QK\264%QV\312jC$R\35\33\273<\236\34\214\206\203T+\25\243D\211\42E\213*" - "Q[\251\30%\231\2R \33\273<\216eS\272(]\224.\303!Q\272(]\224.J\233\322\246" - "X\6R$\35\273<\216\250\226\224\222\236\222,L\222AJ\262\60\31\6\245\26&Y\34\345\363\0R" - ")\35\273\34\273<\256d\330JY)\31\224b\226LY\251\30)" - "-R\226fI\26i\1W@\35\273<\256\60\15\323\60\33\226\64J\206\250\222FI\32%\351\220d" - "Z\22\17\203\0WG\33\273<\256,\316\342h\70\304Q\61\312JI\226DZ\264i\71\226#\12\0" - "WP\26\273<\336<*F\305\250\226\364\266\245\361p\316\261t\70\10WW\34\273<\256\60\15\323h" - "P\6)\311\302$\13\223,\31\206H\313\304$\317B\65W[\32\273<\256\34\213\6-G\206\34J" - "\206!\12\323,\226B\255\70\14b\32W\203\32\273<\256,\16\323h\70\350H\224\225\262\246l\211\22" - "\61\311\261x\30\2W\316\32\273<\236X\212\223\322\360VZ\232\222.J\42)MJ\242\324*RV" - "W\337\33\273<\256TK\223(\31\16be)%\235\222E\23#M\251I\211\234\5W\372\30\273<" - "\276\342p\314\342%N\346,\33\16R\223\62(j:\34\4X\203\35\273<\256\60M\206!\312\222h" - "\70H\265\322\240EY\246\14\212\230\344Q\222\211\2X\223\32\273<\216\7\61J\207!L\303a\10\323" - "h\70HM\312\240\250\361p\1X\231\37\273<\236\64\214\206!\211J\203\322\24\15C\222c\321\60$" - "C:%K\230\64\16C\0X\236\33\273<\256ZK\230\14O-\311\22%Q\313\60D\265L\31\24" - "\255<(\0X\353\27\273<\336\34\313\261\34K\207\203\232c\71\226c\71\26\17\27\0X\360\31\273<" - "\336t\70\250\371\60\350\370\60hQ\226\15\203\226C\71\224c\0X\363\26\273<\336t\70\250\371\60\350" - "\350\360\16e\203\234E\305h\36Y\4\32\273<\256\60\15\323!I\243D\253\364\324\22\305Y\232Da" - "&\306C\0Y\7\31\273<\276\34\33F-\214v$Q\305\341\61*\16C\30\25\207!\2Y\15\33" - "\273<\256\34\33.j\224\14C\230\206\303\220\346\320\60DR\35\21\7i\10Y\17\31\273<\216\7\65" - "G\206\65L\247\64\31\322\60\34\206,\252\205\362\64\4Y\26\33\273<\256\60\15\323!I\243$\314\22" - ")\211\222\242T\214\342,\15\253\31\0Y\32\27\271=\316|\320\302(\211bU\311\244A\13\23%\212" - "\245A\4Y\34\34\273<\336t\70hQ\36\15Y$EJ\224T\224(\314\222\260\232%a\242\11Y" - "\37\34\273<\236\64\34\224!\311\214Ii\211\262$\31\226N\311\242T\263\70J\25\15Y'\26\273<" - "\336\34\313\261t\70\250\71\226CI\216\324\263\264\244\13Y)\26\273<\236\341\234c\71\226\16\7\65\207" - "\222\34\251giI\27Y*\30\273<\336\34\313\261t\70\250\71\224\344H=\213\245\64*i\231\0Y" - "+\25\273<\336\34\213\207s\216\245\303A\315\241$\317\322\222.Y\61\27\273<\256z\224\17\203\224\345" - "X:\34\324\34J\362,-\351\2Y\64\27\273<\276(G\312Y\36\345X\70\34\344\34J\362,-" - "\351\1Y\71\26\273<\336x\70\347Q\65\251\15\7\65\207\222%-Je)%Q%\212\0ZZ\37" - "\273<\256h\320\242\322pP\232\262$\221\224rR\31\264(\313\224A\212\264$\34\24\0[P\30\273" - "<\256a\310\241\34\312\241\34K\207\203\232c\71\226#u(\6[W\30\273<\336x\70$\71\42\15" - "J\236C\351pPs,\307rd\5[X\31\273<\316x\70h\71\224\14[\232\211Y\62\234\302\64" - "L\303\64\332\0[f\30\272=\236(+%\321p\320\221h\330\221\34\11\207C\232C\371\10[i\33" - "\273<\216A\212\223a\12\323,\312\224!\32\243Z\224E\305J[%\22\3[\203\30\273<\336x\70" - "$\71\42\245a\216E\353\216\344X\234\305\341\60\4[\211\27\273<\336x\70$\71\242\205i<\34\264" - "\252\226\357H\244\255\2[\214\32\273<\336x\70$\71\42\15J\16\17\207\60\311\243<\312\242\254\222\16" - "\1[\230\32\273<\336x\70$\71\42\15CX\35\326\34\33\206\60\15\207!L\23\0[\232\32\273<" - "\336x\70$\71\242#\331\60\310y\224GC\30\305I\65\33\206\0[\235\30\273<\316\34L\207w(" - "\32\206<\307\362a\310\223\34\211\242\341 [\236\30\273<\356t\70$e-\211\262z\224\16\207\70\207" - "\222<\313V\1[\242\30\272=\316t\70Hi\64lI\224e\262$\15\207(l\34&\0[\243\31" - "\273<\336tx\207\242a\310)\303\20\246\341\60\204i\70\14\321p\20[\244\30\273<\336tx\207\224" - "aH\302\34\312\322A\311\363a\310\323\341 [\264\31\272=\316t\70(a\242\14K\24\206\303\234\16" - "\207(\213\207l\310\6[\266\31\273<\336tx\207\224aH\262$\253\264F\242\262\244QI+\252\0" - "[\271\30\273<\336tx\312\242nQ\22\205YZR\6E+g\361\240\1[\275\32\273<\336tx" - "\312\242d\70f\351\60\204Q\61*&\335\242l\10\207\0[\304\32\273<\336tx\14\225aH\262\332" - "p\320\221p\210\302\250\70D\71\62\1[\306\31\273<\336tx\253\364\26\65&Q\62$\203\222\346Q" - "\61*\16C\4[\314\30\273<\336tx\207\242aH\7\71\13\207SV\32NYi\270\0[\337\34" - "\273<\336tx\311\62eH\206D\211\222(\11+C\222\350H\62\334\242\222M[\371\33\273<~$" - "\32\302t\70\205Y\22\226\212Y\222%a\226\204Q\232\344P\6[\374\32\273<\256a\10\323p\30\222" - "(\317\206A\317\206\203V\217\362(\207\64\0\134\6\34\273<\256,\216\6\245TS\22\65K\302\250\246" - "\14\203\22\25\263$L\303P\2\134\17\27\273<\336\34\313\261<*FY\224\225\262P\254\346H\35\212" - "\1\134\21\31\273<\336\34\313\221R\232d\245\60\311\242<\311\241\34\312\21yG\0\134\24\27\272=\256" - "\34\32\6%\27\243\270\224\204Q[T\313\304,\33\1\134\61\36\273<\276\332\260\324\221(\31\16I\224" - "\324\206\244\32%Y\242\364\242$R\245\244d\2\134=\31\273<\256a\10\323\60\15\207!\314\342\260$" - "ea\224Dj\35\14\1\134>\33\273<\256a\320\342l\30\264P\34\344l\310\6\71\33\262AK\302" - "L\35\4\134@\34\273<\256a\320\342l\30\264\34\33Ny\224\14Q%\252DC\224D%]\1\134" - "B\33\273<\256a\320\342l\30\264\34K\206-\307\206S\26G\265(L\262a\10\134E\34\273<\256" - "a\320\342l\30\264\362p\312\342d\330\222\60K\302(\32\226,L\0\134O\30\273<\256\341\224G\303" - ")\11\263\250\70\234\32\207S[\224E\305\10\134U\30\273<\236\341\224G\303\251q\70\65\16\207\244\324" - "\222I\225\250$\12\134^\36\273<\236\341\224G\303)\217\222a\13\323d\30\242$\252$\303!\311\62" - "%\31\22\1\134q\26\271=\316\34\11\263L\313\264L\313\264L\313\264l\70\350\1\134\201\30\272<\236" - "\254\222U\206c\16\15[\232(Y\234\344H.\16\61\0]\26\31\273<\256\254\224\225\206S\26'\203" - "\230\305\303)\213\223a\12+\303\1]\336\34\273<\276\70\213\262R\226$\246\244\242$R\245\26e\245" - "\254\224EY%G\2]\345\24\233D\236\341\234c\71\226c\71\226c\71\226\16\7\1]\347\30\273<" - "\336\341 \245a\232\305\331 \345\321\272#\71\26G\71\42\1]\356\30\273<\276\60\216\262\341\240\306\303" - "\65\36\16Z\16%\203\26V\206\3]\361\26\253<\216w,\307\262a\320r,\307r,G\352H\64" - "\34]\362\26\252=\216\203\16\345P\71\32\6)\207rDGt$\31\16]\364\26\252=\216\227\254\222" - "U\262\312p\311\241\34\312\21\35I\206\3]\376\27\271=\316\34\11\207C\226i\231\226i\231\226$Z" - "\224\346H\10^\1\27\272<\376\341\220#\351p\311*Y%\253dI[\24\347P\10^\2\30\273<" - "\336\34K\207\203\232\17\203\26e\245\254\224\225\222ZTO\1^\3\31\273<\316\34\213\207\203\26\345Q" - "<\14R\22U\242\306\250\30%z\10^\10\37\273<\256d\30\224\60K\302,I\206A)EJ)" - "RJ-QK\224(i\26g\0^\14\30\272=.iU\247\65\35\16Y\22\17C\62\325\242Z\224" - "\310!\0^\26\35\273<\256\64L\243A\33\222Z\224\324\242\244\62,m\312\222EY)\33\244\254\0" - "^&\31\273<\256\246\341 \65F\245\341\61T\206!\211\32\243b\224\350)\0^.\34\273<\276\34" - "\31\224!+%\203R\314\242aH\206\250\22\16\267(+Er\12^\70\31\273<\256\266\341\220\344\210" - "\64,Y\230\16{>\14Z\224\225\42\71\5^=\37\273<\256h\230\212\303\220X\22Q\251\14I\247" - "\244eH\222%\312\262!+e\331\220\0^E\36\273<\256h\230rdP\206\244S\322\62$\315I" - "\62\14\312\220D\245a\252D\245a^U\34\273<\216\7\255:\14a\32\16C\230d\321p\320\222(" - "\32\16Rc\224H\0^r\27\273<\236\341\234c\71\226\16\7\65\307r,\307r,\307R\0^s" - "\27\273<\236\341\234G\325\244\216\244\303A\315\261\34\313\261\34K\1^t\27\273<\256\34\33.a\65" - "\36\6\255\234\205\303A\316\261\34\13\1^v\26\273<\256\264\26\16\307,\316\342,\33\16Z\71K\303" - "j\6^x\26\273<\336x\70\247\303A\253'\351pN\207\203\232c)\0^{\34\273<\256\34\213" - "\206)O\242\64\211\322A\216\362(I\223,\34\206\244\16E\0^\177\27\273<\336\34L\207C\222c" - "\71\226c\71\226c\71\224c\71\6^\217\30\273<\336x\70$\71\226\14[%\254\16\207$\214\212\325" - "\60\33\1^\224\30\273<\336\34L\207C\222cMI\324%j+Gq\26\15\203\0^\225\34\273<" - "\356x\70\345X\62lI\224&\303\20%Q\232da\322\223\222lQ\1^\227\32\273<\356x\70\345" - "X\71\33\262r\62lI\230%a\24\15K\26&\0^\234\33\273<\356t\70$Y\251\30U\6%" - "\21#\245\324%*&Y\224\324J\0^\246\31\273<\336x\70$Qq\70\65FC\230c\311\260E" - "\265PL\246\5^\255\36\273<\356t\70$\71\66$\203R\314\206dP\242,S\262J\64Ly\222" - "\14C\0^\366\35\273<\216!\325\222!L\263\70\32\222hK\242\226(KJa\64,\365l\30\2" - "^\372\34\273<\356p\31\266Re\70hQ\226\14K-U\206!\312\322$\12\263a\10_\0\27\273" - "<\236\341\230\305Y\234\305Y\66\34\264j\230\206\325,\316\0_\17\31\273<\356$G\242<\34\16r" - ":$y\224gq\26eZ\62\304\2_\25\31\272=\216[\232\245Y\62hI>\14Y\232\245Y\232" - "EI\230\245\1_\37\30\273<\276z\222\16\347,\33\6)\213\207C\226\204Q\313VN\1_ \32" - "\273<\216)+e\245\322-L\243\341 %i\224\244QK$\325\302\0_:\35\273<\216i\320\242" - "\254\64(c\226\15\203\26EC\22\265\14[\30\25\207i\210\2_S\26\271=\316Z%\252%\245\341" - "\216\344H\62\14:\222#\303!_U\33\273<\256a\310\261p\30r,\32\16R-L\224XI\225" - "(\322\62Q\5_b\33\273<\236a\213j\245b\24\16\203\224E\305(I\243\60\252EYT\334\0" - "_i\33\273Q\321\266\60\35\222\64J\6%J\242hH\242bT\214j\225,L\0b" - "K\27\273<\356!\32t,\36\316\71\226\16\7\65\307r,\207T\0bM\27\273<\376\34\13\207C" - "\254#\365(\316\322\60Ss\244\16\205\0bS\32\273<\256\34\213\206\203\26\246a\222\205b\246FI" - "\32\246a\32m\23\0bk\32\273<\256\34\213\206\203\32\345Q\222F\322\240\350J\36\345Q\64\334\21" - "\0by\35\273<\256\306\250\64LaT\211\222aS\242Lj\211\212Q\242D\221\222\14Q&b~" - "\34\273<\256,\11\263(\31\16R\26'\245L*iI\224\204i&u\31\222Pb\177\31\273<\256" - "a\207r(\34\16ZT\34\206\60\312\242\341\224\205bm\5b\200\33\273<\256\60\15\263\341 \205i" - "\62lJ\26IYRK\302j\226D\213&b\204\33\273<\256\60\15\263AQ\262(\211*Q\252E" - "\211\230\264\206\325,\134T\0b\212\35\273<\256\34\213\6eXjQRK\224\232\62HR\232Dy" - "\24F\305!\32\6b\225\36\273<\256l\310J\311\240DY\224II\216(\203$eI-\11\253Y" - "\22-\232\0b\227\34\273<\256,\16\263\341 \345X\64\204J\224I-Q\61\252DI\226\14\252\0" - "b\244\32\273<\256\60-\15\311\60\25\243b\244\14\213\224&Q\36\345I<\344\0b\245\35\273<\256" - "h\320\242,\31\266R\42&\272\62,R\322)\251E\305(\251LZ\0b\261\36\273<\256z\64\34" - "\324(\32\222\250%R\242$\221\206D\211\42-\12\243\342\220\15\2b\311\33\273<\256,\16\263\341 " - "\345X\234)Y\244EI-\11\323\260\266\14C\0b\322\33\273<\256h\230\252\303\36\15Z\242eJ" - "\26I\203R\312Jy\224N\303\0b\333\32\273<\256h\230\302h\230\32\243J\311\22k\303\222\225\262" - "R\66\14Z\1b\345\36\273<\256d\30\242$\212\206\251e\30\242$*M\25e\30\224RK\324\22" - "E\203*b\377\26\273<\316=\313\226[u\30\362|\30\362t\70\250\71\244\2c\1\35\273<\256\60" - "\215\6e\220\322\60M\206!\22\63e\30\224\250\230%a\32\215\22\0c\7\35\273<\256,\316\242a" - "H\306\254\224$\203\244#\332\260d\245l\220\262l\310\6\1c\11\34\273<\256\60-\15\7\251\22U" - "\242T\31\26-JJR\26\212Y\22-\232\0cn\35\273<\256h\230\212\303\20F\321\60%R\250" - "\14\213\324\22\15S\262)mIi\20c\211\34\273<\256\60\15\207S\32\15Z\242e\312 IYR" - "\32\264\60M\206C\230\1c\222 \273<\256,\11\263$\32\206d\312\222\60K\302AY\264$J\262" - "$LNY\22mI\4c\245\34\273<\256\60M\206\203\222\265\204\311\60DZ\250\14\203\222EY\244" - "\204\225\344\26c\247\33\273<\256\60M\206\327(K\302(\313\326D\32\224b\32\246a\266\14C\0c" - "\250\32\273<\256J\32\225\206d\230\32\23)T\206Ej\211\206\251\61*\35\6c\317\36\273<\256," - "\11\223\341 %a\216E\303\244\224\22)\211\224h\230*Qi\70\205\1c\320 \273<\256h\320\242" - ",\31\16Y\224\225\6MG\224aP\242$\215\222!J\22m\310\206\0c\322\37\273<\256T\213\266" - "!K\223a\210\302T\251X\242HI\224DJ\242\226(\32\222a\10d\34\35\273<\256J\232(\311" - "\60D-J\42%Qi\270\210Y\222\14[T\314\264E\32dD\36\273<\256d\30\242,J\6e" - "\310JY\222\14\231TR\206A\351\251Vi\31\264(dX\36\273<\256\60M\206\203\224\204\311\60D" - "IT\32^\242\226d\211\222NI\262$J(dx\36\273<\256,\11\223\341 %a\64hQ\226" - ")\203\62e\331p\12\263$K\62E\23d\222\37\273<\256\244q\30\242\245\62\15C\22%]\224%" - "QzJ\226RRJ\372\242\14Q\0d\255 \273<\256tJ\206lH\332\222a\210*\265)\32\222" - "a\210\222\250e\30\242$\252(\303\20d\316\32\273<\216K\232D\303K\224\224\262\245\242\15C\34\17" - "\207\64\35\16\242\12e\66\36\273<\276(\217\302(\32\246$K\42%J\242\226DJ\42%+ej" - "TL\302\0e\71\31\273<\376l\220\362d\20\265hH\242bT\214\252Z\222\331\242\222\30e> " - "\273<\256\60\316\262a\31\242,\312\242\244\66%Y\22%Y\222\225\42-J\242$J\302\0e\77\36" - "\273<\376lX\342l\310\42%J\226R\222%Q\222%Q\22f\311\24\215I\254\5eE\33\273<" - "\276r\226\15\313\220U\302\250\64(\245\226\250V\312\262!J\242h\13eY\34\273<\256J\66,i" - "\22\15/a\226D\203Rj)-\245\61\315\222h\312\2eb!\273<\236!\212\263lX\206$J" - "\224h\210\222\250%\32\242$j\211\222)Z\242$M\262\0ec\36\273<\256$\12\7%M\242\341" - "%j\211\206(\211Z\242!J\242Z\251\22%J\26ep \273<\216()&R\66,Cd\211" - "\22))%-\303RK\242$R\262\64K\222[\0et\32\273<\276\332pPz\32\244pJ\242" - "$\321\222\341\234GC\30\245\303Ae\207\26\273<\316\34L\207\203V\316\342,Or\244\16\345\210m" - "\35e\227\26\273<\276z\224Gi\30gq\226c\303;\226c\71\226\1e\231\34\273<\256\64J\22" - ")\233\222\60\215\206)\314\222P\134\224AJ\322\60\15\323\10e\244\26\273<\376m\220s,\307\206S" - "\230\206i\230\206\325,\316\0e\255\37\273<\276tH*R\62eQ\226\15\313\240hIbJ\22\245" - "\247,I\6%\212\263\4e\257!\273<\236(\34\6E\213\212C\24F\321\220\14Q\22\265$\303R" - "K\242$\312\244$\314\22\0e\260\35\273<\276t\30\24\255\222&Q\66,CVI\206\245\230%Q" - "\322S\233\222%\0e\271\27\273<\316\34L\207\203\230c\71\66\250a\32V\263\70\12\67\0e\305\33" - "\273<\256,\217\206\347(\322\26\65\351\224T\264\244-J\242\226(\211\24)e\317\35\273<\256,\217" - "\206\203\236\305\313 %R\230d\245aH\242,JJI)\321\2e\340\30\273<\236\341\234c\71\226" - "\16\7\61\311\221z\224GY\224e\353\20e\345\15\247>\216\203j\35\256\326\341\32e\347\27\251=\216" - "h\30\242P\12\245P\32\206(\224B)\224Bi\30e\351\31\273<\256a\10\323p\30\302\64\34\206" - "<\307\322\341\240\346X\216\245\0e\366\34\273<~$\32\302(\32NaT\211\242!J\242\226\250\30" - "\25\243!\314\221\11f\16\31\273<\356\341\224I\65)\32N\231T\223\242\341\224\245a-\211\324\4f" - "\23\33\272<\256a\310\322l\30\262\64\33\206,\207\206A\211\222H\352-\211\42\5f\37\32\273<\256" - "a\10\323p\30\302\64\34\206\60\212\207K\230\17C\236\16\7\1f%\32\273<\336x\70\244\371\60\250" - "\361p\220DE\231\222,\31\322\60\35&\0f/\30\273<\276a\15\323a\15\323a\207\207\203T\217" - "\206,\251f\303\20f<\32\273<\256a\10\323p\30\302\352\60d\352\220\14C\230\206\303\220\303\303A" - "f>\34\273<\256a\10\323p\30\302\64\34\206\70I\243$\312\222R\226\64'\341p\20fZ\35\273" - "<\336t\32\242\244\224%\303\240,\245\244SR\31\226\232\66%Q\30\325\262!fh\36\273<\256a" - "\10\323p\30\302\64\33\16I\216%\303\20\345\330pHJI\24I\13\0fn\32\273<\276\342p\252" - "DY\322\64\34tx\30\302\64\34\206\60\15\207!\2fz\37\272=\236\34\32\222A\311\242a\220\42" - "iH\242$R\206!K\263a\310\322l\30\22\0f\362\27\272=\276(\216\262\341 \225\244\222T\32" - "\236JRixG\2f\364\31\273<\236\341\20\307\303\240\225\262a\320J\331\60\250I\16\345\210m\35" - "f\376\31\271=\256\332p\220\242\245e\70\344\330\60Di\64\14Q\32\15C\2g\0\33\273<\256a" - "\10\323p\30\302\64\32\16J\224\17\247J\24\15\221)\222'\1g\10\31\271=\256a\210\322(\215\206" - "!J\243\64\32\206(\215\322$L\344\4g\11\30\273<\316x\70h\71\66\214b\226\14S\61\35\326" - "\60\15\323L\2g\13\35\273<\236!\32\222\250%j\31\242!\211Z\242\226!\32\222\250%j\211J" - "\226Hg\15%\273<\236!\31\224(\311\222(\311\222!I\226(I\243dP\206$K\242$\221*" - "Q\222%\25I\221\2g\33\33\273<\256l\10\243\312\240\14Y)[\206,\312\242\341\234\17C\236\16" - "\7\1g\35!\273<\276lx\312J\311\240\14I\226D\311\240DI\226\14\311\240DYi\30\222(" - "\213\42\1g\37\37\273<\236(\32\16I\224D-C\64$Q\313\20U\242h\70$Q\36%QI" - "\224\4g*\26\273<\336\34\213\207s:\34\324\34\332\223jT\322\62\65\5g,\27\273<\336\34K" - "\207\203\270'\345\244\32\325Z\242AJs,\5g/\26\273<\336$G\242<\35\16j\16\355I\65" - "\252\265\204\325\24g:\34\273<\256\34\213\206\60*\15S\30\325\226(S\244J\324\22\25\223,\211\304" - "\1g@\30\273<\256\64\225rD\227B)\222\323\341\240%\325\250\244e\242\12gC\34\273<\256\34" - "K\206eH\262RV\312\242)\311\224\246$L\263$\214\262J\32gN\30\273<\336t\70hI\65" - "*i\231\66\350P\16\245\303A\315!\25gQ\33\273<\256\70\213\223A\31\244\70\232JJ\224\64&" - "Y\234\305Y\234\205\13\0ga\33\273<\276\34\33\306$\12\63\35)+\211\244e\322\60\244I\65*" - ")[\2ge\27\273<\336x\270E\325\244\66\34\324\34\332\223jT\322\62\65\5go\32\273<\256" - "\34\213\206\203\26V\265\64I\224HJ\42\245\324\230\206i\230\1g\177\35\273<\256T\213\266a\217\362" - "h\220\226,R\246\244\224\210I\26&Q\222)Z\0g\201\35\273<\256h\230\262(\31\224b\226L" - "Ye\312\22K\247\244\26\25\223(\311\244,g\227\32\273<\256\60\15\263\341 \205\341\26*\311\224D" - "IO\215i\230\206\31\0g\234\31\273<\256a\10\243\342\60\204Qq\30\362t\70\210{R\215JZ" - "&g\317\32\273<\256\64\254\15\312 e\245\254$\15\212RS\262RV\312\6)+g\320\30\273<" - "\276\332p\320\312\203\234\305\203\216\244\303AK\252QI\313\4g\345\31\273<\336t\70hI\65*\15" - "\7)\15\207!L\303a\310\341\341 h\7\34\273<\256h\320rd\320\221d\30\242\60\334B)\351" - "\224D\225\250\61\315\64\0h\17\34\273<\256b\224E\311\220C\311\60$:\264'\321\240\324\261\34\313" - "\261d\30\2h!\33\273<\256,\16\323d\70\350P\226dK\26)-J\226\204\325,\11\23Mh" - "\67\33\273<\256ZK\64\34\244\60\134\6I\314\222\60M\206!\12\323\60\15\63\0h\71\34\273<\256" - "h\320\242,\31\16Y\224\225\6M)%\226N\305\250\30%\265H\13h<\34\273<\256,\316\206d" - "H\262JcqJ\62E[\242A\213\262RV\32\24\0hH\30\273<\336txK\207\267(G\206" - "l\320\326t\70hIm\212\6hL\30\273<\336A\316\207!L\303a\10\323p\30\362t\70HM" - "Z&hc\34\273<\256\60\215\222hX\224,L\243a\231\23%U\242a\312\243<\212\206\1h\205" - "\34\273<\256z\64\34t$\32\244\245I\31\6%J:%\265h\230\342,\224\0h\246\32\273<\276" - "\60\32\224A\13\303iQ\22\245\230c\303\64\306J\216\250C\14h\257\35\273<\256ZK\30\15\312 " - "%Y\64HKQ\31\6%\223Z\242J\264\205\31\0h\313\37\273<\256,\312\242\341\240DY\66d" - "\245L\32\42\245\224T\206!\312\222\60\312*i\0i|\36\273<\256$\352R\31\262\64\31\206di" - "R\242H\11\323d\30\242,\312B\61\231\4i\375\36\273<\256,\11\223\341\245)\31\206(\351\64\134" - "\244,)\15Z\224\225\6-\312\22\0j!\37\273<\256,\11\223\341 %a\64hJ\26)\303$" - "eIe\30\242\60\315\222\60\321\4j\61\36\273<\256d\30\242$\35\226\246\244S\322IiR\242H" - "I\206!\312\222\60\24\223Ik!\30\273<\236\60\316\342hX\263J\224\206\231\32V\262\60\311\32\325" - "\0k\42\31\273<\356pP\6\61\311,\245$K\303TK\223\266()\205YZk'\33\273<\376" - "lX\262x\230\222LI\244\306\250\30%\265H\252T\243d\30\3k>\33\273<\276\332\260\304\331\220" - "\14I\226#\225!\313\261h\230\262\244\247\246%\14kL\36\273<\216K\36eK\64(m\303\240\304" - "Y\264dQRJ\222%J\322$\313\306\0kb\27\272=\336\34\312\241\70\212\243!\213\342(\216\342" - "(\216\302\341\20kc\26\253<\216\7\65\307\362(\217\6-\312\243<\312\243t\70\10kd\35\273<" - "\276r\26gQRK\242d\321\222,L\262\60\311\302$\213\222d\211\206tke\30\273<\336<\32" - "\264(\217\322\341\240\346H\255TKsD\34d\0k{\30\273<\216\7-\307\312K\324R\222\22\251" - "R\217\342,*F\363\0k\265\34\273<>e\323\222,L\262%Zrl\31\244\254\24&\321\220\205" - "\225,\322\4k\315\33\273<\256a\10\223,\214\212i\64\34\244$\13\243b\232\15\207\34\311\21\15k" - "\317\33\273<\256\34\33.\71\24\15k\22E\303Aj\314\222l\70\344H\216h\0k\322\30\273<\336" - "t\70\250\361pN\207\203\324\64\34\224,\312\206C\254\1k\324\25\272=\216\260\247$L\242!\321\302" - "\276(\331\226\251C\0k\333\27\273<\356m\320\261\34\33\262A\307rlx\307\302\64\214\7\1l\21" - "\27\272=\216\227<\311\223\341\222\245Y:\34\304R\222)Y\264\16l\24\31\273<\276\34\33\206,\207" - "\222a\312\321a\307r,\312\243\34\251C\2l\64\30\273<\336\34\313\261\312\220(iRN\252Q\61" - "\252\265DIX\6l\70\31\273<\336\34\214\207,\216\242!)'r\224\244Q\255\66%\71\24\3l" - "B\27\273<\336(\317\222\341\240\346Q\65\251\357I\65*i\231\250\2lI\32\273<\236\14Q\230\211iV\212\6\245\26\6l\341\37\273<" - "\236(G\312\331\60%i\226\14I\226DI\226\14I\42eR\65\211\322$\33\6l\342\34\273<\236" - "\264\230e\303\220DmR\232\14[\22&RR\213\212I\224d\212&l\350\32\273<\236\60\16\263l" - "\30\222Z\234\245a\32\15\212\32\246a\32F\303\20m\62\34\273<\236\250K\24iQ%\221\212\212\22" - "%\211)\211\242\251%j\211Z\312\1m;\32\273<\236X\213\266\70L\206A\253\206i\64(Z)" - "+e\203\224U\0mA\32\273<\216\264\62\14j\255e\30\262\70K\232\244\244\26%\235\222\236\42\1" - "mN\34\273<\236\264\62\14b\224%\221\234Da\22JMZ\224\225\262(\253\204\21\0mO\32\273" - "<\236(\215\212\322\220\64&\305\244\251%j\231\222\236\262DOr\1mj\34\273<\236\60N\206%" - "\13\243h\30\305,\31\266\244\66U\242\222\26%\265H\23mw\37\273<\236,\217\206!\313\223d\20" - "\223\266d\30\242$J\22\251\22E\303\220\344Q*\1m\210\33\273<\236\250\227\346\60I\206-\11\243" - "h\230\212\333\260da\222\205I\226\11m\330\35\273<\236,\217\206\321\224\14IE\311\242d\30\242," - "\233\222N\203RG\312\12\0m\361\34\273<\236h\30\242$-\325\242$J+\303\20\205\231\270UJ" - "\211TI\63\0n\5\36\273<\236\264\62\14y\26%\203\224di\62\14Q-\321\226(K\246\254\224" - "E\12\0n/\36\273<\236,\12\223aH\243\322\60(Ma\64h\211\224,\311\220\25\223,L\302" - "An\70\37\273<\236(\13\243h\33\264\332\222\14Y\224\224\262$\31\206(\211Z\242JT\262(\0" - "n\220$\273<\236h\30\242$\213\262dP\242$\313\224AJjQ\222\14C\224\225\222DJJI" - "\242DJ\0n\321\36\273<\236l\320\242,^\212I)\31\6I\311\244hP\264R\66HY)\213" - "\24\0n\341 \273<\236\60\11\223a\310\242$\212\206A\11\223\60\31\206(i\231\222NJ\242D-" - "Q(o\24\35\273<\236\264\62\14a*\15\203RK\243A\213\222\212\66HYR\312\6)\322\4o" - " \34\273<\236,\12\207kT\33\246b\226\14[\22&\312\60(\241\230EY\42\12on \273<" - "\236,:(\325(\221\206d)%\265!)I\311\240\14I[\224T\206\244-I\4pk\27\273<" - "\336\34\313\243\254T\214\222\60\313\241$G\352YZ\322\5po\30\273<\276\34K\206\245)K\264J" - "\30\25\323\60\15+YSY\2p\271\30\273<\336\34\313\261A\316\207!L\303\64\34\206\34O\242J" - "\26\25p\337 \273<\256h\230*QE\211\24e\30\222(\211\224(\211Z\224H\221\224HL\262a" - "\10\13p\355\36\273<\256,\34\222!\314\222PJ\62I\211\222l\214*\211\22\352h\22U\262\250\0" - "q\66\33\273<\256,\316\222Pj\32\6EJ\223\326(\11\243,\252*\245J\26\25qg \273<" - "\236\341\220D-Q\222%\203\26U\6%J\262dH\262$J\6\35M\242J\26\25q\212 \273<" - "\236(\211\222A\331\221,\31\222A\211\362!\211Z\266!\311\222(\31\224R%\213\12r\61\31\273<" - "~D\32\206$\213J\303ce\270\346\320\60&Q&\315\332\20r\66\27\273<\276j-O\242,\11" - "\263\70\313\223\34\312\241$\326$]r\67\27\273<\276j-\311\222t\326$]\32\206\70\213\223r\224" - "\307\0rG\30\273<\256\60\15\323\60\35N\71\226c\303\20\246a\232\305Q\36\1rH\34\273<\276" - "PJ\222\61)\17\207$\223jIiiJJYRj\351\244d\1rL\36\273<\236Z\230$\303" - "\322)\31\16I\226D\311a)%Y\62\14J\61*F\305\10rY\30\273<\236\341\220\307Y\32\206" - "\303!\326\221z\24g\331\230C\32\0ri\36\273<\256,L\262\60\211\206\203RQ\262\244$%\25" - "\251\242\224\332J\225\250\222)\0ry\36\273<\256\60K\242A\31\262J\230%\311\60Db\246\14\203" - "\22\25\263$L\303l\2r\257\36\273<\216l\230\222Z)\213\222Z\22%Y\246$ZR\215\222\34" - ")&\215Q\66\10r\302\34\273<\216l\30\222Z\32V\262R\226*\203\224d\245,\316\302$K\223" - "a\10r\354\37\273<\216(\13\223,\215\206\245\223\224\224\42\245\224T\206!\312\342,J\222a\220\362" - "\0s\213\27\273<\236\341\234c\71\226c\371\60\344\71\226c\71\226\16\7\1s\251\33\273<\356!\31" - "t$\307rh\31\246,\11\263$\134JbR\215\222L\24s\260\36\273<\336A\31\222\254\224\324\242" - "\244\62$mQR\213\222\232\224DbR\215\222L\33s\262\32\273<\376lP\212QV\251%[\232" - "c\321\60\215\211\230\344P\16F\0s\355\35\273<\356p\210\6)K\302\244iP\212I\62HIc" - "TT\242H\312\322h\20t\3\34\273<\376$\31\244\226a\210\302\64J\242AR\262P\314\224L)" - "M\315\32\0t\6\32\273<\316\341\251e\30\242$j\211\242\341)L\243A\323\62\65\37\206\0t\64" - "\32\273<\216A\31\244\64\273\245\321\240\14j\216\330\246h\33t(\207R\0t\334\34\273<\376mX" - "\243$\215\222\64J\322\250\30\25\243,\312\222R\66$\232\224\4t\343 \273<\236\60J\206eP\224" - "D\351\313\220$C\322S\322eH\222!\351)I\226\306$\1t\366 \273<\216,\31\224Z\66," - "a\222MIT\31\6%J\242DJ\242\226\250%R\246D\22u\32\31\273<\276\332p\320\312\203\234" - "\305\203\234e\303AJ\242T\14\207A\1u\37\25\273<\356Z\234\305\303%\254\346\303\220\347X\216\245" - "\303!u(\30\272<\236\341\222U\262\312p\311*Ye\270d\225,\23\63\61\22u\61\26\271=\316" - "\34\11\207C\226i\331p\320\62-\323\262\341\240\7u\65\25\272=\316\34J\207KV\31.Y%\253" - "\14\327\260u\20u\67\31\272=\236a\220j\321\60H\265h\30\324t\70\204\265\64\312\242U\1u;" - "\35\273<\216\7\35\36\206(\211*JTQ\206!Q\242\212\22U\224aHthxuL\30\273<" - "\236\341\224\225\206SV\32\256I\254IJ\226h\325\260\232\1uY\32\272=.Y\33\246\222\42EK" - "\213V\32\6\251\26\15\203T\213\206A\1u\305\32\273<\356x\70$\71\64\34\242\60T\206A)\265" - "tJ\64%J\265lv{\33\273<\236!\211Z\212I\224\204\305aPt$\33\326\60\35\346(\33" - "\16\2v}\20\270>\276\70\35\316\362p\210\315\303!\16v~\30\253<\216\7\65\207rd\30\302\64" - "L\303a\10\323\60\15\207!\2v\204\31\272=\256,\254\15\311\60\211R:(\231T\222JR:\250" - "R\246\0v\256\32\273<\356\34\213\207S\26e\345a\10\223,\214\222\64K\263$\213\264\1v\312\31" - "\273<\256\264\226\15\7\255Z\313\223d\30\222(iL\32\223\246\341 v\330\37\273<\336\34\31\326$" - "J\243$\33\16Y\22\205Y\22\16\203\226DI\226DI\62\34\4v\356\17\267>\216\203\252\16Wu" - "\270\252\303\65v\364\31\273<\336t\70\250\371\60\204i\70\14a\32\16C\230\206i\64\34\4v\370\35" - "\273<\276h\320\242,\31\266\322\240EY\264dIe\30\242Z)+\15Z\224\5w\1\32\273<\336" - "\34)\205Q\222(\231\226\15\243\30)\303\32\246\303\32\246\303\4w\13\32\273<\236\341\34\17\203\34\17" - "\7-\14\207!K\302(\32\326\60\35&\0w\37\27\272=\316t\70\204\371\60\26\207$L\206\260\64" - "\34\262(\264\0w<#\273<\216!\31\224(\311\222(\31\224!\311\222(\31\224(\251\15IIJ" - ":%Q\64$\315Z\0w@\31\273<\276\342p\316\207!\216\207\203\26\206\203\222%\311\20\25\323a" - "\2w\345\33\273<\256\34\313\241A\31\244,\312J\303)+e\245JT\311\222A\307\0w\355\37\273" - "<\236h\30\222\34[\6\245\224\225\262dH\6-\307\242,J\242$\213\243l\30\2w\356\34\273<" - "\236X\312\306!\312\222d\30\242Je\220\32\323d\30\222R')\224\4w\363\31\253<\216\7\65\207" - "r(\207\206AJ\322$J\303\64\34\206\60M\0x\1\36\273<\336A\31\304\254\224\225\242!\211\22" - "i\30\222(M\242AI\206\64\211\332\21\5x\24\36\273<\216!\31\246,\312J\305(\31\16J\224" - "D-QK\24\15IT\322\322\60\1x\64\35\273<~$\32\264\60\32\246\226d\211\42%\31\226N" - "IOK\24GI\230h\1xl\34\273<\336\341\220\245\321\60U\242\344\60(MIeX\22)\134" - "\212I\244K\3xn\36\273<\356p\210\206,\252E\303A)%\225a\351\224T\206e)%Y\22" - "\205\241\0x\237\37\273<\336\244\62\34\244J-J\246%U\222a\251\205\311\60(K\242%R\22f" - "Q\0x\301\37\273<\336,\31\242$L\206!j[\242d\61%\311\60DITZ\242,\261\204\213" - "\22y:\24\253<\236\341\316\64\34\324<*FY\224\205bQ\5y>\32\273<\236\264\230\15R\234" - "\245\321\240i\241\22eI\230\206i\230&\303\20yV\35\273<\256\34L\6e\330\302$+\15\232\222" - "E\212\226\224\6-\312JYe\30\2y^\35\273<\236\70L\243\341\240%Q\22E\303\244DIb" - "J\224h\230\322\60\15\323\10yh\30\273<\216\7\61I\207S%\212\206;>\14\71<\34\244&\233" - "\0y\201\27\273<\256\64\32\224AJ\263K\237\322l\270\243\303Aj\262\11y\217\37\273<\236h\30" - "\242\34\36\224!\311\302d\320rl\270(Q\244$\303\20%Q\313\60\4y\273\32\273<\336t\70H" - "IcTL\32\207!\217\207SK\224\14J\24+\0y\301\32\273<>yL\303l\220\322,\235R" - "\245\230DYe\30\242b\224#\0y\315\33\273<>)\33\323hx\211Z\242H)%\312\60(a" - "\32\246a\32f\0y\321\34\273<>\61\331\242,L\222A\314J\231\226DJ\270\204[$eq\26" - "'\0y\360\31\273<>%\334\342h\70H\215\341\322$%=\225\264\250\230f\32\0y\373\33\273<" - "\276\332A*\16K\224\205\26%L\242!\321\62%Jji\30m\0z\13\35\273<\276dP\246\254" - "\224%C\62h\71\246\14\222\22\205\322\240\24\323\60M\206!z\77\36\273<>)\233\206)\213\222A" - "\31\262\34\33NI\232(\311\242\364\224$K\224\204\2zv\27\273<\336tx\312\242j\26\205i\216" - "\14{\24gQ\61\232\7zz\27\273<\336x\70$\71\242Eq\230\311\341\260\347X\216\305\303!z" - "\177\31\273<\336tx\312\42%M\222a\20\263t\270&y\24g\241\64\2z\201\31\273<\336x\70" - "$QI\12KI\71\312\206C\232CI\254I\272\0z\227\36\272=\336p\70(aR\312\222\341\220" - "DY\224\14\323\224D\221T\211\222h\30\24\0z\313\27\273<\336\34L\207C\216\207i\30Gy\224" - "'\71\26\16\7\1z\326\35\273<\276d\220\222Z\224DI\226da\22%i\222\311\351p\314\362$" - "\34\16\2z\331\33\273<\236\264\230\15\322\220gQ\26&\311 %\265R\226)Y\242\225\7\5z\337" - "\32\273<\336x\70f\331p\220\322p\30\302\64\34\206\70\311J\331\20\16\1z\340\30\273<\336x\70" - "f\331p\220\322p\30\302\64\34\206<\35\16j\12z\345\27\273<\336x\70fy\22\16\7\251q\30" - "\302\250\66\234\323\341 {\21\32\273<\236\64\34\224A\311\222\64\311\362q\310\261t\70\210I\254I\272" - "\0{\24\33\273<\236\60\35\222Ai\252\15I\64\344\330\20\16\71\66,\203\216\245\351\60{,\34\273" - "<\236\60\35\222Ai\252\14\203\234E\303)\213\207C\226\204QI\321R\0{I\31\273<\236\60\35" - "\222aJ\242l\70\247\303A\17\207c\226G\71\244\1{R\37\273<\236\64\34\224A\252d\303)\217" - "\222A\211\362(\31\224(\311\222(\31\224(V\0{T\33\273<\256\60\35\222!\251(Q\226D\231" - "I\31\24\35\37\326\60\15\323a\2{~\33\273<\236\60\35\222Ai*fi\22k\222\62(Rc" - "\224\304Y\70\34\2{\200 \273<\236\60\35\222aJ\242\60\32\244$\215\242!\211Z\242hH\242\226" - "(\32\222(V\0{\227\34\273<\236!\31\224R%\31\206\60\15\207!L\303aH\263l\70hE" - "\61\3{\241\34\273<\256\60\35\222!)%\321\360\16E\303\20\246\341\60hq\26g\303\240\0{\261" - "\37\273<\256\60\35\222!\211\222R%\213\206cT[\206(I\244$\212\206\60*FC\2|s\27" - "\273<\336\70k\252&\265\341\240\346\320\236T\243\222\226\251)\0|{\27\273<\256\326\244\66\34\264\244" - "\32\325\362\70\35\16b\222g\331:|\230\35\273<\256\60KJ\341\66Da\66Hi\64,K\250$" - "\242\22\205Q\64L\305\0|\256\36\273<\256,LJ\341\62hQ\226\14\207,\312\242e\30\222D\351" - "T\214\222Z\244\5|\276 \273<\256\60K\222aH\266\64\32\224!K\223aH\226,R\206\245\224" - "\225\6-\312\22\0|\373\25\271=\356\341\234E\303\234g\311p\314\242\244\26U\42-} \30\273<" - "\236\341\234\17C\236\16\7\61J\207!\16\243\341\26\225l\2}\42\27\273<\336x\70\247\303S\26E" - "\203\216d\331p\316J%\233\0~\242\32\273<\256\34\213\6)\15\223,\33\323\260\232\15Y\216\245Z" - "&\15C\0~\246\33\273<\256,\316\322(\31\224\306!\217\262J\32\15Z\24\246\221\26\315\12\0~" - "\247\34\273<\256d\330J-Q%J\242-\231\262J\230\15J\253\24*-R\222\5~\252\32\273<" - "\256\34\213\6)O\206\64\213\243lP\206$\307r%\334\302x\20~\270\35\273<\256X\212\206,\222" - "\262\244\24\35\246\266R\64$Q\22*J\244HC\26\6~\277\35\273<\256,\11\263\250\70D\321\270" - "\15R\262\206Q\62DI\34\225\244$\231\64\1~\304\36\273<\256\34\213\6)+%\265d\32\264(" - "\213\262\312\220\14r\226)Y\42\15C\0~\306 \273<\256\34\213\206%\213\222N\311\20U\242hX" - "\262(\31\224(I\243$R\206A\13\3~\310\30\273<\256,\316\206(\251%Kc\227h\321\364T" - "TD\35T\0~\312\33\273<\256\60M\242J\226\224\222,\233\6-\254d\331\62\14y\252ej\6" - "~\317\35\273<\256h\320\322,*&Q\22MY%M\262A\31\262\34K\265L\32\206\0~\323\34" - "\273<\256\60\15K\303\220\324\262i\320r(\33\224!\311R-S\6E\253\0~\331\34\273<\256\60" - "\15[\262\244\226,i\24\15R\16\15\311\240j\231\222%\332\240\0~\334\36\273<\256,\316\206(+" - "%\211\22-Q\232%Y\244\15\313 g\231\222%\332\240\0~\335\34\273<\256,\316\206(\213\262$" - "\31.R\22\265\324\206C\222ca\244\204\7\1~\337\36\273<\256\60M\206!\11\323\244\226\34\206(" - "K\32\223h\210\222\34iR\242d\312\6~\355\33\273<\256\60\215\6)\15\223d\70U\242\244\255\24" - "-\303\220\247Rb\22\3~\364\34\273<\256L\215j\321\60$M\321A\213j\245hH\6U\12\225" - "(\322\206\1~\377\33\273<\256h\320\342(\34\222!\315\222aH\322hP\332G\245Ej\326\0\177" - "\26\36\273<\256\60M\206!\211\322$\31\16J\216$\303\220DIexL\232\226\312\24\12\177:\35" - "\273<\236\64L\303!\31\222b\222\205I\62\34\244\60KJY\322iP\242\70\14\177Q\32\272=\216" - "\7\35\221\262diQ\262H*)\211\222lI\242\205:\42\17\177W\26\272=\216\7\251$\225\206\203" - "\226C\303\26fI\224[w\0\177j\34\272=\216\7\251\64\34\264(\33\242!\213\262!\32\262(\33" - "\242!\213\342(\3\177\216\25\273<\276\342p\316\207!O\207\203\32\17\327$\317\262u\177\244\42\273<" - "\236!\311\242$J\222\341 %Y\66$\203\224fC\26%\311\60DI\26&Y\270E\0\177\330\37" - "\273<\236h\70hQ\322\242DI\242\14\211TV\206AQ\332\242\244\42)em\30\2\200\1\30\273" - "<\336\34\253\15C\236d\303A\314!c\62Ja\32\306\203\2\200\3\30\273<\316\322\60\310Q\66\34" - "\324\34\32\66%\225\6\35\313\261|\3\200\5\32\273<\336|X\342(O\262\341 \346\310\60DJ\230" - "\16k\230\16\23\0\200\14\30\273<\216\7\65\207\362\341\220D-QK\324\22\265D-QK<\200\63" - "\24\272=\216\207(l\34\306\342\60\66\16\7\35\312\241\10\200J \273<\216!\12\223D\32\222.C" - "\322\242t\31\222\26\245\213\222,\311 %Sc\222E\0\200L!\273<\216\7%J\262$J\262d" - "H\262$J\262dH\6%\312#\245\62HI\232d\241\30\200T\36\273<\216[\224DI\226$\303" - "\262\205I\26\16\207\244\26&Y\66(\325$\13\325\0\200\241 \273<\236!\31\242J\324\22E\203\246" - "Dy\224\14\312\220dIT\211jQ\26%\245!\13\200\262\31\273<\336t\70h\305\341\216e\303\20" - "\246\341\60\204i\70\14a\32\1\200\334\34\273<\236-L\32\223\306eX\22)L\262p\31\244$\13" - "\223\254\224U\206\3\200\375\37\273<\256\260TI\206E\207*\203\62$Y<(\245,\321\6%J\262" - "$J\42e\10\201\21\36\273<\236-L\302,I\206eG\232\222\26\245\262\224\222\212\322\243\224\14C" - "\242\204\1\201\32\37\273<\236%Z\232\222\312\260$K\224tJ*\303\222,QRQ\272\14\247\60J" - "\304\10\201\70\36\273<\236!+e\245J\64$Y\22\15S\227AJJI\247$J\262\60\211\206A" - "\201\352\20\267>\256p\30Tu\270\16Wu\270\6\201\363\26\273<\236\341\232CYZ\33\316\71\226\17" - "C\236c\351p\20\201\364\34\273<\216K\32\246I\64$Q\22EKc\226D\203R\314\222\260\272T" - "\266\2\202\36\34\273<\236\34\33\16J\247\341 %M\303AJ\303e\30\242\244\250\14\203\34\1\202\37" - "\34\273<\336\34\31\326\60M\242\64J\242\341\240%Q\32%a\226dq\224N\0\202, \273<\276" - "h\210\206$j\211\42\245\244$\353\240\14J\224d\211\22%Q\242\225*%%\13\202r\31\273<\316" - "\34\32\306,\35.\245\254\224e\303\240\345X\36\345\331\60\10\202z\31\273<\316(\33\16b\224G\351" - "\60\344P\216\350:\222Gy\66\14\2\202\202\26\273<\276\332p\320\352\224a\220\263\70\213\263\70\231s" - ",\6\202\261\27\273<\276\332p\320\352\264\250V\311lI$/Y\224\225\302!\202\275\30\273<\276\332" - "p\320\212\303\61K\303p\70\244I\36\245Z&j\0\202\317\31\273<\276\332p\320\352\371\60\310Y)" - "\223j\211\24&Q\32\211\32\0\202\345\31\272=\276\322p\310\312\351p\310rd\30\242$L\242\60\34" - "\306\12\0\202\346\30\273<\276\342p\314r$\35\16j>\14a\32\246\341\60\204i\4\202\361\30\273<" - "\276\332p\320\352H>\14aT\214J\303ALbM\322\5\202\371\30\273<\276\332p\320\212\303-\252" - "&Q\232\324\206\203\232c\71\226\2\203\66\31\273<\276\332p\320\352H\16%\261\222HZ&\15C\232" - "T\243\222M\203\253\30\273<\216\7\255:\14a\32\16C\230\206\303\220\247\303A\253\255\3\203\267\34\273" - "<\276\332p\320\212I&V\242$\31\206(K\265\60\211\222\64\311\42%\15\203\334\32\273<\276\332p" - "\320\352\330\64,a\222\245Im\70hI\65*i\231\0\204%\32\272=\276(\33\16Y\224\15\7\35" - "Q\206\261\66\14R\34\305\321\60(\0\204=\33\273<\276\332p\320\212\331\20&RULJa\22\16" - "\331\220\225\262l\210\0\204c\30\273<\216\7\255:\14y:\34\244\306a\10\243\332pN\207\203\0\204" - "\335\33\273<\276\332p\320\212I\224&\321\20%\315a\66\234*QK\224\14\7\1\204\354\31\273<\276" - "\332p\320\242\255\24f\263\222\14\332X\215\6)\311j\303\20\205\317\37\273<\316(\33\16b\224T\206" - "C\322i\31\224(\311\222!\31\226^\224dP\252\211\0\206k\26\273<\336\34\213\207SV\312J\303" - "\71\307\242<\213\207\203\32\206}\30\273<\256a\10\323p\30\302\250\36\17\247\254\64\234s\254\62\34\4" - "\206~\35\273<\256\34\213\206\203\224%\245,)II)I\6\251\61M\242t\312\264$\3\207\203\37" - "\273<\256\60\215\206\203RJ\222aP\22)Q\222\341%\316\6)\251EC\70$\231\2\207\371\35\273" - "<\256eP\242\322\60$\211\322\224\15\207\244\251\62\234j\331\60\310Y\62\134\2\210L\32\273<\256h" - "\220r(\207s(\31\206D\215\222\64L\303\64L\303l\2\210W\33\273<\256\322\222\14a}\30\263" - "h\320J\311\240DY)[\242d\213b\5\210c\31\273<\336\34\14\207\203\232CI\24FI\250\205" - "IVJ\242T,\7\210h\30\273<\336x\70\347\303\220\247\303AL\242\60JB-SJ\251(\210" - "\253\37\273<\236\70L\243\341\240%Q\22%R\266\14C\222(\265(\251E\305$J\62E\13\210\305" - "\33\273<\276\246aPj\251\226)\311 F\341p\20\265LJ\42%\213\265\1\211\177\30\253<\216\7" - "\61I\207S%j\211*QI\234\362h\70\345\11\0\211\201\31\273<\216\7\61I\207S%\212\206k" - "<\34\264\352\222#C\70*\0\211\301\31\273<\256a\10\323\60*F\305\250\30\25\243r\222GY\224" - "e\353\20\211\302\36\273<\336A\31\222,L:%MI\267(\251EI)\311\264$J\22\61J\62" - "Q\211\304\35\273<\256h\320\242,\31\226Z\224\324\242\244\62,\265(\251\31\223\336\242D\22\5\211\306" - "\34\273<\236l\320\242,\31\222\306\244-JJKOI-L\63\251%\252d\3\211\310\34\273<\276" - "(M\242Ai\312\222\64\33\206\60\15\243bT\214*\231\222\15\331 \211\311\35\273<\256Z\30%\331" - "pHrD\32\326\60M\242\64\211\322$J\302$K\246A\211\322\33\272<\276\34\32\304,\34\16I" - "\224E\303 \325\242a\220jI\226$z\2\211\343\37\273<\256lP\206\250R\312\206!\222\222D\311" - "\206C\322\224\15\207\244)KJ\65)\2\211\346\36\273<\236\70\33\262\250\30\15\312\260t\31\226\212R" - "\31\16Y\224\324\22\245\66D\312\22\212\0\30\273<\316\34L\207\203\16\17CN\31\206\234\62\14a\32" - "\16C\4\213f\32\273<\216K\30E\303A\311\222.\303AG\207;>\14a\32\16C\4\213\241\27" - "\273<\236\264\230c\371p\10\323\60\15\323$J\265\64\314\261\14\213\242\31\273<\236\34L\206!Gr" - ",Z\303\64L\303\64L\262P\254M\0\213\244\27\273<\236\264\230c\71\226\215i\230fI\230\64*" - "Y%,\7\213\251\31\273<\236\264\230\206\71\226\215C\24\246a\32\246I\224ji\62\14\1\213\256\32" - "\273<\236\60\16\223\70)g\311\224\265\204Y\22&Q*%a\224\245\5\213\260\32\273<\236\34\214\6" - "\35\313\261d\316\242A\213\362(O\304H\11\243l\20\213\262\35\273<\216\60\312J\351p\310\242\254\224" - "%\303\240dQ\226\224\62\251\26ei\30\1\213\270\32\273<\236,\217rlP\243lL\223a\210\302" - "\64\211R-\15s,\3\213\272\33\273<\236\264\230CI\236%K\32eQV\11\63\65\251ER\26" - "e\203\0\213\276\31\273<\236l\10\243z\24g\303\216%\303\26e-\241\226fI\272\11\213\277\32\273" - "<\236\60\16\363a\210\303m\310JY)KJ\231T\213\262\64\222\0\213\301\35\273<\236\34L\206!" - "\12s,\233\222\64J\266(I\23%U\252Q\22\17\203\0\213\304\33\273<\236h\30\242\60\217\252I" - "eL\223a\210\302\64\211R-\15s,\3\213\306\31\273<\236l\230\212i\230\206C\24F\321\60\25" - "\243\244Q\252Ea\65\213\311\33\273<\236X\213v$\307\206S\61J\304(\322\22)\211\224(\211\232" - "\263\10\213\335\33\273<\236X\213v,[\206!\12\323\60\215\6-\312\62%+\15r\226\0\213\345\31" - "\273<\236\60\16\363\341\20\246Y\224ECX\252\224\62%\12+\261\26\213\355\35\273<\236h\30\242\60" - "G\6e\213\262R\226\14C\224c\311\260)Y)\213\7\5\213\364\30\273<\236\254K>\310Y\62e" - "\245A\253\204I\243\224\224Z\302l\213\367\35\273<\236\264\62\14Q\230#\203\62\246\311\60D\265\322\240" - "EY\246\14Z\224%\0\213\373\34\273<\236\264\64\350H\266\14C\224%\245\212\230%a\62\14\221&" - "fQ*\6\213\376\36\273<\236h\330\222(I\207E\252D\321\60\245a\62\14JhJ\264\250\22f" - "Q\0\214\1\33\273<\236,I\243\362pP\242\60\32\246\306h\230\22)T\242\60\32\326\24\214\3\37" - "\273<\236h\30\242$*&\207$j\31\206(I\243$Y\242\244\323\262DI\232\205\3\214\10\34\273" - "<\236\64j\251%\221\216D\311\42Fa\32%Q\244\264%\221\230E\251\30\214\20\35\273<\236,\12" - "\243J:(S%J&)L\243AK\264L\31\264(\213\7\5\214\23\36\273<\236h\30\242$*" - "\16\207$j\31\206\250V\32\264D\313\224A\213\262\70R\0\214\42!\273<\216,\214\222!\12\243\212" - "\62\14J\251eP\242$J\244d\210\42\245T\211j\221\242\0\214\67\32\273<\316(\16KY\224i" - "a\24\207\341\60(J\230da:\254a\4\214a\34\273<\276A\315\322\341R\312\262a\20\223,R" - "\226\64\22%%U\242A\22\1\215\37\30\272<\276\34\32\304,\34\6\245\232E\265\250\26\325\242\242\42" - "\255\2\215\42\37\273<\216A\213\262R\222\14\203R\213\222\222\224\224\244\244c\226dI)\213\262(\226" - "\0\215#\27\273<\336t\70\250\361pN\207\203\224\206Q\61*G\331\20\16\215%\36\273<\216A\312" - "JYR\32\224R\322EiQzJ\262\60\211\222\60\213*\265$\13\215'\31\273<\276\250\226m\312" - "\246\204C\16\17C\230\206Q\61*'\351\266\0\215(\33\273<\376iX\303t\70$a\232\14C\224" - "\244Q\22\265D\225\60\311\222m\215-\36\273<\216A\11\263$L*\303\222\210J)R\332\224\236\242" - "E)'Q\252e\12\0\215\64\36\273<\216A\213\262RR\33\222Z\224\324\242\244\62,mJ[\224" - "UJ\303\226d\1\215\65\30\273<\336|\30\302\250\70\14y:\34\244\64\214\212Q\71\321\206p\215\71" - "\32\272=\276(\33\216Q\222\14\227\250\66\34\222\64)\325\242j\242\215\12\0\215D\33\273<\236(G" - "\222\341\22\265%a\224i\303\20\246aT\214\312I\272-\0\215[\31\273<\336tx\252%\303\61\12" - "\207\203\244IJ\213\226\324\23qT\0\215p\30\273<\336x\70\347X:\34\324<\312\243A\213\342\244" - "\232\15C\0\215v\35\273<\276h\320\302l\220\322\60\32\16Z\230%S\226\204Y\22fc\224\15C" - "\0\215w\35\273<\276\34\213\206h\320\302\64\31\16a\224&Q\226$C\226\224\206E\317\206!\215\212" - "\35\273<\276P\254$\303!\213\222h\30\222Z\224\264\14Q%J*[d\11\303a\215\263\30\273<" - "\256a\10\323\60\15\207!/\345\321\240EqR\216\324t\20\215\337\42\273<\216!\31\224(\311\222(" - "\31\224(\311\222!\31\264(\311\22\245\244D\221RjQZ\64-\215\357#\273<\216!I\243dP" - "\242$K\42\245\64di\226D\211\222%\225aP\242,I\224,\321\6\5\216\253\30\272=\316|\30" - "\213\303X\211\206!\13\243a\220\243P)\211\31\0\217f\26\273<\316\34\313\207c\16\325\207!\317\261" - "t\70\250\71\226\2\217l\33\273<\256\60\33\222AJCe\30\224,\34\222A\213\263\245\64\246\305\64" - "\2\217o\34\273<\236\60\15\303A\31\224\60S\242\244\62Hi\230.\245-\11\243\254\222\6\217{\32" - "\273<\256lH\6\61\212\63\61i\322\206\35\311\6i\213\326\60\15\243a\217}\35\273<\276\342\240\24" - "\263hx\12\263a\211\222Z\22\15R\32&\303\220$Z\224\5\217\203\33\273<\256\60\33\264\332\260h" - "QR\12\207%\312J\331$\255a%\213\264\0\217\221\36\273<\256lH\6%*\16\221\216\224\206\203" - "\22e\231\222-\211\262ER\62lq\2\217\271\32\273<\236\264\230&\303\220GC\30\25\243Z\251\30" - "%\231\224\344\331\60\4\217\276\30\273<\236\264\230\206\371p\10\323\60\315\222\60\312*iR\317\206!\217" - "\307\32\273<\236\70L\303d\30r$\232\212Y\22\246a\32\206Z\222g\303\20\217\320\33\273<\236l" - "\320r,G\207C\26gI\30e\225A\211\212I=\33\206\0\217\321\31\273<\236X\213\326(\307\206" - "S\61*F\305\250\230d\225<\33\206\0\217\324\34\273<\236\134\212\206\60\312\261\341\244E\225ZTL" - "\242$\213\264\244\236\15C\0\217\330\32\273<\236h\30\242\64\254c\331\246dQ\22U\242\306\64\254\344" - "\331\60\4\217\331\32\273<\236\60\16\363\341\220\206Q\61K\302j\226\204\211\26%y\66\14\1\217\333\32" - "\273<\236,\12\243b\62\314Q\64\25\207ScTL\262J\30e\303\20\217\334\34\273<\236l\320r" - ",G\207C\226\204Y\22fI\251%JB\245\236\15C\0\217\336\34\273<\236\60N\206!\312r(" - "\311\226a\13\323d\30\242\60\15+Ym\30\2\217\367\33\273<\236\264\22u\251#\331\62\14Q\230f" - "c\224\324\222\250R\253\15C\0\220\1\33\273<\236\254K\30\15:\222\215i\62\14Q\230fI\30e" - "Q\242j\303\20\220\2\33\273<\236XK\206\64\314\207C\230F\203\26e\245A\213\262(\311\263a\10" - "\220\11\36\273<\236,I\243$\215\6\65\312\226a\210\262$\314\222RK\224\204J=\33\206\0\220\32" - "\37\273<\236h\330*a\62\14a\24\15\311\60DI\324\62\14Q\22\265D\211R\317\206!\220\37\33" - "\273<\236\64\35Na>\34\222\250e\30\242l\214\222Z\22Uj\265a\10\220 \34\273<\236\264\224" - "\244\321\240F\331\62\14Q\216E\203\26e\245AJ\362l\30\2\220G\36\273<\316a\311\222\250\64\254" - "I\224H\303\24\246\311\60(\245\244\313\220X\223h\30\4\220S\33\273<\236\254K\230\14C\236M\203" - "\26e\245A\213\262\322 %y\66\14\1\220W\36\273<\236\264\62lI\224\204\303A\307\222aK\242" - "$K\242$\253dI-\311\206!\220\243\37\273<\216\313\20U\242\226\312\260\324\242\244\26%\321\60$" - "Q\213\22UJY\222eJ\6\220\256\35\273<\256l\220\262lX\242\244S\322\323\240DI\67\245m" - "X*Z\22\345!\0\220\350!\273<\276lxJ\262$\252DI\62\334\241$\32\224(\311\222(\311" - "\22%\31\224R\226d\0\220\375 \273<\276hP\6%\312\222\226\341X\311\206$J\244$R\206$" - "jQ\242!\251EI\6\221M\36\273<\216A\31\224rR\36V\245\62\14\211\22fI\70(a\226" - "d\303\222i\311 \221R!\273<\236h\30\242,\211\322$K\206AJ:%\322\224\244\323\60$Q" - "\232D\303\220Di\0\221w\36\273<\216A\253DI\226D\303A\252\324\42E\31\266xP\206-\311" - "\206e\330\222,\221\307\27\273<\336!\33\302,\252f\71\222\16\7qO\252Q\255\66\26\221\314\27\273" - "<\236\341\224\225\262\322p\312JYi\70\307\303\71\35\16\2\221\315\27\273<\236\341\234\16\7\251q\30" - "\302\250\70\14y<\234\323\341 \221\317\31\273<\256a\10\323p\30\302\64\32\16R\343\60\204Qm\70" - "\247\303A\221\321\27\273<\336\34J\362,-)\203\242\306\303\71\217\252Im\70\10\224\237\32\273<\236" - "\64L\303\341 &Q\262\224Z\242\341)L\223(\325\322\60\3\224\242\37\273<\236lX\262\60\31\244" - "DT\222aH\242\226h\30\22%\212L\211\30)aT\32\224\256\37\273<\236\34\313\6i\210\222r" - "\222\14R\222E\203\62(QV\312\222R&\325\222a\10\224\261\36\273<\236\60\311\302(\232\222!\334" - "\206(\222\242!\32\242Z%,ERRJ\64\1\224\376\33\273<\236\64\214\222AYji\22\15\7" - "\251i\70H\215Qq\211\223h\10\225\1\35\273<\256$\352RJ\303eP\302,Z\332\242\244\62$" - "mQR\223\222\60\321\4\225!\36\273<\236l\220\262\322\62(a\226\14\207,J\207d\230\222NY" - "RRJ\265D\1\225.\37\273<\236d\312\262aQ\262DK\206\203\224\324\206S-I\206%\312\62" - "E\312\222h\20\225\177\26\272=\256\260\226Fq\222\313\303!J\362(\316\322$\12\15\225\350\26\272=" - "\236h\230b\35\321\21\35\321\21\35\321\21\35\321\21y\225\355\32\273<\236l\230r\65S\63e\30\22" - "Q\323\222L\252)Y&j\372\0\225\356\30\272=\236h\230b\35\221\206H*I%\251$\15\221\216" - "\350\210<\225\364\31\272=\236h\230b\35\221\206H*IC$\225\244\222\64D:\42\17\225\371\36\273" - "<\236h\30\242\134\14\225aH\304P\31\206D\211*JTQ\242\304\30\352\210\0\225\373\32\272=\236" - "h\230beX\244\222\64DRI\32\42)R\224AR#]\226\1\37\273<\216h\30\224(\15\207" - "\310\24)\221\246E\221\62\14\211\224E\322 IY\244#\2\226\37\36\273<\216!+e\225\60S\263" - "$\314\242\254\224eJ\224DI\226Da\226Dj\0\226\62\36\273<\216!\12\243\254\222\14\307J\66" - "$QK\324\242D\225R\226da\22e\22\0\226\63\36\273<\216!\31\206(\11\225(\334B%\32" - "\206(\11\245$\134\212J\24\212\303\20\26\226\77\35\273<\216!\31\206(M\312IiiJ\232\222N" - "I\213\222,\315I\216\324\25\0\226D!\273<\216!\252D-\245,\321\206!I\264$J:%\221" - "\242\324\222R\226\204Y\22F\12\0\226E\35\273<\216!\31\224(OrD\32\6%\314\242\244S\322" - "\242\64)\245H\316R\15\226F\36\273<\216!+%\203R\314\324,I\206A\312JIiPJJ" - "\224D\342\60\204\5\226H\36\273<\216!\12\243\341\22\245Z\222%\311\60HY)I\244!\351S$" - "%%\65\4\226b\35\273<\216!\12\243\254\222\14\247T\211\6%\312\243\341\220\224*QE\253H\251" - "\0\226d\36\273<\216!+U\242$\312\22)Y\224\60\213\206S\226MI[\24IY\244j\0\226" - "\217 \273<\216\61K\224aH\32\265A\251EIrH:%R\62$Y\22%\231\32E\203\0\226" - "\220\42\273<\216!\31\242JTI\206EI\223\322\240Di\22%\203\242Da\222(MI\224\210C" - "\4\226\276\34\273<\356$\32\242$M\206!\232\262\244\24F\303\324\226$\303\322T\214\362a\226\306\33" - "\273<\276$\317\322\341\240D\371\60hQ>\14Z\224\16\7-\251M\321\0\226\350\30\273<\216\7\65" - "\307\342\341\224\225\222N\221\247J\247\254\224E\12\0\226\366\30\273<\236\341\234\16OI)\234\65I\313" - "\244a\310\241|\307\64\0\227\0\31\273<\236\341\234\16/J\242\244\351p\20\363\341T\211Z\242\226D" - "\1\227\36\32\273<\236\341\234\16OIiX\206\250\30\15\247\60\212\206$\252j\321$\227\62\36\273<" - "\236\341\234\16OIi\220\206$J\244d\310\304HZ\16I-J\206hH\0\227R\27\273<\336x" - "\70\347\303\220\247\303A\13\323a\15\323a\15#\0\227Y\37\273<\256\60\33\226\255\222\15\311\220\205I" - "\62\34\224\250\22)\311\20%R\30\25\23\33\0\227^\34\273<\316$G\212\203\62\210I\216T\207d" - "H\223\34)\16\312 &\71R\4\227`\34\273<\256\372\60HY:\34\244\64\34\206\70\11\7e\20" - "\223pP\6\61\11\1\227b\30\272=\216\207\60G\342\341 \225\244!\222J\322\20I\245\341\35\11\227" - "i\30\273<\276\332p\320\312\203\216\344\303\20F\305a\310\323\341\240\246\0\227\363\31\273<\336x\70f" - "y\22\16\7\35\36\206\60\15\207!L\303a\210\0\227\365\34\273<\256,\34\224\60K\6\245qX\262" - "<\32V-R\206A\323\322aS\0\230u\31\273<\216\7\65\37\206\60\15\243bT\214\212\221\22G" - "q(\311\11\0\230\177\35\273<\256l\220\322hP\6)\313\224.J\227ai\312\222R\222\205Z\22" - "k\1\230\206\33\273<\276h\320\302J\24J\303\20\325\342\244\62$\215I[\330\22FY\0\230\221\37" - "\273<\276hP\212Y\62\14J)\33\6\245\26%]\224\26\245\42UJa\222hZ\0\230\230!\273" - "<\236!\31\224(\313\206dP\242$K\206\244\71I\206A\351\224d\311\322\42e\332\60\4\230\235\37" - "\273<\256l\70H\305a\31\222lJ\232\244\244)\251\14\203\322\224\264\14Q\22E[\0\230\316\36\273" - "<\236a\320\342,L\262$J\262H\312JY$eI\224dZ\222\350\310\16\5\230\336\26\273<\216" - ";V\216\362$Gv$\312\263<\307\352Q\216\14\230\337\30\273<\336\34J\362\244:\34\224\60\35\326" - "\60\35\326\250\230$\252(\231\20\35\273<\256\341\224E\321\222HISe\30\222DL*\303\32\246\303" - "\222%\215\332\0\231m\35\273<\236X\312\306A\216\206\245\224\225\244,Jj\211RS\242\60\211\222\60" - "\321\2\231p\37\273<\236\60\15\7e\220\262(\213\222h\230Z\242\226(\221\222H\211\222\250\264#\21" - "\0\231\206\35\273<\236\64\314\206e\20\223\322\220\324\242,\33\262r\222\14\222\224E\331 g\1\231\226" - "\32\273<\256\264\226\15\7\61G\206!L\303a\10\323p\30\302\64\34\206\10\231\231\32\273<~m\330" - "\241t\70hI\65*\15\7)\15\207!L\303a\210\0\232l\30\273<\236a\320\261\64L\263\64L" - "\207;\226c\303)\307rD\1\232\214\36\273<\216!\213\263\60\211\222,\331\224\322\66\344X\22eC" - "R\221\222r\224*\303\0\232\330\33\273<\336t\70\350\370 g\341p\312\243dP\242$K\242dP" - "\242X\1\234\234\36\273<\236\60K\206()%\303A\213\222\312p\310\242\244\26\15\7\35\11\267H\216" - "\0\234\262\36\273<\236pP\206$\223\242\341\220dJe\70$\245\244\313\260\14yRZ\216\311\0\236" - "!\35\273<\376lH\6\61\311\222(iJ\272E\305hX\312I\64(:\224#\12\0\236O\32\273" - "<\376l\31\226N\311!\351E\351\270\14\203\322\246T\26\245Mq\1\236\246\30\273<\336x\70\347\303" - "\220\247\303A\314\241aS\242\34Q\207h\10\236\273\33\273<\356t\70$QV\312\262\341\220DY\345" - "\244T\244HJ\264RV\2\236\304\31\273<\276\342p\314\262\341\240\346\303\20F\305a\10\243\342\60d" - "\252\2\236\321\31\273<\236\341\224\225\222N\321\24\15\347x\70\247\303A)U\262\250\0\237 \34\272=" - "\216!\31\222<\31\222!\311\223\341\16JJ\224T$K\242\264\14\312\24\0"; +#ifdef U8G2_USE_LARGE_GB2312_FONT +const uint8_t u8g2_font_wqy12_t_gb2312a[39601] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") = + "\20\0\3\2\4\4\4\4\5\14\15\0\376\10\376\12\377\1d\2\332\5n \5\0\230\26!\7\221\212" + "\26\247\0\42\7\64\371\26\221)#\16\226\210\67Q\313\260D\275\14K\324\2$\17\245xV\331RQ" + "\62QK\224\312\26\1%\20\226x\66Q\322EK\302\64\211\222.Z\2&\16\205\210VY\22%Y" + "eJ\242H\11'\6\61\372\25\3(\13\263yVI\224D\335\242,)\14\263y\26Y\224E]\242" + "$\2*\14u\210V\225\312AY\232\42\0+\13w\210xqm\30\262\270\6,\7\62z\26\212\2" + "-\7\25\310\26\203\0.\6!\212\25\2/\14\304xvMY)+e\65\0\60\12\205\210\66K\346" + "[\262\0\61\11\205\210\26c\237\6\1\62\13\205\210\66K\26\326\332\6\1\63\15\205\210\26C\32&k" + "\30\16\12\0\64\16\206\210wZ\22u\311\222aL\23\0\65\15\205\210\26C\22\206C\32\206\203\2\66" + "\15\205\210\66K\30\16IfK\26\0\67\13\205\210\26\203X\13\263\260\4\70\15\205\210\66K\246%K" + "fK\26\0\71\15\205\210\66KfK\206PK\26\0:\7a\210\22\222\0;\11\202z\26C\254(" + "\0<\10\225\210\226Y\327\16=\10\65\270\26\203:\10>\11\225\210\26i\267\216\0\77\15\225\210\66K" + "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" + "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" + "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" + "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" + "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" + "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" + "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX[" + "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256" + "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d" + "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D" + "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z" + "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V" + "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205" + "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210" + "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210" + "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i" + "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222" + "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226" + "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm" + "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE" + "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e" + "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT" + "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311" + "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X" + "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17" + "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266" + "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314" + "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210" + "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22" + "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V" + "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361" + "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c" + "\62$\0\366\13\205\210\66u`\311\334\222\5\372\13\225\210vu \363\226\14\1\374\12\205\210\66\345\314" + "[\62\4\0\0\0\70N\11\7\270P\31\12 SN\12fWO\12P\134B\12\200`o\12\231e" + "\317\13Pl\21\12\267t\366\13\14|s\12\257\202\371\12\375\214\23\12\343\224\303\13\63\377\377\1M\14" + "\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311\2 \23\10\33\311\34\17\2 \34" + "\13E\376<\221\224(C\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13" + "D\213\30\273x\34" + "\273x\134\311\260\225\262R\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a" + "\32\246a\66,i\224\14Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321" + "p\210\243b\224\225\222,\211\264h\323r,G\24\0WO\32\273x\134\71\226\14C\224F\203\26V" + "C\61S\62\245\64\265\3\71\226\1WP\27\273x\274\71\20\25\243bTKz\333\322x\70\347X:" + "\34\4WW\35\273x\134a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\16d\241\32W" + "[\32\273x\134\71\26\15Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y" + "\34\246\321p\320\221(+eM\331\22%b\222c\361\60\4W\213\37\273x<\303\224%Q\222%Q" + "\222\14\203\222%Q\222%a\24\231s\340\220\3\351p\20W\316\33\273x<\261\24'\245\341\255\264\64" + "%]\224DR\232\224D\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213" + "&F\232R\223\22\71\13W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10" + "X\2\32\273x\134\255Imx\207\224aH\242\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134" + "\265\312\60D\225\312\240\24\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224" + "E\311p\314\262\341\240U\243Z\62(q:\34\4X\203\36\273x\134a\232\14C\224%\321p\220j" + "\245A\213\262L\31\24\61\311\201(\311D\1X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p" + "\220\232\224AQ\343\341\2X\231\37\273x\32\273x\274" + "\351pPs *F\265\244\267-Lr K\323A\7\22\0YG\33\273x\274\361pMr \313" + "\206\203\216\204\203\22fI\70(\71\226C\22\0YH\27\273x\274\351p\320\252%ePtt\70\347" + "@Tk\311\304\0YO\31\273x\274\361p\215\207\203V\35\206H\313\244a\210\223\34\310BU\1Y" + "V\33\273x\34Q\26&\321\240%RfR\262\70\321\241t\70\210I\254I: YW\32\273x\234" + "\361p\320\302pX\22%\316\6\71\7\36\304\34\12\303aP\0Ye\31\273x\234\71\360\224t\212\246" + "h\70ES\245\313p\20\223\34\310\262uYs\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351" + "H\244\255\11\0Yy\36\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11\223" + "Fu\20Y}\33\273x\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202" + " \273x\134\71\226#\203\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y\231" + "\34\273x\134a\32f\203\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x<" + "\331\260d\341\60\204IeX\232\223&)i\222\22Q)%QI\12\7Y\306 \273x<\331 e" + "R\62$MI-J\206S\42%Q\322$e\231\62H\305$\7\24\0Y\313 \273x\134a\32f" + "\203\22eI-J\206!\211r \211\6I\312\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65" + "\15S\226T\246\244S\322)\351\26%\233\22e\221T\34\6Z\1 \273x\374@\222#Q\62\34\222" + "\64L\226(\211Z\206!\211\222N\221\224H\221\262Da\0Z\3\34\273x\134a\32fC\62HI" + "\26&\303)\13\223,\215\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245" + "\27KT\311\264$\314\222,\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211" + "\322\242$\203\222(}JZ\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI" + "\42)\345\244\62hQ\226)\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7" + "\65\307r,G\352P\14[W\31\273x\274\361pHrD\32\224\34\310\241t\70\250\71\226c\71\262" + "\2[X\31\273x\234\361p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\31\272y<" + "QVJ\242\341\240#\321\260#\71\22\16\207\64\207r`\4[i\33\273x\34\203\24'\303\24\246Y" + "\224)C\64F\265(\213\212\225\266J$\6[\203\30\273x\274\361pHrDJ\303\34\213\326\35\311" + "\261\70\213\303a\10[\210\31\273x\274\71\230\16\207$\7\222\64\35\356@\234\345@\224c\71\62\2[" + "\211\30\273x\274\361pHrD\13\323x\70hU-\7v$\322V\1[\214\33\273x\274\361pH" + "rD\32\224\34\36\16a\222\3Q\16DY\224U\322![\230\32\273x\274\361pHrD\32\206\260" + ":\254\71\66\14a\32\16C\230&\0[\232\33\273x\274\361pHrDG\262a\220s \312\201h" + "\10\243\70\251f\303\20[\235\32\273x\234\71\230\16\357P\64\14\71\220c\71p\310\201$G\242h\70" + "\10[\236\31\273x\334\351pH\312Z\22eu J\207C\234CI\16d\331*[\242\30\272y\234" + "\351p\220\322h\330\222(\313dI\32\16Q\330\70L\0[\243\31\273x\274\351\360\16E\303\220S\206" + "!L\303a\10\323p\30\242\341 [\244\32\273x\274\351\360\16)\303\220\204\71\224\245\203\222\3\71p" + "\310\201t\70\10[\253\30\272y\234\351p\320\221h\30\213\303\16\17\203\24G\303 \305\11\0[\263\32" + "\273x\274\351\360\30*\303\220\244\71p\310\201t\70Hi\230\206\303\20\1[\264\31\272y\234\351pP" + "\302D\31\226(\14\207\71\35\16Q\26\17\331\220\15[\266\31\273x\274\351\360\16)\303\220dIVi" + "\215DeI\243\222VT\1[\271\30\273x\274\351\360\224E\335\242$\12\263\264\244\14\212V\316\342A" + "\3[\275\32\273x\274\351\360\224E\311p\314\322a\10\243bTL\272E\331\20\16\1[\304\32\273x" + "\274\351\360\30*\303\220d\265\341\240#\341\20\205Qq\210rd\2[\306\32\273x\274\351\360V\351-" + "jL\242dH\6%\315\201\250\30\25\207!\2[\314\30\273x\274\351\360\16E\303\220\16r\26\16\247" + "\254\64\234\262\322p\1[\337\35\273x\274\351\360\222e\312\220\14\211\22%Q\22V\206$\321\221d\270" + "E%\233\0[\353\31\273x\274\351\360\226*\322\22\245\341\62\246\341pP\232*=%\211\2[\371\33" + "\273x\374H\64\204\351p\12\263$,\25\263$K\302,\11\243\64\311\241\14[\373\33\273x<\303\240" + "c\341\60\344X\66\14:\224\15\7)\214\263\34\251C!\0[\374\35\273x\134\303\20\246\341\60$Q" + "\16d\303\240\3\331p\320\352@\224\3Q\16i\0\134\4\34\273x\134q\64hQV\32\16IV\32" + "\246ZR\31\266R\26e\225LR\0\134\6\34\273x\134Y\34\15J\251\246$j\226\204QM\31\6" + "%*fI\230\206\241\4\134\7\37\273x|\305$\32\224\236\222(\211\206,\11\243\312pPJ-Y" + "\22%i\22e\13\0\134\15\35\273x\134I\230t\212\24-\31\16R\22F\203R\14\245A\13\323p" + "\251\254\21\0\134\16\35\273x\34a\224%\303 V\244!\211*CTL\222\341\216D\303A\13\343H" + "\2\134\17\30\273x\274\71\226c\71\20\25\243,\312JY(Vs\244\16\305\0\134\21\32\273x\274\71" + "\226#\245\64\311Ja\222E\71\220\344P\16\345\210\274#\0\134\24\30\272y\134\71\64\14J\16\210Q" + "\134J\302\250-\252eb\226\215\0\134$\32\273x\234Q\16dq<\34\304$G\352@\224\3Q\234" + "U\302L\36\2\134\61\36\273x|\265a\251#Q\62\34\222(\251\15I\65J\262D\351EI\244J" + "I\311\4\134<\33\273x\134\303\240\305Y\234\15\203\226cI\230%\221\230\254Q\232D\251\70\14\134=" + "\31\273x\134\303\20\246a\32\16C\230\305aI\312\302(\211\324:\30\2\134>\33\273x\134\303\240\305" + "\331\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\36\273x\134\303\240\305\331\60h\71\66" + "\234r J\206\250\22U\242!J\242\222\16(\0\134B\33\273x\134\303\240\305\331\60h\71\226\14[" + "\216\15\247,\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226" + "\204Q\64,Y\230\0\134O\31\273x\134\303)\7\242\341\224\204YT\34N\215\303\251-\312\242b\4" + "\134U\31\273x<\303)\7\242\341\324\70\234\32\207CRj\311\244JT\22\5\134^\37\273x<\303" + ")\7\242\341\224\3Q\62la\232\14C\224D\225d\70$Y\246$C\42\134q\27\271y\234\71\22" + "f\231\226i\231\226i\231\226i\331p\320\201\0\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$J\262$+EZ\224DI\224" + "\204\1e\77\37\273x\374@\66,q\66d\221\22%K)\311\222(\311\222(\11\263d\212\306$\326" + "\2eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224eC\224D\321\26eH\35\273" + "x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212Z\0eL\34\273x|R" + "\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO\37\273x\34\273x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\35\273" + "x\374@\66$\203\22e\245,\33\236\302(\32NI\24\15Q\222c\71\62\1fZ\36\273x\274\351" + "\64DI)K\206AYJI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246" + "\341\60\204i\66\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262" + "\244i\70\350\360\60\204i\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220" + "DI\244\14C\226f\303\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15" + "I\24\16C\230\206\303\20\246\341\60D\0f\227\36\273x\374@\66<%Y\22U\242\341)\7\242d" + "P\206$K\242d\220\263xP\0f\362\27\272y|Q\34e\303A*I%\251\64<\225\244\322\360" + "\216\4f\364\31\273x<\303!\216\207A+e\303\240\225\262aP\223\34\312\21\333:f\370\33\273x" + "\134\303\220\3Q\64\34\324(\33\316\351p\220\322p\30\302\64\34\206\10f\374\32\272y\134\303\230Da" + "\224D\303A*\15\7\35\35\326(\7\304!\32\2f\376\31\271y\134\265\341 EK\313p\310\261a" + "\210\322h\30\242\64\32\206\4g\0\33\273x\134\303\20\246\341\60\204i\64\34\224(\7\236*Q\64D" + "\246H\236\4g\10\32\271y\134\303\20\245Q\32\15C\224Fi\64\14Q\32\245I\230\310\11\0g\11" + "\30\273x\234\361p\320rl\30\305,\31\246b:\254a\32\246\231\4g\13\36\273x\33\273x|\265a\211\263!\31\222,G*C\226c\321\60e" + "IOMK\30kL\37\273x\34\227\34\210\262%\32\224\266aP\342,Z\262()%\311\22%i" + "\222ec\0kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205\303!kc\32\253x" + "\34\17j\216\345@\224\3\321\240E\71\20\345@\224\3Q:\34\4kd\36\273x|\345,\316\242\244" + "\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\31\273x\274\71\20\15Z\224\3Q" + ":\34\324\34\251\225ji\216\210\203\14kw\34\273x<\303!\311J\211\244EY\66\34\222(\253\234" + "\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%R\245\16Dq\26\25\243y" + "k\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301\33\273" + "x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303\20&" + "Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(\32\326" + "$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i\70(" + "Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27\273x" + "\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\31\272y\34/\71\220\344@\62\134\262" + "\64K\207\203XJ\62%\213\326\1l\24\32\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224\3" + "Q\216\324!\1l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302," + "l\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30" + "\17Y\34ECRN\344(I\243ZmJr(\6lB\32\273x\274Q\16d\311pPs \252" + "&u`\7\222jT\322\62Q\5lI\33\273x<\71\220%\303 fQR\13\223\254%\314\222H" + "\15+YS\242\6l_\32\273x<\71\30\15J\34&Y\234\245a\32fj\230\206\311\60(\71\4" + "l`\37\273x\35\273x<\261\226\14\71\20n\311\226(\305\244SR\61%\265(\211Z\242J$\5m" + "A\32\273x\34ie\30\324Z\313\60dq\226\64II-J:%=E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222" + "\205\311\240\345\330pQ\242HI\206!J\242\226a\10y\273\33\273x\274\351p\220\222\306\250\230\64\16" + "C\16\304\303\251%J\6%\212\25\0y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312" + "\60D\305(G\0y\315\33\273x|R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314" + "\0y\321\34\273x|b\262EY\230$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33" + "\273x|\265\61\215\222\312\220\224Z\242d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270" + "\305\321p\220\32\303\245IJz*iQ\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J" + "\230DC\242eJ\224\324\322\60\332\0z\13\36\273x|\311\240LY)K\206d\320rL\31$%" + "\12\245A)\246a\232\14C\0z\15\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224" + "\6-\312JY)R\0z.\34\273x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264" + "\60M\206!z\61\35\273x|\241\62M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244" + "\0z\77\36\273x|R\66\15S\26%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5z" + "v\30\273x\274\351\360\224E\325,\12\323\34\31v \212\263\250\30\315\3zz\30\273x\274\361pH" + "rD\213\342\60\223\303a\7r,\307\342\341\20z\177\32\273x\274\351\360\224EJ\232$\303 f\351" + "pMr \212\263P\32\1z\201\31\273x\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223" + "t@z\227\36\272y\274\341pP\302\244\224%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0" + "z\313\30\273x\274\71\230\16\207\234\20\246a\34\345@\224\3I\216\205\303Az\326\36\273x|\311 " + "%\265(\211\222,\311\302$J\322$\223\323\341\230\345@\22\16\7\1z\331\34\273x\65" + "&\215Z\0\226b\35\273x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244" + "T\226d\36\273x\34CV\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226" + "\206 \273x\34C\222F\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226" + "\217 \273x\34c\226(\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226" + "\220\42\273x\34C\62D\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207" + "\10\226\250!\273x\34CVR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22e" + "C\0\226\274\30\273x\134Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334" + "I\64DI\232\14C\64eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211" + "\206\203\224%a\244dI\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351" + "pP\242\34\70hQ\16\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203" + "\22%\225a\351\224T\206\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235" + "\42O\225NY)\213\24\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15" + "\27\0\226\366\31\273x<\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x" + "<\303\71\35\36CEI\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62" + "\234\262\322p\312J\303\71L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j" + "\211Z\22\5\227\6\34\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0" + "\227\23\34\273x<\303\71\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273" + "x<\303\71\35\236\222\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236" + "\222\322 \15I\224H\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322" + "p\220*Q\62(C\322)\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13" + "\323a\15\323a\15#\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!" + "J\244\60*&\66\0\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224AL" + "r\244\10\227`\34\273x\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227" + "b\30\272y\34\17a\216\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240" + "\225\7\35\311\201C\30\25\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360" + "RJ\222A\211\262P\32\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206" + "\303\20\246\341\60D\0\227\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i" + "\351\260)\0\230\30\36\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230" + "\204\1\230^\36\273x\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0" + "\230o\42\273x<\203\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372" + "\267\0\230u\31\273x\34\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x" + "\134\331 \245\321\240\14R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240" + "\205\225(\224\206!\252\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224" + "R\66\14J-J\272(-JE\252\224\302$\321\264\0\230\230!\273x Date: Thu, 4 Apr 2024 07:38:32 +0700 Subject: [PATCH 063/101] Clarify Random is related to UUID --- fw/data/i18n.csv | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index fe876507..172ae5f2 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -39,8 +39,8 @@ _L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Minuten,3 min.,3 min.,3 min _L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel fehlt,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata _L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria. _L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito -_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufälliger Tag,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale -_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Automatische Zufallsauswahl,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico +_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige UUID,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale +_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico _L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR _L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag _L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Löschen von %s bestätigen?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n? @@ -78,19 +78,19 @@ _L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renomme _L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Mappa megnyitása sikertelen ,Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella _L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore _L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro] -_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällig (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale) -_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällig (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico) +_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällige UUID (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale) +_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällige UUID (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico) _L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale _L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreibmodus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura _L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1 _L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2 _L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop _L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità -_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Automatische Zufallsauswahl,Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale +_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale _L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompabilitäts Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità _L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli] _L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale] -_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Zufällig (Manuell),Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man. +_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Zufällige UUID (Manuell),Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man. _L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale _L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lesen/Schreiben,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt. _L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Zufällig (Auto.),Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale From a2a47c9bdeb3c6c4c748eaaa8ebfa2cfe02b69cf Mon Sep 17 00:00:00 2001 From: Schoko Date: Thu, 4 Apr 2024 07:47:08 +0700 Subject: [PATCH 064/101] Generate new de_DE.c --- fw/application/src/i18n/de_DE.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index d57fd4c0..702f1f58 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -40,8 +40,8 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_AMIIBO_KEY_UNLOADED] = "Amiibo Schlüssel fehlt", [_L_UPLOAD_KEY_RETAIL_BIN] = "Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.", [_L_KNOW] = "Verstanden", - [_L_RANDOM_GENERATION] = "Zufälliger Tag", - [_L_AUTO_RANDOM_GENERATION] = "Automatische Zufallsauswahl", + [_L_RANDOM_GENERATION] = "Zufällige UUID", + [_L_AUTO_RANDOM_GENERATION] = "Zufällige UUID (Automatisch)", [_L_SHOW_QRCODE] = "QR Code", [_L_DELETE_TAG] = "Tag löschen", [_L_DELETE_TAG_CONFIRM] = "Löschen von %s bestätigen?", @@ -79,19 +79,19 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_OPEN_FOLDER_FAILED] = "Ordner konnte nicht geöffnet werden", [_L_RENAME_FAILED] = "Umbenennen fehlgeschlagen\nFehlercode", [_L_MAIN_RETURN] = "[Zurück]", - [_L_RANDOM_MODE_MANUAL] = "Zufällig (Manuell)", - [_L_RANDOM_MODE_AUTO] = "Zufällig (Automatisch)", + [_L_RANDOM_MODE_MANUAL] = "Zufällige UUID (Manuell)", + [_L_RANDOM_MODE_AUTO] = "Zufällige UUID (Automatisch)", [_L_SEQUENCE_MODE] = "Sequentieller Modus", [_L_READ_WRITE_MODE] = "Lese-Schreibmodus", [_L_AMIIBOLINK_V1] = "V1", [_L_AMIIBOLINK_V2] = "V2", [_L_AMILOOP] = "AmiLoop", [_L_MODE] = "Modus", - [_L_AUTO_RANDOM] = "Automatische Zufallsauswahl", + [_L_AUTO_RANDOM] = "Zufällige UUID (Automatisch)", [_L_COMPATIBLE_MODE] = "Kompabilitäts Modus", [_L_TAG_DETAILS] = "[Zurück zu Details]", [_L_MAIN_MENU] = "[Hauptmenü]", - [_L_MODE_RANDOM] = "Zufällig (Manuell)", + [_L_MODE_RANDOM] = "Zufällige UUID (Manuell)", [_L_MODE_CYCLE] = "Sequentiell", [_L_MODE_NTAG] = "Lesen/Schreiben", [_L_MODE_RANDOM_AUTO_GEN] = "Zufällig (Auto.)", From 56539c3cb3259b9ea4a42e9b6559366785f7c17b Mon Sep 17 00:00:00 2001 From: solosky Date: Thu, 4 Apr 2024 20:54:18 +0800 Subject: [PATCH 065/101] remove trailing space for 05+5-translation.md --- docs/it/{05+5-translation.md => 05+5-translation.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/it/{05+5-translation.md => 05+5-translation.md} (100%) diff --git a/docs/it/05+5-translation.md b/docs/it/05+5-translation.md similarity index 100% rename from docs/it/05+5-translation.md rename to docs/it/05+5-translation.md From f4f9468aca27fdea79450a815670ca9f3586b187 Mon Sep 17 00:00:00 2001 From: solosky Date: Thu, 4 Apr 2024 23:13:15 +0800 Subject: [PATCH 066/101] remove auto gen menu in amiibolink app fixed amiloop mode option incorrect issue --- docs/en/04-Using-Firmware.md | 2 - docs/it/04-Using-Firmware.md | 4 - .../amiibolink/scene/amiibolink_scene_main.c | 73 ++++++++++++------- .../amiibolink/scene/amiibolink_scene_menu.c | 34 --------- .../src/app/amiibolink/view/amiibolink_view.c | 7 +- fw/application/src/mod/ble/ble_amiibolink.c | 7 +- fw/application/src/mod/settings.h | 2 +- 7 files changed, 55 insertions(+), 74 deletions(-) diff --git a/docs/en/04-Using-Firmware.md b/docs/en/04-Using-Firmware.md index 9dc44299..908d2105 100644 --- a/docs/en/04-Using-Firmware.md +++ b/docs/en/04-Using-Firmware.md @@ -238,8 +238,6 @@ The device use a "special" amiibo slot where only an amiibo can be used, the ami Changing the mode preserve the current selected amiibo, with exception of «Read-write mode». -## Auto Random. [] -When this option is turn ON a new random UUID for the current amiibo is generated after each time a game read it. Allowing to use the same amiibo multiple times on games with restrictions. You cannot change the active amiibo on this mode. Cannot be turned OFF for «Randomize (Auto)» mode, cannot be turned ON for «Randomize (Manual)»mode; ## Compati. Mode [] Shows the emulation firmware mode, the supported values are V1, V2 and AmiLoop, there are several APPs each one designed for a AmiiboLink firmware version or to the AmiLoop protocol. Using this setting you can match the emulation with the protocol needed by the APP you use on your phone. ## Tag Details diff --git a/docs/it/04-Using-Firmware.md b/docs/it/04-Using-Firmware.md index 658d99d9..79980b0b 100644 --- a/docs/it/04-Using-Firmware.md +++ b/docs/it/04-Using-Firmware.md @@ -237,10 +237,6 @@ Il dispositivo utilizza uno slot amiibo "speciale" dove può essere utilizzato s Cambiando la modalità si conserva l'amiibo selezionato corrente, con l'eccezione della modalità «Lettura-scrittura». -## Auto Rand. [] -Quando questa opzione è attiva, viene generato un nuovo UUID casuale per l'amiibo corrente ogni volta che un gioco lo legge, -consentendo di utilizzare lo stesso amiibo più volte su giochi con restrizioni. Non puoi cambiare l'amiibo attivo in questa modalità. - ### Modalità Compati. [] Mostra la modalità di emulazione del firmware, i valori supportati sono V1, V2 e AmiLoop, ci sono diverse APP, ognuna progettata per una versione del firmware AmiiboLink o per il protocollo AmiLoop. Utilizzando questa impostazione puoi far corrispondere l'emulazione con il protocollo necessario per l'APP che usi sul tuo telefono. diff --git a/fw/application/src/app/amiibolink/scene/amiibolink_scene_main.c b/fw/application/src/app/amiibolink/scene/amiibolink_scene_main.c index 5baa69d8..8c1cc434 100644 --- a/fw/application/src/app/amiibolink/scene/amiibolink_scene_main.c +++ b/fw/application/src/app/amiibolink/scene/amiibolink_scene_main.c @@ -25,7 +25,30 @@ APP_TIMER_DEF(m_amiibo_gen_delay_timer); -static void ntag_generate_cb() { +static void amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) { + app_amiibolink_t *app = p_msg_box->user_data; + if (event == MUI_MSG_BOX_EVENT_SELECT_CENTER) { + mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MAIN); + } +} + +static void amiibolink_scene_amiibo_detail_no_key_msg(app_amiibolink_t *app) { + mui_msg_box_set_header(app->p_msg_box, getLangString(_L_AMIIBO_KEY_UNLOADED)); + mui_msg_box_set_message(app->p_msg_box, getLangString(_L_UPLOAD_KEY_RETAIL_BIN)); + mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_KNOW), NULL); + mui_msg_box_set_btn_focus(app->p_msg_box, 1); + mui_msg_box_set_event_cb(app->p_msg_box, amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb); + + mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MSG_BOX); +} + +static void ntag_generate_cb(void* ctx) { + app_amiibolink_t *app = ctx; + if (!amiibo_helper_is_key_loaded()) { + amiibolink_scene_amiibo_detail_no_key_msg(app); + return; + } + ret_code_t err_code = amiibo_helper_rand_amiibo_uuid(ntag_emu_get_current_tag()); NRF_LOG_INFO("ntag generate: %d", err_code); if (err_code == NRF_SUCCESS) { @@ -40,7 +63,7 @@ static void ntag_update(app_amiibolink_t *app, uint8_t index, ntag_t *p_ntag) { NRF_LOG_INFO("ntag_update: index=%d, err_code=%d", index, err_code); } -static void ntag_reload(app_amiibolink_t *app, uint8_t index){ +static void ntag_reload(app_amiibolink_t *app, uint8_t index) { ntag_t ntag; ret_code_t err_code = ntag_store_read(app->p_amiibolink_view->index, &ntag); if (err_code == NRF_SUCCESS) { @@ -48,37 +71,37 @@ static void ntag_reload(app_amiibolink_t *app, uint8_t index){ } } -static void ntag_init(){ } +static void ntag_init() {} #else static void ntag_update(app_amiibolink_t *app, uint8_t index, ntag_t *p_ntag) { char path[VFS_MAX_PATH_LEN] = {0}; sprintf(path, "/amiibolink/%02d.bin", index); - vfs_driver_t * p_driver = vfs_get_driver(VFS_DRIVE_EXT); + vfs_driver_t *p_driver = vfs_get_driver(VFS_DRIVE_EXT); int32_t err_code = p_driver->write_file_data(path, p_ntag->data, NTAG_DATA_SIZE); NRF_LOG_INFO("ntag_update: index=%d, err_code=%d", index, err_code); } -static void ntag_reload(app_amiibolink_t *app, uint8_t index){ +static void ntag_reload(app_amiibolink_t *app, uint8_t index) { ntag_t ntag = {0}; char path[VFS_MAX_PATH_LEN] = {0}; memset(&ntag, 0, sizeof(ntag_t)); memset(path, 0, sizeof(path)); sprintf(path, "/amiibolink/%02d.bin", index); - vfs_driver_t * p_driver = vfs_get_driver(VFS_DRIVE_EXT); + vfs_driver_t *p_driver = vfs_get_driver(VFS_DRIVE_EXT); int32_t err_code = p_driver->read_file_data(path, ntag.data, NTAG_DATA_SIZE); if (err_code >= NTAG_DATA_SIZE) { ntag_emu_set_tag(&ntag); - }else{ + } else { NRF_LOG_INFO("ntag_reload: ntag_load_failed. index=%d, err_code=%d", index, err_code); ntag_store_new_rand(&ntag); ntag_emu_set_tag(&ntag); } } -static void ntag_init(){ - vfs_driver_t * p_driver = vfs_get_driver(VFS_DRIVE_EXT); +static void ntag_init() { + vfs_driver_t *p_driver = vfs_get_driver(VFS_DRIVE_EXT); p_driver->create_dir("/amiibolink"); } @@ -91,12 +114,9 @@ static void ntag_update_cb(ntag_event_type_t type, void *context, ntag_t *p_ntag if (type == NTAG_EVENT_TYPE_WRITTEN && app->amiibolink_mode != BLE_AMIIBOLINK_MODE_RANDOM) { ntag_update(app, app->p_amiibolink_view->index, p_ntag); mui_update(mui()); - } else if (type == NTAG_EVENT_TYPE_READ) { - settings_data_t* p_settings = settings_get_data(); - if (p_settings->auto_gen_amiibolink) { - app_timer_stop(m_amiibo_gen_delay_timer); - app_timer_start(m_amiibo_gen_delay_timer, APP_TIMER_TICKS(1000), app); - } + } else if (type == NTAG_EVENT_TYPE_READ && app->amiibolink_mode == BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) { + app_timer_stop(m_amiibo_gen_delay_timer); + app_timer_start(m_amiibo_gen_delay_timer, APP_TIMER_TICKS(1000), app); } } @@ -109,7 +129,8 @@ static void amiibolink_scene_main_event_cb(amiibolink_view_event_t event, amiibo } } -static void amiibolink_scene_switch_mode(app_amiibolink_t *app, ble_amiibolink_mode_t mode, uint8_t initial_index){ +static void amiibolink_scene_switch_mode(app_amiibolink_t *app, ble_amiibolink_mode_t mode, uint8_t initial_index) { + NRF_LOG_INFO("new mode: %d", mode); app->amiibolink_mode = mode; amiibolink_view_set_amiibolink_mode(app->p_amiibolink_view, mode); amiibolink_view_set_index(app->p_amiibolink_view, initial_index); @@ -117,16 +138,12 @@ static void amiibolink_scene_switch_mode(app_amiibolink_t *app, ble_amiibolink_m ble_amiibolink_set_mode(mode); - if(mode == BLE_AMIIBOLINK_MODE_NTAG){ + if (mode == BLE_AMIIBOLINK_MODE_NTAG) { ntag_reload(app, DEFAULT_NTAG_INDEX); - }else if(mode == BLE_AMIIBOLINK_MODE_CYCLE){ + } else if (mode == BLE_AMIIBOLINK_MODE_CYCLE) { ntag_reload(app, initial_index); - }else if(mode == BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN){ - settings_data_t* p_settings = settings_get_data(); - p_settings->auto_gen_amiibolink = true; - }else if(mode == BLE_AMIIBOLINK_MODE_RANDOM){ - settings_data_t* p_settings = settings_get_data(); - p_settings->auto_gen_amiibolink = false; + } else if (mode == BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) { + } else if (mode == BLE_AMIIBOLINK_MODE_RANDOM) { } } @@ -138,15 +155,15 @@ static void amiibolink_scene_ble_event_handler(void *ctx, ble_amiibolink_event_t if (app->amiibolink_mode == BLE_AMIIBOLINK_MODE_CYCLE) { // save ntag - ntag_update(app, p_view->index, (ntag_t *) data); + ntag_update(app, p_view->index, (ntag_t *)data); if (p_view->index < p_view->max_size - 1) { p_view->index++; } else { p_view->index = 0; } ntag_reload(app, p_view->index); - }else if(app->amiibolink_mode == BLE_AMIIBOLINK_MODE_NTAG){ - ntag_update(app, DEFAULT_NTAG_INDEX, (ntag_t *) data); + } else if (app->amiibolink_mode == BLE_AMIIBOLINK_MODE_NTAG) { + ntag_update(app, DEFAULT_NTAG_INDEX, (ntag_t *)data); } mui_update(mui()); @@ -189,7 +206,7 @@ void amiibolink_scene_main_on_enter(void *user_data) { int32_t err_code = app_timer_create(&m_amiibo_gen_delay_timer, APP_TIMER_MODE_SINGLE_SHOT, ntag_generate_cb); APP_ERROR_CHECK(err_code); - amiibolink_scene_switch_mode(app,app->amiibolink_mode, amiibolink_view_get_index(app->p_amiibolink_view)); + amiibolink_scene_switch_mode(app, app->amiibolink_mode, amiibolink_view_get_index(app->p_amiibolink_view)); amiibolink_view_set_event_cb(app->p_amiibolink_view, amiibolink_scene_main_event_cb); mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MAIN); } diff --git a/fw/application/src/app/amiibolink/scene/amiibolink_scene_menu.c b/fw/application/src/app/amiibolink/scene/amiibolink_scene_menu.c index 88211644..dc07cb7f 100644 --- a/fw/application/src/app/amiibolink/scene/amiibolink_scene_menu.c +++ b/fw/application/src/app/amiibolink/scene/amiibolink_scene_menu.c @@ -24,23 +24,6 @@ #define AMIIBOLINK_MENU_VER 3 #define AMIIBOLINK_MENU_AUTO_GENERATE 4 -static void amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) { - app_amiibolink_t *app = p_msg_box->user_data; - if (event == MUI_MSG_BOX_EVENT_SELECT_CENTER) { - mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_LIST); - } -} - -static void amiibolink_scene_amiibo_detail_no_key_msg(app_amiibolink_t *app) { - mui_msg_box_set_header(app->p_msg_box, getLangString(_L_AMIIBO_KEY_UNLOADED)); - mui_msg_box_set_message(app->p_msg_box, getLangString(_L_UPLOAD_KEY_RETAIL_BIN)); - mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_KNOW), NULL); - mui_msg_box_set_btn_focus(app->p_msg_box, 1); - mui_msg_box_set_event_cb(app->p_msg_box, amiibolink_scene_amiibo_detail_menu_msg_box_no_key_cb); - - mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIBOLINK_VIEW_ID_MSG_BOX); -} - void amiibolink_scene_menu_on_event(mui_list_view_event_t event, mui_list_view_t *p_list_view, mui_list_item_t *p_item) { app_amiibolink_t *app = p_list_view->user_data; @@ -55,20 +38,6 @@ void amiibolink_scene_menu_on_event(mui_list_view_event_t event, mui_list_view_t mui_scene_dispatcher_next_scene(app->p_scene_dispatcher, AMIIBOLINK_SCENE_MENU_VER); } else if (menu_code == AMIIBOLINK_MENU_BACK_EXIT) { mini_app_launcher_kill(mini_app_launcher(), MINI_APP_ID_AMIIBOLINK); - } else if (menu_code == AMIIBOLINK_MENU_AUTO_GENERATE) { - settings_data_t *p_settings = settings_get_data(); - - if (!amiibo_helper_is_key_loaded() && !p_settings->auto_gen_amiibolink) { - amiibolink_scene_amiibo_detail_no_key_msg(app); - return; - } - - p_settings->auto_gen_amiibolink = !p_settings->auto_gen_amiibolink; - NRF_LOG_INFO("auto_generate: %d", p_settings->auto_gen_amiibolink); - sprintf(txt, "[%s]", p_settings->auto_gen_amiibolink ? getLangString(_L_ON) : getLangString(_L_OFF)); - settings_save(); - - string_set_str(p_item->sub_text, txt); } } } @@ -94,9 +63,6 @@ void amiibolink_scene_menu_on_enter(void *user_data) { mui_list_view_add_item_ext(app->p_list_view, ICON_MODE, getLangString(_L_MODE), txt, (void *)AMIIBOLINK_MENU_MODE); settings_data_t *p_settings = settings_get_data(); - sprintf(txt, "[%s]", p_settings->auto_gen_amiibolink ? getLangString(_L_ON) : getLangString(_L_OFF)); - mui_list_view_add_item_ext(app->p_list_view, ICON_AUTO, getLangString(_L_AUTO_RANDOM), txt, - (void *)AMIIBOLINK_MENU_AUTO_GENERATE); sprintf(txt, "[%s]", p_settings->amiibo_link_ver == BLE_AMIIBOLINK_VER_V2 diff --git a/fw/application/src/app/amiibolink/view/amiibolink_view.c b/fw/application/src/app/amiibolink/view/amiibolink_view.c index a00d53b7..b4328bee 100644 --- a/fw/application/src/app/amiibolink/view/amiibolink_view.c +++ b/fw/application/src/app/amiibolink/view/amiibolink_view.c @@ -9,6 +9,7 @@ #include "db_header.h" #define ICON_RANDOM 0xe20d +#define ICON_AUTO 0xe1b2 #define ICON_NTAG 0xe1cf #define ICON_LEFT 0xe1ac #define ICON_RIGHT 0xe1aa @@ -28,10 +29,12 @@ static void amiibolink_view_on_draw(mui_view_t *p_view, mui_canvas_t *p_canvas) mui_canvas_set_draw_color(p_canvas, 0); // draw mode icon - if (p_amiibolink_view->amiibolink_mode == BLE_AMIIBOLINK_MODE_RANDOM || - p_amiibolink_view->amiibolink_mode ==BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) { + if (p_amiibolink_view->amiibolink_mode == BLE_AMIIBOLINK_MODE_RANDOM){ mui_canvas_set_font(p_canvas, u8g2_font_siji_t_6x10); mui_canvas_draw_glyph(p_canvas, 10, y + 10, ICON_RANDOM); + }else if(p_amiibolink_view->amiibolink_mode ==BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN) { + mui_canvas_set_font(p_canvas, u8g2_font_siji_t_6x10); + mui_canvas_draw_glyph(p_canvas, 10, y + 10, ICON_AUTO); } else if (p_amiibolink_view->amiibolink_mode == BLE_AMIIBOLINK_MODE_CYCLE) { if (p_amiibolink_view->index > 0) { diff --git a/fw/application/src/mod/ble/ble_amiibolink.c b/fw/application/src/mod/ble/ble_amiibolink.c index 6f9b1a88..00d9123a 100644 --- a/fw/application/src/mod/ble/ble_amiibolink.c +++ b/fw/application/src/mod/ble/ble_amiibolink.c @@ -357,11 +357,12 @@ void ble_amiloop_received_data(const uint8_t *m_data, size_t length) { // 0x01 顺序模式 // 0x02 读写模式 uint8_t mode = buff_get_u8(&buffer); + NRF_LOG_INFO("amiloop mode: %d", mode); ble_amiibolink_mode_t link_mode; switch (mode) { case 0x00: - link_mode = BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN; + link_mode = BLE_AMIIBOLINK_MODE_RANDOM; NRF_LOG_INFO("amiloop mode: random"); break; @@ -371,8 +372,8 @@ void ble_amiloop_received_data(const uint8_t *m_data, size_t length) { break; case 0x02: - link_mode = BLE_AMIIBOLINK_MODE_NTAG; - NRF_LOG_INFO("amiloop mode: ntag"); + link_mode = BLE_AMIIBOLINK_MODE_RANDOM_AUTO_GEN; + NRF_LOG_INFO("amiloop mode: random auto gen"); break; default: diff --git a/fw/application/src/mod/settings.h b/fw/application/src/mod/settings.h index de93d5b4..d53b7ad0 100644 --- a/fw/application/src/mod/settings.h +++ b/fw/application/src/mod/settings.h @@ -12,7 +12,7 @@ typedef struct { uint8_t sleep_timeout_sec; bool dirty; bool auto_gen_amiibo; - bool auto_gen_amiibolink; + bool auto_gen_amiibolink; //deprecated, keep for capability issue bool skip_driver_select; bool bat_mode; ble_amiibolink_ver_t amiibo_link_ver; From e949f61ff4d85bcd5e6af32b25456b2156d4a3ae Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 07:29:24 +0700 Subject: [PATCH 067/101] Restore original version --- fw/scripts/font_data_gen.sh | 49 ++++++------------------------------- 1 file changed, 7 insertions(+), 42 deletions(-) diff --git a/fw/scripts/font_data_gen.sh b/fw/scripts/font_data_gen.sh index 572877f0..b90954d8 100644 --- a/fw/scripts/font_data_gen.sh +++ b/fw/scripts/font_data_gen.sh @@ -1,44 +1,11 @@ #!/bin/bash -# Check for bdfconv in PATH -BDFCONV=$(command -v bdfconv) - -# Check if bdfconv is not found in PATH and exit with an error message -if [ -z "$BDFCONV" ]; then - if [[ "$OSTYPE" == "darwin"* || "$OSTYPE" == "linux-gnu"* ]]; then - echo "Error: bdfconv not found in PATH. Please ensure it is installed or specify the correct path." >&2 - exit 1 - else - # Windows - BDFCONV="scripts/bdfconv" # Assuming bdfconv is in scripts folder - fi -fi - -# Set variables for grep and sed based on the operating system -if [[ "$OSTYPE" == "darwin"* ]]; then - # MacOS requires the use of GNU grep and sed - GREP="ggrep" - SED="gsed" -else - # Linux or Windows - GREP="grep" - SED="sed" -fi - -# Change directory to script's directory -cd "$(dirname "$0")" && cd .. - -# Generate pixjs.txt file -cat application/src/i18n/*.c application/src/amiidb/*.c | $GREP -Po '".*?"' | tr -d '[:print:]' | sort | uniq > data/pixjs.txt - -# Create gb2312a.map file +cd $(dirname "$0") && cd .. +echo "Current dir: $(pwd)" +cat application/src/i18n/*.c application/src/amiidb/*.c |grep -Po '".*?"' | tr -d '[:print:]' |sort|uniq > data/pixjs.txt echo '32-128,' > data/gb2312a.map -cat data/chinese3.txt data/pixjs.txt | iconv -f utf-8 -t c99 | $SED 's/\\u\([0-9a-f]\{4\}\)/\$\1,\n/g' | sort | uniq | $SED '/^$/d' | tr '/a-f/' '/A-F/' >> data/gb2312a.map - -# Convert font using bdfconv -$BDFCONV -b 0 -f 1 -M data/gb2312a.map -n u8g2_font_wqy12_t_gb2312a -o application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c data/wenquanyi_9pt_u8g2.bdf - -# Generate u8g2_font_wqy12_t_gb2312a.c file +cat data/chinese3.txt data/pixjs.txt | iconv -f utf-8 -t c99 | sed 's/\\u\([0-9a-f]\{4\}\)/\$\1,\n/g' | sort | uniq | sed '/^$/d' | tr '/a-f/' '/A-F/' >> data/gb2312a.map +scripts/bdfconv -b 0 -f 1 -M data/gb2312a.map -n u8g2_font_wqy12_t_gb2312a -o application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c data/wenquanyi_9pt_u8g2.bdf echo ''' #include "mui_u8g2.h" @@ -46,8 +13,6 @@ echo ''' ''' > application/src/mui/u8g2_font_wqy12_t_gb2312a.c cat application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c >> application/src/mui/u8g2_font_wqy12_t_gb2312a.c -$SED -i 's/U8G2_USE_LARGE_FONTS/U8G2_USE_LARGE_GB2312_FONT/g' application/src/mui/u8g2_font_wqy12_t_gb2312a.c - -# Clean up temporary files +sed -i 's/U8G2_USE_LARGE_FONTS/U8G2_USE_LARGE_GB2312_FONT/g' application/src/mui/u8g2_font_wqy12_t_gb2312a.c rm application/src/mui/u8g2_font_wqy12_t_gb2312a_t.c -rm data/gb2312a.map data/pixjs.txt \ No newline at end of file +rm data/gb2312a.map data/pixjs.txt \ No newline at end of file From 398ca6f15437ded7fddf3b5895ec1d8714b09a25 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 07:46:05 +0700 Subject: [PATCH 068/101] Port font_data_gen.sh to Python3 --- fw/scripts/font_data_gen.py | 101 ++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 fw/scripts/font_data_gen.py diff --git a/fw/scripts/font_data_gen.py b/fw/scripts/font_data_gen.py new file mode 100644 index 00000000..a241e68d --- /dev/null +++ b/fw/scripts/font_data_gen.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +import os +import re +import subprocess + +# Determine the platform +is_windows = os.name == 'nt' + +# Absolute path to the directories containing the .c files +current_dir = os.path.dirname(os.path.abspath(__file__)) +source_dirs = [ + os.path.join(current_dir, "../application/src/i18n"), + os.path.join(current_dir, "../application/src/amiidb") +] + +# Absolute path to the directory where the output file will be saved +output_dir = os.path.join(current_dir, "../data") + +# Name of the output file +output_file = "pixjs.txt" + + +def write_to_file(file_path, content): + with open(file_path, 'w', encoding='utf-8') as f: + f.write(content) + + +def extract_non_printable_chars(): + non_printable_chars = set() + for source_dir in source_dirs: + for root, _, files in os.walk(source_dir): + for file in files: + if file.endswith(".c"): + with open(os.path.join(root, file), "r", encoding="utf-8") as f: + content = f.read() + non_printable_chars.update(re.findall(r'[^\x20-\x7E]', content)) + + write_to_file(os.path.join(output_dir, output_file), '\n'.join(sorted(non_printable_chars))) + + +def convert_and_sort(unicode_strings): + return sorted(set(f'${ord(char):04X},' for string in unicode_strings for char in string)) + + +def run_bdfconv(map_path, output_path, bdf_path): + # Convert paths to absolute paths + abs_map_path = os.path.abspath(map_path) + abs_output_path = os.path.abspath(output_path) + abs_bdf_path = os.path.abspath(bdf_path) + + if is_windows: + bdfconv_path = 'scripts/bdfconv.exe' + else: + bdfconv_path = 'bdfconv' + cmd = [ + bdfconv_path, '-b', '0', '-f', '1', '-M', abs_map_path, + '-n', 'u8g2_font_wqy12_t_gb2312a', '-o', abs_output_path, abs_bdf_path + ] + subprocess.run(cmd, check=True) + + +def main(): + extract_non_printable_chars() + + combined_content = '' + for file_name in ['chinese3.txt', 'pixjs.txt']: + with open(os.path.join(output_dir, file_name), 'r', encoding='utf-8') as file: + combined_content += file.read() + + sorted_converted = convert_and_sort(combined_content.splitlines()) + write_to_file(os.path.join(output_dir, 'gb2312a.map'), '32-128,\n' + '\n'.join(sorted_converted)) + + run_bdfconv( + map_path=os.path.join(output_dir, 'gb2312a.map'), + output_path=os.path.join(output_dir, 'u8g2_font_wqy12_t_gb2312a_t.c'), + bdf_path=os.path.join(output_dir, 'wenquanyi_9pt_u8g2.bdf') + ) + + # Write to u8g2_font_wqy12_t_gb2312a.c + with open(os.path.join(output_dir, 'u8g2_font_wqy12_t_gb2312a.c'), 'w+', encoding='utf-8') as final_file: + final_file.write(''' +#include "mui_u8g2.h" + +#include "u8x8.h" + +''') + + # Read the content of the temporary file and append it to the final file + temp_file_path = os.path.join(output_dir, 'u8g2_font_wqy12_t_gb2312a_t.c') + with open(temp_file_path, 'r', encoding='utf-8') as temp_file: + final_file.write(temp_file.read()) + + # Remove the temporary files + os.remove(temp_file_path) + os.remove(os.path.join(output_dir, output_file)) + os.remove(os.path.join(output_dir, 'gb2312a.map')) + + +if __name__ == "__main__": + main() From 73498d9aa83e7409829bf1145cf7b5afc50b1136 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 07:55:59 +0700 Subject: [PATCH 069/101] Make font_data_gen.py executable --- fw/scripts/font_data_gen.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 fw/scripts/font_data_gen.py diff --git a/fw/scripts/font_data_gen.py b/fw/scripts/font_data_gen.py old mode 100644 new mode 100755 From f75db4a24bdb7fc8cc0bdb1fc0227ed225490b55 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 09:37:42 +0700 Subject: [PATCH 070/101] Add macOS bdfconv binary (arm64/x86_64) --- fw/scripts/bdfconv_macos_universal | Bin 0 -> 219152 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 fw/scripts/bdfconv_macos_universal diff --git a/fw/scripts/bdfconv_macos_universal b/fw/scripts/bdfconv_macos_universal new file mode 100755 index 0000000000000000000000000000000000000000..47cb5d62e7318da2b85e410b12846c0c1e6c632b GIT binary patch literal 219152 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%0AiWEq5rMPz#RFrXd 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 lKG}5L{z2nbXI*;M{jXiv+wR}%^u1^PX3 Date: Fri, 5 Apr 2024 09:47:10 +0700 Subject: [PATCH 071/101] Add Linux bdfconv binary (statically linked) --- fw/scripts/bdfconv_linux | Bin 0 -> 1018984 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 fw/scripts/bdfconv_linux diff --git a/fw/scripts/bdfconv_linux b/fw/scripts/bdfconv_linux new file mode 100755 index 0000000000000000000000000000000000000000..363326d1846c3a29a3881651fa899b5dc5537891 GIT binary patch literal 1018984 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

hQV#DkwOu^QW+bWn362RC9@B(3$o{$ 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

0Uxa`aIt;pvd~*bklTYtRp( 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 CKJecF literal 0 HcmV?d00001 From 952b9fc335a5385cb2ed518c4d3b0c48e02497a8 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 10:12:09 +0700 Subject: [PATCH 072/101] Integrate bundled binaries --- fw/scripts/font_data_gen.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/fw/scripts/font_data_gen.py b/fw/scripts/font_data_gen.py index a241e68d..a5a193d7 100755 --- a/fw/scripts/font_data_gen.py +++ b/fw/scripts/font_data_gen.py @@ -3,9 +3,8 @@ import os import re import subprocess +import platform -# Determine the platform -is_windows = os.name == 'nt' # Absolute path to the directories containing the .c files current_dir = os.path.dirname(os.path.abspath(__file__)) @@ -44,15 +43,22 @@ def convert_and_sort(unicode_strings): def run_bdfconv(map_path, output_path, bdf_path): + # Construct the path to the bdfconv executable relative to the script directory + system = platform.system() + if system == 'Windows': + bdfconv_path = os.path.join(current_dir, 'bdfconv.exe') + elif system == 'Darwin': + bdfconv_path = os.path.join(current_dir, 'bdfconv_macos_universal') + elif system == 'Linux': + bdfconv_path = os.path.join(current_dir, 'bdfconv_linux') + else: + raise OSError("Unsupported operating system") + # Convert paths to absolute paths abs_map_path = os.path.abspath(map_path) abs_output_path = os.path.abspath(output_path) abs_bdf_path = os.path.abspath(bdf_path) - if is_windows: - bdfconv_path = 'scripts/bdfconv.exe' - else: - bdfconv_path = 'bdfconv' cmd = [ bdfconv_path, '-b', '0', '-f', '1', '-M', abs_map_path, '-n', 'u8g2_font_wqy12_t_gb2312a', '-o', abs_output_path, abs_bdf_path From 8b595b724f23dcae005ec1ac80b0c393d0e7c1d3 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 10:20:03 +0700 Subject: [PATCH 073/101] Fix Path for u8g2_font_wqy12_t_gb2312a.c --- fw/scripts/font_data_gen.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/fw/scripts/font_data_gen.py b/fw/scripts/font_data_gen.py index a5a193d7..2aecd9cc 100755 --- a/fw/scripts/font_data_gen.py +++ b/fw/scripts/font_data_gen.py @@ -14,7 +14,8 @@ ] # Absolute path to the directory where the output file will be saved -output_dir = os.path.join(current_dir, "../data") +data_dir = os.path.join(current_dir, "../data") +mui_dir = os.path.join(data_dir, "../application/src/mui") # Name of the output file output_file = "pixjs.txt" @@ -35,7 +36,7 @@ def extract_non_printable_chars(): content = f.read() non_printable_chars.update(re.findall(r'[^\x20-\x7E]', content)) - write_to_file(os.path.join(output_dir, output_file), '\n'.join(sorted(non_printable_chars))) + write_to_file(os.path.join(data_dir, output_file), '\n'.join(sorted(non_printable_chars))) def convert_and_sort(unicode_strings): @@ -71,20 +72,20 @@ def main(): combined_content = '' for file_name in ['chinese3.txt', 'pixjs.txt']: - with open(os.path.join(output_dir, file_name), 'r', encoding='utf-8') as file: + with open(os.path.join(data_dir, file_name), 'r', encoding='utf-8') as file: combined_content += file.read() sorted_converted = convert_and_sort(combined_content.splitlines()) - write_to_file(os.path.join(output_dir, 'gb2312a.map'), '32-128,\n' + '\n'.join(sorted_converted)) + write_to_file(os.path.join(data_dir, 'gb2312a.map'), '32-128,\n' + '\n'.join(sorted_converted)) run_bdfconv( - map_path=os.path.join(output_dir, 'gb2312a.map'), - output_path=os.path.join(output_dir, 'u8g2_font_wqy12_t_gb2312a_t.c'), - bdf_path=os.path.join(output_dir, 'wenquanyi_9pt_u8g2.bdf') + map_path=os.path.join(data_dir, 'gb2312a.map'), + output_path=os.path.join(mui_dir, 'u8g2_font_wqy12_t_gb2312a_t.c'), + bdf_path=os.path.join(data_dir, 'wenquanyi_9pt_u8g2.bdf') ) # Write to u8g2_font_wqy12_t_gb2312a.c - with open(os.path.join(output_dir, 'u8g2_font_wqy12_t_gb2312a.c'), 'w+', encoding='utf-8') as final_file: + with open(os.path.join(mui_dir, 'u8g2_font_wqy12_t_gb2312a.c'), 'w+', encoding='utf-8') as final_file: final_file.write(''' #include "mui_u8g2.h" @@ -93,14 +94,14 @@ def main(): ''') # Read the content of the temporary file and append it to the final file - temp_file_path = os.path.join(output_dir, 'u8g2_font_wqy12_t_gb2312a_t.c') + temp_file_path = os.path.join(mui_dir, 'u8g2_font_wqy12_t_gb2312a_t.c') with open(temp_file_path, 'r', encoding='utf-8') as temp_file: final_file.write(temp_file.read()) # Remove the temporary files os.remove(temp_file_path) - os.remove(os.path.join(output_dir, output_file)) - os.remove(os.path.join(output_dir, 'gb2312a.map')) + os.remove(os.path.join(data_dir, output_file)) + os.remove(os.path.join(data_dir, 'gb2312a.map')) if __name__ == "__main__": From 50fc5dd6b5b5121a06962e0c2920467b0be29517 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 10:44:47 +0700 Subject: [PATCH 074/101] Update translation doc to reflect script changes --- docs/en/05+5-translation.md | 40 ++++++++++--------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md index 9927d747..511a2911 100644 --- a/docs/en/05+5-translation.md +++ b/docs/en/05+5-translation.md @@ -6,50 +6,32 @@ When editing CSV files with VSCode, the extension [Edit CSV](https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv) is recommended. +*Windows* requires you to have [Python](https://www.python.org/downloads/) and [Git](https://git-scm.com/download/windows) installed and within your `$PATH` -### Windows - -Windows requires you to have [Python](https://www.python.org/downloads/) and [Git Client](https://git-scm.com/downloads) installed and within your `$PATH` +For *Linux*, most Distribution come with `python` and `git` by default and +*macOS* comes bundled with `python`, but to use `git` you either need to install the Command Line tools via `xcode-select –-install`, or download [Git](https://git-scm.com/download/mac) separately. -1. Clone this repository - `git clone https://github.com/solosky/pixl.js.git` -2. Edit `fw/data/i18n.csv` -3. Run `py.exe fw/scripts/i18n_gen.py` to generate new language files. -4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` -5. [Build the Firmware](03-Build-Firmware.md) -### Linux -You will need to build [bdfconv](https://github.com/olikraus/u8g2/tree/master/tools/font/bdfconv) yourself and place it within `$PATH`. +### Windows -`git`, `grep`, and `sed` should be included with your distribtion. 1. Clone this repository - `git clone https://github.com/solosky/pixl.js.git` + `git clone https://github.com/solosky/pixl.js.git; cd pixl.js` 2. Edit `fw/data/i18n.csv` -3. Run `python3 fw/scripts/i18n_gen.py` to generate new language files. -4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` +3. Run `py.exe fw/scripts/i18n_gen.py` to generate new language files. +4. *Optional:* Run `py.exe fw/scripts/font_data_gen.py` to generate new font data if you add new charaters in `i18n.csv` 5. [Build the Firmware](03-Build-Firmware.md) -### MacOS -You will need to build [bdfconv](https://github.com/olikraus/u8g2/tree/master/tools/font/bdfconv) yourself and place it within `$PATH`. -This requires to have XCode or the Command Line Utilities to be installed. - -You can either manually install them via -`xcode-select –-install` or they will automatically installed when installing Homebrew (see next step) - -In addition you will need the GNU version of `grep` and `sed` as the buil-in versions are not compatible. -If you have [Homebrew](https://brew.sh) installed, you can install those via: -`brew install grep` -`brew install gnu-sed` +### Linux and macOS 1. Clone this repository - `git clone https://github.com/solosky/pixl.js.git` + `git clone https://github.com/solosky/pixl.js.git; cd pixl.js` 2. Edit `fw/data/i18n.csv` 3. Run `python3 fw/scripts/i18n_gen.py` to generate new language files. -4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` +4. Optional: Run `python fw/scripts/font_data_gen.py` to generate new font data if you add new charaters in `i18n.csv` 5. [Build the Firmware](03-Build-Firmware.md) @@ -58,7 +40,7 @@ The process is similar to updating an existing translation, and has the same req 1. Add new column in `fw/data/i18n.csv`, for example "ja_JP" 2. Run `fw/scripts/i18n_gen.py` to generate new language files. -4. Optional: Run `bash fw/scripts/font_data_gen.sh` to generate new font data if you add new charaters in `i18n.csv` +4. Optional: Run `fw/scripts/font_data_gen.py` to generate new font data if you add new charaters in `i18n.csv` 4. Edit `fw/application/src/i18n/language.h` and `fw/application/src/i18n/language.c` to adopt new language 5. Edit Makefile to include `$(PROJ_DIR)/i18n/ja_JP.c` as C source files 5. [Build the Firmware](03-Build-Firmware.md) From e15a7c1ebe517246913727f14f9b874a8cac7c59 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 15:46:45 +0700 Subject: [PATCH 075/101] Minor formatting fixes --- fw/scripts/font_data_gen.py | 72 +++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/fw/scripts/font_data_gen.py b/fw/scripts/font_data_gen.py index 2aecd9cc..a98a0693 100755 --- a/fw/scripts/font_data_gen.py +++ b/fw/scripts/font_data_gen.py @@ -10,7 +10,7 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) source_dirs = [ os.path.join(current_dir, "../application/src/i18n"), - os.path.join(current_dir, "../application/src/amiidb") + os.path.join(current_dir, "../application/src/amiidb"), ] # Absolute path to the directory where the output file will be saved @@ -22,7 +22,7 @@ def write_to_file(file_path, content): - with open(file_path, 'w', encoding='utf-8') as f: + with open(file_path, "w", encoding="utf-8") as f: f.write(content) @@ -34,24 +34,28 @@ def extract_non_printable_chars(): if file.endswith(".c"): with open(os.path.join(root, file), "r", encoding="utf-8") as f: content = f.read() - non_printable_chars.update(re.findall(r'[^\x20-\x7E]', content)) + non_printable_chars.update(re.findall(r"[^\x20-\x7E]", content)) - write_to_file(os.path.join(data_dir, output_file), '\n'.join(sorted(non_printable_chars))) + write_to_file( + os.path.join(data_dir, output_file), "\n".join(sorted(non_printable_chars)) + ) def convert_and_sort(unicode_strings): - return sorted(set(f'${ord(char):04X},' for string in unicode_strings for char in string)) + return sorted( + set(f"${ord(char):04X}," for string in unicode_strings for char in string) + ) def run_bdfconv(map_path, output_path, bdf_path): # Construct the path to the bdfconv executable relative to the script directory system = platform.system() - if system == 'Windows': - bdfconv_path = os.path.join(current_dir, 'bdfconv.exe') - elif system == 'Darwin': - bdfconv_path = os.path.join(current_dir, 'bdfconv_macos_universal') - elif system == 'Linux': - bdfconv_path = os.path.join(current_dir, 'bdfconv_linux') + if system == "Windows": + bdfconv_path = os.path.join(current_dir, "bdfconv.exe") + elif system == "Darwin": + bdfconv_path = os.path.join(current_dir, "bdfconv_macos_universal") + elif system == "Linux": + bdfconv_path = os.path.join(current_dir, "bdfconv_linux") else: raise OSError("Unsupported operating system") @@ -61,8 +65,18 @@ def run_bdfconv(map_path, output_path, bdf_path): abs_bdf_path = os.path.abspath(bdf_path) cmd = [ - bdfconv_path, '-b', '0', '-f', '1', '-M', abs_map_path, - '-n', 'u8g2_font_wqy12_t_gb2312a', '-o', abs_output_path, abs_bdf_path + bdfconv_path, + "-b", + "0", + "-f", + "1", + "-M", + abs_map_path, + "-n", + "u8g2_font_wqy12_t_gb2312a", + "-o", + abs_output_path, + abs_bdf_path, ] subprocess.run(cmd, check=True) @@ -70,38 +84,44 @@ def run_bdfconv(map_path, output_path, bdf_path): def main(): extract_non_printable_chars() - combined_content = '' - for file_name in ['chinese3.txt', 'pixjs.txt']: - with open(os.path.join(data_dir, file_name), 'r', encoding='utf-8') as file: + combined_content = "" + for file_name in ["chinese3.txt", "pixjs.txt"]: + with open(os.path.join(data_dir, file_name), "r", encoding="utf-8") as file: combined_content += file.read() sorted_converted = convert_and_sort(combined_content.splitlines()) - write_to_file(os.path.join(data_dir, 'gb2312a.map'), '32-128,\n' + '\n'.join(sorted_converted)) + write_to_file( + os.path.join(data_dir, "gb2312a.map"), "32-128,\n" + "\n".join(sorted_converted) + ) run_bdfconv( - map_path=os.path.join(data_dir, 'gb2312a.map'), - output_path=os.path.join(mui_dir, 'u8g2_font_wqy12_t_gb2312a_t.c'), - bdf_path=os.path.join(data_dir, 'wenquanyi_9pt_u8g2.bdf') + map_path=os.path.join(data_dir, "gb2312a.map"), + output_path=os.path.join(mui_dir, "u8g2_font_wqy12_t_gb2312a_t.c"), + bdf_path=os.path.join(data_dir, "wenquanyi_9pt_u8g2.bdf"), ) # Write to u8g2_font_wqy12_t_gb2312a.c - with open(os.path.join(mui_dir, 'u8g2_font_wqy12_t_gb2312a.c'), 'w+', encoding='utf-8') as final_file: - final_file.write(''' + with open( + os.path.join(mui_dir, "u8g2_font_wqy12_t_gb2312a.c"), "w+", encoding="utf-8" + ) as final_file: + final_file.write( + """ #include "mui_u8g2.h" #include "u8x8.h" -''') +""" + ) # Read the content of the temporary file and append it to the final file - temp_file_path = os.path.join(mui_dir, 'u8g2_font_wqy12_t_gb2312a_t.c') - with open(temp_file_path, 'r', encoding='utf-8') as temp_file: + temp_file_path = os.path.join(mui_dir, "u8g2_font_wqy12_t_gb2312a_t.c") + with open(temp_file_path, "r", encoding="utf-8") as temp_file: final_file.write(temp_file.read()) # Remove the temporary files os.remove(temp_file_path) os.remove(os.path.join(data_dir, output_file)) - os.remove(os.path.join(data_dir, 'gb2312a.map')) + os.remove(os.path.join(data_dir, "gb2312a.map")) if __name__ == "__main__": From b54ec2cd158028d9653299c169686e714d9979eb Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 16:33:18 +0700 Subject: [PATCH 076/101] Markdown linting, Style changes, Typos --- docs/en/05+5-translation.md | 80 ++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md index 511a2911..42ad0c34 100644 --- a/docs/en/05+5-translation.md +++ b/docs/en/05+5-translation.md @@ -1,4 +1,4 @@ -# Transalation +# Translation ## Firmware @@ -6,51 +6,43 @@ When editing CSV files with VSCode, the extension [Edit CSV](https://marketplace.visualstudio.com/items?itemName=janisdd.vscode-edit-csv) is recommended. -*Windows* requires you to have [Python](https://www.python.org/downloads/) and [Git](https://git-scm.com/download/windows) installed and within your `$PATH` - -For *Linux*, most Distribution come with `python` and `git` by default and - -*macOS* comes bundled with `python`, but to use `git` you either need to install the Command Line tools via `xcode-select –-install`, or download [Git](https://git-scm.com/download/mac) separately. - - +**Windows** requires you to have [Python](https://www.python.org/downloads/) and [Git](https://git-scm.com/download/windows) installed and within your `$PATH` +For **Linux**, most distributions come with `python` and `git` by default and **macOS** comes bundled with `python`, but to use `git` you either need to install the Command Line tools via `xcode-select –-install`, or download [Git](https://git-scm.com/download/mac) separately. ### Windows - 1. Clone this repository - `git clone https://github.com/solosky/pixl.js.git; cd pixl.js` + `git clone https://github.com/solosky/pixl.js.git; cd pixl.js` 2. Edit `fw/data/i18n.csv` 3. Run `py.exe fw/scripts/i18n_gen.py` to generate new language files. -4. *Optional:* Run `py.exe fw/scripts/font_data_gen.py` to generate new font data if you add new charaters in `i18n.csv` +4. _Optional:_ Run `py.exe fw/scripts/font_data_gen.py` to generate new font data if you add new characters in `i18n.csv` 5. [Build the Firmware](03-Build-Firmware.md) - ### Linux and macOS 1. Clone this repository - `git clone https://github.com/solosky/pixl.js.git; cd pixl.js` + `git clone https://github.com/solosky/pixl.js.git; cd pixl.js` 2. Edit `fw/data/i18n.csv` 3. Run `python3 fw/scripts/i18n_gen.py` to generate new language files. -4. Optional: Run `python fw/scripts/font_data_gen.py` to generate new font data if you add new charaters in `i18n.csv` +4. Optional: Run `python fw/scripts/font_data_gen.py` to generate new font data if you add new characters in `i18n.csv` 5. [Build the Firmware](03-Build-Firmware.md) - ## How to add new language translation + The process is similar to updating an existing translation, and has the same requirements depending on your Operating System. 1. Add new column in `fw/data/i18n.csv`, for example "ja_JP" 2. Run `fw/scripts/i18n_gen.py` to generate new language files. -4. Optional: Run `fw/scripts/font_data_gen.py` to generate new font data if you add new charaters in `i18n.csv` +3. Optional: Run `fw/scripts/font_data_gen.py` to generate new font data if you add new characters in `i18n.csv` 4. Edit `fw/application/src/i18n/language.h` and `fw/application/src/i18n/language.c` to adopt new language 5. Edit Makefile to include `$(PROJ_DIR)/i18n/ja_JP.c` as C source files -5. [Build the Firmware](03-Build-Firmware.md) +6. [Build the Firmware](03-Build-Firmware.md) -## Font notes - -For release builds (RELEASE=1), the firmware uses wenquanyi_9pt_u8g2.bdf to display unicode characters.
-Please check if the new language charater codepoint is included in wenquanyi_9pt_u8g2.bdf or not.
-If not, it's not recommended to support the new language due to the MCU internal flash restrction. +## Font notes +For release builds (RELEASE=1), the firmware uses wenquanyi_9pt_u8g2.bdf to display unicode characters. +Please check if the new language character codepoint is included in wenquanyi_9pt_u8g2.bdf or not. +If not, it's not recommended to support the new language due to the MCU internal flash restrictions. ## Web App @@ -65,30 +57,36 @@ In this example, we will add a Japanese (jp_JP) translation: 1. Copy the `en_US.js` file and name it `jp_JP.js` 2. Translate the string within `jp_JP.js` including the `changeok` message. -Don't translate the other language names. + Don't translate the other language names. -Add your language at the bottom of the `lang {` section: - `jp: '日本語',` + Add your language at the bottom of the `lang {` section: -3. Edit `index.js` while keeping it's current structure: + `jp: '日本語',` -Adding -``` -import elementJpLocale from 'element-ui/lib/locale/lang/jp' // element-ui lang` +3. Edit `index.js` while keeping it's current structure, adding: -import jpLocale from “./jp_JP”; - jp_JP: { - ... jpLocale, - ... elementJpLocale - } - ``` -4. Add your language to the other `.js` files (within the `lang: {` section): + ```js + import elementJpLocale from 'element-ui/lib/locale/lang/jp' // element-ui + lang import jpLocale from './jp_JP' elementJpLocale + ``` - `jp: '日本語',` -5. Add your langaguge to the `web/src/App.vue` file: + And extending `messages`: -``` + ```js + jp_JP: { + ...jpLocale, + ...elementJpLocale, + }, + ``` + +4. Add your language to the other `.js` files (within the `lang: {` section): + + `vuejp: '日本語',` + +5. Add your language to the `web/src/App.vue` file: + +```js - {{ $t('lang.jp') }} + {{ $t('lang.jp') }} - ``` \ No newline at end of file +``` From 91f00b0b86b399454cec741cd95d6bd2b08f65b5 Mon Sep 17 00:00:00 2001 From: Schoko Date: Fri, 5 Apr 2024 16:42:43 +0700 Subject: [PATCH 077/101] Change jp_JP to ja_JP --- docs/en/05+5-translation.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md index 42ad0c34..172ea780 100644 --- a/docs/en/05+5-translation.md +++ b/docs/en/05+5-translation.md @@ -42,7 +42,7 @@ The process is similar to updating an existing translation, and has the same req For release builds (RELEASE=1), the firmware uses wenquanyi_9pt_u8g2.bdf to display unicode characters. Please check if the new language character codepoint is included in wenquanyi_9pt_u8g2.bdf or not. -If not, it's not recommended to support the new language due to the MCU internal flash restrictions. +If not, it's not recommended supporting the new language due to the MCU internal flash restrictions. ## Web App @@ -52,41 +52,41 @@ The language file can be found under `web/src/i18n' ## How to add new language translation -In this example, we will add a Japanese (jp_JP) translation: +In this example, we will add a Japanese (ja_JP) translation: -1. Copy the `en_US.js` file and name it `jp_JP.js` -2. Translate the string within `jp_JP.js` including the `changeok` message. +1. Copy the `en_US.js` file and name it `ja_JP.js` +2. Translate the string within `ja_JP.js` including the `changeok` message. Don't translate the other language names. Add your language at the bottom of the `lang {` section: - `jp: '日本語',` + `ja: '日本語',` -3. Edit `index.js` while keeping it's current structure, adding: +3. Edit `index.js` while keeping its current structure, adding: ```js - import elementJpLocale from 'element-ui/lib/locale/lang/jp' // element-ui - lang import jpLocale from './jp_JP' elementJpLocale + import elementJaLocale from 'element-ui/lib/locale/lang/ja' // element-ui + lang import jaLocale from './ja_JP' elementJpLocale ``` And extending `messages`: ```js - jp_JP: { - ...jpLocale, - ...elementJpLocale, + ja_JP: { + ...jaLocale, + ...elementJaLocale, }, ``` 4. Add your language to the other `.js` files (within the `lang: {` section): - `vuejp: '日本語',` + `vueja: '日本語',` 5. Add your language to the `web/src/App.vue` file: ```js - - {{ $t('lang.jp') }} + + {{ $t('lang.ja') }} ``` From e8fc510482512479076458d0e4fb7267995a0342 Mon Sep 17 00:00:00 2001 From: Schoko Date: Sat, 6 Apr 2024 05:26:04 +0700 Subject: [PATCH 078/101] Minor line-break fix --- fw/application/src/i18n/de_DE.c | 2 +- fw/data/i18n.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index 702f1f58..d3ea1602 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -61,7 +61,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_MOUNTED_FFS] = "===Speicher [FFS]===", [_L_TOTAL_SPACE] = "Gesamt", [_L_AVAILABLE_SPACE] = "Frei", - [_L_NOT_AMIIBO_FILE] = "Dies ist keine Amiibo Datei", + [_L_NOT_AMIIBO_FILE] = "Keine Amiibo Datei", [_L_READ_FILE_FAILED] = "Lesen fehlgeschlagen", [_L_INPUT_FOLDER_NAME] = "Ordnername eingeben:", [_L_INPUT_AMIIBO_NAME] = "Amiibo Namen eingeben:", diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 172ae5f2..80bfd2ff 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -60,7 +60,7 @@ _L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[ _L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]=== _L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale _L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero -_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Dies ist keine Amiibo Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido +_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Keine Amiibo Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido _L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file _L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella: _L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo Namen eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo: From a0ca774813849b35ae3cb1c534b09edef76be559 Mon Sep 17 00:00:00 2001 From: Schoko Date: Sat, 6 Apr 2024 23:57:10 +0700 Subject: [PATCH 079/101] Ellipsis typically have 3 dots --- fw/data/i18n.csv | 54 ++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 80bfd2ff..447c4702 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -42,15 +42,15 @@ _L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE pl _L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige UUID,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale _L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico _L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR -_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo..,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag +_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo...,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag _L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Löschen von %s bestätigen?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n? _L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag] _L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,Zurück zur Liste,Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file] _L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,Hauptmenü,Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale] -_L_FORMAT,Format,格式化,格式化,Formatear..,Formátum ,Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta.. +_L_FORMAT,Format,格式化,格式化,Formatear...,Formátum ,Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta... _L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria _L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione? -_L_DELETING_MESSAGE,Formatting ..,格式化中..,格式化中..,Formateando..,Formázás ..,Formatiere..,Formatage ..,Formatteren ..,Formatando ..,書式設定 ..,Formattazione in corso .. +_L_DELETING_MESSAGE,Formatting ...,格式化中...,格式化中...,Formateando...,Formázás ...,Formatiere...,Formatage ...,Formatteren ...,Formatando ...,書式設定 ...,Formattazione in corso ... _L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Meldung,Message,Bericht,Mensagem,メッセージ,Messaggio _L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma _L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla @@ -67,9 +67,9 @@ _L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nom _L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除,Elimina _L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome: _L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido -_L_CREATE_NEW_FOLDER,Create New Folder..,新建文件夹..,新建資料夾..,Crear carpeta..,Új Mappa Létrehozása..,Neuer Ordner..,Créer un Nouveau Dossier..,Nieuwe Map Maken..,Criar Nova Pasta..,新しいフォルダを作成..,Crea cartella.. -_L_CREATE_NEW_TAG,Create New Tag..,新建标签..,新建標籤..,Crear amiibo..,Új Címke Létrehozása..,Neuer Tag..,Créer une Nouvelle Étiquette..,Nieuwe Tag Aanmaken..,Criar Nova Tag..,新規タグ作成..,Crea Amiibo.. -_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag..,批量创建标签..,批量創建標簽..,Crear amiibo en lote..,Kötegelt Új Címke Létrehozása..,Mehrere Tags erstellen..,Créer de Nouvelles Étiquettes Par Lot..,Nieuwe Tags in een Batch Aanmaken..,Criar Novas Tags em Lote..,新規タグの一括作成..,Crea Amiibo in serie.. +_L_CREATE_NEW_FOLDER,Create New Folder...,新建文件夹...,新建資料夾...,Crear carpeta...,Új Mappa Létrehozása...,Neuer Ordner...,Créer un Nouveau Dossier...,Nieuwe Map Maken...,Criar Nova Pasta...,新しいフォルダを作成...,Crea cartella... +_L_CREATE_NEW_TAG,Create New Tag...,新建标签...,新建標籤...,Crear amiibo...,Új Címke Létrehozása...,Neuer Tag...,Créer une Nouvelle Étiquette...,Nieuwe Tag Aanmaken...,Criar Nova Tag...,新規タグ作成...,Crea Amiibo... +_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag...,批量创建标签...,批量創建標簽...,Crear amiibo en lote...,Kötegelt Új Címke Létrehozása...,Mehrere Tags erstellen...,Créer de Nouvelles Étiquettes Par Lot...,Nieuwe Tags in een Batch Aanmaken...,Criar Novas Tags em Lote...,新規タグの一括作成...,Crea Amiibo in serie... _L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag: _L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Sie können nur maximal %d Tags auf einmal erstellen.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie. _L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag @@ -96,35 +96,35 @@ _L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lesen/Schreibe _L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Zufällig (Auto.),Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale _L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato _L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo -_L_APP_AMMIDB_BROWSER,Browser..,查看..,查看..,Explorar..,Böngésző..,Navigieren..,Naviguer..,Browser..,Navegador..,ブラウザ..,Esplora.. -_L_APP_AMIIDB_SEARCH,Search..,搜索..,搜索..,Buscar..,Keresés..,Suche..,Recherche..,Zoeken..,Pesquisar..,検索..,Cerca.. -_L_APP_AMIIDB_MY_FAVORITES,My Favorites..,我的收藏..,我的收藏..,Mis Favoritos..,Kedvencek..,Meine Favoriten..,Mes Favoris..,Mijn Favorieten..,Meus Favoritos..,お気に入り..,I miei preferiti.. -_L_APP_AMIIDB_MY_TAGS,My Amiibo..,我的数据..,我的數據..,Mis amiibo..,Amiiboim..,Meine Amiibo..,Mes Amiibo..,Mijn Amiibo..,Meu Amiibo..,マイAmiibo..,I miei Amiibo.. -_L_APP_AMIIDB_SETTINGS,Settings..,设置..,設置..,Configuraciones..,Beállítások..,Einstellungen..,Paramètres..,Instellingen..,Configurações..,設定..,Impostazioni.. +_L_APP_AMMIDB_BROWSER,Browser...,查看...,查看...,Explorar...,Böngésző...,Navigieren...,Naviguer...,Browser...,Navegador...,ブラウザ...,Esplora... +_L_APP_AMIIDB_SEARCH,Search...,搜索...,搜索...,Buscar...,Keresés...,Suche...,Recherche...,Zoeken...,Pesquisar...,検索...,Cerca... +_L_APP_AMIIDB_MY_FAVORITES,My Favorites...,我的收藏...,我的收藏...,Mis Favoritos...,Kedvencek...,Meine Favoriten...,Mes Favoris...,Mijn Favorieten...,Meus Favoritos...,お気に入り...,I miei preferiti... +_L_APP_AMIIDB_MY_TAGS,My Amiibo...,我的数据...,我的數據...,Mis amiibo...,Amiiboim...,Meine Amiibo...,Mes Amiibo...,Mijn Amiibo...,Meu Amiibo...,マイAmiibo...,I miei Amiibo... +_L_APP_AMIIDB_SETTINGS,Settings...,设置...,設置...,Configuraciones...,Beállítások...,Einstellungen...,Paramètres...,Instellingen...,Configurações...,設定...,Impostazioni... _L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale] _L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro] _L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi _L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate _L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,NICHT geladen,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate _L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatzanzahl,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot -_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite..,收藏..,收藏..,Favorito..,Kedvenc..,Favorit..,Favorite..,Favoriet..,Favorito..,お気に入り..,Preferito.. -_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As..,保存为..,保存爲..,Asignar en..,Mentés Másként..,Speichern unter..,Enregistrer Sous..,Opslaan Als..,Salvar como..,名前を付けて保存..,Assegna a.. +_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite...,收藏...,收藏...,Favorito...,Kedvenc...,Favorit...,Favorite...,Favoriet...,Favorito...,お気に入り...,Preferito... +_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As...,保存为...,保存爲...,Asignar en...,Mentés Másként...,Speichern unter...,Enregistrer Sous...,Opslaan Als...,Salvar como...,名前を付けて保存...,Assegna a... _L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli] _L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista] _L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca: -_L_APP_AMIIDB_MORE,[More..],[更多],[更多],[Más..],[Bővebben..],[Mehr..],[Plus..],[Meer..],[Mais..],[もっと見る..],[Più..] +_L_APP_AMIIDB_MORE,[More...],[更多],[更多],[Más...],[Bővebben...],[Mehr...],[Plus...],[Meer...],[Mais...],[もっと見る...],[Più...] _L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,, -_L_APP_AMIIDB_SLOT_DELETE,Reset..,重置..,重置..,Borrar..,Újraindítás..,Zurücksetzen..,Réinitialiser..,Reset..,Reiniciar..,リセット..,Elimina.. +_L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina... _L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma _L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla _L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma -_L_APP_AMIIDB_NEW,New..,新建..,新建..,Nueva..,Új..,Neu..,Nouveau..,Nieuw..,Novo..,新規..,Nuovo.. -_L_APP_AMIIDB_EMPTY,Empty..,清空..,清空..,Vaciar..,Üres..,Leeren..,Vider..,Leeg..,Vazio..,空..,Svuota.. -_L_APP_AMIIDB_DELETE,Delete..,删除..,删除..,Borrar..,Törlés..,Löschen..,Supprimer..,Verwijderen..,Excluir..,削除..,Cancella.. +_L_APP_AMIIDB_NEW,New...,新建...,新建...,Nueva...,Új...,Neu...,Nouveau...,Nieuw...,Novo...,新規...,Nuovo... +_L_APP_AMIIDB_EMPTY,Empty...,清空...,清空...,Vaciar...,Üres...,Leeren...,Vider...,Leeg...,Vazio...,空...,Svuota... +_L_APP_AMIIDB_DELETE,Delete...,删除...,删除...,Borrar...,Törlés...,Löschen...,Supprimer...,Verwijderen...,Excluir...,削除...,Cancella... _L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Fav.-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti: _L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Fav.-Ordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti? _L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Löschen Bestätigen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione? -_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder..,选择收藏夹..,選擇收藏夾..,Selec. carp. favoritos..,Kedvenc Mappa Kiválasztása..,Fav.-Ordner auswählen..,Sélectionner le Dossier Favori..,Selecteer Favoriete Map..,Selecionar Pasta Favorita..,お気に入りフォルダを選択..,Selez. cart. preferiti.. +_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder...,选择收藏夹...,選擇收藏夾...,Selec. carp. favoritos...,Kedvenc Mappa Kiválasztása...,Fav.-Ordner auswählen...,Sélectionner le Dossier Favori...,Selecteer Favoriete Map...,Selecionar Pasta Favorita...,お気に入りフォルダを選択...,Selez. cart. preferiti... _L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,Favorit erstellt ,Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto! _L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorisieren fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto! _L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta @@ -134,21 +134,21 @@ _L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal _L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega _L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora _L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Cache,Cache,Cache,キャッシュ,Cache -_L_APP_CHAMELEON_INITIALIZING,Initializing data ..,"初始化, 请稍后..","初始化, 請稍後..",Inicializando ambiente.\nPor favor espere..,Az adatok inicializálása ..,Daten initialisieren..,Initialisation des données ..,Gegevens Initialiseren ..,Inicialização de Dados ..,データの初期化 ..,Inizializzazione ambiente.\nPer favore attendi.. +_L_APP_CHAMELEON_INITIALIZING,Initializing data ...,"初始化, 请稍后...","初始化, 請稍後...",Inicializando ambiente.\nPor favor espere...,Az adatok inicializálása ...,Daten initialisieren...,Initialisation des données ...,Gegevens Initialiseren ...,Inicialização de Dados ...,データの初期化 ...,Inizializzazione ambiente.\nPer favore attendi... _L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot _L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname _L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID _L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo -_L_APP_CHAMELEON_CARD_DATA,Data..,卡数据..,卡數據..,Datos..,Adatok..,Daten..,Données..,Gegevens..,Dados..,データ..,Dati.. -_L_APP_CHAMELEON_CARD_ADVANCED,Advanced..,卡高级设置..,卡高級設置..,Avanzado..,Fejlett..,Erweitert..,Avancé..,Geavanceerd..,Avançado..,詳細設定..,Avanzato.. -_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings..,卡槽管理..,卡槽管理..,Configuración..,Cella Beállításai..,Steckplatz Einstellungen..,Paramètres des Emplacements..,Slot Instellingen..,Configurações de Slots..,スロット設定..,Impostazioni.. -_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num..,卡槽数量..,卡槽數量..,Cant. ranuras..,Cella Száma..,Steckplatz Nummer,Numéro d'Emplacement..,Slotnummer..,Número do Slot..,スロット番号..,Num. slot.. +_L_APP_CHAMELEON_CARD_DATA,Data...,卡数据...,卡數據...,Datos...,Adatok...,Daten...,Données...,Gegevens...,Dados...,データ...,Dati... +_L_APP_CHAMELEON_CARD_ADVANCED,Advanced...,卡高级设置...,卡高級設置...,Avanzado...,Fejlett...,Erweitert...,Avancé...,Geavanceerd...,Avançado...,詳細設定...,Avanzato... +_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings...,卡槽管理...,卡槽管理...,Configuración...,Cella Beállításai...,Steckplatz Einstellungen...,Paramètres des Emplacements...,Slot Instellingen...,Configurações de Slots...,スロット設定...,Impostazioni... +_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num...,卡槽数量...,卡槽數量...,Cant. ranuras...,Cella Száma...,Steckplatz Nummer,Numéro d'Emplacement...,Slotnummer...,Número do Slot...,スロット番号...,Num. slot... _L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich gesetzt,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito. _L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname setzen fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito! _L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitznamen eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname: -_L_APP_CHAMELEON_CARD_DATA_LOAD,Load..,加载..,加載..,Cargar..,Betöltés..,Laden..,Charger..,Laden..,Carregar..,ロード..,Carica.. -_L_APP_CHAMELEON_CARD_DATA_SAVE,Save..,导出..,導出..,Guardar..,Mentés..,Speichern..,Sauvegarder..,Opslaan..,Salvar..,保存..,Salva.. -_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory..,重置..,重置..,Inicializar..,Visszaállítás..,Zurücksetzen..,Rétablir Les Valeurs Par Défaut..,Terugzetten Naar Standaard..,Restaurar Padrões..,初期化..,Inizializza.. +_L_APP_CHAMELEON_CARD_DATA_LOAD,Load...,加载...,加載...,Cargar...,Betöltés...,Laden...,Charger...,Laden...,Carregar...,ロード...,Carica... +_L_APP_CHAMELEON_CARD_DATA_SAVE,Save...,导出...,導出...,Guardar...,Mentés...,Speichern...,Sauvegarder...,Opslaan...,Salvar...,保存...,Salva... +_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory...,重置...,重置...,Inicializar...,Visszaállítás...,Zurücksetzen...,Rétablir Les Valeurs Par Défaut...,Terugzetten Naar Standaard...,Restaurar Padrões...,初期化...,Inizializza... _L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati! _L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato _L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße stimmt nicht überein,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta From 5a31f4ec5a4761d7b50985099d490bb121fb6ee5 Mon Sep 17 00:00:00 2001 From: Schoko Date: Sun, 7 Apr 2024 00:03:16 +0700 Subject: [PATCH 080/101] Remove hard-coded ellipsis --- .../src/app/amiibo/scene/amiibo_scene_file_browser_menu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c b/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c index 169a605e..d3e6dc34 100644 --- a/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c +++ b/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c @@ -298,9 +298,9 @@ void amiibo_scene_file_browser_menu_on_enter(void *user_data) { (void *)FILE_BROWSER_MENU_CREATE_AMIIBO_BATCH); if (string_cmp_str(app->current_file, "..") != 0) { char txt[32]; - snprintf(txt, sizeof(txt), "%s..", getLangString(_L_RENAME)); + snprintf(txt, sizeof(txt), "%s", getLangString(_L_RENAME)); mui_list_view_add_item(app->p_list_view, ICON_EMPTY, txt, (void *)FILE_BROWSER_MENU_RENAME_FOLDER); - snprintf(txt, sizeof(txt), "%s..", getLangString(_L_DELETE)); + snprintf(txt, sizeof(txt), "%s", getLangString(_L_DELETE)); mui_list_view_add_item(app->p_list_view, ICON_DELETE, txt, (void *)FILE_BROWSER_MENU_REMOVE_FOLDER); } mui_list_view_add_item(app->p_list_view, ICON_BACK, getLangString(_L_BACK_TO_FILE_LIST), From 52ce95b2993934358fe2f3bbef9dd67ffbd36eb6 Mon Sep 17 00:00:00 2001 From: Schoko Date: Sun, 7 Apr 2024 00:03:35 +0700 Subject: [PATCH 081/101] Transfer hard-coded ellipsis to i18n --- fw/data/i18n.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 447c4702..9f4abc2b 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -64,7 +64,7 @@ _L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo _L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file _L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella: _L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo Namen eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo: -_L_DELETE,Delete,删除,刪除,Borrar,Töröl,Löschen,Supprimer,Verwijder,Excluir,削除,Elimina +_L_DELETE,Delete...,删除...,刪除...,Borrar...,Töröl...,Löschen...,Supprimer...,Verwijder...,Excluir...,削除...,Elimina... _L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome: _L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido _L_CREATE_NEW_FOLDER,Create New Folder...,新建文件夹...,新建資料夾...,Crear carpeta...,Új Mappa Létrehozása...,Neuer Ordner...,Créer un Nouveau Dossier...,Nieuwe Map Maken...,Criar Nova Pasta...,新しいフォルダを作成...,Crea cartella... @@ -74,7 +74,7 @@ _L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿C _L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Sie können nur maximal %d Tags auf einmal erstellen.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie. _L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag _L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita! -_L_RENAME,Rename,重命名,重新命名,Renombrar,Átnevezés,Umbenennen,Renommer,Hernoem,Renomear,名前の変更,Rinomina +_L_RENAME,Rename...,重命名...,重新命名...,Renombrar...,Átnevezés...,Umbenennen...,Renommer...,Hernoem...,Renomear...,名前の変更...,Rinomina... _L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Mappa megnyitása sikertelen ,Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella _L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore _L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro] From a3030a8cd331cd0071beadeb1adc7c0e1662859a Mon Sep 17 00:00:00 2001 From: Schoko Date: Sun, 7 Apr 2024 10:29:59 +0700 Subject: [PATCH 082/101] Add _L_DELETE_FILE and adjust translations --- fw/data/i18n.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 9f4abc2b..add7e996 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -64,6 +64,7 @@ _L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo _L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file _L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella: _L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo Namen eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo: +_L_DELETE_FILE,Delete %s ?,删除 %s ?,刪除 %s ?,¿Borrar el %s ?,Törli a %s fájlt?,%s löschen ?,Supprimer le %s ?,%s verwijderen ?,Excluir %s ?,%s を削除しますか ?,Eliminare %s ? _L_DELETE,Delete...,删除...,刪除...,Borrar...,Töröl...,Löschen...,Supprimer...,Verwijder...,Excluir...,削除...,Elimina... _L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome: _L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido From b96d073767b44d42edcedd5140635d816b54dae0 Mon Sep 17 00:00:00 2001 From: Schoko Date: Sun, 7 Apr 2024 10:30:54 +0700 Subject: [PATCH 083/101] Use _T() instead of getLangString() --- .../src/app/amiibo/scene/amiibo_scene_file_browser_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c b/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c index d3e6dc34..ebad8ec5 100644 --- a/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c +++ b/fw/application/src/app/amiibo/scene/amiibo_scene_file_browser_menu.c @@ -255,7 +255,7 @@ static void amiibo_scene_file_browser_menu_on_selected(mui_list_view_event_t eve case FILE_BROWSER_MENU_REMOVE_FOLDER: { char msg[64]; - snprintf(msg, sizeof(msg), "%s %s ?", getLangString(_L_DELETE), string_get_cstr(app->current_file)); + snprintf(msg, sizeof(msg), _T(DELETE_FILE), string_get_cstr(app->current_file)); mui_msg_box_set_header(app->p_msg_box, getLangString(_L_DELETE)); mui_msg_box_set_message(app->p_msg_box, msg); mui_msg_box_set_btn_text(app->p_msg_box, getLangString(_L_DELETE), NULL, getLangString(_L_CANCEL)); From 848c621b44b61e41bc7fed6ff7eb60089252a8f8 Mon Sep 17 00:00:00 2001 From: Schoko Date: Sun, 7 Apr 2024 10:43:33 +0700 Subject: [PATCH 084/101] Rebuild language files --- fw/application/src/i18n/de_DE.c | 53 +++++++++++++------------- fw/application/src/i18n/en_US.c | 55 ++++++++++++++------------- fw/application/src/i18n/es_ES.c | 59 +++++++++++++++-------------- fw/application/src/i18n/fr_FR.c | 55 ++++++++++++++------------- fw/application/src/i18n/hu_HU.c | 55 ++++++++++++++------------- fw/application/src/i18n/it_IT.c | 57 ++++++++++++++-------------- fw/application/src/i18n/ja_JP.c | 55 ++++++++++++++------------- fw/application/src/i18n/nl_NL.c | 55 ++++++++++++++------------- fw/application/src/i18n/pt_BR.c | 55 ++++++++++++++------------- fw/application/src/i18n/string_id.h | 1 + fw/application/src/i18n/zh_Hans.c | 53 +++++++++++++------------- fw/application/src/i18n/zh_TW.c | 53 +++++++++++++------------- 12 files changed, 309 insertions(+), 297 deletions(-) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index d3ea1602..17711635 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -51,7 +51,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_FORMAT] = "Formatieren", [_L_FORMAT_STORAGE] = "Speicher formatieren", [_L_DELETE_ALL_DATA] = "Alle Daten löschen?", - [_L_DELETING_MESSAGE] = "Formatiere..", + [_L_DELETING_MESSAGE] = "Formatiere...", [_L_MESSAGE] = "Meldung", [_L_CONFIRM] = "Bestätigen", [_L_CANCEL] = "Abbrechen", @@ -65,17 +65,18 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Lesen fehlgeschlagen", [_L_INPUT_FOLDER_NAME] = "Ordnername eingeben:", [_L_INPUT_AMIIBO_NAME] = "Amiibo Namen eingeben:", - [_L_DELETE] = "Löschen", + [_L_DELETE_FILE] = "%s löschen ?", + [_L_DELETE] = "Löschen...", [_L_INPUT_NEW_NAME] = "Neuen Namen eingeben:", [_L_INVALID_INPUT] = "Ungültige Eingabe", - [_L_CREATE_NEW_FOLDER] = "Neuer Ordner..", - [_L_CREATE_NEW_TAG] = "Neuer Tag..", - [_L_CREATE_NEW_TAG_BATCH] = "Mehrere Tags erstellen..", + [_L_CREATE_NEW_FOLDER] = "Neuer Ordner...", + [_L_CREATE_NEW_TAG] = "Neuer Tag...", + [_L_CREATE_NEW_TAG_BATCH] = "Mehrere Tags erstellen...", [_L_INPUT_TAG_NUM] = "Tag Anzahl eingeben:", [_L_CREATE_TOO_MANY_NUM] = "Sie können nur maximal %d Tags auf einmal erstellen.", [_L_CREATING_TAG_BATCH] = "Tag erstellen", [_L_CREATING_TAG_FAILED] = "Erstellen von Tag %s fehlgeschlagen!", - [_L_RENAME] = "Umbenennen", + [_L_RENAME] = "Umbenennen...", [_L_OPEN_FOLDER_FAILED] = "Ordner konnte nicht geöffnet werden", [_L_RENAME_FAILED] = "Umbenennen fehlgeschlagen\nFehlercode", [_L_MAIN_RETURN] = "[Zurück]", @@ -97,35 +98,35 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Zufällig (Auto.)", [_L_BLANK_TAG] = "Leerer NFC Tag", [_L_APP_AMIIDB] = "Amiibo Datenbank", - [_L_APP_AMMIDB_BROWSER] = "Navigieren..", - [_L_APP_AMIIDB_SEARCH] = "Suche..", - [_L_APP_AMIIDB_MY_FAVORITES] = "Meine Favoriten..", - [_L_APP_AMIIDB_MY_TAGS] = "Meine Amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Einstellungen..", + [_L_APP_AMMIDB_BROWSER] = "Navigieren...", + [_L_APP_AMIIDB_SEARCH] = "Suche...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Meine Favoriten...", + [_L_APP_AMIIDB_MY_TAGS] = "Meine Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Einstellungen...", [_L_APP_AMIIDB_EXIT] = "[Beenden]", [_L_APP_AMIIDB_BACK] = "[Zurück]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Schlüssel", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "geladen", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NICHT geladen", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Steckplatzanzahl", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorit..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Speichern unter..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorit...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Speichern unter...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Zurück zu Details]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Zurück zur Liste]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Suche:", - [_L_APP_AMIIDB_MORE] = "[Mehr..]", + [_L_APP_AMIIDB_MORE] = "[Mehr...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Zurücksetzen..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Zurücksetzen...", [_L_APP_AMIIDB_CONFIRM] = "Bestätigen", [_L_APP_AMIIDB_CANCEL] = "Abbrechen", [_L_APP_AMIIDB_TIPS] = "Bestätigen", - [_L_APP_AMIIDB_NEW] = "Neu..", - [_L_APP_AMIIDB_EMPTY] = "Leeren..", - [_L_APP_AMIIDB_DELETE] = "Löschen..", + [_L_APP_AMIIDB_NEW] = "Neu...", + [_L_APP_AMIIDB_EMPTY] = "Leeren...", + [_L_APP_AMIIDB_DELETE] = "Löschen...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Neuer Fav.-Ordner:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Fav.-Ordner leeren?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Löschen Bestätigen?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Fav.-Ordner auswählen..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Fav.-Ordner auswählen...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Favorit erstellt ", [_L_APP_AMIIDB_FAV_FAILED] = "Favorisieren fehlgeschlagen!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Speichern erfolgreich", @@ -135,21 +136,21 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Verweigern", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorieren", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", - [_L_APP_CHAMELEON_INITIALIZING] = "Daten initialisieren..", + [_L_APP_CHAMELEON_INITIALIZING] = "Daten initialisieren...", [_L_APP_CHAMELEON_CARD_SLOT] = "Steckplatz", [_L_APP_CHAMELEON_CARD_NICK] = "Spitzname", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Typ", - [_L_APP_CHAMELEON_CARD_DATA] = "Daten..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Erweitert..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Steckplatz Einstellungen..", + [_L_APP_CHAMELEON_CARD_DATA] = "Daten...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Erweitert...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Steckplatz Einstellungen...", [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Steckplatz Nummer", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Spitzname erfolgreich gesetzt", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Spitzname setzen fehlgeschlagen!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Spitznamen eingeben:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Speichern..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Zurücksetzen..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Speichern...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Zurücksetzen...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Daten zurückgesetzt", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Datei nicht gefunden", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dateigröße stimmt nicht überein", diff --git a/fw/application/src/i18n/en_US.c b/fw/application/src/i18n/en_US.c index 9e029e16..a67af99a 100644 --- a/fw/application/src/i18n/en_US.c +++ b/fw/application/src/i18n/en_US.c @@ -51,7 +51,7 @@ const char * const lang_en_US[_L_COUNT] = { [_L_FORMAT] = "Format", [_L_FORMAT_STORAGE] = "Format Storage", [_L_DELETE_ALL_DATA] = "This will delete all data. Confirm format?", - [_L_DELETING_MESSAGE] = "Formatting ..", + [_L_DELETING_MESSAGE] = "Formatting ...", [_L_MESSAGE] = "Message", [_L_CONFIRM] = "Confirm", [_L_CANCEL] = "Cancel", @@ -65,17 +65,18 @@ const char * const lang_en_US[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Failed read the file", [_L_INPUT_FOLDER_NAME] = "Input Folder Name:", [_L_INPUT_AMIIBO_NAME] = "Input Amiibo Name:", - [_L_DELETE] = "Delete", + [_L_DELETE_FILE] = "Delete %s ?", + [_L_DELETE] = "Delete...", [_L_INPUT_NEW_NAME] = "Input New Name:", [_L_INVALID_INPUT] = "Invalid Input", - [_L_CREATE_NEW_FOLDER] = "Create New Folder..", - [_L_CREATE_NEW_TAG] = "Create New Tag..", - [_L_CREATE_NEW_TAG_BATCH] = "Batch Create New Tag..", + [_L_CREATE_NEW_FOLDER] = "Create New Folder...", + [_L_CREATE_NEW_TAG] = "Create New Tag...", + [_L_CREATE_NEW_TAG_BATCH] = "Batch Create New Tag...", [_L_INPUT_TAG_NUM] = "Input Tag Number:", [_L_CREATE_TOO_MANY_NUM] = "Only max %d tags created in a batch.", [_L_CREATING_TAG_BATCH] = "Creating tag", [_L_CREATING_TAG_FAILED] = "Create tag %s failed!", - [_L_RENAME] = "Rename", + [_L_RENAME] = "Rename...", [_L_OPEN_FOLDER_FAILED] = "Failed to open folder", [_L_RENAME_FAILED] = "Failed to rename\nError code", [_L_MAIN_RETURN] = "[RETURN]", @@ -97,35 +98,35 @@ const char * const lang_en_US[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Rand. (Auto)", [_L_BLANK_TAG] = "Blank NFC tag", [_L_APP_AMIIDB] = "Amiibo Database", - [_L_APP_AMMIDB_BROWSER] = "Browser..", - [_L_APP_AMIIDB_SEARCH] = "Search..", - [_L_APP_AMIIDB_MY_FAVORITES] = "My Favorites..", - [_L_APP_AMIIDB_MY_TAGS] = "My Amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Settings..", + [_L_APP_AMMIDB_BROWSER] = "Browser...", + [_L_APP_AMIIDB_SEARCH] = "Search...", + [_L_APP_AMIIDB_MY_FAVORITES] = "My Favorites...", + [_L_APP_AMIIDB_MY_TAGS] = "My Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Settings...", [_L_APP_AMIIDB_EXIT] = "[Exit]", [_L_APP_AMIIDB_BACK] = "[Back]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Keys", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Loaded", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NOT Loaded", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Slot Num.", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Save As..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Save As...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Back to Detail]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Back to List]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Search:", - [_L_APP_AMIIDB_MORE] = "[More..]", + [_L_APP_AMIIDB_MORE] = "[More...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Reset..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Reset...", [_L_APP_AMIIDB_CONFIRM] = "Confirm", [_L_APP_AMIIDB_CANCEL] = "Cancel", [_L_APP_AMIIDB_TIPS] = "Confirm", - [_L_APP_AMIIDB_NEW] = "New..", - [_L_APP_AMIIDB_EMPTY] = "Empty..", - [_L_APP_AMIIDB_DELETE] = "Delete..", + [_L_APP_AMIIDB_NEW] = "New...", + [_L_APP_AMIIDB_EMPTY] = "Empty...", + [_L_APP_AMIIDB_DELETE] = "Delete...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "New Fav. Folder:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Empty Fav. Folder?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Confirm Delete?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Select Fav. Folder..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Select Fav. Folder...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Favorite Success", [_L_APP_AMIIDB_FAV_FAILED] = "Favorite Failed!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Save Success", @@ -135,21 +136,21 @@ const char * const lang_en_US[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Deny", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignore", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", - [_L_APP_CHAMELEON_INITIALIZING] = "Initializing data ..", + [_L_APP_CHAMELEON_INITIALIZING] = "Initializing data ...", [_L_APP_CHAMELEON_CARD_SLOT] = "Slot", [_L_APP_CHAMELEON_CARD_NICK] = "Nick", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Type", - [_L_APP_CHAMELEON_CARD_DATA] = "Data..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Advanced..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slots Settings..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slot Num..", + [_L_APP_CHAMELEON_CARD_DATA] = "Data...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Advanced...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slots Settings...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slot Num...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Set Nick Success", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Set Nick Failed!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Input Nick:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Load..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Save..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Factory..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Load...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Save...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Factory...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Data Factory Success", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "File Not Found", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "File Size Not Match", diff --git a/fw/application/src/i18n/es_ES.c b/fw/application/src/i18n/es_ES.c index 777914e9..2527a232 100644 --- a/fw/application/src/i18n/es_ES.c +++ b/fw/application/src/i18n/es_ES.c @@ -43,15 +43,15 @@ const char * const lang_es_ES[_L_COUNT] = { [_L_RANDOM_GENERATION] = "Nuevo serial aleat.", [_L_AUTO_RANDOM_GENERATION] = "Serial alea. aut", [_L_SHOW_QRCODE] = "Mostrar QR", - [_L_DELETE_TAG] = "Borrar amiibo..", + [_L_DELETE_TAG] = "Borrar amiibo...", [_L_DELETE_TAG_CONFIRM] = "¿\nBorrar %s\n?", [_L_BACK_TO_DETAILS] = "[Detalles amiibo]", [_L_BACK_TO_FILE_LIST] = "[Lista Archivos]", [_L_BACK_TO_MAIN_MENU] = "[Menú Principal]", - [_L_FORMAT] = "Formatear..", + [_L_FORMAT] = "Formatear...", [_L_FORMAT_STORAGE] = "Formatear mem. Flash", [_L_DELETE_ALL_DATA] = "Se borrará todos los\ndatos.", - [_L_DELETING_MESSAGE] = "Formateando..", + [_L_DELETING_MESSAGE] = "Formateando...", [_L_MESSAGE] = "Inicializar", [_L_CONFIRM] = "Confirmar", [_L_CANCEL] = "Cancelar", @@ -65,17 +65,18 @@ const char * const lang_es_ES[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Error al leer archivo", [_L_INPUT_FOLDER_NAME] = "Nombre carpeta:", [_L_INPUT_AMIIBO_NAME] = "Nombre amiibo:", - [_L_DELETE] = "Borrar", + [_L_DELETE_FILE] = "¿Borrar el %s ?", + [_L_DELETE] = "Borrar...", [_L_INPUT_NEW_NAME] = "Nuevo nombre:", [_L_INVALID_INPUT] = "Entrada inválida", - [_L_CREATE_NEW_FOLDER] = "Crear carpeta..", - [_L_CREATE_NEW_TAG] = "Crear amiibo..", - [_L_CREATE_NEW_TAG_BATCH] = "Crear amiibo en lote..", + [_L_CREATE_NEW_FOLDER] = "Crear carpeta...", + [_L_CREATE_NEW_TAG] = "Crear amiibo...", + [_L_CREATE_NEW_TAG_BATCH] = "Crear amiibo en lote...", [_L_INPUT_TAG_NUM] = "¿Cuántos?", [_L_CREATE_TOO_MANY_NUM] = "Sólo se puede crear %d en lote", [_L_CREATING_TAG_BATCH] = "Creando", [_L_CREATING_TAG_FAILED] = "¡Error al crear %s!", - [_L_RENAME] = "Renombrar", + [_L_RENAME] = "Renombrar...", [_L_OPEN_FOLDER_FAILED] = "Fallo al abrir carpeta", [_L_RENAME_FAILED] = "Fallo al renombrar\nCódigo de error", [_L_MAIN_RETURN] = "[Volver]", @@ -97,35 +98,35 @@ const char * const lang_es_ES[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Aleat. auto.", [_L_BLANK_TAG] = "Amiibo no asignado", [_L_APP_AMIIDB] = "Base datos amiibo", - [_L_APP_AMMIDB_BROWSER] = "Explorar..", - [_L_APP_AMIIDB_SEARCH] = "Buscar..", - [_L_APP_AMIIDB_MY_FAVORITES] = "Mis Favoritos..", - [_L_APP_AMIIDB_MY_TAGS] = "Mis amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Configuraciones..", + [_L_APP_AMMIDB_BROWSER] = "Explorar...", + [_L_APP_AMIIDB_SEARCH] = "Buscar...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Mis Favoritos...", + [_L_APP_AMIIDB_MY_TAGS] = "Mis amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Configuraciones...", [_L_APP_AMIIDB_EXIT] = "[Menú Principal]", [_L_APP_AMIIDB_BACK] = "[Volver]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Llaves", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Cargadas", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NO cargadas", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Cant. ranuras", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Asignar en..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Asignar en...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Volver a Detalles]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Volver a Lista]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Buscar:", - [_L_APP_AMIIDB_MORE] = "[Más..]", + [_L_APP_AMIIDB_MORE] = "[Más...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Borrar..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Borrar...", [_L_APP_AMIIDB_CONFIRM] = "Confirmar", [_L_APP_AMIIDB_CANCEL] = "Cancelar", [_L_APP_AMIIDB_TIPS] = "Confirmar", - [_L_APP_AMIIDB_NEW] = "Nueva..", - [_L_APP_AMIIDB_EMPTY] = "Vaciar..", - [_L_APP_AMIIDB_DELETE] = "Borrar..", + [_L_APP_AMIIDB_NEW] = "Nueva...", + [_L_APP_AMIIDB_EMPTY] = "Vaciar...", + [_L_APP_AMIIDB_DELETE] = "Borrar...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nueva Carp. Favoritos:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "¿Vaciar Carp. Favoritos?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "¿Confirma borrado?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selec. carp. favoritos..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selec. carp. favoritos...", [_L_APP_AMIIDB_FAV_SUCCESS] = "¡Favorito correcto!", [_L_APP_AMIIDB_FAV_FAILED] = "¡Favorito fallido!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Asignación correcta", @@ -135,21 +136,21 @@ const char * const lang_es_ES[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Negar", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorar", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Caché", - [_L_APP_CHAMELEON_INITIALIZING] = "Inicializando ambiente.\nPor favor espere..", + [_L_APP_CHAMELEON_INITIALIZING] = "Inicializando ambiente.\nPor favor espere...", [_L_APP_CHAMELEON_CARD_SLOT] = "Ranura", [_L_APP_CHAMELEON_CARD_NICK] = "Apodo", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Tipo", - [_L_APP_CHAMELEON_CARD_DATA] = "Datos..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzado..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configuración..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cant. ranuras..", + [_L_APP_CHAMELEON_CARD_DATA] = "Datos...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzado...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configuración...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cant. ranuras...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Apodo cambiado.", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "¡Falló cambio apodo!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Apodo:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Cargar..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Guardar..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inicializar..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Cargar...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Guardar...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inicializar...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "¡Datos inicializados!", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Archivo no encontrado", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Tamaño archivo incorrecto", diff --git a/fw/application/src/i18n/fr_FR.c b/fw/application/src/i18n/fr_FR.c index 170c4c56..73a3750b 100644 --- a/fw/application/src/i18n/fr_FR.c +++ b/fw/application/src/i18n/fr_FR.c @@ -51,7 +51,7 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_FORMAT] = "Format", [_L_FORMAT_STORAGE] = "Format de Stockage", [_L_DELETE_ALL_DATA] = "Cette opération efface toutes les données. Confirmer le formatage?", - [_L_DELETING_MESSAGE] = "Formatage ..", + [_L_DELETING_MESSAGE] = "Formatage ...", [_L_MESSAGE] = "Message", [_L_CONFIRM] = "Confirmer", [_L_CANCEL] = "Annuler", @@ -65,17 +65,18 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Échec de la lecture du fichier", [_L_INPUT_FOLDER_NAME] = "Nom du Dossier D'entrée:", [_L_INPUT_AMIIBO_NAME] = "Nom de l'Amiibo D'entrée:", - [_L_DELETE] = "Supprimer", + [_L_DELETE_FILE] = "Supprimer le %s ?", + [_L_DELETE] = "Supprimer...", [_L_INPUT_NEW_NAME] = "Nouveau nom D'entrée:", [_L_INVALID_INPUT] = "Entrée Invalide", - [_L_CREATE_NEW_FOLDER] = "Créer un Nouveau Dossier..", - [_L_CREATE_NEW_TAG] = "Créer une Nouvelle Étiquette..", - [_L_CREATE_NEW_TAG_BATCH] = "Créer de Nouvelles Étiquettes Par Lot..", + [_L_CREATE_NEW_FOLDER] = "Créer un Nouveau Dossier...", + [_L_CREATE_NEW_TAG] = "Créer une Nouvelle Étiquette...", + [_L_CREATE_NEW_TAG_BATCH] = "Créer de Nouvelles Étiquettes Par Lot...", [_L_INPUT_TAG_NUM] = "Saisir le Numéro de l'Étiquette:", [_L_CREATE_TOO_MANY_NUM] = "Seulement %d balises maximum créées dans un lot.", [_L_CREATING_TAG_BATCH] = "Création d'une balise", [_L_CREATING_TAG_FAILED] = "La création de la balise %s a échoué!", - [_L_RENAME] = "Renommer", + [_L_RENAME] = "Renommer...", [_L_OPEN_FOLDER_FAILED] = "Échec de l'ouverture du dossier", [_L_RENAME_FAILED] = "Échec du renommage.\nCode d'Erreur", [_L_MAIN_RETURN] = "[RETOUR]", @@ -97,35 +98,35 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Aléatoire (Automatique)", [_L_BLANK_TAG] = "Étiquette NFC vierge", [_L_APP_AMIIDB] = "Base de Données Amiibo", - [_L_APP_AMMIDB_BROWSER] = "Naviguer..", - [_L_APP_AMIIDB_SEARCH] = "Recherche..", - [_L_APP_AMIIDB_MY_FAVORITES] = "Mes Favoris..", - [_L_APP_AMIIDB_MY_TAGS] = "Mes Amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Paramètres..", + [_L_APP_AMMIDB_BROWSER] = "Naviguer...", + [_L_APP_AMIIDB_SEARCH] = "Recherche...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Mes Favoris...", + [_L_APP_AMIIDB_MY_TAGS] = "Mes Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Paramètres...", [_L_APP_AMIIDB_EXIT] = "[Quitter]", [_L_APP_AMIIDB_BACK] = "[Retour]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Touches", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Chargée", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NON Chargée", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Numéro d'Emplacement", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Enregistrer Sous..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorite...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Enregistrer Sous...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Retour au Détail]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Retour à la Liste]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Recherche:", - [_L_APP_AMIIDB_MORE] = "[Plus..]", + [_L_APP_AMIIDB_MORE] = "[Plus...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Réinitialiser..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Réinitialiser...", [_L_APP_AMIIDB_CONFIRM] = "Confirmer", [_L_APP_AMIIDB_CANCEL] = "Annuler", [_L_APP_AMIIDB_TIPS] = "Confirmer", - [_L_APP_AMIIDB_NEW] = "Nouveau..", - [_L_APP_AMIIDB_EMPTY] = "Vider..", - [_L_APP_AMIIDB_DELETE] = "Supprimer..", + [_L_APP_AMIIDB_NEW] = "Nouveau...", + [_L_APP_AMIIDB_EMPTY] = "Vider...", + [_L_APP_AMIIDB_DELETE] = "Supprimer...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nouveau Dossier Favori:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Vider le Dossier Favori?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Confirmer la Suppression?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Sélectionner le Dossier Favori..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Sélectionner le Dossier Favori...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Succès du Favori", [_L_APP_AMIIDB_FAV_FAILED] = "Échec du Favori!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Sauvegarder Succès", @@ -135,21 +136,21 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Refuser", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorer", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", - [_L_APP_CHAMELEON_INITIALIZING] = "Initialisation des données ..", + [_L_APP_CHAMELEON_INITIALIZING] = "Initialisation des données ...", [_L_APP_CHAMELEON_CARD_SLOT] = "Fente", [_L_APP_CHAMELEON_CARD_NICK] = "Pseudo", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Type de Données", - [_L_APP_CHAMELEON_CARD_DATA] = "Données..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avancé..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Paramètres des Emplacements..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Numéro d'Emplacement..", + [_L_APP_CHAMELEON_CARD_DATA] = "Données...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avancé...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Paramètres des Emplacements...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Numéro d'Emplacement...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Définir le Pseudo Succès", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Définir le Pseudo a Échoué!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Entrer le Pseudo:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Charger..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Sauvegarder..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Rétablir Les Valeurs Par Défaut..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Charger...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Sauvegarder...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Rétablir Les Valeurs Par Défaut...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Réinitialisation des Données Succès", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Fichier Non Trouvé", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "La Taille du Fichier ne Correspond Pas", diff --git a/fw/application/src/i18n/hu_HU.c b/fw/application/src/i18n/hu_HU.c index 4d266ef4..256cbb5e 100644 --- a/fw/application/src/i18n/hu_HU.c +++ b/fw/application/src/i18n/hu_HU.c @@ -51,7 +51,7 @@ const char * const lang_hu_HU[_L_COUNT] = { [_L_FORMAT] = "Formátum ", [_L_FORMAT_STORAGE] = "Formátum Tárolás", [_L_DELETE_ALL_DATA] = "Minden adatot töröl. Formázás megerősítése?", - [_L_DELETING_MESSAGE] = "Formázás ..", + [_L_DELETING_MESSAGE] = "Formázás ...", [_L_MESSAGE] = "Üzenet", [_L_CONFIRM] = "Megerősítés", [_L_CANCEL] = "Megszüntet", @@ -65,17 +65,18 @@ const char * const lang_hu_HU[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Fájl beolvasása sikerten", [_L_INPUT_FOLDER_NAME] = "Bemeneti Mappa Neve:", [_L_INPUT_AMIIBO_NAME] = "Amiibo Neve:", - [_L_DELETE] = "Töröl", + [_L_DELETE_FILE] = "Törli a %s fájlt?", + [_L_DELETE] = "Töröl...", [_L_INPUT_NEW_NAME] = "Új Név Bevitele:", [_L_INVALID_INPUT] = "Érvénytelen Bemenet", - [_L_CREATE_NEW_FOLDER] = "Új Mappa Létrehozása..", - [_L_CREATE_NEW_TAG] = "Új Címke Létrehozása..", - [_L_CREATE_NEW_TAG_BATCH] = "Kötegelt Új Címke Létrehozása..", + [_L_CREATE_NEW_FOLDER] = "Új Mappa Létrehozása...", + [_L_CREATE_NEW_TAG] = "Új Címke Létrehozása...", + [_L_CREATE_NEW_TAG_BATCH] = "Kötegelt Új Címke Létrehozása...", [_L_INPUT_TAG_NUM] = "Beviteli Címke Száma:", [_L_CREATE_TOO_MANY_NUM] = "Max. létrehozható címke egy kötegben %d", [_L_CREATING_TAG_BATCH] = "Címke létrehozása", [_L_CREATING_TAG_FAILED] = "Címke létrehozása %s sikertelen!", - [_L_RENAME] = "Átnevezés", + [_L_RENAME] = "Átnevezés...", [_L_OPEN_FOLDER_FAILED] = "Mappa megnyitása sikertelen ", [_L_RENAME_FAILED] = "Átnevezés Sikertelen\nHibakód", [_L_MAIN_RETURN] = "[VISSZA]", @@ -97,35 +98,35 @@ const char * const lang_hu_HU[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Random (Automat.)", [_L_BLANK_TAG] = "Üres NFC Címke", [_L_APP_AMIIDB] = "Amiibo Adatbázis", - [_L_APP_AMMIDB_BROWSER] = "Böngésző..", - [_L_APP_AMIIDB_SEARCH] = "Keresés..", - [_L_APP_AMIIDB_MY_FAVORITES] = "Kedvencek..", - [_L_APP_AMIIDB_MY_TAGS] = "Amiiboim..", - [_L_APP_AMIIDB_SETTINGS] = "Beállítások..", + [_L_APP_AMMIDB_BROWSER] = "Böngésző...", + [_L_APP_AMIIDB_SEARCH] = "Keresés...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Kedvencek...", + [_L_APP_AMIIDB_MY_TAGS] = "Amiiboim...", + [_L_APP_AMIIDB_SETTINGS] = "Beállítások...", [_L_APP_AMIIDB_EXIT] = "[Kilépés]", [_L_APP_AMIIDB_BACK] = "[Vissza]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Kulcsok", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Betöltve", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NINCS betöltve", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Slot Száma", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Kedvenc..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Mentés Másként..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Kedvenc...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Mentés Másként...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Vissza a Részletekhez]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Vissza a Listához]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Keresés:", - [_L_APP_AMIIDB_MORE] = "[Bővebben..]", + [_L_APP_AMIIDB_MORE] = "[Bővebben...]", [_L_APP_AMIIDB_EMPTY_TAG] = "<Üres Amiibo>", - [_L_APP_AMIIDB_SLOT_DELETE] = "Újraindítás..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Újraindítás...", [_L_APP_AMIIDB_CONFIRM] = "Megerősítés", [_L_APP_AMIIDB_CANCEL] = "Törlés", [_L_APP_AMIIDB_TIPS] = "Megerősítés", - [_L_APP_AMIIDB_NEW] = "Új..", - [_L_APP_AMIIDB_EMPTY] = "Üres..", - [_L_APP_AMIIDB_DELETE] = "Törlés..", + [_L_APP_AMIIDB_NEW] = "Új...", + [_L_APP_AMIIDB_EMPTY] = "Üres...", + [_L_APP_AMIIDB_DELETE] = "Törlés...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Új Kedvenc Mappa:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Üres Kedvenc Mappa?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Törlés Megerősítése?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Kedvenc Mappa Kiválasztása..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Kedvenc Mappa Kiválasztása...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Kedvenc Sikeres", [_L_APP_AMIIDB_FAV_FAILED] = "Kedvenc Sikertelen!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Sikeresen Mentve", @@ -135,21 +136,21 @@ const char * const lang_hu_HU[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Tagadni", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Figyelmen Kívül Hagyni", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Elrejt", - [_L_APP_CHAMELEON_INITIALIZING] = "Az adatok inicializálása ..", + [_L_APP_CHAMELEON_INITIALIZING] = "Az adatok inicializálása ...", [_L_APP_CHAMELEON_CARD_SLOT] = "Cella", [_L_APP_CHAMELEON_CARD_NICK] = "Becenév", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Típus", - [_L_APP_CHAMELEON_CARD_DATA] = "Adatok..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Fejlett..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Cella Beállításai..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cella Száma..", + [_L_APP_CHAMELEON_CARD_DATA] = "Adatok...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Fejlett...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Cella Beállításai...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Cella Száma...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Becenév Beállítása Sikeres", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Becenév Beállítása Sikertelen!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Becenév Bevitele:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Betöltés..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Mentés..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Visszaállítás..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Betöltés...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Mentés...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Visszaállítás...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Adatok Visszaállítása Sikeres", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Fájl Nem Található", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Fájl Mérete Nem Egyezik", diff --git a/fw/application/src/i18n/it_IT.c b/fw/application/src/i18n/it_IT.c index 92e41261..19ba0962 100644 --- a/fw/application/src/i18n/it_IT.c +++ b/fw/application/src/i18n/it_IT.c @@ -48,10 +48,10 @@ const char * const lang_it_IT[_L_COUNT] = { [_L_BACK_TO_DETAILS] = "[Torna ai dettagli del tag]", [_L_BACK_TO_FILE_LIST] = "[Torna alla lista dei file]", [_L_BACK_TO_MAIN_MENU] = "[Torna al menu principale]", - [_L_FORMAT] = "Formatta..", + [_L_FORMAT] = "Formatta...", [_L_FORMAT_STORAGE] = "Formatta memoria", [_L_DELETE_ALL_DATA] = "Questo cancellerà tutti i dati.\nConferma la formattazione?", - [_L_DELETING_MESSAGE] = "Formattazione in corso ..", + [_L_DELETING_MESSAGE] = "Formattazione in corso ...", [_L_MESSAGE] = "Messaggio", [_L_CONFIRM] = "Conferma", [_L_CANCEL] = "Annulla", @@ -65,17 +65,18 @@ const char * const lang_it_IT[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Errore nella lettura del file", [_L_INPUT_FOLDER_NAME] = "Nome cartella:", [_L_INPUT_AMIIBO_NAME] = "Nome Amiibo:", - [_L_DELETE] = "Elimina", + [_L_DELETE_FILE] = "Eliminare %s ?", + [_L_DELETE] = "Elimina...", [_L_INPUT_NEW_NAME] = "Nuovo nome:", [_L_INVALID_INPUT] = "Input non valido", - [_L_CREATE_NEW_FOLDER] = "Crea cartella..", - [_L_CREATE_NEW_TAG] = "Crea Amiibo..", - [_L_CREATE_NEW_TAG_BATCH] = "Crea Amiibo in serie..", + [_L_CREATE_NEW_FOLDER] = "Crea cartella...", + [_L_CREATE_NEW_TAG] = "Crea Amiibo...", + [_L_CREATE_NEW_TAG_BATCH] = "Crea Amiibo in serie...", [_L_INPUT_TAG_NUM] = "Numero di tag:", [_L_CREATE_TOO_MANY_NUM] = "Numero max di %d tag in serie.", [_L_CREATING_TAG_BATCH] = "Creazione tag", [_L_CREATING_TAG_FAILED] = "Creazione tag %s fallita!", - [_L_RENAME] = "Rinomina", + [_L_RENAME] = "Rinomina...", [_L_OPEN_FOLDER_FAILED] = "Errore nell'apertura della cartella", [_L_RENAME_FAILED] = "Errore nella rinomina\nCodice errore", [_L_MAIN_RETURN] = "[Torna indietro]", @@ -97,35 +98,35 @@ const char * const lang_it_IT[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Auto. casuale", [_L_BLANK_TAG] = "Amiibo non assegnato", [_L_APP_AMIIDB] = "Database Amiibo", - [_L_APP_AMMIDB_BROWSER] = "Esplora..", - [_L_APP_AMIIDB_SEARCH] = "Cerca..", - [_L_APP_AMIIDB_MY_FAVORITES] = "I miei preferiti..", - [_L_APP_AMIIDB_MY_TAGS] = "I miei Amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Impostazioni..", + [_L_APP_AMMIDB_BROWSER] = "Esplora...", + [_L_APP_AMIIDB_SEARCH] = "Cerca...", + [_L_APP_AMIIDB_MY_FAVORITES] = "I miei preferiti...", + [_L_APP_AMIIDB_MY_TAGS] = "I miei Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Impostazioni...", [_L_APP_AMIIDB_EXIT] = "[Menu principale]", [_L_APP_AMIIDB_BACK] = "[Torna indietro]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Chiavi", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Caricate", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NON caricate", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Num. slot", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Preferito..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Assegna a..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Preferito...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Assegna a...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Torna ai dettagli]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Torna alla lista]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Cerca:", - [_L_APP_AMIIDB_MORE] = "[Più..]", + [_L_APP_AMIIDB_MORE] = "[Più...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Elimina..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Elimina...", [_L_APP_AMIIDB_CONFIRM] = "Conferma", [_L_APP_AMIIDB_CANCEL] = "Annulla", [_L_APP_AMIIDB_TIPS] = "Conferma", - [_L_APP_AMIIDB_NEW] = "Nuovo..", - [_L_APP_AMIIDB_EMPTY] = "Svuota..", - [_L_APP_AMIIDB_DELETE] = "Cancella..", + [_L_APP_AMIIDB_NEW] = "Nuovo...", + [_L_APP_AMIIDB_EMPTY] = "Svuota...", + [_L_APP_AMIIDB_DELETE] = "Cancella...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nuova cart. preferiti:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Svuotare cart. preferiti?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Conferma cancellazione?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selez. cart. preferiti..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selez. cart. preferiti...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Preferito aggiunto!", [_L_APP_AMIIDB_FAV_FAILED] = "Preferito non aggiunto!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Assegnazione corretta", @@ -135,21 +136,21 @@ const char * const lang_it_IT[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Nega", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignora", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", - [_L_APP_CHAMELEON_INITIALIZING] = "Inizializzazione ambiente.\nPer favore attendi..", + [_L_APP_CHAMELEON_INITIALIZING] = "Inizializzazione ambiente.\nPer favore attendi...", [_L_APP_CHAMELEON_CARD_SLOT] = "Slot", [_L_APP_CHAMELEON_CARD_NICK] = "Nickname", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Tipo", - [_L_APP_CHAMELEON_CARD_DATA] = "Dati..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzato..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Impostazioni..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Num. slot..", + [_L_APP_CHAMELEON_CARD_DATA] = "Dati...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avanzato...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Impostazioni...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Num. slot...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Cambio nickname riuscito.", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Cambio nickname fallito!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Nickname:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carica..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salva..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inizializza..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carica...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salva...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Inizializza...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Dati inizializzati!", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "File non trovato", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Dimensione file non corretta", diff --git a/fw/application/src/i18n/ja_JP.c b/fw/application/src/i18n/ja_JP.c index bfce8fd9..9760d512 100644 --- a/fw/application/src/i18n/ja_JP.c +++ b/fw/application/src/i18n/ja_JP.c @@ -51,7 +51,7 @@ const char * const lang_ja_JP[_L_COUNT] = { [_L_FORMAT] = "フォーマット", [_L_FORMAT_STORAGE] = "保存領域フォーマット", [_L_DELETE_ALL_DATA] = "これですべてのデータが削除されます。よろしいですか?", - [_L_DELETING_MESSAGE] = "書式設定 ..", + [_L_DELETING_MESSAGE] = "書式設定 ...", [_L_MESSAGE] = "メッセージ", [_L_CONFIRM] = "確認", [_L_CANCEL] = "キャンセル", @@ -65,17 +65,18 @@ const char * const lang_ja_JP[_L_COUNT] = { [_L_READ_FILE_FAILED] = "ファイルの読み込みに失敗しました", [_L_INPUT_FOLDER_NAME] = "入力フォルダ名:", [_L_INPUT_AMIIBO_NAME] = "入力Amiibo名:", - [_L_DELETE] = "削除", + [_L_DELETE_FILE] = "%s を削除しますか ?", + [_L_DELETE] = "削除...", [_L_INPUT_NEW_NAME] = "新しい名前を入力してください:", [_L_INVALID_INPUT] = "無効な入力", - [_L_CREATE_NEW_FOLDER] = "新しいフォルダを作成..", - [_L_CREATE_NEW_TAG] = "新規タグ作成..", - [_L_CREATE_NEW_TAG_BATCH] = "新規タグの一括作成..", + [_L_CREATE_NEW_FOLDER] = "新しいフォルダを作成...", + [_L_CREATE_NEW_TAG] = "新規タグ作成...", + [_L_CREATE_NEW_TAG_BATCH] = "新規タグの一括作成...", [_L_INPUT_TAG_NUM] = "タグ番号を入力:", [_L_CREATE_TOO_MANY_NUM] = "1つのバッチで作成されるタグの数はは最大 %d までです。", [_L_CREATING_TAG_BATCH] = "タグの作成", [_L_CREATING_TAG_FAILED] = "タグ %s の作成に失敗しました!", - [_L_RENAME] = "名前の変更", + [_L_RENAME] = "名前の変更...", [_L_OPEN_FOLDER_FAILED] = "フォルダを開けませんでした", [_L_RENAME_FAILED] = "名前の変更に失敗しました。\nエラーコード", [_L_MAIN_RETURN] = "[リターン]", @@ -97,35 +98,35 @@ const char * const lang_ja_JP[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "ランダム化(自動)", [_L_BLANK_TAG] = "ブランクNFCタグ", [_L_APP_AMIIDB] = "Amiiboデータベース", - [_L_APP_AMMIDB_BROWSER] = "ブラウザ..", - [_L_APP_AMIIDB_SEARCH] = "検索..", - [_L_APP_AMIIDB_MY_FAVORITES] = "お気に入り..", - [_L_APP_AMIIDB_MY_TAGS] = "マイAmiibo..", - [_L_APP_AMIIDB_SETTINGS] = "設定..", + [_L_APP_AMMIDB_BROWSER] = "ブラウザ...", + [_L_APP_AMIIDB_SEARCH] = "検索...", + [_L_APP_AMIIDB_MY_FAVORITES] = "お気に入り...", + [_L_APP_AMIIDB_MY_TAGS] = "マイAmiibo...", + [_L_APP_AMIIDB_SETTINGS] = "設定...", [_L_APP_AMIIDB_EXIT] = "[終了]", [_L_APP_AMIIDB_BACK] = "[戻る]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "キー", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "ロードされました", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "ロードされていません", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "スロット番号", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "お気に入り..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "名前を付けて保存..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "お気に入り...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "名前を付けて保存...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[詳細に戻る]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[リストに戻る]", [_L_APP_AMIIDB_SEARCH_HEAD] = "検索する:", - [_L_APP_AMIIDB_MORE] = "[もっと見る..]", + [_L_APP_AMIIDB_MORE] = "[もっと見る...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "リセット..", + [_L_APP_AMIIDB_SLOT_DELETE] = "リセット...", [_L_APP_AMIIDB_CONFIRM] = "確認する", [_L_APP_AMIIDB_CANCEL] = "キャンセルする", [_L_APP_AMIIDB_TIPS] = "確認する", - [_L_APP_AMIIDB_NEW] = "新規..", - [_L_APP_AMIIDB_EMPTY] = "空..", - [_L_APP_AMIIDB_DELETE] = "削除..", + [_L_APP_AMIIDB_NEW] = "新規...", + [_L_APP_AMIIDB_EMPTY] = "空...", + [_L_APP_AMIIDB_DELETE] = "削除...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "新しいお気に入りフォルダ:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "お気に入りフォルダを空にしますか?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "削除してよろしいですか?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "お気に入りフォルダを選択..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "お気に入りフォルダを選択...", [_L_APP_AMIIDB_FAV_SUCCESS] = "お気に入りに追加されました", [_L_APP_AMIIDB_FAV_FAILED] = "お気に入りに追加できませんでした!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "保存されました", @@ -135,21 +136,21 @@ const char * const lang_ja_JP[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "拒否", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "無視", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "キャッシュ", - [_L_APP_CHAMELEON_INITIALIZING] = "データの初期化 ..", + [_L_APP_CHAMELEON_INITIALIZING] = "データの初期化 ...", [_L_APP_CHAMELEON_CARD_SLOT] = "スロット", [_L_APP_CHAMELEON_CARD_NICK] = "ニックネーム", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "タイプ", - [_L_APP_CHAMELEON_CARD_DATA] = "データ..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "詳細設定..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "スロット設定..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "スロット番号..", + [_L_APP_CHAMELEON_CARD_DATA] = "データ...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "詳細設定...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "スロット設定...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "スロット番号...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "ニックネームが設定されました", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "ニックネームが設定できませんでした!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "ニックネームを入力してください:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "ロード..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "保存..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "初期化..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "ロード...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "保存...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "初期化...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "初期化成功", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "ファイルが見つかりません", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "ファイルサイズが一致しません", diff --git a/fw/application/src/i18n/nl_NL.c b/fw/application/src/i18n/nl_NL.c index 42ffe7a1..23a8c176 100644 --- a/fw/application/src/i18n/nl_NL.c +++ b/fw/application/src/i18n/nl_NL.c @@ -51,7 +51,7 @@ const char * const lang_nl_NL[_L_COUNT] = { [_L_FORMAT] = "Formatteren", [_L_FORMAT_STORAGE] = "Opslag Formatteren", [_L_DELETE_ALL_DATA] = "Hierdoor worden alle gegevens gewist. Formatteren bevestigen?", - [_L_DELETING_MESSAGE] = "Formatteren ..", + [_L_DELETING_MESSAGE] = "Formatteren ...", [_L_MESSAGE] = "Bericht", [_L_CONFIRM] = "Bevestigen", [_L_CANCEL] = "Annuleren", @@ -65,17 +65,18 @@ const char * const lang_nl_NL[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Lezen van het bestand is mislukt", [_L_INPUT_FOLDER_NAME] = "Naam Invoermap:", [_L_INPUT_AMIIBO_NAME] = "Naam Amiibo Invoeren:", - [_L_DELETE] = "Verwijder", + [_L_DELETE_FILE] = "%s verwijderen ?", + [_L_DELETE] = "Verwijder...", [_L_INPUT_NEW_NAME] = "Nieuwe Naam Invoeren:", [_L_INVALID_INPUT] = "Ongeldige Invoer", - [_L_CREATE_NEW_FOLDER] = "Nieuwe Map Maken..", - [_L_CREATE_NEW_TAG] = "Nieuwe Tag Aanmaken..", - [_L_CREATE_NEW_TAG_BATCH] = "Nieuwe Tags in een Batch Aanmaken..", + [_L_CREATE_NEW_FOLDER] = "Nieuwe Map Maken...", + [_L_CREATE_NEW_TAG] = "Nieuwe Tag Aanmaken...", + [_L_CREATE_NEW_TAG_BATCH] = "Nieuwe Tags in een Batch Aanmaken...", [_L_INPUT_TAG_NUM] = "Labelnummer Invoeren:", [_L_CREATE_TOO_MANY_NUM] = "Maximum %d tags aangemaakt in een batch.", [_L_CREATING_TAG_BATCH] = "Tag aanmaken", [_L_CREATING_TAG_FAILED] = "Aanmaken tag %s mislukt!", - [_L_RENAME] = "Hernoem", + [_L_RENAME] = "Hernoem...", [_L_OPEN_FOLDER_FAILED] = "Kan map niet openen", [_L_RENAME_FAILED] = "Hernoemen mislukt.\nFoutcode", [_L_MAIN_RETURN] = "[TERUG]", @@ -97,35 +98,35 @@ const char * const lang_nl_NL[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Willekeurig (Automatisch)", [_L_BLANK_TAG] = "Lege NFC-tag", [_L_APP_AMIIDB] = "Amiibo-Database", - [_L_APP_AMMIDB_BROWSER] = "Browser..", - [_L_APP_AMIIDB_SEARCH] = "Zoeken..", - [_L_APP_AMIIDB_MY_FAVORITES] = "Mijn Favorieten..", - [_L_APP_AMIIDB_MY_TAGS] = "Mijn Amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Instellingen..", + [_L_APP_AMMIDB_BROWSER] = "Browser...", + [_L_APP_AMIIDB_SEARCH] = "Zoeken...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Mijn Favorieten...", + [_L_APP_AMIIDB_MY_TAGS] = "Mijn Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Instellingen...", [_L_APP_AMIIDB_EXIT] = "[Afsluiten]", [_L_APP_AMIIDB_BACK] = "[Terug]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Toetsen", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Geladen", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NIET Geladen", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Slotnummer", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favoriet..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Opslaan Als..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favoriet...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Opslaan Als...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Terug naar Detail]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Terug naar Lijst].", [_L_APP_AMIIDB_SEARCH_HEAD] = "Zoeken:", - [_L_APP_AMIIDB_MORE] = "[Meer..]", + [_L_APP_AMIIDB_MORE] = "[Meer...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Reset..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Reset...", [_L_APP_AMIIDB_CONFIRM] = "Bevestigen", [_L_APP_AMIIDB_CANCEL] = "Annuleren", [_L_APP_AMIIDB_TIPS] = "Bevestigen", - [_L_APP_AMIIDB_NEW] = "Nieuw..", - [_L_APP_AMIIDB_EMPTY] = "Leeg..", - [_L_APP_AMIIDB_DELETE] = "Verwijderen..", + [_L_APP_AMIIDB_NEW] = "Nieuw...", + [_L_APP_AMIIDB_EMPTY] = "Leeg...", + [_L_APP_AMIIDB_DELETE] = "Verwijderen...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nieuwe Favoriete Map:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Favoriete Map Leegmaken?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Verwijderen Bevestigen?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecteer Favoriete Map..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecteer Favoriete Map...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Favoriet Geslaagd", [_L_APP_AMIIDB_FAV_FAILED] = "Favoriet Mislukt!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Opslaan Succes", @@ -135,21 +136,21 @@ const char * const lang_nl_NL[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Weigeren", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Negeren", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", - [_L_APP_CHAMELEON_INITIALIZING] = "Gegevens Initialiseren ..", + [_L_APP_CHAMELEON_INITIALIZING] = "Gegevens Initialiseren ...", [_L_APP_CHAMELEON_CARD_SLOT] = "Slot", [_L_APP_CHAMELEON_CARD_NICK] = "Bijnaam", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Type", - [_L_APP_CHAMELEON_CARD_DATA] = "Gegevens..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Geavanceerd..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slot Instellingen..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slotnummer..", + [_L_APP_CHAMELEON_CARD_DATA] = "Gegevens...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Geavanceerd...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Slot Instellingen...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Slotnummer...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Bijnaam Instellen Succes", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Bijnaam Instellen Mislukt!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Voer Bijnaam In:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Opslaan..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Terugzetten Naar Standaard..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Laden...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Opslaan...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Terugzetten Naar Standaard...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Fabriekgegeven terugzetten Succesvol", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Bestand Niet Gevonden", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Bestandsgrootte Komt Niet Overeen", diff --git a/fw/application/src/i18n/pt_BR.c b/fw/application/src/i18n/pt_BR.c index 2ec6525a..1c501301 100644 --- a/fw/application/src/i18n/pt_BR.c +++ b/fw/application/src/i18n/pt_BR.c @@ -51,7 +51,7 @@ const char * const lang_pt_BR[_L_COUNT] = { [_L_FORMAT] = "Formatar", [_L_FORMAT_STORAGE] = "Formatar Armazenamento", [_L_DELETE_ALL_DATA] = "Isso excluirá todos os dados. Confirmar a formatação?", - [_L_DELETING_MESSAGE] = "Formatando ..", + [_L_DELETING_MESSAGE] = "Formatando ...", [_L_MESSAGE] = "Mensagem", [_L_CONFIRM] = "Confirmar", [_L_CANCEL] = "Cancelar", @@ -65,17 +65,18 @@ const char * const lang_pt_BR[_L_COUNT] = { [_L_READ_FILE_FAILED] = "Falha na Leitura do Arquivo", [_L_INPUT_FOLDER_NAME] = "Nome da Pasta de Entrada:", [_L_INPUT_AMIIBO_NAME] = "Nome do Amiibo de Entrada:", - [_L_DELETE] = "Excluir", + [_L_DELETE_FILE] = "Excluir %s ?", + [_L_DELETE] = "Excluir...", [_L_INPUT_NEW_NAME] = "Novo Nome de Entrada:", [_L_INVALID_INPUT] = "Entrada Inválida", - [_L_CREATE_NEW_FOLDER] = "Criar Nova Pasta..", - [_L_CREATE_NEW_TAG] = "Criar Nova Tag..", - [_L_CREATE_NEW_TAG_BATCH] = "Criar Novas Tags em Lote..", + [_L_CREATE_NEW_FOLDER] = "Criar Nova Pasta...", + [_L_CREATE_NEW_TAG] = "Criar Nova Tag...", + [_L_CREATE_NEW_TAG_BATCH] = "Criar Novas Tags em Lote...", [_L_INPUT_TAG_NUM] = "Número da Tag de Entrada:", [_L_CREATE_TOO_MANY_NUM] = "Somente no máximo %d tags criadas em um lote.", [_L_CREATING_TAG_BATCH] = "Criando tag", [_L_CREATING_TAG_FAILED] = "Falha ao criar a tag %s!", - [_L_RENAME] = "Renomear", + [_L_RENAME] = "Renomear...", [_L_OPEN_FOLDER_FAILED] = "Falha ao abrir a pasta", [_L_RENAME_FAILED] = "Falha ao renomear\nCódigo de erro", [_L_MAIN_RETURN] = "[RETORNO]", @@ -97,35 +98,35 @@ const char * const lang_pt_BR[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "Randomização (Automática)", [_L_BLANK_TAG] = "Tag NFC em Branco", [_L_APP_AMIIDB] = "Banco de Dados Amiibo", - [_L_APP_AMMIDB_BROWSER] = "Navegador..", - [_L_APP_AMIIDB_SEARCH] = "Pesquisar..", - [_L_APP_AMIIDB_MY_FAVORITES] = "Meus Favoritos..", - [_L_APP_AMIIDB_MY_TAGS] = "Meu Amiibo..", - [_L_APP_AMIIDB_SETTINGS] = "Configurações..", + [_L_APP_AMMIDB_BROWSER] = "Navegador...", + [_L_APP_AMIIDB_SEARCH] = "Pesquisar...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Meus Favoritos...", + [_L_APP_AMIIDB_MY_TAGS] = "Meu Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Configurações...", [_L_APP_AMIIDB_EXIT] = "[Sair]", [_L_APP_AMIIDB_BACK] = "[Retornar]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Teclas", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Carregado", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "NÃO Carregadas", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Número do Slot", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Salvar como..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "Favorito...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Salvar como...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Voltar Para Detalhes]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Voltar Para a Lista]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Pesquisar:", - [_L_APP_AMIIDB_MORE] = "[Mais..]", + [_L_APP_AMIIDB_MORE] = "[Mais...]", [_L_APP_AMIIDB_EMPTY_TAG] = "", - [_L_APP_AMIIDB_SLOT_DELETE] = "Reiniciar..", + [_L_APP_AMIIDB_SLOT_DELETE] = "Reiniciar...", [_L_APP_AMIIDB_CONFIRM] = "Confirmar", [_L_APP_AMIIDB_CANCEL] = "Cancelar", [_L_APP_AMIIDB_TIPS] = "Confirmar", - [_L_APP_AMIIDB_NEW] = "Novo..", - [_L_APP_AMIIDB_EMPTY] = "Vazio..", - [_L_APP_AMIIDB_DELETE] = "Excluir..", + [_L_APP_AMIIDB_NEW] = "Novo...", + [_L_APP_AMIIDB_EMPTY] = "Vazio...", + [_L_APP_AMIIDB_DELETE] = "Excluir...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Nova Pasta de Favoritos:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Esvaziar Pasta de Favoritos?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Confirmar Exclusão?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecionar Pasta Favorita..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Selecionar Pasta Favorita...", [_L_APP_AMIIDB_FAV_SUCCESS] = "Favorito Bem-Sucedido", [_L_APP_AMIIDB_FAV_FAILED] = "Favorito Falhou!", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Salvar Com Êxito", @@ -135,21 +136,21 @@ const char * const lang_pt_BR[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Negar", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Ignorar", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "Cache", - [_L_APP_CHAMELEON_INITIALIZING] = "Inicialização de Dados ..", + [_L_APP_CHAMELEON_INITIALIZING] = "Inicialização de Dados ...", [_L_APP_CHAMELEON_CARD_SLOT] = "Slot", [_L_APP_CHAMELEON_CARD_NICK] = "Apelido", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "Tipo de Dados", - [_L_APP_CHAMELEON_CARD_DATA] = "Dados..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avançado..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configurações de Slots..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Número do Slot..", + [_L_APP_CHAMELEON_CARD_DATA] = "Dados...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Avançado...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Configurações de Slots...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Número do Slot...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Apelido Definido com Sucesso", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Falha ao Definir Apelido!", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Insira o Apelido:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carregar..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salvar..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Restaurar Padrões..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Carregar...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Salvar...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Restaurar Padrões...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Restauração de Dados Bem-Sucedida", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Arquivo Não Encontrado", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Tamanho do Arquivo Não Corresponde", diff --git a/fw/application/src/i18n/string_id.h b/fw/application/src/i18n/string_id.h index 2e118085..124a06c1 100644 --- a/fw/application/src/i18n/string_id.h +++ b/fw/application/src/i18n/string_id.h @@ -66,6 +66,7 @@ typedef enum { _L_READ_FILE_FAILED, _L_INPUT_FOLDER_NAME, _L_INPUT_AMIIBO_NAME, + _L_DELETE_FILE, _L_DELETE, _L_INPUT_NEW_NAME, _L_INVALID_INPUT, diff --git a/fw/application/src/i18n/zh_Hans.c b/fw/application/src/i18n/zh_Hans.c index 7b06ce96..c66ef701 100644 --- a/fw/application/src/i18n/zh_Hans.c +++ b/fw/application/src/i18n/zh_Hans.c @@ -51,7 +51,7 @@ const char * const lang_zh_Hans[_L_COUNT] = { [_L_FORMAT] = "格式化", [_L_FORMAT_STORAGE] = "格式化存储", [_L_DELETE_ALL_DATA] = "将删除所有数据。\n确认格式化?", - [_L_DELETING_MESSAGE] = "格式化中..", + [_L_DELETING_MESSAGE] = "格式化中...", [_L_MESSAGE] = "提示", [_L_CONFIRM] = "确定", [_L_CANCEL] = "取消", @@ -65,17 +65,18 @@ const char * const lang_zh_Hans[_L_COUNT] = { [_L_READ_FILE_FAILED] = "读取文件失败", [_L_INPUT_FOLDER_NAME] = "输入文件夹名:", [_L_INPUT_AMIIBO_NAME] = "输入amiibo名:", - [_L_DELETE] = "删除", + [_L_DELETE_FILE] = "删除 %s ?", + [_L_DELETE] = "删除...", [_L_INPUT_NEW_NAME] = "输入新名:", [_L_INVALID_INPUT] = "无效的输入", - [_L_CREATE_NEW_FOLDER] = "新建文件夹..", - [_L_CREATE_NEW_TAG] = "新建标签..", - [_L_CREATE_NEW_TAG_BATCH] = "批量创建标签..", + [_L_CREATE_NEW_FOLDER] = "新建文件夹...", + [_L_CREATE_NEW_TAG] = "新建标签...", + [_L_CREATE_NEW_TAG_BATCH] = "批量创建标签...", [_L_INPUT_TAG_NUM] = "输入标签数量:", [_L_CREATE_TOO_MANY_NUM] = "一次最多只能创建%d个标签", [_L_CREATING_TAG_BATCH] = "创建标签", [_L_CREATING_TAG_FAILED] = "写入 %s 标签失败", - [_L_RENAME] = "重命名", + [_L_RENAME] = "重命名...", [_L_OPEN_FOLDER_FAILED] = "打开文件夹失败", [_L_RENAME_FAILED] = "重命名失败", [_L_MAIN_RETURN] = "[返回]", @@ -97,35 +98,35 @@ const char * const lang_zh_Hans[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "随机(自动)", [_L_BLANK_TAG] = "空标签", [_L_APP_AMIIDB] = "Amiibo数据库", - [_L_APP_AMMIDB_BROWSER] = "查看..", - [_L_APP_AMIIDB_SEARCH] = "搜索..", - [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏..", - [_L_APP_AMIIDB_MY_TAGS] = "我的数据..", - [_L_APP_AMIIDB_SETTINGS] = "设置..", + [_L_APP_AMMIDB_BROWSER] = "查看...", + [_L_APP_AMIIDB_SEARCH] = "搜索...", + [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏...", + [_L_APP_AMIIDB_MY_TAGS] = "我的数据...", + [_L_APP_AMIIDB_SETTINGS] = "设置...", [_L_APP_AMIIDB_EXIT] = "[退出]", [_L_APP_AMIIDB_BACK] = "[返回]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "密钥文件", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "已加载", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "未加载", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "数据槽位", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存为..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存为...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[返回详情]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]", [_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:", [_L_APP_AMIIDB_MORE] = "[更多]", [_L_APP_AMIIDB_EMPTY_TAG] = "<空标签>", - [_L_APP_AMIIDB_SLOT_DELETE] = "重置..", + [_L_APP_AMIIDB_SLOT_DELETE] = "重置...", [_L_APP_AMIIDB_CONFIRM] = "确认", [_L_APP_AMIIDB_CANCEL] = "取消", [_L_APP_AMIIDB_TIPS] = "提示", - [_L_APP_AMIIDB_NEW] = "新建..", - [_L_APP_AMIIDB_EMPTY] = "清空..", - [_L_APP_AMIIDB_DELETE] = "删除..", + [_L_APP_AMIIDB_NEW] = "新建...", + [_L_APP_AMIIDB_EMPTY] = "清空...", + [_L_APP_AMIIDB_DELETE] = "删除...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "新建收藏夹:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "确认清空收藏夹?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "确认删除?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "选择收藏夹..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "选择收藏夹...", [_L_APP_AMIIDB_FAV_SUCCESS] = "收藏成功", [_L_APP_AMIIDB_FAV_FAILED] = "收藏失败", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "保存成功", @@ -135,21 +136,21 @@ const char * const lang_zh_Hans[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "拒绝", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "忽略", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "缓存", - [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 请稍后..", + [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 请稍后...", [_L_APP_CHAMELEON_CARD_SLOT] = "卡槽", [_L_APP_CHAMELEON_CARD_NICK] = "卡名", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "卡类型", - [_L_APP_CHAMELEON_CARD_DATA] = "卡数据..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高级设置..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽数量..", + [_L_APP_CHAMELEON_CARD_DATA] = "卡数据...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高级设置...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽数量...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "设置卡名成功", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "设置卡名失败", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "输入卡名:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加载..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "导出..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加载...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "导出...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "卡片初始化成功", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "文件不存在", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "文件大小不匹配", diff --git a/fw/application/src/i18n/zh_TW.c b/fw/application/src/i18n/zh_TW.c index 2efe1a8c..67f6bfa6 100644 --- a/fw/application/src/i18n/zh_TW.c +++ b/fw/application/src/i18n/zh_TW.c @@ -51,7 +51,7 @@ const char * const lang_zh_TW[_L_COUNT] = { [_L_FORMAT] = "格式化", [_L_FORMAT_STORAGE] = "格式化儲存", [_L_DELETE_ALL_DATA] = "將刪除所有資料。\n確認格式化?", - [_L_DELETING_MESSAGE] = "格式化中..", + [_L_DELETING_MESSAGE] = "格式化中...", [_L_MESSAGE] = "提示", [_L_CONFIRM] = "確定", [_L_CANCEL] = "取消", @@ -65,17 +65,18 @@ const char * const lang_zh_TW[_L_COUNT] = { [_L_READ_FILE_FAILED] = "讀取檔案失敗", [_L_INPUT_FOLDER_NAME] = "輸入資料夾名稱:", [_L_INPUT_AMIIBO_NAME] = "輸入amiibo名稱:", - [_L_DELETE] = "刪除", + [_L_DELETE_FILE] = "刪除 %s ?", + [_L_DELETE] = "刪除...", [_L_INPUT_NEW_NAME] = "輸入新名稱:", [_L_INVALID_INPUT] = "無效的輸入", - [_L_CREATE_NEW_FOLDER] = "新建資料夾..", - [_L_CREATE_NEW_TAG] = "新建標籤..", - [_L_CREATE_NEW_TAG_BATCH] = "批量創建標簽..", + [_L_CREATE_NEW_FOLDER] = "新建資料夾...", + [_L_CREATE_NEW_TAG] = "新建標籤...", + [_L_CREATE_NEW_TAG_BATCH] = "批量創建標簽...", [_L_INPUT_TAG_NUM] = "輸入標簽數量:", [_L_CREATE_TOO_MANY_NUM] = "一次最多只能創建%d個標簽", [_L_CREATING_TAG_BATCH] = "創建標簽", [_L_CREATING_TAG_FAILED] = "寫入 %s 標簽失敗", - [_L_RENAME] = "重新命名", + [_L_RENAME] = "重新命名...", [_L_OPEN_FOLDER_FAILED] = "開啟資料夾失敗", [_L_RENAME_FAILED] = "重新命名失敗", [_L_MAIN_RETURN] = "[返回]", @@ -97,35 +98,35 @@ const char * const lang_zh_TW[_L_COUNT] = { [_L_MODE_RANDOM_AUTO_GEN] = "隨機(自動)", [_L_BLANK_TAG] = "空標籤", [_L_APP_AMIIDB] = "Amiibo數據庫", - [_L_APP_AMMIDB_BROWSER] = "查看..", - [_L_APP_AMIIDB_SEARCH] = "搜索..", - [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏..", - [_L_APP_AMIIDB_MY_TAGS] = "我的數據..", - [_L_APP_AMIIDB_SETTINGS] = "設置..", + [_L_APP_AMMIDB_BROWSER] = "查看...", + [_L_APP_AMIIDB_SEARCH] = "搜索...", + [_L_APP_AMIIDB_MY_FAVORITES] = "我的收藏...", + [_L_APP_AMIIDB_MY_TAGS] = "我的數據...", + [_L_APP_AMIIDB_SETTINGS] = "設置...", [_L_APP_AMIIDB_EXIT] = "[退出]", [_L_APP_AMIIDB_BACK] = "[返回]", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "密鑰文件", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "已加載", [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "未加載", [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "數據槽位", - [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏..", - [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存爲..", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "收藏...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "保存爲...", [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[返回詳情]", [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]", [_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:", [_L_APP_AMIIDB_MORE] = "[更多]", [_L_APP_AMIIDB_EMPTY_TAG] = "<空標簽>", - [_L_APP_AMIIDB_SLOT_DELETE] = "重置..", + [_L_APP_AMIIDB_SLOT_DELETE] = "重置...", [_L_APP_AMIIDB_CONFIRM] = "確認", [_L_APP_AMIIDB_CANCEL] = "取消", [_L_APP_AMIIDB_TIPS] = "提示", - [_L_APP_AMIIDB_NEW] = "新建..", - [_L_APP_AMIIDB_EMPTY] = "清空..", - [_L_APP_AMIIDB_DELETE] = "删除..", + [_L_APP_AMIIDB_NEW] = "新建...", + [_L_APP_AMIIDB_EMPTY] = "清空...", + [_L_APP_AMIIDB_DELETE] = "删除...", [_L_APP_AMIIDB_FAV_NEW_HEAD] = "新建收藏夾:", [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "確認清空收藏夾?", [_L_APP_AMIIDB_FAV_DELETE_MSG] = "確認刪除?", - [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "選擇收藏夾..", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "選擇收藏夾...", [_L_APP_AMIIDB_FAV_SUCCESS] = "收藏成功", [_L_APP_AMIIDB_FAV_FAILED] = "收藏失敗", [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "保存成功", @@ -135,21 +136,21 @@ const char * const lang_zh_TW[_L_COUNT] = { [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "拒絕", [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "忽略", [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "緩存", - [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 請稍後..", + [_L_APP_CHAMELEON_INITIALIZING] = "初始化, 請稍後...", [_L_APP_CHAMELEON_CARD_SLOT] = "卡槽", [_L_APP_CHAMELEON_CARD_NICK] = "卡名", [_L_APP_CHAMELEON_CARD_ID] = "ID", [_L_APP_CHAMELEON_CARD_TYPE] = "卡類型", - [_L_APP_CHAMELEON_CARD_DATA] = "卡數據..", - [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高級設置..", - [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理..", - [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽數量..", + [_L_APP_CHAMELEON_CARD_DATA] = "卡數據...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "卡高級設置...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "卡槽管理...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "卡槽數量...", [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "設置卡名成功", [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "設置卡名失敗", [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "輸入卡名:", - [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加載..", - [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "導出..", - [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置..", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "加載...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "導出...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "重置...", [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "卡片初始化成功", [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "文件不存在", [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "文件大小不匹配", From 9d02de16360fe4835fdb6c7261be543f93eb3610 Mon Sep 17 00:00:00 2001 From: solosky Date: Sun, 7 Apr 2024 21:33:46 +0800 Subject: [PATCH 085/101] Auto rand. option of amiibo detail menu aligns right with new api --- .../scene/amiibo_scene_amiibo_detail_menu.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c b/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c index 58a09ba2..09c5218d 100644 --- a/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c +++ b/fw/application/src/app/amiibo/scene/amiibo_scene_amiibo_detail_menu.c @@ -125,16 +125,11 @@ static void amiibo_scene_amiibo_detail_menu_on_selected(mui_list_view_event_t ev amiibo_scene_amiibo_detail_no_key_msg(app); return; } - char txt[32]; settings_data_t *p_settings = settings_get_data(); p_settings->auto_gen_amiibo = !p_settings->auto_gen_amiibo; - snprintf(txt, sizeof(txt), "%s [%s]", getLangString(_L_AUTO_RANDOM_GENERATION), - p_settings->auto_gen_amiibo ? getLangString(_L_ON) : getLangString(_L_OFF)); settings_save(); - string_set_str(p_item->text, txt); - - mui_scene_dispatcher_previous_scene(app->p_scene_dispatcher); + mui_list_view_item_set_sub_text(p_item, (p_settings->auto_gen_amiibo ? getLangString(_L_ON_F) : getLangString(_L_OFF_F))); } break; case AMIIBO_DETAIL_MENU_REMOVE_AMIIBO: { @@ -160,13 +155,11 @@ void amiibo_scene_amiibo_detail_menu_on_enter(void *user_data) { mui_list_view_add_item(app->p_list_view, 0xe1c5, getLangString(_L_RANDOM_GENERATION), (void *)AMIIBO_DETAIL_MENU_RAND_UID); - - char txt[32]; settings_data_t *p_settings = settings_get_data(); - snprintf(txt, sizeof(txt), "%s [%s]", getLangString(_L_AUTO_RANDOM_GENERATION), - p_settings->auto_gen_amiibo ? getLangString(_L_ON) : getLangString(_L_OFF)); - mui_list_view_add_item(app->p_list_view, 0xe1c6, txt, (void *)AMIIBO_DETAIL_MENU_AUTO_RAND_UID); + mui_list_view_add_item_ext(app->p_list_view, 0xe1c6, getLangString(_L_AUTO_RANDOM_GENERATION), + (p_settings->auto_gen_amiibo ? getLangString(_L_ON_F) : getLangString(_L_OFF_F)), + (void *)AMIIBO_DETAIL_MENU_AUTO_RAND_UID); mui_list_view_add_item(app->p_list_view, 0xe1c7, getLangString(_L_DELETE_TAG), (void *)AMIIBO_DETAIL_MENU_REMOVE_AMIIBO); mui_list_view_add_item(app->p_list_view, 0xe068, getLangString(_L_BACK_TO_DETAILS), From 198007d2d8ef0f02404350674ef41d655ab6228f Mon Sep 17 00:00:00 2001 From: solosky Date: Sun, 7 Apr 2024 21:41:18 +0800 Subject: [PATCH 086/101] fixed #242: not set correct font when toast draw message --- fw/application/src/mui/view/mui_toast_view.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/application/src/mui/view/mui_toast_view.c b/fw/application/src/mui/view/mui_toast_view.c index 419f5487..0b5001b7 100644 --- a/fw/application/src/mui/view/mui_toast_view.c +++ b/fw/application/src/mui/view/mui_toast_view.c @@ -19,6 +19,7 @@ static void mui_toast_timer_handler(void *p_context) { static void mui_toast_view_on_draw(mui_view_t *p_view, mui_canvas_t *p_canvas) { mui_toast_view_t *p_toast_view = (mui_toast_view_t *)p_view->user_data; const char *msg = string_get_cstr(p_toast_view->message); + mui_canvas_set_font(p_canvas, u8g2_font_wqy12_t_gb2312a); if (p_toast_view->is_visible && string_size(p_toast_view->message) > 0) { uint8_t mw = mui_canvas_get_width(p_canvas) - 16; uint8_t th = mui_element_text_height(p_canvas, mw, msg); From e409cd4a1e065d4b740b0b4403b831db60baffc5 Mon Sep 17 00:00:00 2001 From: MayanKoyote <43220515+MayanKoyote@users.noreply.github.com> Date: Sun, 7 Apr 2024 19:51:22 +0500 Subject: [PATCH 087/101] Add files via upload --- fw/application/Makefile | 1 + fw/application/src/i18n/language.c | 9 +- fw/application/src/i18n/language.h | 2 + fw/application/src/i18n/ru_RU.c | 170 ++ .../src/mui/u8g2_font_wqy12_t_gb2312a.c | 2527 +++++++++-------- fw/data/i18n.csv | 336 +-- fw/data/wenquanyi_9pt_u8g2.bdf | 1433 +++++----- 7 files changed, 2292 insertions(+), 2186 deletions(-) create mode 100644 fw/application/src/i18n/ru_RU.c diff --git a/fw/application/Makefile b/fw/application/Makefile index 523a3e72..794dcb5a 100644 --- a/fw/application/Makefile +++ b/fw/application/Makefile @@ -305,6 +305,7 @@ SRC_FILES += \ $(PROJ_DIR)/i18n/nl_NL.c \ $(PROJ_DIR)/i18n/pt_BR.c \ $(PROJ_DIR)/i18n/pt_PT.c \ + $(PROJ_DIR)/i18n/ru_RU.c \ $(PROJ_DIR)/i18n/language.c \ $(PROJ_DIR)/hal/hal_nfc_t2t.c \ $(PROJ_DIR)/amiidb/db_amiibo.c \ diff --git a/fw/application/src/i18n/language.c b/fw/application/src/i18n/language.c index 7e861989..0c1c0be3 100644 --- a/fw/application/src/i18n/language.c +++ b/fw/application/src/i18n/language.c @@ -8,10 +8,11 @@ typedef struct { const LanguageData const languageData[LANGUAGE_COUNT] = { [LANGUAGE_ZH_HANS] = {.strings = lang_zh_Hans}, [LANGUAGE_EN_US] = {.strings = lang_en_US}, [LANGUAGE_ZH_TW] = {.strings = lang_zh_TW}, [LANGUAGE_ES_ES] = {.strings = lang_es_ES}, - [LANGUAGE_IT_IT] = {.strings = lang_it_IT}, [LANGUAGE_HU_HU] = {.strings = lang_hu_HU}, - [LANGUAGE_DE_DE] = {.strings = lang_de_DE}, [LANGUAGE_FR_FR] = {.strings = lang_fr_FR}, - [LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, [LANGUAGE_PT_BR] = {.strings = lang_pt_BR}, + [LANGUAGE_IT_IT] = {.strings = lang_it_IT}, [LANGUAGE_HU_HU] = {.strings = lang_hu_HU}, + [LANGUAGE_DE_DE] = {.strings = lang_de_DE}, [LANGUAGE_FR_FR] = {.strings = lang_fr_FR}, + [LANGUAGE_NL_NL] = {.strings = lang_nl_NL}, [LANGUAGE_PT_BR] = {.strings = lang_pt_BR}, [LANGUAGE_JA_JP] = {.strings = lang_ja_JP}, [LANGUAGE_PT_PT] = {.strings = lang_pt_PT}, + [LANGUAGE_RU_RU] = {.strings = lang_ru_RU}, }; // 当前语言设置 (Current language setting) @@ -55,6 +56,8 @@ const char *getLangDesc(Language lang) { return "日本語"; } else if (lang == LANGUAGE_PT_PT) { return "Português(Portugal)"; + } else if (lang == LANGUAGE_RU_RU) { + return "Русский"; } else { return "@@LANG@@"; } diff --git a/fw/application/src/i18n/language.h b/fw/application/src/i18n/language.h index 42a2bb72..eaca12f5 100644 --- a/fw/application/src/i18n/language.h +++ b/fw/application/src/i18n/language.h @@ -23,6 +23,7 @@ typedef enum { LANGUAGE_JA_JP, LANGUAGE_PT_PT, LANGUAGE_IT_IT, + LANGUAGE_RU_RU, LANGUAGE_COUNT } Language; @@ -38,6 +39,7 @@ extern const char* lang_pt_BR[_L_COUNT]; extern const char* lang_ja_JP[_L_COUNT]; extern const char* lang_pt_PT[_L_COUNT]; extern const char* lang_it_IT[_L_COUNT]; +extern const char* lang_ru_RU[_L_COUNT]; // 获取字符串的函数 (Get language string function) const char* getLangString(L_StringID stringID); diff --git a/fw/application/src/i18n/ru_RU.c b/fw/application/src/i18n/ru_RU.c new file mode 100644 index 00000000..5ed9aa04 --- /dev/null +++ b/fw/application/src/i18n/ru_RU.c @@ -0,0 +1,170 @@ +#include "string_id.h" +const char * const lang_ru_RU[_L_COUNT] = { + [_L_ON] = "Вкл", + [_L_OFF] = "Выкл", + [_L_ON_F] = "[Вкл]", + [_L_OFF_F] = "[Выкл]", + [_L_BACK] = "[Назад]", + [_L_ERR] = "Ошибка", + [_L_ERR_CODE] = "Код ошибки", + [_L_APP_AMIIBO] = "Эмулятор Amiibo", + [_L_APP_AMIIBOLINK] = "AmiiboLink", + [_L_APP_BLE] = "Передача файлов", + [_L_APP_BLE_TITLE] = "по Bluetooth", + [_L_APP_PLAYER] = "Видеоплеер", + [_L_APP_SET] = "Настройки", + [_L_APP_SET_VERSION] = "Версия", + [_L_APP_SET_STORAGE_USED] = "Занято", + [_L_APP_SET_STORAGE] = "Накопитель", + [_L_APP_SET_OLED_CONTRAST] = "Контрастность", + [_L_APP_SET_OLED_CONTRAST_TITLE] = "Контраст OLED", + [_L_APP_SET_LCD_BACKLIGHT] = "Подсветка", + [_L_APP_SET_LCD_BACKLIGHT_TITLE] = "Яркость подсветки", + [_L_APP_SET_ANIM] = "Анимация меню", + [_L_APP_SET_LIPO_BAT] = "Батарея LiPO", + [_L_APP_SET_SHOW_MEM_USAGE] = "Статус памяти", + [_L_APP_SET_HIBERNATE] = "Гибернация", + [_L_APP_SET_SLEEP_TIMEOUT] = "Таймаут сна", + [_L_APP_SET_LANGUAGE] = "Язык", + [_L_APP_SET_DFU] = "Обновление ПО", + [_L_APP_SET_REBOOT] = "Перезагрузка", + [_L_APP_SET_RESET_DEFAULT] = "Сброс настроек", + [_L_APP_SET_RESET_DEFAULT_SUCCESS] = "Сброс выполнен", + [_L_APP_SET_RESET_DEFAULT_CONFIRM] = "Выполнить?", + [_L_15S] = "15 секунд", + [_L_30S] = "30 секунд", + [_L_45S] = "45 секунд", + [_L_1MIN] = "1 минута", + [_L_2MIN] = "2 минуты", + [_L_3MIN] = "3 минуты", + [_L_AMIIBO_KEY_UNLOADED] = "Отсутствует файл ключа", + [_L_UPLOAD_KEY_RETAIL_BIN] = "Поместите key_retail.bin\n в корень накопителя", + [_L_KNOW] = "[Понятно]", + [_L_RANDOM_GENERATION] = "Сгенерировать UUID", + [_L_AUTO_RANDOM_GENERATION] = "Автогенерация", + [_L_SHOW_QRCODE] = "QR-код", + [_L_DELETE_TAG] = "Удалить тег", + [_L_DELETE_TAG_CONFIRM] = "Удалить %s?", + [_L_BACK_TO_DETAILS] = "[Назад к деталям]", + [_L_BACK_TO_FILE_LIST] = "[Назад к списку]", + [_L_BACK_TO_MAIN_MENU] = "[В главное меню]", + [_L_FORMAT] = "Отформатировать", + [_L_FORMAT_STORAGE] = "Форматирование", + [_L_DELETE_ALL_DATA] = "Это удалит все данные.\nВыполнить?", + [_L_DELETING_MESSAGE] = "Форматирование...", + [_L_MESSAGE] = "Сообщение", + [_L_CONFIRM] = "Да", + [_L_CANCEL] = "Отмена", + [_L_BACK_TO_LIST] = "[Назад к списку]", + [_L_NOT_MOUNTED] = "==[Не подключён]==", + [_L_MOUNTED_LFS] = "==Подключён[LFS]==", + [_L_MOUNTED_FFS] = "==Подключён[FFS]==", + [_L_TOTAL_SPACE] = "Ёмкость", + [_L_AVAILABLE_SPACE] = "Свободно", + [_L_NOT_AMIIBO_FILE] = "Этот файл не Amiibo", + [_L_READ_FILE_FAILED] = "Ошибка чтения файла", + [_L_INPUT_FOLDER_NAME] = "Задайте имя папки:", + [_L_INPUT_AMIIBO_NAME] = "Задайте имя Amiibo:", + [_L_DELETE_FILE] = "Удалить %s?", + [_L_DELETE] = "Удалить...", + [_L_INPUT_NEW_NAME] = "Задайте новое имя:", + [_L_INVALID_INPUT] = "Недопустимый ввод", + [_L_CREATE_NEW_FOLDER] = "Создать новую папку...", + [_L_CREATE_NEW_TAG] = "Создать новый тег...", + [_L_CREATE_NEW_TAG_BATCH] = "Создать группу тегов...", + [_L_INPUT_TAG_NUM] = "Задайте число тегов:", + [_L_CREATE_TOO_MANY_NUM] = "За раз можно создать\n не более %d тегов", + [_L_CREATING_TAG_BATCH] = "Создание тега", + [_L_CREATING_TAG_FAILED] = "Ошибка создания тега %s", + [_L_RENAME] = "Переименовать...", + [_L_OPEN_FOLDER_FAILED] = "Ошибка открытия папки", + [_L_RENAME_FAILED] = "Ошибка переименования", + [_L_MAIN_RETURN] = "[Назад]", + [_L_RANDOM_MODE_MANUAL] = "Ручная генерация UUID", + [_L_RANDOM_MODE_AUTO] = "Автогенерация UUID", + [_L_SEQUENCE_MODE] = "Последовательный", + [_L_READ_WRITE_MODE] = "Чтение-запись", + [_L_AMIIBOLINK_V1] = "V1", + [_L_AMIIBOLINK_V2] = "V2", + [_L_AMILOOP] = "AmiLoop", + [_L_MODE] = "Режим", + [_L_AUTO_RANDOM] = "Автогенерация", + [_L_COMPATIBLE_MODE] = "Совместимость", + [_L_TAG_DETAILS] = "[Назад к деталям]", + [_L_MAIN_MENU] = "[В главное меню]", + [_L_MODE_RANDOM] = "Ручная генерация", + [_L_MODE_CYCLE] = "Последовательный", + [_L_MODE_NTAG] = "Чтение-запись", + [_L_MODE_RANDOM_AUTO_GEN] = "Автогенерация", + [_L_BLANK_TAG] = "Пустой тег", + [_L_APP_AMIIDB] = "База данных Amiibo", + [_L_APP_AMMIDB_BROWSER] = "Обозреватель...", + [_L_APP_AMIIDB_SEARCH] = "Поиск...", + [_L_APP_AMIIDB_MY_FAVORITES] = "Моё избранное...", + [_L_APP_AMIIDB_MY_TAGS] = "Мои Amiibo...", + [_L_APP_AMIIDB_SETTINGS] = "Настройки...", + [_L_APP_AMIIDB_EXIT] = "[Выход]", + [_L_APP_AMIIDB_BACK] = "[Назад]", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY] = "Ключ", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED] = "Загружен", + [_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED] = "Отсутствует", + [_L_APP_AMIIDB_SETTINGS_SLOT_NUM] = "Число ячеек", + [_L_APP_AMIIDB_DETAIL_FAVORITE] = "В избранное...", + [_L_APP_AMIIDB_DETAIL_SAVE_AS] = "Сохранить как...", + [_L_APP_AMIIDB_DETAIL_BACK_DETAIL] = "[Назад к деталям]", + [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Назад к списку]", + [_L_APP_AMIIDB_SEARCH_HEAD] = "Поиск:", + [_L_APP_AMIIDB_MORE] = "[Дальше...]", + [_L_APP_AMIIDB_EMPTY_TAG] = "<пустой тег>", + [_L_APP_AMIIDB_SLOT_DELETE] = "Сброс...", + [_L_APP_AMIIDB_CONFIRM] = "Да", + [_L_APP_AMIIDB_CANCEL] = "Отмена", + [_L_APP_AMIIDB_TIPS] = "Внимание", + [_L_APP_AMIIDB_NEW] = "Новая папка...", + [_L_APP_AMIIDB_EMPTY] = "Очистить...", + [_L_APP_AMIIDB_DELETE] = "Удалить...", + [_L_APP_AMIIDB_FAV_NEW_HEAD] = "Новая папка избранного:", + [_L_APP_AMIIDB_FAV_EMPTY_MSG] = "Выполнить удаление\n избранного?", + [_L_APP_AMIIDB_FAV_DELETE_MSG] = "Выполнить удаление?", + [_L_APP_AMIIDB_FAV_SELECT_FOLDER] = "Выбрать папку избранного...", + [_L_APP_AMIIDB_FAV_SUCCESS] = "Добавлено", + [_L_APP_AMIIDB_FAV_FAILED] = "Ошибка добавления", + [_L_APP_AMIIDB_SLOT_SAVE_SUCCESS] = "Сохранено", + [_L_APP_AMIIDB_SLOT_SAVE_FAILED] = "Ошибка сохранения", + [_L_APP_CHAMELEON] = "Эмулятор карт", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL] = "Разрешена", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED] = "Запрещена", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE] = "Игнорируется", + [_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW] = "В кэш", + [_L_APP_CHAMELEON_INITIALIZING] = "Инициализация...", + [_L_APP_CHAMELEON_CARD_SLOT] = "Ячейка", + [_L_APP_CHAMELEON_CARD_NICK] = "Название", + [_L_APP_CHAMELEON_CARD_ID] = "ID", + [_L_APP_CHAMELEON_CARD_TYPE] = "Тип", + [_L_APP_CHAMELEON_CARD_DATA] = "Данные...", + [_L_APP_CHAMELEON_CARD_ADVANCED] = "Дополнительно...", + [_L_APP_CHAMELEON_CARD_SLOT_SETTINGS] = "Управление ячейками...", + [_L_APP_CHAMELEON_CARD_SLOT_NUM] = "Число ячеек...", + [_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS] = "Название задано", + [_L_APP_CHAMELEON_CARD_SET_NICK_FAILED] = "Недопустимое название", + [_L_APP_CHAMELEON_CARD_INPUT_NICK] = "Задайте название карты:", + [_L_APP_CHAMELEON_CARD_DATA_LOAD] = "Загрузка...", + [_L_APP_CHAMELEON_CARD_DATA_SAVE] = "Сохранение...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY] = "Сброс...", + [_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS] = "Данные сброшены", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND] = "Файл не обнаружен", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH] = "Файл несоразмерен", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED] = "Ошибка загрузки файла", + [_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS] = "Данные загружены", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME] = "Задайте имя файла:", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED] = "Ошибка сохранения файла", + [_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS] = "Данные сохранены", + [_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE] = "Заказной режим", + [_L_APP_CHAMELEON_CARD_GEN1A_MODE] = "Gen1A", + [_L_APP_CHAMELEON_CARD_GENERATE_UID] = "Сгенерировать UID", + [_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS] = "UID сгенерирован", + [_L_APP_CHAMELEON_CARD_GEN2_MODE] = "Gen2", + [_L_APP_CHAMELEON_CARD_WRITE_MODE] = "Запись", + [_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT] = "Недопустимый ввод", + [_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM] = "Тип карты изменен.\nСбросить данные карты?", +}; diff --git a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c index edcbff38..86228c04 100644 --- a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c +++ b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c @@ -1,1253 +1,1274 @@ - -#include "mui_u8g2.h" - -#include "u8x8.h" - - -/* - Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--12-120-75-75-P-119-ISO10646-1 - Copyright: (null) - Glyphs: 1552/30503 - BBX Build Mode: 0 -*/ -#ifdef U8G2_USE_LARGE_GB2312_FONT -const uint8_t u8g2_font_wqy12_t_gb2312a[39601] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") = - "\20\0\3\2\4\4\4\4\5\14\15\0\376\10\376\12\377\1d\2\332\5n \5\0\230\26!\7\221\212" - "\26\247\0\42\7\64\371\26\221)#\16\226\210\67Q\313\260D\275\14K\324\2$\17\245xV\331RQ" - "\62QK\224\312\26\1%\20\226x\66Q\322EK\302\64\211\222.Z\2&\16\205\210VY\22%Y" - "eJ\242H\11'\6\61\372\25\3(\13\263yVI\224D\335\242,)\14\263y\26Y\224E]\242" - "$\2*\14u\210V\225\312AY\232\42\0+\13w\210xqm\30\262\270\6,\7\62z\26\212\2" - "-\7\25\310\26\203\0.\6!\212\25\2/\14\304xvMY)+e\65\0\60\12\205\210\66K\346" - "[\262\0\61\11\205\210\26c\237\6\1\62\13\205\210\66K\26\326\332\6\1\63\15\205\210\26C\32&k" - "\30\16\12\0\64\16\206\210wZ\22u\311\222aL\23\0\65\15\205\210\26C\22\206C\32\206\203\2\66" - "\15\205\210\66K\30\16IfK\26\0\67\13\205\210\26\203X\13\263\260\4\70\15\205\210\66K\246%K" - "fK\26\0\71\15\205\210\66KfK\206PK\26\0:\7a\210\22\222\0;\11\202z\26C\254(" - "\0<\10\225\210\226Y\327\16=\10\65\270\26\203:\10>\11\225\210\26i\267\216\0\77\15\225\210\66K" - "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" - "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" - "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" - "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" - "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" - "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" - "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX[" - "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256" - "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d" - "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D" - "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z" - "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V" - "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205" - "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210" - "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210" - "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i" - "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222" - "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226" - "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm" - "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE" - "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e" - "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT" - "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311" - "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X" - "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17" - "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266" - "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314" - "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210" - "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22" - "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V" - "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361" - "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c" - "\62$\0\366\13\205\210\66u`\311\334\222\5\372\13\225\210vu \363\226\14\1\374\12\205\210\66\345\314" - "[\62\4\0\0\0\70N\11\7\270P\31\12 SN\12fWO\12P\134B\12\200`o\12\231e" - "\317\13Pl\21\12\267t\366\13\14|s\12\257\202\371\12\375\214\23\12\343\224\303\13\63\377\377\1M\14" - "\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311\2 \23\10\33\311\34\17\2 \34" - "\13E\376<\221\224(C\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13" - "D\213\30\273x\34" - "\273x\134\311\260\225\262R\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a" - "\32\246a\66,i\224\14Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321" - "p\210\243b\224\225\222,\211\264h\323r,G\24\0WO\32\273x\134\71\226\14C\224F\203\26V" - "C\61S\62\245\64\265\3\71\226\1WP\27\273x\274\71\20\25\243bTKz\333\322x\70\347X:" - "\34\4WW\35\273x\134a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\16d\241\32W" - "[\32\273x\134\71\26\15Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y" - "\34\246\321p\320\221(+eM\331\22%b\222c\361\60\4W\213\37\273x<\303\224%Q\222%Q" - "\222\14\203\222%Q\222%a\24\231s\340\220\3\351p\20W\316\33\273x<\261\24'\245\341\255\264\64" - "%]\224DR\232\224D\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213" - "&F\232R\223\22\71\13W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10" - "X\2\32\273x\134\255Imx\207\224aH\242\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134" - "\265\312\60D\225\312\240\24\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224" - "E\311p\314\262\341\240U\243Z\62(q:\34\4X\203\36\273x\134a\232\14C\224%\321p\220j" - "\245A\213\262L\31\24\61\311\201(\311D\1X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p" - "\220\232\224AQ\343\341\2X\231\37\273x\32\273x\274" - "\351pPs *F\265\244\267-Lr K\323A\7\22\0YG\33\273x\274\361pMr \313" - "\206\203\216\204\203\22fI\70(\71\226C\22\0YH\27\273x\274\351p\320\252%ePtt\70\347" - "@Tk\311\304\0YO\31\273x\274\361p\215\207\203V\35\206H\313\244a\210\223\34\310BU\1Y" - "V\33\273x\34Q\26&\321\240%RfR\262\70\321\241t\70\210I\254I: YW\32\273x\234" - "\361p\320\302pX\22%\316\6\71\7\36\304\34\12\303aP\0Ye\31\273x\234\71\360\224t\212\246" - "h\70ES\245\313p\20\223\34\310\262uYs\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351" - "H\244\255\11\0Yy\36\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11\223" - "Fu\20Y}\33\273x\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202" - " \273x\134\71\226#\203\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y\231" - "\34\273x\134a\32f\203\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x<" - "\331\260d\341\60\204IeX\232\223&)i\222\22Q)%QI\12\7Y\306 \273x<\331 e" - "R\62$MI-J\206S\42%Q\322$e\231\62H\305$\7\24\0Y\313 \273x\134a\32f" - "\203\22eI-J\206!\211r \211\6I\312\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65" - "\15S\226T\246\244S\322)\351\26%\233\22e\221T\34\6Z\1 \273x\374@\222#Q\62\34\222" - "\64L\226(\211Z\206!\211\222N\221\224H\221\262Da\0Z\3\34\273x\134a\32fC\62HI" - "\26&\303)\13\223,\215\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245" - "\27KT\311\264$\314\222,\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211" - "\322\242$\203\222(}JZ\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI" - "\42)\345\244\62hQ\226)\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7" - "\65\307r,G\352P\14[W\31\273x\274\361pHrD\32\224\34\310\241t\70\250\71\226c\71\262" - "\2[X\31\273x\234\361p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\31\272y<" - "QVJ\242\341\240#\321\260#\71\22\16\207\64\207r`\4[i\33\273x\34\203\24'\303\24\246Y" - "\224)C\64F\265(\213\212\225\266J$\6[\203\30\273x\274\361pHrDJ\303\34\213\326\35\311" - "\261\70\213\303a\10[\210\31\273x\274\71\230\16\207$\7\222\64\35\356@\234\345@\224c\71\62\2[" - "\211\30\273x\274\361pHrD\13\323x\70hU-\7v$\322V\1[\214\33\273x\274\361pH" - "rD\32\224\34\36\16a\222\3Q\16DY\224U\322![\230\32\273x\274\361pHrD\32\206\260" - ":\254\71\66\14a\32\16C\230&\0[\232\33\273x\274\361pHrDG\262a\220s \312\201h" - "\10\243\70\251f\303\20[\235\32\273x\234\71\230\16\357P\64\14\71\220c\71p\310\201$G\242h\70" - "\10[\236\31\273x\334\351pH\312Z\22eu J\207C\234CI\16d\331*[\242\30\272y\234" - "\351p\220\322h\330\222(\313dI\32\16Q\330\70L\0[\243\31\273x\274\351\360\16E\303\220S\206" - "!L\303a\10\323p\30\242\341 [\244\32\273x\274\351\360\16)\303\220\204\71\224\245\203\222\3\71p" - "\310\201t\70\10[\253\30\272y\234\351p\320\221h\30\213\303\16\17\203\24G\303 \305\11\0[\263\32" - "\273x\274\351\360\30*\303\220\244\71p\310\201t\70Hi\230\206\303\20\1[\264\31\272y\234\351pP" - "\302D\31\226(\14\207\71\35\16Q\26\17\331\220\15[\266\31\273x\274\351\360\16)\303\220dIVi" - "\215DeI\243\222VT\1[\271\30\273x\274\351\360\224E\335\242$\12\263\264\244\14\212V\316\342A" - "\3[\275\32\273x\274\351\360\224E\311p\314\322a\10\243bTL\272E\331\20\16\1[\304\32\273x" - "\274\351\360\30*\303\220d\265\341\240#\341\20\205Qq\210rd\2[\306\32\273x\274\351\360V\351-" - "jL\242dH\6%\315\201\250\30\25\207!\2[\314\30\273x\274\351\360\16E\303\220\16r\26\16\247" - "\254\64\234\262\322p\1[\337\35\273x\274\351\360\222e\312\220\14\211\22%Q\22V\206$\321\221d\270" - "E%\233\0[\353\31\273x\274\351\360\226*\322\22\245\341\62\246\341pP\232*=%\211\2[\371\33" - "\273x\374H\64\204\351p\12\263$,\25\263$K\302,\11\243\64\311\241\14[\373\33\273x<\303\240" - "c\341\60\344X\66\14:\224\15\7)\214\263\34\251C!\0[\374\35\273x\134\303\20\246\341\60$Q" - "\16d\303\240\3\331p\320\352@\224\3Q\16i\0\134\4\34\273x\134q\64hQV\32\16IV\32" - "\246ZR\31\266R\26e\225LR\0\134\6\34\273x\134Y\34\15J\251\246$j\226\204QM\31\6" - "%*fI\230\206\241\4\134\7\37\273x|\305$\32\224\236\222(\211\206,\11\243\312pPJ-Y" - "\22%i\22e\13\0\134\15\35\273x\134I\230t\212\24-\31\16R\22F\203R\14\245A\13\323p" - "\251\254\21\0\134\16\35\273x\34a\224%\303 V\244!\211*CTL\222\341\216D\303A\13\343H" - "\2\134\17\30\273x\274\71\226c\71\20\25\243,\312JY(Vs\244\16\305\0\134\21\32\273x\274\71" - "\226#\245\64\311Ja\222E\71\220\344P\16\345\210\274#\0\134\24\30\272y\134\71\64\14J\16\210Q" - "\134J\302\250-\252eb\226\215\0\134$\32\273x\234Q\16dq<\34\304$G\352@\224\3Q\234" - "U\302L\36\2\134\61\36\273x|\265a\251#Q\62\34\222(\251\15I\65J\262D\351EI\244J" - "I\311\4\134<\33\273x\134\303\240\305Y\234\15\203\226cI\230%\221\230\254Q\232D\251\70\14\134=" - "\31\273x\134\303\20\246a\32\16C\230\305aI\312\302(\211\324:\30\2\134>\33\273x\134\303\240\305" - "\331\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\36\273x\134\303\240\305\331\60h\71\66" - "\234r J\206\250\22U\242!J\242\222\16(\0\134B\33\273x\134\303\240\305\331\60h\71\226\14[" - "\216\15\247,\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226" - "\204Q\64,Y\230\0\134O\31\273x\134\303)\7\242\341\224\204YT\34N\215\303\251-\312\242b\4" - "\134U\31\273x<\303)\7\242\341\324\70\234\32\207CRj\311\244JT\22\5\134^\37\273x<\303" - ")\7\242\341\224\3Q\62la\232\14C\224D\225d\70$Y\246$C\42\134q\27\271y\234\71\22" - "f\231\226i\231\226i\231\226i\331p\320\201\0\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$J\262$+EZ\224DI\224" - "\204\1e\77\37\273x\374@\66,q\66d\221\22%K)\311\222(\311\222(\11\263d\212\306$\326" - "\2eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224eC\224D\321\26eH\35\273" - "x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212Z\0eL\34\273x|R" - "\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO\37\273x\34\273x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\35\273" - "x\374@\66$\203\22e\245,\33\236\302(\32NI\24\15Q\222c\71\62\1fZ\36\273x\274\351" - "\64DI)K\206AYJI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246" - "\341\60\204i\66\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262" - "\244i\70\350\360\60\204i\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220" - "DI\244\14C\226f\303\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15" - "I\24\16C\230\206\303\20\246\341\60D\0f\227\36\273x\374@\66<%Y\22U\242\341)\7\242d" - "P\206$K\242d\220\263xP\0f\362\27\272y|Q\34e\303A*I%\251\64<\225\244\322\360" - "\216\4f\364\31\273x<\303!\216\207A+e\303\240\225\262aP\223\34\312\21\333:f\370\33\273x" - "\134\303\220\3Q\64\34\324(\33\316\351p\220\322p\30\302\64\34\206\10f\374\32\272y\134\303\230Da" - "\224D\303A*\15\7\35\35\326(\7\304!\32\2f\376\31\271y\134\265\341 EK\313p\310\261a" - "\210\322h\30\242\64\32\206\4g\0\33\273x\134\303\20\246\341\60\204i\64\34\224(\7\236*Q\64D" - "\246H\236\4g\10\32\271y\134\303\20\245Q\32\15C\224Fi\64\14Q\32\245I\230\310\11\0g\11" - "\30\273x\234\361p\320rl\30\305,\31\246b:\254a\32\246\231\4g\13\36\273x\33\273x|\265a\211\263!\31\222,G*C\226c\321\60e" - "IOMK\30kL\37\273x\34\227\34\210\262%\32\224\266aP\342,Z\262()%\311\22%i" - "\222ec\0kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205\303!kc\32\253x" - "\34\17j\216\345@\224\3\321\240E\71\20\345@\224\3Q:\34\4kd\36\273x|\345,\316\242\244" - "\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\31\273x\274\71\20\15Z\224\3Q" - ":\34\324\34\251\225ji\216\210\203\14kw\34\273x<\303!\311J\211\244EY\66\34\222(\253\234" - "\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%R\245\16Dq\26\25\243y" - "k\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301\33\273" - "x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303\20&" - "Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(\32\326" - "$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i\70(" - "Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27\273x" - "\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\31\272y\34/\71\220\344@\62\134\262" - "\64K\207\203XJ\62%\213\326\1l\24\32\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224\3" - "Q\216\324!\1l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302," - "l\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30" - "\17Y\34ECRN\344(I\243ZmJr(\6lB\32\273x\274Q\16d\311pPs \252" - "&u`\7\222jT\322\62Q\5lI\33\273x<\71\220%\303 fQR\13\223\254%\314\222H" - "\15+YS\242\6l_\32\273x<\71\30\15J\34&Y\234\245a\32fj\230\206\311\60(\71\4" - "l`\37\273x\35\273x<\261\226\14\71\20n\311\226(\305\244SR\61%\265(\211Z\242J$\5m" - "A\32\273x\34ie\30\324Z\313\60dq\226\64II-J:%=E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222" - "\205\311\240\345\330pQ\242HI\206!J\242\226a\10y\273\33\273x\274\351p\220\222\306\250\230\64\16" - "C\16\304\303\251%J\6%\212\25\0y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312" - "\60D\305(G\0y\315\33\273x|R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314" - "\0y\321\34\273x|b\262EY\230$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33" - "\273x|\265\61\215\222\312\220\224Z\242d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270" - "\305\321p\220\32\303\245IJz*iQ\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J" - "\230DC\242eJ\224\324\322\60\332\0z\13\36\273x|\311\240LY)K\206d\320rL\31$%" - "\12\245A)\246a\232\14C\0z\15\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224" - "\6-\312JY)R\0z.\34\273x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264" - "\60M\206!z\61\35\273x|\241\62M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244" - "\0z\77\36\273x|R\66\15S\26%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5z" - "v\30\273x\274\351\360\224E\325,\12\323\34\31v \212\263\250\30\315\3zz\30\273x\274\361pH" - "rD\213\342\60\223\303a\7r,\307\342\341\20z\177\32\273x\274\351\360\224EJ\232$\303 f\351" - "pMr \212\263P\32\1z\201\31\273x\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223" - "t@z\227\36\272y\274\341pP\302\244\224%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0" - "z\313\30\273x\274\71\230\16\207\234\20\246a\34\345@\224\3I\216\205\303Az\326\36\273x|\311 " - "%\265(\211\222,\311\302$J\322$\223\323\341\230\345@\22\16\7\1z\331\34\273x\65" - "&\215Z\0\226b\35\273x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244" - "T\226d\36\273x\34CV\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226" - "\206 \273x\34C\222F\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226" - "\217 \273x\34c\226(\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226" - "\220\42\273x\34C\62D\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207" - "\10\226\250!\273x\34CVR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22e" - "C\0\226\274\30\273x\134Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334" - "I\64DI\232\14C\64eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211" - "\206\203\224%a\244dI\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351" - "pP\242\34\70hQ\16\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203" - "\22%\225a\351\224T\206\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235" - "\42O\225NY)\213\24\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15" - "\27\0\226\366\31\273x<\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x" - "<\303\71\35\36CEI\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62" - "\234\262\322p\312J\303\71L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j" - "\211Z\22\5\227\6\34\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0" - "\227\23\34\273x<\303\71\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273" - "x<\303\71\35\236\222\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236" - "\222\322 \15I\224H\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322" - "p\220*Q\62(C\322)\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13" - "\323a\15\323a\15#\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!" - "J\244\60*&\66\0\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224AL" - "r\244\10\227`\34\273x\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227" - "b\30\272y\34\17a\216\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240" - "\225\7\35\311\201C\30\25\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360" - "RJ\222A\211\262P\32\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206" - "\303\20\246\341\60D\0\227\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i" - "\351\260)\0\230\30\36\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230" - "\204\1\230^\36\273x\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0" - "\230o\42\273x<\203\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372" - "\267\0\230u\31\273x\34\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x" - "\134\331 \245\321\240\14R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240" - "\205\225(\224\206!\252\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224" - "R\66\14J-J\272(-JE\252\224\302$\321\264\0\230\230!\273x\11\225\210\26i\267\216\0\77\15\225\210\66K" + "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" + "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" + "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" + "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" + "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" + "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" + "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX[" + "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256" + "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d" + "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D" + "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z" + "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V" + "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205" + "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210" + "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210" + "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i" + "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222" + "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226" + "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm" + "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE" + "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e" + "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT" + "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311" + "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X" + "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17" + "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266" + "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314" + "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210" + "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22" + "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V" + "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361" + "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c" + "\62$\0\366\13\205\210\66u`\311\334\222\5\371\13\225\210\66i\16d\336\222!\372\13\225\210vu " + "\363\226\14\1\374\12\205\210\66\345\314[\62\4\0\0\0\70\60\247\6\71N\272\10\241Q\267\12\220T\15" + "\12\77Y\256\12~^\267\12ib\377\13\10g\177\13\26pc\12\364xn\12\273\177:\13\23\211\217" + "\12\261\217\307\13\15\377\377\1M\14\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311" + "\2\4\1\15\245\210\66\345a\14\207\261\70\10\4\20\16\205\210VK\224D\232\66\14\231\26\4\21\15\205" + "\210\26\307pH\62\333\240\0\4\22\16\205\210\26C\222i\203\222\331\6\5\4\23\11\205\210\26\307>\2" + "\4\24\23\227xXC\26eQ\26eQ-\312\222aP\3\4\27\16\205\210\66K\26Fj\250%\13" + "\0\4\30\15\205\210\26\231\323\222(\311\244\5\4\32\17\205\210\26\231\224\224\246J\224dZ\0\4\34\21" + "\207\210\30\351\66dKE\251H\221\24\251\1\4\35\14\205\210\26\231m\30\62\267\0\4\36\13\205\210\66" + "K\346[\262\0\4\37\11\205\210\26\67\277\5\4 \15\205\210\26C\222i\203\22\66\2\4!\14\205\210" + "\66K&vK\26\0\4\42\12\205\210\26\203\24\366\11\4#\14\205\210\26\231\267d\10\7\5\4$\21" + "\207\210x\341\240D\221\24I\221T\31\304\14\4'\13\205\210\26\231[\62\204\15\4-\16\205\210\66K" + "\26&C\30j\311\2\4/\17\205\210\66\203\246%C\22%\221\246\5\4\60\13d\210\65b\62DR" + "\62\4\61\15\224\210u\211\222-\221S\242\0\4\62\15d\210\25K\64$\221\64$\0\4\63\11d\210" + "\25\203\326\15\4\64\17vxW[\222%Y\22U\206!\14\4\65\14d\210\65J\64lQ\242\0\4" + "\66\16g\210\30Q\245mK\232\42\251\0\4\67\13d\210\65JT\224\22\5\4\70\15e\210\26\231\264" + "$J\62i\1\4\71\17\225\210\66\265\34\310\244%Q\222I\13\4:\14d\210\25\221\222HII\12" + "\4;\12d\210\65K\277H\1\4<\14f\210\27\341\64D\213\307\0\4=\13d\210\25\221\64L\246" + "\0\4>\13d\210\65J\344\224(\0\4\77\11d\210\25\203\344)\4@\16\205h\26\211I\323&E" + "\11C\0\4A\13d\210\65J\244\225\22\5\4B\12e\210\26\203\24v\2\4C\14\204h\25\221\245" + "I\312\242\14\4D\23\247hxq\70(Q$ER$U\6\61\316\0\4E\14e\210\26YR\253" + "\324\264\0\4F\20ux\26Q\22%Q\22%Q\62\210\1\4G\12d\210\25\221)\331\12\4H\20" + "g\210\30Q$ER$ER\64\14\2\4I\22xx\31Q%\252D\225\250\22U\206A\7\2\4" + "K\16f\210\27\241\70DR\42%C\24\4L\14d\210\25Y\266D\322\220\0\4M\14d\210\65J" + "\24iR\242\0\4N\17f\210\27\221R\32\42%R\42\13\0\4O\14d\210\65C$%K\42\5" + "\4Q\16\204\210\25Q\252D\303\26%\12\0 \23\10\33\311\34\17\2 \34\13E\376<\221\224(C" + "\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13D\213\30\273x\34\273x\134\311\260\225\262R" + "\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a\32\246a\66,i\224\14" + "Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321p\210\243b\224\225\222," + "\211\264h\323r,G\24\0WO\32\273x\134\71\226\14C\224F\203\26VC\61S\62\245\64\265\3" + "\71\226\1WP\27\273x\274\71\20\25\243bTKz\333\322x\70\347X:\34\4WW\35\273x\134" + "a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\16d\241\32W[\32\273x\134\71\26\15" + "Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y\34\246\321p\320\221(+" + "eM\331\22%b\222c\361\60\4W\213\37\273x<\303\224%Q\222%Q\222\14\203\222%Q\222%" + "a\24\231s\340\220\3\351p\20W\316\33\273x<\261\24'\245\341\255\264\64%]\224DR\232\224D" + "\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213&F\232R\223\22\71\13" + "W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10X\2\32\273x\134\255I" + "mx\207\224aH\242\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134\265\312\60D\225\312\240\24" + "\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224E\311p\314\262\341\240U" + "\243Z\62(q:\34\4X\203\36\273x\134a\232\14C\224%\321p\220j\245A\213\262L\31\24\61" + "\311\201(\311D\1X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p\220\232\224AQ\343\341\2" + "X\231\37\273x\32\273x\274\351pPs *F\265" + "\244\267-Lr K\323A\7\22\0YG\33\273x\274\361pMr \313\206\203\216\204\203\22fI" + "\70(\71\226C\22\0YH\27\273x\274\351p\320\252%ePtt\70\347@Tk\311\304\0YO" + "\31\273x\274\361p\215\207\203V\35\206H\313\244a\210\223\34\310BU\1YV\33\273x\34Q\26&" + "\321\240%RfR\262\70\321\241t\70\210I\254I: YW\32\273x\234\361p\320\302pX\22%" + "\316\6\71\7\36\304\34\12\303aP\0Ye\31\273x\234\71\360\224t\212\246h\70ES\245\313p\20" + "\223\34\310\262uYs\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351H\244\255\11\0Yy\36" + "\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11\223Fu\20Y}\33\273x" + "\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202 \273x\134\71\226#\203" + "\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y\231\34\273x\134a\32f\203" + "\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x<\331\260d\341\60\204Ie" + "X\232\223&)i\222\22Q)%QI\12\7Y\306 \273x<\331 eR\62$MI-J\206" + "S\42%Q\322$e\231\62H\305$\7\24\0Y\313 \273x\134a\32f\203\22eI-J\206!" + "\211r \211\6I\312\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65\15S\226T\246\244S\322" + ")\351\26%\233\22e\221T\34\6Z\1 \273x\374@\222#Q\62\34\222\64L\226(\211Z\206!" + "\211\222N\221\224H\221\262Da\0Z\3\34\273x\134a\32fC\62HI\26&\303)\13\223,\215" + "\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245\27KT\311\264$\314\222" + ",\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211\322\242$\203\222(}J" + "Z\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI\42)\345\244\62hQ\226" + ")\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7\65\307r,G\352P\14" + "[W\31\273x\274\361pHrD\32\224\34\310\241t\70\250\71\226c\71\262\2[X\31\273x\234\361" + "p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\31\272y\33\273x\134\303\240\305\331\60h\241\70\310\331\220" + "\15r\66d\203\226\204\231:\10\134@\36\273x\134\303\240\305\331\60h\71\66\234r J\206\250\22U" + "\242!J\242\222\16(\0\134B\33\273x\134\303\240\305\331\60h\71\226\14[\216\15\247,\216jQ\230" + "d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226\204Q\64,Y\230\0\134" + "O\31\273x\134\303)\7\242\341\224\204YT\34N\215\303\251-\312\242b\4\134U\31\273x<\303)" + "\7\242\341\324\70\234\32\207CRj\311\244JT\22\5\134^\37\273x<\303)\7\242\341\224\3Q\62" + "la\232\14C\224D\225d\70$Y\246$C\42\134q\27\271y\234\71\22f\231\226i\231\226i\231" + "\226i\331p\320\201\0\134\201\30\272x \273x\134" + "a\234e\303\62DY\224EImJ\262$J\262$+EZ\224DI\224\204\1e\77\37\273x\374" + "@\66,q\66d\221\22%K)\311\222(\311\222(\11\263d\212\306$\326\2eE\33\273x|\345" + ",\33\226!\253\204QiPJ-Q\255\224eC\224D\321\26eH\35\273x\134a\234e\303\62D" + "I\242DY\322\26%Y\22%aKVM\212Z\0eL\34\273x|R\66\246\341p\211\262(\251" + "\205I\62HI\255\224\225\6)\251m\1eO\37\273x\34\273x\134\303\20" + "\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\35\273x\374@\66$\203\22e" + "\245,\33\236\302(\32NI\24\15Q\222c\71\62\1fZ\36\273x\274\351\64DI)K\206AY" + "JI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246\341\60\204i\66\34\222\34" + "K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262\244i\70\350\360\60\204i" + "\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220DI\244\14C\226f\303" + "\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15I\24\16C\230\206\303\20" + "\246\341\60D\0f\227\36\273x\374@\66<%Y\22U\242\341)\7\242dP\206$K\242d\220\263" + "xP\0f\362\27\272y|Q\34e\303A*I%\251\64<\225\244\322\360\216\4f\364\31\273x<" + "\303!\216\207A+e\303\240\225\262aP\223\34\312\21\333:f\370\33\273x\134\303\220\3Q\64\34\324" + "(\33\316\351p\220\322p\30\302\64\34\206\10f\374\32\272y\134\303\230Da\224D\303A*\15\7\35" + "\35\326(\7\304!\32\2f\376\31\271y\134\265\341 EK\313p\310\261a\210\322h\30\242\64\32\206" + "\4g\0\33\273x\134\303\20\246\341\60\204i\64\34\224(\7\236*Q\64D\246H\236\4g\10\32\271" + "y\134\303\20\245Q\32\15C\224Fi\64\14Q\32\245I\230\310\11\0g\11\30\273x\234\361p\320r" + "l\30\305,\31\246b:\254a\32\246\231\4g\13\36\273x\33\273x|\265a\211\263!\31\222,G*C\226c\321\60eIOMK\30kL\37" + "\273x\34\227\34\210\262%\32\224\266aP\342,Z\262()%\311\22%i\222ec\0kb\27\272" + "y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205\303!kc\32\253x\34\17j\216\345@\224\3" + "\321\240E\71\20\345@\224\3Q:\34\4kd\36\273x|\345,\316\242\244\226D\311\242%Y\230d" + "a\222\205I\26%\311\22\15\351\0ke\31\273x\274\71\20\15Z\224\3Q:\34\324\34\251\225ji" + "\216\210\203\14kw\34\273x<\303!\311J\211\244EY\66\34\222(\253\234\224>\15ITL\206\3" + "k{\30\273x\34\17Z\216\225\227\250\245$%R\245\16Dq\26\25\243yk\265\34\273x|\312\246" + "%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301\33\273x\34\213\262\204IEY" + "\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303\20&Y\30\25\323h\70HI" + "\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(\32\326$\212\206\203\324\230%\331" + "p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i\70(Y\224\15\207X\3k\324" + "\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27\273x\334\333\240c\71\66d\203" + "\216\345\330\360\216\205i\30\17\2l\21\31\272y\34/\71\220\344@\62\134\262\64K\207\203XJ\62%" + "\213\326\1l\24\32\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224\3Q\216\324!\1l\27\33" + "\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302,l\64\30\273x\274\71\226" + "c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30\17Y\34ECRN\344" + "(I\243ZmJr(\6lB\32\273x\274Q\16d\311pPs \252&u`\7\222jT\322" + "\62Q\5lI\33\273x<\71\220%\303 fQR\13\223\254%\314\222H\15+YS\242\6l_" + "\32\273x<\71\30\15J\34&Y\234\245a\32fj\230\206\311\60(\71\4l`\37\273x\35\273x<" + "\261\226\14\71\20n\311\226(\305\244SR\61%\265(\211Z\242J$\5mA\32\273x\34ie\30" + "\324Z\313\60dq\226\64II-J:%=E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222\205\311\240\345\330pQ\242" + "HI\206!J\242\226a\10y\273\33\273x\274\351p\220\222\306\250\230\64\16C\16\304\303\251%J\6" + "%\212\25\0y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312\60D\305(G\0y\315" + "\33\273x|R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314\0y\321\34\273x|b" + "\262EY\230$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33\273x|\265\61\215\222\312" + "\220\224Z\242d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270\305\321p\220\32\303\245I" + "Jz*iQ\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J\230DC\242eJ\224\324" + "\322\60\332\0z\13\36\273x|\311\240LY)K\206d\320rL\31$%\12\245A)\246a\232\14" + "C\0z\15\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224\6-\312JY)R\0" + "z.\34\273x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264\60M\206!z\61\35\273" + "x|\241\62M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244\0z\77\36\273x|R" + "\66\15S\26%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5zv\30\273x\274\351\360\224" + "E\325,\12\323\34\31v \212\263\250\30\315\3zz\30\273x\274\361pHrD\213\342\60\223\303a" + "\7r,\307\342\341\20z\177\32\273x\274\351\360\224EJ\232$\303 f\351pMr \212\263P\32" + "\1z\201\31\273x\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223t@z\227\36\272y\274" + "\341pP\302\244\224%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0z\313\30\273x\274\71\230" + "\16\207\234\20\246a\34\345@\224\3I\216\205\303Az\326\36\273x|\311 %\265(\211\222,\311\302" + "$J\322$\223\323\341\230\345@\22\16\7\1z\331\34\273x\65&\215Z\0\226b\35\273" + "x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244T\226d\36\273x\34C" + "V\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226\206 \273x\34C\222F" + "\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226\217 \273x\34c\226(" + "\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226\220\42\273x\34C\62D" + "\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207\10\226\250!\273x\34C" + "VR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22eC\0\226\274\30\273x\134" + "Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334I\64DI\232\14C\64" + "eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211\206\203\224%a\244dI" + "\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351pP\242\34\70hQ\16" + "\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203\22%\225a\351\224T\206" + "\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235\42O\225NY)\213\24" + "\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15\27\0\226\366\31\273x<" + "\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x<\303\71\35\36CEI" + "\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62\234\262\322p\312J\303\71" + "L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j\211Z\22\5\227\6\34\273" + "x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0\227\23\34\273x<\303\71" + "\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273x<\303\71\35\236\222\322" + "\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236\222\322 \15I\224H\311" + "\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322p\220*Q\62(C\322" + ")\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13\323a\15\323a\15#\0" + "\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!J\244\60*&\66\0\227" + "^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224ALr\244\10\227`\34\273x" + "\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227b\30\272y\34\17a\216" + "\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240\225\7\35\311\201C\30\25" + "\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360RJ\222A\211\262P\32" + "\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206\303\20\246\341\60D\0\227" + "\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i\351\260)\0\230\30\36\273" + "x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230\204\1\230^\36\273x\34" + "IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0\230o\42\273x<\203\62" + "$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372\267\0\230u\31\273x\34" + "\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x\134\331 \245\321\240\14R" + "\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240\205\225(\224\206!\252\305" + "IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224R\66\14J-J\272(" + "-JE\252\224\302$\321\264\0\230\230!\273x,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,, -_L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina... -_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma -_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla -_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma -_L_APP_AMIIDB_NEW,New...,新建...,新建...,Nueva...,Új...,Neu...,Nouveau...,Nieuw...,Novo...,新規...,Nuovo... -_L_APP_AMIIDB_EMPTY,Empty...,清空...,清空...,Vaciar...,Üres...,Leeren...,Vider...,Leeg...,Vazio...,空...,Svuota... -_L_APP_AMIIDB_DELETE,Delete...,删除...,删除...,Borrar...,Törlés...,Löschen...,Supprimer...,Verwijderen...,Excluir...,削除...,Cancella... -_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Fav.-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti: -_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Fav.-Ordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti? -_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Löschen Bestätigen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione? -_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder...,选择收藏夹...,選擇收藏夾...,Selec. carp. favoritos...,Kedvenc Mappa Kiválasztása...,Fav.-Ordner auswählen...,Sélectionner le Dossier Favori...,Selecteer Favoriete Map...,Selecionar Pasta Favorita...,お気に入りフォルダを選択...,Selez. cart. preferiti... -_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,Favorit erstellt ,Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto! -_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorisieren fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto! -_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta -_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita! -_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID -_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale -_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega -_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora -_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Cache,Cache,Cache,キャッシュ,Cache -_L_APP_CHAMELEON_INITIALIZING,Initializing data ...,"初始化, 请稍后...","初始化, 請稍後...",Inicializando ambiente.\nPor favor espere...,Az adatok inicializálása ...,Daten initialisieren...,Initialisation des données ...,Gegevens Initialiseren ...,Inicialização de Dados ...,データの初期化 ...,Inizializzazione ambiente.\nPer favore attendi... -_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot -_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname -_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID -_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo -_L_APP_CHAMELEON_CARD_DATA,Data...,卡数据...,卡數據...,Datos...,Adatok...,Daten...,Données...,Gegevens...,Dados...,データ...,Dati... -_L_APP_CHAMELEON_CARD_ADVANCED,Advanced...,卡高级设置...,卡高級設置...,Avanzado...,Fejlett...,Erweitert...,Avancé...,Geavanceerd...,Avançado...,詳細設定...,Avanzato... -_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings...,卡槽管理...,卡槽管理...,Configuración...,Cella Beállításai...,Steckplatz Einstellungen...,Paramètres des Emplacements...,Slot Instellingen...,Configurações de Slots...,スロット設定...,Impostazioni... -_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num...,卡槽数量...,卡槽數量...,Cant. ranuras...,Cella Száma...,Steckplatz Nummer,Numéro d'Emplacement...,Slotnummer...,Número do Slot...,スロット番号...,Num. slot... -_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich gesetzt,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito. -_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname setzen fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito! -_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitznamen eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname: -_L_APP_CHAMELEON_CARD_DATA_LOAD,Load...,加载...,加載...,Cargar...,Betöltés...,Laden...,Charger...,Laden...,Carregar...,ロード...,Carica... -_L_APP_CHAMELEON_CARD_DATA_SAVE,Save...,导出...,導出...,Guardar...,Mentés...,Speichern...,Sauvegarder...,Opslaan...,Salvar...,保存...,Salva... -_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory...,重置...,重置...,Inicializar...,Visszaállítás...,Zurücksetzen...,Rétablir Les Valeurs Par Défaut...,Terugzetten Naar Standaard...,Restaurar Padrões...,初期化...,Inizializza... -_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati! -_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato -_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße stimmt nicht überein,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta -_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden der Datei fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito -_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Datei erfolgreich geladen,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito -_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Datei Namen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file: -_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Datei speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio! -_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Datei erfolgreich gespeichert,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito -_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzerdefinierter Modus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata -_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata -_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Zufällige UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID -_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato -_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata -_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura -_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido! -_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta? +CODE,en_US,zh_Hans,zh_TW,es_ES,hu_HU,de_DE,fr_FR,nl_NL,pt_BR,ja_JP,it_IT,ru_RU +_L_ON,ON,开,開,SI,BE,AN,ACTIVÉ,AAN,LIGADO,オン,SI,Вкл +_L_OFF,OFF,关,關,NO,KI,AUS,DÉSACTIVÉ,UIT,DESLIGADO,オフ,NO,Выкл +_L_ON_F,[ON],[开],[開],[SI],[BE],[AN],[ACTIVÉ],[AAN],[LIGADO],[オン],[SI],[Вкл] +_L_OFF_F,[OFF],[关],[關],[NO],[KI],[AUS],[DÉSACTIVÉ],[UIT],[DESLIGADO],[オフ],[NO],[Выкл] +_L_BACK,Back,返回,返回,[Atrás],Vissza,Zurück,Retour,Terug,Voltar,戻る,Indietro,[Назад] +_L_ERR,Error,错误,錯誤,Error,Hiba,Fehler,Erreur,Fout,Erro,エラー,Errore,Ошибка +_L_ERR_CODE,Error Code,错误码,錯誤碼,Código error,Hibakód,Fehlercode,Code d'Erreur,Foutcode,Código de Erro,エラーコード,Codice errore,Код ошибки +_L_APP_AMIIBO,Amiibo Emulator,Amiibo模拟器,Amiibo模擬器,Emulador de amiibo,Amiibo Emulátor,Amiibo Emulator,Emulateur Amiibo,Amiibo-Emulator,Emulador de Amiibo,Amiiboエミュレータ,Emulatore Amiibo,Эмулятор Amiibo +_L_APP_AMIIBOLINK,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink,AmiiboLink +_L_APP_BLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE,Передача файлов +_L_APP_BLE_TITLE,BLE File Transfer,蓝牙传输,藍牙傳送,Transferencia BLE,BLE Fájltovábbítás,BLE Dateitransfer,Transfert de Fichiers BLE,BLE Bestandsoverdracht,Transferência de Arquivos BLE,BLEファイル転送,Trasferimento file BLE,по Bluetooth +_L_APP_PLAYER,Video Player,动画播放器,動畫播放器,Reproductor vídeo,Video Lejátszó,Videoplayer,Lecteur Vidéo,Videospeler,Reprodutor de Vídeo,ビデオプレーヤー,Lettore video,Видеоплеер +_L_APP_SET,Settings,系统设置,系統設定,Configuraciones,Beállítások,Einstellungen,Paramètres,Instellingen,Configurações,設定,Impostazioni,Настройки +_L_APP_SET_VERSION,Version,版本,版本,Versión,Verzió,Version,Version,Versie,Versão,バージョン,Versione,Версия +_L_APP_SET_STORAGE_USED,Used,已用,已用,Usado,Használt,Belegt,Utilisé,Gebruikt,Usado,使用ストレージ,Usato,Занято +_L_APP_SET_STORAGE,External Storage,外置存储,外置存儲,M. Flash,Külső Tároló,Externer Speicher,Stockage Externe,Externe Opslag,Armazenamento Externo,外部ストレージ,Memoria esterna,Накопитель +_L_APP_SET_OLED_CONTRAST,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED,Контрастность +_L_APP_SET_OLED_CONTRAST_TITLE,OLED Contrast,OLED对比度,OLED對比度,Contraste OLED,OLED Kontraszt,OLED Kontrast,Contraste OLED,OLED-Contrast,Contraste do OLED,OLEDコントラスト,Contrasto OLED,Контраст OLED +_L_APP_SET_LCD_BACKLIGHT,Backlight,背光亮度,背光亮度,Brillo,Háttérvilágítás,Beleuchtung,Rétroéclairage,Achtergrondverlichting,Luz de Fundo,バックライト,Luminosità,Подсветка +_L_APP_SET_LCD_BACKLIGHT_TITLE,Backlight Brightness,背光亮度,背光亮度,Brillo de fondo,Háttérvilágítás Fényerő,Helligkeit,Luminosité du Rétroéclairage,Helderheid Achtergrondverlichting,Brilho da Luz de Fundo,バックライトの明るさ,Luminosità schermo,Яркость подсветки +_L_APP_SET_ANIM,Menu Animation,动画效果,動畫效果,Animar menú,Menü Animáció,Menü Animation,Animation du Menu,Menu-Animatie,Animação do Menu,メニュー アニメーション,Animazione menu,Анимация меню +_L_APP_SET_LIPO_BAT,LiPO Battery,LiPO电池,LiPO電池,Batería LiPO,LiPO Akkumulátor,LiPO Batterie,Batterie LiPO,LiPO-Batterij,Bateria LiPO,LiPOバッテリー,Batteria LiPO,Батарея LiPO +_L_APP_SET_SHOW_MEM_USAGE,Memory Used,内存使用率,記憶體使用率,Mem. usada,Használt Memória,Speicheranzeige,Mémoire Utilisée,Gebruikt Geheugen,Memória Usada,使用メモリ,Memoria usata,Статус памяти +_L_APP_SET_HIBERNATE,Fast Wakeup,快速唤醒,快速喚醒,Hibernar,Gyors Ébresztés,Schnelles Aufwachen,Réveil Rapide,Snel Ontwaken,Despertar Rápido,高速起動,Risveglio rapido,Гибернация +_L_APP_SET_SLEEP_TIMEOUT,Sleep Timeout,休眠时间,休眠時間,Dormir en:,Alvási Időkorlát,Standby nach,Délai de mise en veille,Time-out Slaapstand,Tempo Limite de Suspensão,スリープタイムアウト,Timeout di sospensione,Таймаут сна +_L_APP_SET_LANGUAGE,Language,系统语言,系統語言,Idioma,Nyelv,Sprache,Langue,Taal,Idioma,言語,Lingua,Язык +_L_APP_SET_DFU,Firmware Update,固件更新,軟體升級,Actualizar firmware,Firmware Frissítés,Firmw. Aktualisierung,Mise à Jour du Micrologiciel,Firmware Bijwerken,Atualização de Firmware,ファームウェア更新,Aggiornamento firmware,Обновление ПО +_L_APP_SET_REBOOT,System Reboot,重启设备,重啟設備,Reiniciar,Rendszer Újraindítása,System Neustart,Redémarrage du Système,Systeem Herstarten,Reinicialização do Sistema,システム再起動,Riavvio del sistema,Перезагрузка +_L_APP_SET_RESET_DEFAULT,Reset Default Setting,重置默认配置,重置默認配置,Restablecer config.,Alapért. Beállítás Visszaállítása,Standardeinstellungen,Rétablir les Paramètres par Défaut,Terugzetten Naar Standaardwaarden,Restaurar Configurações Padrão,デフォルト設定に戻す,Ripristina impostazioni predefinite,Сброс настроек +_L_APP_SET_RESET_DEFAULT_SUCCESS,Reset Success!,重置成功,重置成功,¡Configuración Restablecida!,Alapért. Beállítások Visszaállítása,Einstellungen zurückgesetzt!,Réinitialiser les Paramètres Par Défaut,Standaardinstellingen Herstellen,Redefinir a Configuração Padrão,設定を初期化,Ripristino riuscito!,Сброс выполнен +_L_APP_SET_RESET_DEFAULT_CONFIRM,Confirm Reset Settings?,确认重置默认设置?,确认重置默认设置?,,,Auf Standardeinstellungen zurücksetzen?,,,,,Conferma il ripristino delle impostazioni?,Выполнить? +_L_15S,15 Seconds,15秒,15秒,15 segundos,15 sec.,15 Sekunden,15 sec.,15 sec.,15 seg.,15秒,15 secondi,15 секунд +_L_30S,30 Seconds,30秒,30秒,30 segundos,30 sec.,30 Sekunden,30 sec.,30 sec.,30 seg.,30秒,30 secondi,30 секунд +_L_45S,45 Seconds,45秒,45秒,45 segundos,45 sec.,45 Sekunden,45 sec.,45 sec.,45 seg.,45秒,45 secondi,45 секунд +_L_1MIN,1 Minute,1分钟,1分鐘,1 minuto,1 min.,1 Minute,1 min.,1 min.,1 min.,1分,1 minuto,1 минута +_L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min.,2分,2 minuti,2 минуты +_L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Minuten,3 min.,3 min.,3 min.,3分,3 minuti,3 минуты +_L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel fehlt,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata,Отсутствует файл ключа +_L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria.,Поместите key_retail.bin\n в корень накопителя +_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito,[Понятно] +_L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige UUID,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale,Сгенерировать UUID +_L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico,Автогенерация +_L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR,QR-код +_L_DELETE_TAG,Delete Tag,删除标签,刪除標籤,Borrar amiibo...,Címke Törlése,Tag löschen,Supprimer la Balise,Tag Verwijderen,Excluir Etiqueta,タグの削除,Elimina tag,Удалить тег +_L_DELETE_TAG_CONFIRM,Confirm Delete %s ?,确认删除 %s ?,確認刪除 %s ?,¿\nBorrar %s\n?,Törlés Megerősítése?,Löschen von %s bestätigen?,Confirmer la Suppression de %s ?,Bevestig Verwijderen %s ?,Confirmar Exclusão de %s ?,%s を削除しますか?,Conferma eliminazione %s\n?,Удалить %s? +_L_BACK_TO_DETAILS,Back to Tag Details,返回详情,返回詳情,[Detalles amiibo],Vissza a Címke Részletkhez,Zurück zu Tag Details,Retour Aux Détails de L'étiquette,Terug naar Tag Details,Voltar Aos Detalhes da Tag,タグの詳細に戻る,[Torna ai dettagli del tag],[Назад к деталям] +_L_BACK_TO_FILE_LIST,Back to File List,返回文件列表,返回檔案清單,[Lista Archivos],Vissza a Fájl Listához,Zurück zur Liste,Retour à La Liste Des Fichiers,Terug naar Bestandslijst,Voltar Para a Lista de Arquivos,ファイル一覧に戻る,[Torna alla lista dei file],[Назад к списку] +_L_BACK_TO_MAIN_MENU,Back to Main Menu,返回主菜单,返回主選單,[Menú Principal],Vissza a Főmenübe,Hauptmenü,Retour au Menu Principal,Terug naar Hoofdmenu,Voltar ao Menu Principal,メインメニューに戻る,[Torna al menu principale],[В главное меню] +_L_FORMAT,Format,格式化,格式化,Formatear...,Formátum ,Formatieren,Format,Formatteren,Formatar,フォーマット,Formatta...,Отформатировать +_L_FORMAT_STORAGE,Format Storage,格式化存储,格式化儲存,Formatear mem. Flash,Formátum Tárolás,Speicher formatieren,Format de Stockage,Opslag Formatteren,Formatar Armazenamento,保存領域フォーマット,Formatta memoria,Форматирование +_L_DELETE_ALL_DATA,This will delete all data. Confirm format?,将删除所有数据。\n确认格式化?,將刪除所有資料。\n確認格式化?,Se borrará todos los\ndatos.,Minden adatot töröl. Formázás megerősítése?,Alle Daten löschen?,Cette opération efface toutes les données. Confirmer le formatage?,Hierdoor worden alle gegevens gewist. Formatteren bevestigen?,Isso excluirá todos os dados. Confirmar a formatação?,これですべてのデータが削除されます。よろしいですか?,Questo cancellerà tutti i dati.\nConferma la formattazione?,Это удалит все данные.\nВыполнить? +_L_DELETING_MESSAGE,Formatting ...,格式化中...,格式化中...,Formateando...,Formázás ...,Formatiere...,Formatage ...,Formatteren ...,Formatando ...,書式設定 ...,Formattazione in corso ...,Форматирование... +_L_MESSAGE,Message,提示,提示,Inicializar,Üzenet,Meldung,Message,Bericht,Mensagem,メッセージ,Messaggio,Сообщение +_L_CONFIRM,Confirm,确定,確定,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認,Conferma,Да +_L_CANCEL,Cancel,取消,取消,Cancelar,Megszüntet,Abbrechen,Annuler,Annuleren,Cancelar,キャンセル,Annulla,Отмена +_L_BACK_TO_LIST,Back List,返回列表,返回清單,[Voler a lista],Vissza a Listához,Zurück zur Liste,Retour à La Liste,Terug naar Lijst,Voltar à Lista,バックリスト,[Torna alla lista],[Назад к списку] +_L_NOT_MOUNTED,Not Mounted,未挂载,未掛載,No montado,Nincs Felszerelve,Speicher nicht eingebunden,Stockage non Monté,Niet Gekoppeld,Não Montado,ストレージがマウントされていません,Non montato,==[Не подключён]== +_L_MOUNTED_LFS,===Mounted[LFS]===,===已挂载[LFS]===,===已掛載[LFS]===,===[LFS]Montado===,===Szerelt[LFS]===,===Speicher [LFS]===,===Monté[LFS]===,===Gekoppeld[LFS]===,===Montado[LFS]===,===ストレージマウント[LFS]===,===Montato[LFS]===,==Подключён[LFS]== +_L_MOUNTED_FFS,===Mounted[FFS]===,===已挂载[FFS]===,===已掛載[FFS]===,===[FFS]Montado===,===Szerelt[FFS]===,===Speicher [FFS]===,===Monté[FFS]===,===Gekoppeld[FFS]===,===Montado[FFS]===,===ストレージマウント[FFS]===,===Montato[FFS]===,==Подключён[FFS]== +_L_TOTAL_SPACE,Total,总空间,總空間,Capacidad,Össz.,Gesamt,Total,Totaal,Total,トータル容量,Totale,Ёмкость +_L_AVAILABLE_SPACE,Free,可用空间,可用空間,Libre,Ingyenes,Frei,Libre,Vrij,Livre,空き容量,Libero,Свободно +_L_NOT_AMIIBO_FILE,This is not Amiibo file,这不是Amiibo文件,這不是Amiibo檔案,Este no es un archivo\namiibo válido,Ez nem Amiibo Fájl,Keine Amiibo Datei,Ce n'est pas un fichier Amiibo,Dit is geen Amiibo-bestand,Este Não é um Arquivo Amiibo,これはAmiiboファイルではありません,Questo non è un file\nAmiibo valido,Этот файл не Amiibo +_L_READ_FILE_FAILED,Failed read the file,读取文件失败,讀取檔案失敗,Error al leer archivo,Fájl beolvasása sikerten,Lesen fehlgeschlagen,Échec de la lecture du fichier,Lezen van het bestand is mislukt,Falha na Leitura do Arquivo,ファイルの読み込みに失敗しました,Errore nella lettura del file,Ошибка чтения файла +_L_INPUT_FOLDER_NAME,Input Folder Name:,输入文件夹名:,輸入資料夾名稱:,Nombre carpeta:,Bemeneti Mappa Neve:,Ordnername eingeben:,Nom du Dossier D'entrée:,Naam Invoermap:,Nome da Pasta de Entrada:,入力フォルダ名:,Nome cartella:,Задайте имя папки: +_L_INPUT_AMIIBO_NAME,Input Amiibo Name:,输入amiibo名:,輸入amiibo名稱:,Nombre amiibo:,Amiibo Neve:,Amiibo Namen eingeben:,Nom de l'Amiibo D'entrée:,Naam Amiibo Invoeren:,Nome do Amiibo de Entrada:,入力Amiibo名:,Nome Amiibo:,Задайте имя Amiibo: +_L_DELETE_FILE,Delete %s ?,删除 %s ?,刪除 %s ?,¿Borrar el %s ?,Törli a %s fájlt?,%s löschen ?,Supprimer le %s ?,%s verwijderen ?,Excluir %s ?,%s を削除しますか ?,Eliminare %s ?,Удалить %s? +_L_DELETE,Delete...,删除...,刪除...,Borrar...,Töröl...,Löschen...,Supprimer...,Verwijder...,Excluir...,削除...,Elimina...,Удалить... +_L_INPUT_NEW_NAME,Input New Name:,输入新名:,輸入新名稱:,Nuevo nombre:,Új Név Bevitele:,Neuen Namen eingeben:,Nouveau nom D'entrée:,Nieuwe Naam Invoeren:,Novo Nome de Entrada:,新しい名前を入力してください:,Nuovo nome:,Задайте новое имя: +_L_INVALID_INPUT,Invalid Input,无效的输入,無效的輸入,Entrada inválida,Érvénytelen Bemenet,Ungültige Eingabe,Entrée Invalide,Ongeldige Invoer,Entrada Inválida,無効な入力,Input non valido,Недопустимый ввод +_L_CREATE_NEW_FOLDER,Create New Folder...,新建文件夹...,新建資料夾...,Crear carpeta...,Új Mappa Létrehozása...,Neuer Ordner...,Créer un Nouveau Dossier...,Nieuwe Map Maken...,Criar Nova Pasta...,新しいフォルダを作成...,Crea cartella...,Создать новую папку... +_L_CREATE_NEW_TAG,Create New Tag...,新建标签...,新建標籤...,Crear amiibo...,Új Címke Létrehozása...,Neuer Tag...,Créer une Nouvelle Étiquette...,Nieuwe Tag Aanmaken...,Criar Nova Tag...,新規タグ作成...,Crea Amiibo...,Создать новый тег... +_L_CREATE_NEW_TAG_BATCH,Batch Create New Tag...,批量创建标签...,批量創建標簽...,Crear amiibo en lote...,Kötegelt Új Címke Létrehozása...,Mehrere Tags erstellen...,Créer de Nouvelles Étiquettes Par Lot...,Nieuwe Tags in een Batch Aanmaken...,Criar Novas Tags em Lote...,新規タグの一括作成...,Crea Amiibo in serie...,Создать группу тегов... +_L_INPUT_TAG_NUM,Input Tag Number:,输入标签数量:,輸入標簽數量:,¿Cuántos?,Beviteli Címke Száma:,Tag Anzahl eingeben:,Saisir le Numéro de l'Étiquette:,Labelnummer Invoeren:,Número da Tag de Entrada:,タグ番号を入力:,Numero di tag:,Задайте число тегов: +_L_CREATE_TOO_MANY_NUM,Only max %d tags created in a batch.,一次最多只能创建%d个标签,一次最多只能創建%d個標簽,Sólo se puede crear %d en lote,Max. létrehozható címke egy kötegben %d,Sie können nur maximal %d Tags auf einmal erstellen.,Seulement %d balises maximum créées dans un lot.,Maximum %d tags aangemaakt in een batch.,Somente no máximo %d tags criadas em um lote.,1つのバッチで作成されるタグの数はは最大 %d までです。,Numero max di %d tag in serie.,За раз можно создать\n не более %d тегов +_L_CREATING_TAG_BATCH,Creating tag,创建标签,創建標簽,Creando,Címke létrehozása,Tag erstellen,Création d'une balise,Tag aanmaken,Criando tag,タグの作成,Creazione tag,Создание тега +_L_CREATING_TAG_FAILED,Create tag %s failed!,写入 %s 标签失败,寫入 %s 標簽失敗,¡Error al crear %s!,Címke létrehozása %s sikertelen!,Erstellen von Tag %s fehlgeschlagen!,La création de la balise %s a échoué!,Aanmaken tag %s mislukt!,Falha ao criar a tag %s!,タグ %s の作成に失敗しました!,Creazione tag %s fallita!,Ошибка создания тега %s +_L_RENAME,Rename...,重命名...,重新命名...,Renombrar...,Átnevezés...,Umbenennen...,Renommer...,Hernoem...,Renomear...,名前の変更...,Rinomina...,Переименовать... +_L_OPEN_FOLDER_FAILED,Failed to open folder,打开文件夹失败,開啟資料夾失敗,Fallo al abrir carpeta,Mappa megnyitása sikertelen ,Ordner konnte nicht geöffnet werden,Échec de l'ouverture du dossier,Kan map niet openen,Falha ao abrir a pasta,フォルダを開けませんでした,Errore nell'apertura della cartella,Ошибка открытия папки +_L_RENAME_FAILED,Failed to rename\nError code,重命名失败,重新命名失敗,Fallo al renombrar\nCódigo de error,Átnevezés Sikertelen\nHibakód,Umbenennen fehlgeschlagen\nFehlercode,Échec du renommage.\nCode d'Erreur,Hernoemen mislukt.\nFoutcode,Falha ao renomear\nCódigo de erro,名前の変更に失敗しました。\nエラーコード,Errore nella rinomina\nCodice errore,Ошибка переименования +_L_MAIN_RETURN,[RETURN],[返回],[返回],[Volver],[VISSZA],[Zurück],[RETOUR],[TERUG],[RETORNO],[リターン],[Torna indietro],[Назад] +_L_RANDOM_MODE_MANUAL,Randomize (Manual),随机模式(手动),隨機模式(手動),Aleatorio (Manual),Randomizálás (Kézi),Zufällige UUID (Manuell),Randomiser (Manuel),Willekeurig (Handmatig),Randomizar (Manual),ランダム化 (手動),Casuale (Manuale),Ручная генерация UUID +_L_RANDOM_MODE_AUTO,Randomize (Auto),随机模式(自动),隨機模式(自動),Aleatorio (Auto.),Randomizálás (Automat.),Zufällige UUID (Automatisch),Randomiser (Automatique),Willekeurig (Automatisch),Randomizar (Automático),ランダム化(自動),Casuale (Automatico),Автогенерация UUID +_L_SEQUENCE_MODE,Sequential mode,按序模式,按序模式,Modo Secuencial,Szekvenciális Mód,Sequentieller Modus,Mode Séquentiel,Sequentiële Modus,Modo Sequencial,シーケンシャルモード,Modo sequenziale,Последовательный +_L_READ_WRITE_MODE,Read-write mode,读写模式,讀寫模式,Modo Lectura/Escrit.,Olvasás-írás Mód,Lese-Schreibmodus,Mode Lecture-Écriture,Lees-Schrijfmodus,Modo de Leitura e Gravação,読み書きモード,Modo lettura/scrittura,Чтение-запись +_L_AMIIBOLINK_V1,V1,V1(历史版本),V1(歷史版本),V1,V1,V1,V1,V1,V1,V1,V1,V1 +_L_AMIIBOLINK_V2,V2,V2(最新版本),V2(最新版本),V2,V2,V2,V2,V2,V2,V2,V2,V2 +_L_AMILOOP,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop,AmiLoop +_L_MODE,Mode,模式,模式,Modo,Mód,Modus,Mode,Modus,Modo,モード,Modalità,Режим +_L_AUTO_RANDOM,Auto Random.,自动随机,自動隨機,Aleat. autom.,Automat. Randomizálás,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Auto. casuale,Автогенерация +_L_COMPATIBLE_MODE,Compati. Mode,兼容模式,相容模式,Compatibil.,Kompatibilis Mód,Kompabilitäts Modus,Mode Compatible,Compatibiliteitsmodus,Modo Compatível,互換モード,Mod. Compatibilità,Совместимость +_L_TAG_DETAILS,[Tag Details],[标签详情],[標籤詳情],[Volver a Detalles],[Tag Részletek],[Zurück zu Details],[Détails de l'Étiquette],[Tag Details],[Detalhes da Tag],[タグ詳細],[Torna ai dettagli],[Назад к деталям] +_L_MAIN_MENU,[Main Menu],[主菜单],[主選單],[Menú Principal],[Főmenü],[Hauptmenü],[Menu Principal],[Hoofdmenu],[Menu Principal],[メインメニュー],[Menu principale],[В главное меню] +_L_MODE_RANDOM,Rand. (Manual),随机(手动),隨機(手動),Aleat. man.,Random (Kézi),Zufällige UUID (Manuell),Aléatoire (Manuel),Willekeurig (Handmatig),Randomização (Manual),ランダム化(手動),Casuale man.,Ручная генерация +_L_MODE_CYCLE,Sequential,按序,按序,Secuencial,Szekvenciális,Sequentiell,Séquentiel,Sequentieel,Sequencial,シーケンシャル,Sequenziale,Последовательный +_L_MODE_NTAG,Read/Write,读写,讀寫,Lect./Escr.,Olvasás/Írás,Lesen/Schreiben,Lecture/Écriture,Lezen/Schrijven,Leitura/gravação,リード/ライト,Lett./Scritt.,Чтение-запись +_L_MODE_RANDOM_AUTO_GEN,Rand. (Auto),随机(自动),隨機(自動),Aleat. auto.,Random (Automat.),Zufällig (Auto.),Aléatoire (Automatique),Willekeurig (Automatisch),Randomização (Automática),ランダム化(自動),Auto. casuale,Автогенерация +_L_BLANK_TAG,Blank NFC tag,空标签,空標籤,Amiibo no asignado,Üres NFC Címke,Leerer NFC Tag,Étiquette NFC vierge,Lege NFC-tag,Tag NFC em Branco,ブランクNFCタグ,Amiibo non assegnato,Пустой тег +_L_APP_AMIIDB,Amiibo Database,Amiibo数据库,Amiibo數據庫,Base datos amiibo,Amiibo Adatbázis,Amiibo Datenbank,Base de Données Amiibo,Amiibo-Database,Banco de Dados Amiibo,Amiiboデータベース,Database Amiibo,База данных Amiibo +_L_APP_AMMIDB_BROWSER,Browser...,查看...,查看...,Explorar...,Böngésző...,Navigieren...,Naviguer...,Browser...,Navegador...,ブラウザ...,Esplora...,Обозреватель... +_L_APP_AMIIDB_SEARCH,Search...,搜索...,搜索...,Buscar...,Keresés...,Suche...,Recherche...,Zoeken...,Pesquisar...,検索...,Cerca...,Поиск... +_L_APP_AMIIDB_MY_FAVORITES,My Favorites...,我的收藏...,我的收藏...,Mis Favoritos...,Kedvencek...,Meine Favoriten...,Mes Favoris...,Mijn Favorieten...,Meus Favoritos...,お気に入り...,I miei preferiti...,Моё избранное... +_L_APP_AMIIDB_MY_TAGS,My Amiibo...,我的数据...,我的數據...,Mis amiibo...,Amiiboim...,Meine Amiibo...,Mes Amiibo...,Mijn Amiibo...,Meu Amiibo...,マイAmiibo...,I miei Amiibo...,Мои Amiibo... +_L_APP_AMIIDB_SETTINGS,Settings...,设置...,設置...,Configuraciones...,Beállítások...,Einstellungen...,Paramètres...,Instellingen...,Configurações...,設定...,Impostazioni...,Настройки... +_L_APP_AMIIDB_EXIT,[Exit],[退出],[退出],[Menú Principal],[Kilépés],[Beenden],[Quitter],[Afsluiten],[Sair],[終了],[Menu principale],[Выход] +_L_APP_AMIIDB_BACK,[Back],[返回],[返回],[Volver],[Vissza],[Zurück],[Retour],[Terug],[Retornar],[戻る],[Torna indietro],[Назад] +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY,Keys,密钥文件,密鑰文件,Llaves,Kulcsok,Schlüssel,Touches,Toetsen,Teclas,キー,Chiavi,Ключ +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_LOADED,Loaded,已加载,已加載,Cargadas,Betöltve,geladen,Chargée,Geladen,Carregado,ロードされました,Caricate,Загружен +_L_APP_AMIIDB_SETTINGS_AMIIBO_KEY_NOT_LOADED,NOT Loaded,未加载,未加載,NO cargadas,NINCS betöltve,NICHT geladen,NON Chargée,NIET Geladen,NÃO Carregadas,ロードされていません,NON caricate,Отсутствует +_L_APP_AMIIDB_SETTINGS_SLOT_NUM,Slot Num.,数据槽位,數據槽位,Cant. ranuras,Slot Száma,Steckplatzanzahl,Numéro d'Emplacement,Slotnummer,Número do Slot,スロット番号,Num. slot,Число ячеек +_L_APP_AMIIDB_DETAIL_FAVORITE,Favorite...,收藏...,收藏...,Favorito...,Kedvenc...,Favorit...,Favorite...,Favoriet...,Favorito...,お気に入り...,Preferito...,В избранное... +_L_APP_AMIIDB_DETAIL_SAVE_AS,Save As...,保存为...,保存爲...,Asignar en...,Mentés Másként...,Speichern unter...,Enregistrer Sous...,Opslaan Als...,Salvar como...,名前を付けて保存...,Assegna a...,Сохранить как... +_L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情],[Volver a Detalles],[Vissza a Részletekhez],[Zurück zu Details],[Retour au Détail],[Terug naar Detail],[Voltar Para Detalhes],[詳細に戻る],[Torna ai dettagli],[Назад к деталям] +_L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista],[Назад к списку] +_L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca:,Поиск: +_L_APP_AMIIDB_MORE,[More...],[更多],[更多],[Más...],[Bővebben...],[Mehr...],[Plus...],[Meer...],[Mais...],[もっと見る...],[Più...],[Дальше...] +_L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,,<пустой тег> +_L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina...,Сброс... +_L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Да +_L_APP_AMIIDB_CANCEL,Cancel,取消,取消,Cancelar,Törlés,Abbrechen,Annuler,Annuleren,Cancelar,キャンセルする,Annulla,Отмена +_L_APP_AMIIDB_TIPS,Confirm,提示,提示,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Внимание +_L_APP_AMIIDB_NEW,New...,新建...,新建...,Nueva...,Új...,Neu...,Nouveau...,Nieuw...,Novo...,新規...,Nuovo...,Новая папка... +_L_APP_AMIIDB_EMPTY,Empty...,清空...,清空...,Vaciar...,Üres...,Leeren...,Vider...,Leeg...,Vazio...,空...,Svuota...,Очистить... +_L_APP_AMIIDB_DELETE,Delete...,删除...,删除...,Borrar...,Törlés...,Löschen...,Supprimer...,Verwijderen...,Excluir...,削除...,Cancella...,Удалить... +_L_APP_AMIIDB_FAV_NEW_HEAD,New Fav. Folder:,新建收藏夹:,新建收藏夾:,Nueva Carp. Favoritos:,Új Kedvenc Mappa:,Neuer Fav.-Ordner:,Nouveau Dossier Favori:,Nieuwe Favoriete Map:,Nova Pasta de Favoritos:,新しいお気に入りフォルダ:,Nuova cart. preferiti:,Новая папка избранного: +_L_APP_AMIIDB_FAV_EMPTY_MSG,Empty Fav. Folder?,确认清空收藏夹?,確認清空收藏夾?,¿Vaciar Carp. Favoritos?,Üres Kedvenc Mappa?,Fav.-Ordner leeren?,Vider le Dossier Favori?,Favoriete Map Leegmaken?,Esvaziar Pasta de Favoritos?,お気に入りフォルダを空にしますか?,Svuotare cart. preferiti?,Выполнить удаление\n избранного? +_L_APP_AMIIDB_FAV_DELETE_MSG,Confirm Delete?,确认删除?,確認刪除?,¿Confirma borrado?,Törlés Megerősítése?,Löschen Bestätigen?,Confirmer la Suppression?,Verwijderen Bevestigen?,Confirmar Exclusão?,削除してよろしいですか?,Conferma cancellazione?,Выполнить удаление? +_L_APP_AMIIDB_FAV_SELECT_FOLDER,Select Fav. Folder...,选择收藏夹...,選擇收藏夾...,Selec. carp. favoritos...,Kedvenc Mappa Kiválasztása...,Fav.-Ordner auswählen...,Sélectionner le Dossier Favori...,Selecteer Favoriete Map...,Selecionar Pasta Favorita...,お気に入りフォルダを選択...,Selez. cart. preferiti...,Выбрать папку избранного... +_L_APP_AMIIDB_FAV_SUCCESS,Favorite Success,收藏成功,收藏成功,¡Favorito correcto!,Kedvenc Sikeres,Favorit erstellt ,Succès du Favori,Favoriet Geslaagd,Favorito Bem-Sucedido,お気に入りに追加されました,Preferito aggiunto!,Добавлено +_L_APP_AMIIDB_FAV_FAILED,Favorite Failed!,收藏失败,收藏失敗,¡Favorito fallido!,Kedvenc Sikertelen!,Favorisieren fehlgeschlagen!,Échec du Favori!,Favoriet Mislukt!,Favorito Falhou!,お気に入りに追加できませんでした!,Preferito non aggiunto!,Ошибка добавления +_L_APP_AMIIDB_SLOT_SAVE_SUCCESS,Save Success,保存成功,保存成功,Asignación correcta,Sikeresen Mentve,Speichern erfolgreich,Sauvegarder Succès,Opslaan Succes,Salvar Com Êxito,保存されました,Assegnazione corretta,Сохранено +_L_APP_AMIIDB_SLOT_SAVE_FAILED,Save Failed!,保存失败,保存失敗,¡Asignación fallida!,Mentés Sikertelen!,Speichern fehlgeschlagen!,Sauvegarde Échouée!,Opslaan Mislukt!,Falha ao Salvar!,保存に失敗しました!,Assegnazione fallita!,Ошибка сохранения +_L_APP_CHAMELEON,Card Emulator,卡模拟器,卡模擬器,Emular Etiqueta RFID,Kártya Emulátor,Karten Emulator,Emulateur de Carte,Kaart Emulator,Emulador de Cartão,カードエミュレータ,Emula tag RFID,Эмулятор карт +_L_APP_CHAMELEON_TAG_MF1_WRITE_NORMAL,Normal,正常,正常,Normal,Normál,Normal,Normal,Normaal,Normal,通常,Normale,Разрешена +_L_APP_CHAMELEON_TAG_MF1_WRITE_DENIED,Deny,拒绝,拒絕,Negar,Tagadni,Verweigern,Refuser,Weigeren,Negar,拒否,Nega,Запрещена +_L_APP_CHAMELEON_TAG_MF1_WRITE_DECEIVE,Ignore,忽略,忽略,Ignorar,Figyelmen Kívül Hagyni,Ignorieren,Ignorer,Negeren,Ignorar,無視,Ignora,Игнорируется +_L_APP_CHAMELEON_TAG_MF1_WRITE_SHADOW,Cache,缓存,緩存,Caché,Elrejt,Cache,Cache,Cache,Cache,キャッシュ,Cache,В кэш +_L_APP_CHAMELEON_INITIALIZING,Initializing data ...,"初始化, 请稍后...","初始化, 請稍後...",Inicializando ambiente.\nPor favor espere...,Az adatok inicializálása ...,Daten initialisieren...,Initialisation des données ...,Gegevens Initialiseren ...,Inicialização de Dados ...,データの初期化 ...,Inizializzazione ambiente.\nPer favore attendi...,Инициализация... +_L_APP_CHAMELEON_CARD_SLOT,Slot,卡槽,卡槽,Ranura,Cella,Steckplatz,Fente,Slot,Slot,スロット,Slot,Ячейка +_L_APP_CHAMELEON_CARD_NICK,Nick,卡名,卡名,Apodo,Becenév,Spitzname,Pseudo,Bijnaam,Apelido,ニックネーム,Nickname,Название +_L_APP_CHAMELEON_CARD_ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID,ID +_L_APP_CHAMELEON_CARD_TYPE,Type,卡类型,卡類型,Tipo,Típus,Typ,Type de Données,Type,Tipo de Dados,タイプ,Tipo,Тип +_L_APP_CHAMELEON_CARD_DATA,Data...,卡数据...,卡數據...,Datos...,Adatok...,Daten...,Données...,Gegevens...,Dados...,データ...,Dati...,Данные... +_L_APP_CHAMELEON_CARD_ADVANCED,Advanced...,卡高级设置...,卡高級設置...,Avanzado...,Fejlett...,Erweitert...,Avancé...,Geavanceerd...,Avançado...,詳細設定...,Avanzato...,Дополнительно... +_L_APP_CHAMELEON_CARD_SLOT_SETTINGS,Slots Settings...,卡槽管理...,卡槽管理...,Configuración...,Cella Beállításai...,Steckplatz Einstellungen...,Paramètres des Emplacements...,Slot Instellingen...,Configurações de Slots...,スロット設定...,Impostazioni...,Управление ячейками... +_L_APP_CHAMELEON_CARD_SLOT_NUM,Slot Num...,卡槽数量...,卡槽數量...,Cant. ranuras...,Cella Száma...,Steckplatz Nummer,Numéro d'Emplacement...,Slotnummer...,Número do Slot...,スロット番号...,Num. slot...,Число ячеек... +_L_APP_CHAMELEON_CARD_SET_NICK_SUCCESS,Set Nick Success,设置卡名成功,設置卡名成功,Apodo cambiado.,Becenév Beállítása Sikeres,Spitzname erfolgreich gesetzt,Définir le Pseudo Succès,Bijnaam Instellen Succes,Apelido Definido com Sucesso,ニックネームが設定されました,Cambio nickname riuscito.,Название задано +_L_APP_CHAMELEON_CARD_SET_NICK_FAILED,Set Nick Failed!,设置卡名失败,設置卡名失敗,¡Falló cambio apodo!,Becenév Beállítása Sikertelen!,Spitzname setzen fehlgeschlagen!,Définir le Pseudo a Échoué!,Bijnaam Instellen Mislukt!,Falha ao Definir Apelido!,ニックネームが設定できませんでした!,Cambio nickname fallito!,Недопустимое название +_L_APP_CHAMELEON_CARD_INPUT_NICK,Input Nick:,输入卡名:,輸入卡名:,Apodo:,Becenév Bevitele:,Spitznamen eingeben:,Entrer le Pseudo:,Voer Bijnaam In:,Insira o Apelido:,ニックネームを入力してください:,Nickname:,Задайте название карты: +_L_APP_CHAMELEON_CARD_DATA_LOAD,Load...,加载...,加載...,Cargar...,Betöltés...,Laden...,Charger...,Laden...,Carregar...,ロード...,Carica...,Загрузка... +_L_APP_CHAMELEON_CARD_DATA_SAVE,Save...,导出...,導出...,Guardar...,Mentés...,Speichern...,Sauvegarder...,Opslaan...,Salvar...,保存...,Salva...,Сохранение... +_L_APP_CHAMELEON_CARD_DATA_FACTORY,Factory...,重置...,重置...,Inicializar...,Visszaállítás...,Zurücksetzen...,Rétablir Les Valeurs Par Défaut...,Terugzetten Naar Standaard...,Restaurar Padrões...,初期化...,Inizializza...,Сброс... +_L_APP_CHAMELEON_CARD_DATA_FACTORY_SUCCESS,Data Factory Success,卡片初始化成功,卡片初始化成功,¡Datos inicializados!,Adatok Visszaállítása Sikeres,Daten zurückgesetzt,Réinitialisation des Données Succès,Fabriekgegeven terugzetten Succesvol,Restauração de Dados Bem-Sucedida,初期化成功,Dati inizializzati!,Данные сброшены +_L_APP_CHAMELEON_CARD_DATA_LOAD_NOT_FOUND,File Not Found,文件不存在,文件不存在,Archivo no encontrado,Fájl Nem Található,Datei nicht gefunden,Fichier Non Trouvé,Bestand Niet Gevonden,Arquivo Não Encontrado,ファイルが見つかりません,File non trovato,Файл не обнаружен +_L_APP_CHAMELEON_CARD_DATA_LOAD_SIZE_NOT_MATCH,File Size Not Match,文件大小不匹配,文件大小不匹配,Tamaño archivo incorrecto,Fájl Mérete Nem Egyezik,Dateigröße stimmt nicht überein,La Taille du Fichier ne Correspond Pas,Bestandsgrootte Komt Niet Overeen,Tamanho do Arquivo Não Corresponde,ファイルサイズが一致しません,Dimensione file non corretta,Файл несоразмерен +_L_APP_CHAMELEON_CARD_DATA_LOAD_FAILED,Load File Failed,读取文件失败,讀取文件失敗,Falla carga archivo,Fájl betöltése Sikertelen,Laden der Datei fehlgeschlagen,Échec du Chargement du Fichier,Bestand Laden Mislukt,Falha no Carregamento do Arquivo,ファイルの読み込み失敗,Caricamento file fallito,Ошибка загрузки файла +_L_APP_CHAMELEON_CARD_DATA_LOAD_SUCCESS,Load File Success,加载卡片数据成功,加載卡片數據成功,Carga archivo correcta,Fájl Betöltése Sikeres,Datei erfolgreich geladen,Chargement du Fichier Réussi,Laad Bestand Succesvol,Sucesso no Carregamento do Arquivo,ファイルの読み込みに成功,Caricamento file riuscito,Данные загружены +_L_APP_CHAMELEON_CARD_DATA_SAVE_INPUT_FILE_NAME,Input File Name:,输入文件名,輸入文件名,Nombre archivo:,Bemeneti Fájl Neve:,Datei Namen eingeben:,Saisir le Nom du Fichier:,Bestandsnaam Invoeren:,Nome do Arquivo de Entrada:,入力ファイル名:,Nome file:,Задайте имя файла: +_L_APP_CHAMELEON_CARD_DATA_SAVE_FAILED,Save File Failed!,写入文件失败,寫入文件失敗,¡Error al guardar!,Fájl Mentése Sikertelen!,Datei speichern fehlgeschlagen!,Échec de l'Enregistrement du Fichier!,Bestand Opslaan Mislukt!,Falha ao Salvar o Arquivo!,ファイルの保存に失敗しました!,Errore nel salvataggio!,Ошибка сохранения файла +_L_APP_CHAMELEON_CARD_DATA_SAVE_SUCCESS,Save File Success,导出卡片数据成功,導出卡片數據成功,Guardado correcto,Fájl Mentése Sikeres,Datei erfolgreich gespeichert,Sauvegarde du Fichier Réussie,Bestand Opslaan Gelukt,Arquivo Salvo com êxito,ファイルが保存されました,Salvataggio riuscito,Данные сохранены +_L_APP_CHAMELEON_CARD_ADV_CUSTOM_MODE,Custom Mode,自定义模式,自定義模式,Modo personali.,Egyéni Mód,Benutzerdefinierter Modus,Mode Personnalisé,Aangepaste Modus,Modo Personalizado,カスタムモード,Modalità personalizzata,Заказной режим +_L_APP_CHAMELEON_CARD_GEN1A_MODE,Gen1A Enabled,Gen1A模式,Gen1A模式,Gen1A habilitada,Gen1A Engedélyezve,Gen1A aktiv,Gen1A Activé,Gen1A Ingeschakeld,Gen1A Ativada,Gen1A 有効,Gen1A abilitata,Gen1A +_L_APP_CHAMELEON_CARD_GENERATE_UID,Rand. UID,生成UID,生成UID,Generar nuevo UID,Véletlen UID,Zufällige UID,Randomiser l'UID,Willekeurige UID,UID Aleatório,UIDのランダム化,Genera nuovo UID,Сгенерировать UID +_L_APP_CHAMELEON_CARD_GENERATE_UID_SUCCESS,UID Generated,UID已生成,UID已生成,UID generado,Generált UID,UID generiert,UID Généré,UID Gegenereerd,UID Gerado,UID 生成,UID generato,UID сгенерирован +_L_APP_CHAMELEON_CARD_GEN2_MODE,Gen2 Enabled,Gen2模式,Gen2模式,Gen2 habilitada,Gen2 Engedélyezve,Gen2 aktiv,Gen2 Activé,Gen2 Ingeschakeld,Gen2 Ativado,Gen2 有効,Gen2 abilitata,Gen2 +_L_APP_CHAMELEON_CARD_WRITE_MODE,Write Mode,写入模式,寫入模式,Modo escrit.,Írási Mód,Schreibmodus,Mode d'Écriture,Schrijfmodus,Modo de Gravação,書き込みモード,Modalità scrittura,Запись +_L_APP_CHAMELEON_CARD_ADV_ID_EDIT_INVALID_INPUT,Invalid Input!,无效的输入!,無效的輸入!,¡Entrada inválida!,Érvénytelen bemenet!,Ungültige Eingabe!,Entrée Invalide!,Ongeldige Invoer!,Entrada Inválida!,無効な入力,Input non valido!,Недопустимый ввод +_L_APP_CHAMELEON_CARD_TYPE_FACTORY_DATA_CONFRIM,Card type changed. \nFactory card data?,卡类型已修改\n重置卡数据?,卡類型已修改\n重置卡數據?,Tipo tarjeta modificado\n¿Inicializar tarjeta?,A kártya típusa megváltozott.\nGyári kártyaadatok?,Kartentyp geändert. \nKartendaten zurücksetzen?,Le Type de Carte a Été Modifié. \nRéinitialiser les Données de la Carte?,Kaarttype gewijzigd. \nGegevens terugzetten naar standaard?,O tipo de cartão foi alterado. \nRedefinir dados do cartão?,カードの種類が変更されました。\nカードデータを初期化しますか?,Tipo di carta modificato\nInizializzare carta?,Тип карты изменен.\nСбросить данные карты? diff --git a/fw/data/wenquanyi_9pt_u8g2.bdf b/fw/data/wenquanyi_9pt_u8g2.bdf index dcf50da0..5dac36f4 100644 --- a/fw/data/wenquanyi_9pt_u8g2.bdf +++ b/fw/data/wenquanyi_9pt_u8g2.bdf @@ -11418,1045 +11418,954 @@ BITMAP ENDCHAR STARTCHAR afii10023 ENCODING 1025 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 11 2 -1 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 10 0 0 BITMAP -44 +50 00 -FE -42 -40 -48 -78 -48 -40 -42 -FE +F8 +80 +80 +F8 +80 +80 +80 +F8 ENDCHAR STARTCHAR afii10017 ENCODING 1040 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -0800 -0800 -1400 -1400 -2200 -2200 -3E00 -4100 -4100 -E380 +38 +48 +48 +88 +88 +F8 +88 +88 ENDCHAR STARTCHAR afii10018 ENCODING 1041 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -FE -42 -40 -40 -78 -44 -42 -42 -44 F8 +80 +80 +F0 +88 +88 +88 +F0 ENDCHAR STARTCHAR afii10019 ENCODING 1042 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -F8 -44 -42 -44 -78 -44 -42 -42 -44 -F8 +F0 +88 +88 +F0 +88 +88 +88 +F0 ENDCHAR STARTCHAR afii10020 ENCODING 1043 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -FC -44 -42 -40 -40 -40 -40 -40 -40 -E0 +F8 +80 +80 +80 +80 +80 +80 +80 ENDCHAR STARTCHAR afii10021 ENCODING 1044 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 9 0 -1 BITMAP -3F80 -1200 -1200 -1200 -1200 -1200 -2200 -4200 -FF80 -8080 +3C +24 +24 +24 +24 +44 +44 +FE +82 ENDCHAR STARTCHAR afii10022 ENCODING 1045 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -FE -41 -40 -44 -7C -44 -40 -41 -41 -FE +F8 +80 +80 +F8 +80 +80 +80 +F8 ENDCHAR STARTCHAR afii10024 ENCODING 1046 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 8 0 0 BITMAP -9C80 -4900 -4900 -2A00 -1C00 -2A00 -4A00 -4900 -4900 -DD80 +92 +92 +54 +38 +54 +54 +92 +92 ENDCHAR STARTCHAR afii10025 ENCODING 1047 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -58 -64 -44 -04 -18 -04 -02 -82 -C4 -B8 +70 +88 +08 +30 +08 +08 +88 +70 ENDCHAR STARTCHAR afii10026 ENCODING 1048 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E3 -46 -4A -4A -52 -52 -62 -62 -42 -E7 +88 +88 +88 +98 +A8 +A8 +C8 +88 ENDCHAR STARTCHAR afii10027 ENCODING 1049 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 11 0 0 BITMAP -24 -18 -E7 -4A -4A -52 -62 -62 -42 -E7 +50 +20 +00 +88 +88 +88 +98 +A8 +A8 +C8 +88 ENDCHAR STARTCHAR afii10028 ENCODING 1050 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E2 -45 -48 -50 -60 -50 -48 -44 -45 -E2 +88 +90 +A0 +E0 +90 +90 +88 +88 ENDCHAR STARTCHAR afii10029 ENCODING 1051 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -3F80 -0900 -0900 -0900 -0900 -0900 -1100 -1100 -A100 -4380 +38 +48 +48 +48 +48 +48 +48 +88 ENDCHAR STARTCHAR afii10030 ENCODING 1052 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 11 10 0 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 8 0 0 BITMAP -C060 -60C0 -60C0 -5140 -5140 -4A40 -4A40 -4440 -4440 -E0E0 +82 +C6 +C6 +AA +AA +92 +92 +82 ENDCHAR STARTCHAR afii10031 ENCODING 1053 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E380 -4100 -4100 -4100 -7F00 -4100 -4100 -4100 -4100 -E380 +88 +88 +88 +F8 +88 +88 +88 +88 ENDCHAR STARTCHAR afii10032 ENCODING 1054 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -1C00 -2200 -4100 -8080 -8080 -8080 -8080 -4100 -2200 -1C00 +70 +88 +88 +88 +88 +88 +88 +70 ENDCHAR STARTCHAR afii10033 ENCODING 1055 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -FF -42 -42 -42 -42 -42 -42 -42 -42 -E7 +F8 +88 +88 +88 +88 +88 +88 +88 ENDCHAR STARTCHAR afii10034 ENCODING 1056 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -F8 -44 -42 -42 -44 -78 -40 -40 -40 -E0 +F0 +88 +88 +F0 +80 +80 +80 +80 ENDCHAR STARTCHAR afii10035 ENCODING 1057 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -1D -23 -41 +70 +88 80 80 80 80 -41 -22 -1C +88 +70 ENDCHAR STARTCHAR afii10036 ENCODING 1058 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -FF80 -8880 -8880 -0800 -0800 -0800 -0800 -0800 -0800 -1C00 +F8 +20 +20 +20 +20 +20 +20 +20 ENDCHAR STARTCHAR afii10037 ENCODING 1059 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E380 -4100 -2200 -2200 -1400 -1400 -0800 -0800 -4800 -3000 +88 +88 +88 +88 +88 +78 +08 +F0 ENDCHAR STARTCHAR afii10038 ENCODING 1060 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 8 0 0 BITMAP -1C00 -0800 -3E00 -4900 -8880 -8880 -4900 -3E00 -0800 -1C00 +10 +7C +92 +92 +92 +92 +7C +10 ENDCHAR STARTCHAR afii10039 ENCODING 1061 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E380 -4100 -2200 -1400 -0800 -0800 -1400 -2200 -4100 -E380 +88 +88 +50 +20 +50 +50 +88 +88 ENDCHAR STARTCHAR afii10040 ENCODING 1062 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 583 0 +DWIDTH 7 0 +BBX 6 9 0 -1 BITMAP -E700 -4200 -4200 -4200 -4200 -4200 -4200 -4200 -FF80 -0080 +88 +88 +88 +88 +88 +88 +88 +FC +04 ENDCHAR STARTCHAR afii10041 ENCODING 1063 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 1 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E7 -42 -42 -42 -42 -26 -1A -02 -02 -07 +88 +88 +88 +88 +78 +08 +08 +08 ENDCHAR STARTCHAR afii10042 ENCODING 1064 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 11 10 0 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 8 0 0 BITMAP -EEE0 -4440 -4440 -4440 -4440 -4440 -4440 -4440 -4440 -FFE0 +92 +92 +92 +92 +92 +92 +92 +FE ENDCHAR STARTCHAR afii10043 ENCODING 1065 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 11 10 0 0 +SWIDTH 750 0 +DWIDTH 9 0 +BBX 8 9 0 -1 BITMAP -EEE0 -4440 -4440 -4440 -4440 -4440 -4440 -4440 -FFE0 -0020 +92 +92 +92 +92 +92 +92 +92 +FF +01 ENDCHAR STARTCHAR afii10044 ENCODING 1066 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 8 0 0 BITMAP -7000 -9000 -1000 -1000 -1E00 -1100 -1080 -1080 -1100 -3E00 +E0 +20 +20 +3C +22 +22 +22 +3C ENDCHAR STARTCHAR afii10045 ENCODING 1067 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 10 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 8 0 0 BITMAP -C380 -4100 -4100 -4100 -7100 -4900 -4500 -4500 -4900 -F380 +82 +82 +82 +F2 +8A +8A +8A +F2 ENDCHAR STARTCHAR afii10046 ENCODING 1068 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -E0 -40 -40 -78 -44 -42 -42 -42 -44 -F8 +80 +80 +80 +F0 +88 +88 +88 +F0 ENDCHAR STARTCHAR afii10047 ENCODING 1069 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -B8 -C4 -82 -02 -02 -1E -02 -82 -44 -38 +70 +88 +08 +78 +08 +08 +88 +70 ENDCHAR STARTCHAR afii10048 ENCODING 1070 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 10 10 1 0 +SWIDTH 583 0 +DWIDTH 7 0 +BBX 6 8 0 0 BITMAP -E300 -4480 -4840 -4840 -7840 -4840 -4840 -4840 -4480 -E300 +98 +A4 +A4 +E4 +A4 +A4 +A4 +98 ENDCHAR STARTCHAR afii10049 ENCODING 1071 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 0 BITMAP -3F -42 -42 -42 -3E -12 -22 -22 -A2 -47 +78 +88 +88 +78 +48 +48 +88 +88 ENDCHAR STARTCHAR afii10065 ENCODING 1072 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -30 -48 -38 -48 -88 +60 +10 +70 +90 90 -6C +70 ENDCHAR STARTCHAR afii10066 ENCODING 1073 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 10 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 9 0 0 BITMAP -0C -30 -40 +10 +60 80 -B0 -C8 -84 -84 -48 -30 +E0 +90 +90 +90 +90 +60 ENDCHAR STARTCHAR afii10067 ENCODING 1074 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -F8 -44 -44 -78 -44 -44 -F8 +E0 +90 +E0 +90 +90 +E0 ENDCHAR STARTCHAR afii10068 ENCODING 1075 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -F8 -44 -40 -40 -40 -40 -E0 +F0 +80 +80 +80 +80 +80 ENDCHAR STARTCHAR afii10069 ENCODING 1076 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 8 1 0 +SWIDTH 583 0 +DWIDTH 7 0 +BBX 6 7 0 -1 BITMAP -3F -12 -12 -12 -22 -22 -FF -81 +38 +28 +28 +28 +48 +FC +84 ENDCHAR STARTCHAR afii10070 ENCODING 1077 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -30 -48 -84 -FC +60 +90 +F0 80 -44 -38 +90 +60 ENDCHAR STARTCHAR afii10072 ENCODING 1078 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 7 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 6 0 0 BITMAP -DD80 -2A00 -2A00 -1C00 -2A00 -4900 -DD80 +92 +54 +38 +54 +92 +92 ENDCHAR STARTCHAR afii10073 ENCODING 1079 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -38 -C4 -04 -38 -84 -84 -78 +60 +90 +20 +10 +90 +60 ENDCHAR STARTCHAR afii10074 ENCODING 1080 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 7 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 6 0 0 BITMAP -E7 -46 -4A -52 -62 -42 -E7 +88 +98 +A8 +A8 +C8 +88 ENDCHAR STARTCHAR afii10075 ENCODING 1081 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 10 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 9 0 0 BITMAP -24 -18 +50 +20 00 -E7 -46 -4A -52 -62 -42 -E7 +88 +98 +A8 +A8 +C8 +88 ENDCHAR STARTCHAR afii10076 ENCODING 1082 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -E4 -4A -50 -60 -50 -4A -E4 +90 +A0 +C0 +A0 +90 +90 ENDCHAR STARTCHAR afii10077 ENCODING 1083 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -3E -14 -14 -14 -24 -A4 -4E +70 +50 +50 +50 +50 +90 ENDCHAR STARTCHAR afii10078 ENCODING 1084 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 7 1 0 +SWIDTH 583 0 +DWIDTH 7 0 +BBX 6 6 0 0 BITMAP -C180 -6300 -6300 -5500 -5500 -4900 -EB80 +84 +CC +CC +B4 +B4 +84 ENDCHAR STARTCHAR afii10079 ENCODING 1085 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -E7 -42 -42 -7E -42 -42 -E7 +90 +90 +F0 +90 +90 +90 ENDCHAR STARTCHAR afii10080 ENCODING 1086 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -38 -44 -82 -82 -82 -44 -38 +60 +90 +90 +90 +90 +60 ENDCHAR STARTCHAR afii10081 ENCODING 1087 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -FE -44 -44 -44 -44 -44 -EE +F0 +90 +90 +90 +90 +90 ENDCHAR STARTCHAR afii10082 ENCODING 1088 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 8 2 -1 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 8 0 -2 BITMAP -D8 -64 -42 -42 -64 -58 -40 -E0 +B0 +C8 +88 +88 +C8 +B0 +80 +80 ENDCHAR STARTCHAR afii10083 ENCODING 1089 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -38 -44 -80 +60 +90 80 80 -44 -38 +90 +60 ENDCHAR STARTCHAR afii10084 ENCODING 1090 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 6 0 0 BITMAP -FE -92 -10 -10 -10 -10 -38 +F8 +20 +20 +20 +20 +20 ENDCHAR STARTCHAR afii10085 ENCODING 1091 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 9 2 -1 -BITMAP -E7 -42 -22 -14 -08 -08 -10 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 8 0 -2 +BITMAP +90 90 +A0 +A0 60 +40 +40 +80 ENDCHAR STARTCHAR afii10086 ENCODING 1092 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 11 1 -1 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 10 0 -2 BITMAP -1C00 -0800 -2A00 -5D00 -8880 -8880 -8880 -5D00 -2A00 -0800 -1C00 +10 +10 +7C +92 +92 +92 +92 +7C +10 +10 ENDCHAR STARTCHAR afii10087 ENCODING 1093 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 6 0 0 BITMAP -EE -44 -28 -10 -28 -44 -EE +88 +50 +20 +50 +88 +88 ENDCHAR STARTCHAR afii10088 ENCODING 1094 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 8 2 -1 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 7 0 -1 BITMAP -EE -44 -44 -44 -44 -44 -FE -02 +90 +90 +90 +90 +90 +F8 +08 ENDCHAR STARTCHAR afii10089 ENCODING 1095 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -EE -44 -44 -3C -04 -04 -0E +90 +90 +90 +70 +10 +10 ENDCHAR STARTCHAR afii10090 ENCODING 1096 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 7 1 0 +SWIDTH 666 0 +DWIDTH 8 0 +BBX 7 6 0 0 BITMAP -DD80 -4900 -4900 -4900 -4900 -4900 -FF80 +92 +92 +92 +92 +92 +FE ENDCHAR STARTCHAR afii10091 ENCODING 1097 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 10 8 0 -1 +SWIDTH 750 0 +DWIDTH 9 0 +BBX 8 7 0 -1 BITMAP -DD80 -4900 -4900 -4900 -4900 -4900 -7FC0 -0040 +92 +92 +92 +92 +92 +FF +01 ENDCHAR STARTCHAR afii10092 ENCODING 1098 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 500 0 +DWIDTH 6 0 +BBX 5 6 0 0 BITMAP -60 -A0 -3C -22 -22 -22 -7C +C0 +40 +70 +48 +48 +70 ENDCHAR STARTCHAR afii10093 ENCODING 1099 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 8 7 2 0 +SWIDTH 583 0 +DWIDTH 7 0 +BBX 6 6 0 0 BITMAP -E7 -42 -42 -72 -4A -4A -F7 +84 +84 +E4 +94 +94 +E4 ENDCHAR STARTCHAR afii10094 ENCODING 1100 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP +80 +80 +E0 +90 +90 E0 -40 -78 -44 -44 -44 -F8 ENDCHAR STARTCHAR afii10095 ENCODING 1101 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 7 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -78 -84 -04 -7C -04 -84 -78 +60 +90 +30 +10 +90 +60 ENDCHAR STARTCHAR afii10096 ENCODING 1102 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 9 7 1 0 +SWIDTH 666 0 +DWIDTH 7 0 +BBX 6 6 0 0 BITMAP -E600 -4900 -5080 -7080 -5080 -4900 -E600 +98 +A4 +E4 +A4 +A4 +98 ENDCHAR STARTCHAR afii10097 ENCODING 1103 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 7 7 2 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 6 0 0 BITMAP -3E -44 -44 -3C -24 -44 -EE +70 +90 +90 +70 +50 +90 ENDCHAR STARTCHAR afii10071 ENCODING 1105 -SWIDTH 1000 0 -DWIDTH 12 0 -BBX 6 9 3 0 +SWIDTH 416 0 +DWIDTH 5 0 +BBX 4 8 0 0 BITMAP -48 +90 00 -30 -48 -84 -FC +60 +90 +F0 80 -44 -38 +90 +60 ENDCHAR STARTCHAR U_1100 ENCODING 4352 From 530ebd39f6ae250ac39c24f70b05e3251e380114 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 10:40:46 +0700 Subject: [PATCH 088/101] Add _L_APP_AMIIDB_MORE_MESSAGE --- fw/data/i18n.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index d10a7143..9cb4ab10 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -114,6 +114,7 @@ _L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情], _L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista],[Назад к списку] _L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca:,Поиск: _L_APP_AMIIDB_MORE,[More...],[更多],[更多],[Más...],[Bővebben...],[Mehr...],[Plus...],[Meer...],[Mais...],[もっと見る...],[Più...],[Дальше...] +_L_APP_AMIIDB_MORE_MESSAGE,Too many results. Try a more specific search.,,,,,Zu viele Ergebnisse. Versuche eine spezifischere Suche,,,,,,, _L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,,<пустой тег> _L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina...,Сброс... _L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Да From cc242d8722e6bdf44fff405f992fdd77c2294f40 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 10:41:19 +0700 Subject: [PATCH 089/101] Rebuild Language files --- fw/application/src/i18n/de_DE.c | 1 + fw/application/src/i18n/en_US.c | 1 + fw/application/src/i18n/es_ES.c | 1 + fw/application/src/i18n/fr_FR.c | 1 + fw/application/src/i18n/hu_HU.c | 1 + fw/application/src/i18n/it_IT.c | 1 + fw/application/src/i18n/ja_JP.c | 1 + fw/application/src/i18n/nl_NL.c | 1 + fw/application/src/i18n/pt_BR.c | 1 + fw/application/src/i18n/ru_RU.c | 1 + fw/application/src/i18n/string_id.h | 1 + fw/application/src/i18n/zh_Hans.c | 1 + fw/application/src/i18n/zh_TW.c | 1 + 13 files changed, 13 insertions(+) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index 17711635..addf498f 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -115,6 +115,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Zurück zur Liste]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Suche:", [_L_APP_AMIIDB_MORE] = "[Mehr...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "Zu viele Ergebnisse. Versuche eine spezifischere Suche", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Zurücksetzen...", [_L_APP_AMIIDB_CONFIRM] = "Bestätigen", diff --git a/fw/application/src/i18n/en_US.c b/fw/application/src/i18n/en_US.c index a67af99a..2bc7cfa6 100644 --- a/fw/application/src/i18n/en_US.c +++ b/fw/application/src/i18n/en_US.c @@ -115,6 +115,7 @@ const char * const lang_en_US[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Back to List]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Search:", [_L_APP_AMIIDB_MORE] = "[More...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "Too many results. Try a more specific search.", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Reset...", [_L_APP_AMIIDB_CONFIRM] = "Confirm", diff --git a/fw/application/src/i18n/es_ES.c b/fw/application/src/i18n/es_ES.c index 2527a232..7af20218 100644 --- a/fw/application/src/i18n/es_ES.c +++ b/fw/application/src/i18n/es_ES.c @@ -115,6 +115,7 @@ const char * const lang_es_ES[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Volver a Lista]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Buscar:", [_L_APP_AMIIDB_MORE] = "[Más...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Borrar...", [_L_APP_AMIIDB_CONFIRM] = "Confirmar", diff --git a/fw/application/src/i18n/fr_FR.c b/fw/application/src/i18n/fr_FR.c index 73a3750b..83107bec 100644 --- a/fw/application/src/i18n/fr_FR.c +++ b/fw/application/src/i18n/fr_FR.c @@ -115,6 +115,7 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Retour à la Liste]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Recherche:", [_L_APP_AMIIDB_MORE] = "[Plus...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Réinitialiser...", [_L_APP_AMIIDB_CONFIRM] = "Confirmer", diff --git a/fw/application/src/i18n/hu_HU.c b/fw/application/src/i18n/hu_HU.c index 256cbb5e..f13b5274 100644 --- a/fw/application/src/i18n/hu_HU.c +++ b/fw/application/src/i18n/hu_HU.c @@ -115,6 +115,7 @@ const char * const lang_hu_HU[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Vissza a Listához]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Keresés:", [_L_APP_AMIIDB_MORE] = "[Bővebben...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "<Üres Amiibo>", [_L_APP_AMIIDB_SLOT_DELETE] = "Újraindítás...", [_L_APP_AMIIDB_CONFIRM] = "Megerősítés", diff --git a/fw/application/src/i18n/it_IT.c b/fw/application/src/i18n/it_IT.c index 19ba0962..0b9087eb 100644 --- a/fw/application/src/i18n/it_IT.c +++ b/fw/application/src/i18n/it_IT.c @@ -115,6 +115,7 @@ const char * const lang_it_IT[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Torna alla lista]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Cerca:", [_L_APP_AMIIDB_MORE] = "[Più...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Elimina...", [_L_APP_AMIIDB_CONFIRM] = "Conferma", diff --git a/fw/application/src/i18n/ja_JP.c b/fw/application/src/i18n/ja_JP.c index 9760d512..850737e9 100644 --- a/fw/application/src/i18n/ja_JP.c +++ b/fw/application/src/i18n/ja_JP.c @@ -115,6 +115,7 @@ const char * const lang_ja_JP[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[リストに戻る]", [_L_APP_AMIIDB_SEARCH_HEAD] = "検索する:", [_L_APP_AMIIDB_MORE] = "[もっと見る...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "リセット...", [_L_APP_AMIIDB_CONFIRM] = "確認する", diff --git a/fw/application/src/i18n/nl_NL.c b/fw/application/src/i18n/nl_NL.c index 23a8c176..ee445f2b 100644 --- a/fw/application/src/i18n/nl_NL.c +++ b/fw/application/src/i18n/nl_NL.c @@ -115,6 +115,7 @@ const char * const lang_nl_NL[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Terug naar Lijst].", [_L_APP_AMIIDB_SEARCH_HEAD] = "Zoeken:", [_L_APP_AMIIDB_MORE] = "[Meer...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Reset...", [_L_APP_AMIIDB_CONFIRM] = "Bevestigen", diff --git a/fw/application/src/i18n/pt_BR.c b/fw/application/src/i18n/pt_BR.c index 1c501301..e21b9374 100644 --- a/fw/application/src/i18n/pt_BR.c +++ b/fw/application/src/i18n/pt_BR.c @@ -115,6 +115,7 @@ const char * const lang_pt_BR[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Voltar Para a Lista]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Pesquisar:", [_L_APP_AMIIDB_MORE] = "[Mais...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Reiniciar...", [_L_APP_AMIIDB_CONFIRM] = "Confirmar", diff --git a/fw/application/src/i18n/ru_RU.c b/fw/application/src/i18n/ru_RU.c index 5ed9aa04..97f5c55e 100644 --- a/fw/application/src/i18n/ru_RU.c +++ b/fw/application/src/i18n/ru_RU.c @@ -115,6 +115,7 @@ const char * const lang_ru_RU[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Назад к списку]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Поиск:", [_L_APP_AMIIDB_MORE] = "[Дальше...]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "<пустой тег>", [_L_APP_AMIIDB_SLOT_DELETE] = "Сброс...", [_L_APP_AMIIDB_CONFIRM] = "Да", diff --git a/fw/application/src/i18n/string_id.h b/fw/application/src/i18n/string_id.h index 124a06c1..fe35d3b0 100644 --- a/fw/application/src/i18n/string_id.h +++ b/fw/application/src/i18n/string_id.h @@ -116,6 +116,7 @@ typedef enum { _L_APP_AMIIDB_DETAIL_BACK_LIST, _L_APP_AMIIDB_SEARCH_HEAD, _L_APP_AMIIDB_MORE, + _L_APP_AMIIDB_MORE_MESSAGE, _L_APP_AMIIDB_EMPTY_TAG, _L_APP_AMIIDB_SLOT_DELETE, _L_APP_AMIIDB_CONFIRM, diff --git a/fw/application/src/i18n/zh_Hans.c b/fw/application/src/i18n/zh_Hans.c index c66ef701..2ea13d9b 100644 --- a/fw/application/src/i18n/zh_Hans.c +++ b/fw/application/src/i18n/zh_Hans.c @@ -115,6 +115,7 @@ const char * const lang_zh_Hans[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]", [_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:", [_L_APP_AMIIDB_MORE] = "[更多]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "<空标签>", [_L_APP_AMIIDB_SLOT_DELETE] = "重置...", [_L_APP_AMIIDB_CONFIRM] = "确认", diff --git a/fw/application/src/i18n/zh_TW.c b/fw/application/src/i18n/zh_TW.c index 67f6bfa6..0a56622c 100644 --- a/fw/application/src/i18n/zh_TW.c +++ b/fw/application/src/i18n/zh_TW.c @@ -115,6 +115,7 @@ const char * const lang_zh_TW[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]", [_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:", [_L_APP_AMIIDB_MORE] = "[更多]", + [_L_APP_AMIIDB_MORE_MESSAGE] = "", [_L_APP_AMIIDB_EMPTY_TAG] = "<空標簽>", [_L_APP_AMIIDB_SLOT_DELETE] = "重置...", [_L_APP_AMIIDB_CONFIRM] = "確認", From 3feb18ba25fb39d0d74465b143aaa67c51e5e1e7 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 10:57:29 +0700 Subject: [PATCH 090/101] Add Message box for [More...] --- .../amiidb/scene/amiidb_scene_amiibo_search.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c index f47de382..e152047e 100644 --- a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c +++ b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c @@ -23,6 +23,21 @@ static void amiidb_scene_amiibo_search_text_input_event_cb(mui_text_input_event_ } } +static void amiidb_msg_box_error_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) { + app_amiidb_t *app = p_msg_box->user_data; + mui_scene_dispatcher_next_scene(app->p_scene_dispatcher, AMIIDB_SCENE_AMIIBO_SEARCH); +} + +static void amiidb_show_message(app_amiidb_t *app, const char *msg) { + mui_msg_box_set_header(app->p_msg_box, getLangString(_L_ERR)); + mui_msg_box_set_message(app->p_msg_box, msg); + mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_CONFIRM), NULL); + mui_msg_box_set_btn_focus(app->p_msg_box, 1); + mui_msg_box_set_event_cb(app->p_msg_box, amiidb_msg_box_error_cb); + + mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIDB_VIEW_ID_MSG_BOX); +} + static void amiidb_scene_amiibo_search_list_view_on_selected(mui_list_view_event_t event, mui_list_view_t *p_list_view, mui_list_item_t *p_item) { uint16_t icon = p_item->icon; @@ -49,6 +64,10 @@ static void amiidb_scene_amiibo_search_list_view_on_selected(mui_list_view_event mui_text_input_set_event_cb(app->p_text_input, amiidb_scene_amiibo_search_text_input_event_cb); mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIDB_VIEW_ID_INPUT); } break; + + case ICON_ERROR: { + amiidb_show_message(app, _T(APP_AMIIDB_MORE_MESSAGE)); + } break; } } From 3d2ab7b3d3f34e75d07cd6007d603d4db65ca7f3 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 11:07:19 +0700 Subject: [PATCH 091/101] Optimize de_DE _L_APP_AMIIDB_MORE_MESSAGE --- fw/application/src/i18n/de_DE.c | 2 +- fw/data/i18n.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/application/src/i18n/de_DE.c b/fw/application/src/i18n/de_DE.c index addf498f..785cb5cf 100644 --- a/fw/application/src/i18n/de_DE.c +++ b/fw/application/src/i18n/de_DE.c @@ -115,7 +115,7 @@ const char * const lang_de_DE[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Zurück zur Liste]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Suche:", [_L_APP_AMIIDB_MORE] = "[Mehr...]", - [_L_APP_AMIIDB_MORE_MESSAGE] = "Zu viele Ergebnisse. Versuche eine spezifischere Suche", + [_L_APP_AMIIDB_MORE_MESSAGE] = "Zu viele Ergebnisse. Bitte Suche eingrenzen.", [_L_APP_AMIIDB_EMPTY_TAG] = "", [_L_APP_AMIIDB_SLOT_DELETE] = "Zurücksetzen...", [_L_APP_AMIIDB_CONFIRM] = "Bestätigen", diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 9cb4ab10..9e343ed1 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -114,7 +114,7 @@ _L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情], _L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista],[Назад к списку] _L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca:,Поиск: _L_APP_AMIIDB_MORE,[More...],[更多],[更多],[Más...],[Bővebben...],[Mehr...],[Plus...],[Meer...],[Mais...],[もっと見る...],[Più...],[Дальше...] -_L_APP_AMIIDB_MORE_MESSAGE,Too many results. Try a more specific search.,,,,,Zu viele Ergebnisse. Versuche eine spezifischere Suche,,,,,,, +_L_APP_AMIIDB_MORE_MESSAGE,Too many results. Try a more specific search.,,,,,Zu viele Ergebnisse. Bitte Suche eingrenzen.,,,,,,, _L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,,<пустой тег> _L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina...,Сброс... _L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Да From 25f7acc8839b7671c24551d71fa0ab8e1ba09f8e Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 22:53:59 +0700 Subject: [PATCH 092/101] Switch to mui_view_dispatcher_switch_to_view and _L_KNOW --- .../src/app/amiidb/scene/amiidb_scene_amiibo_search.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c index e152047e..19498567 100644 --- a/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c +++ b/fw/application/src/app/amiidb/scene/amiidb_scene_amiibo_search.c @@ -25,13 +25,13 @@ static void amiidb_scene_amiibo_search_text_input_event_cb(mui_text_input_event_ static void amiidb_msg_box_error_cb(mui_msg_box_event_t event, mui_msg_box_t *p_msg_box) { app_amiidb_t *app = p_msg_box->user_data; - mui_scene_dispatcher_next_scene(app->p_scene_dispatcher, AMIIDB_SCENE_AMIIBO_SEARCH); + mui_view_dispatcher_switch_to_view(app->p_view_dispatcher, AMIIDB_VIEW_ID_LIST); } static void amiidb_show_message(app_amiidb_t *app, const char *msg) { mui_msg_box_set_header(app->p_msg_box, getLangString(_L_ERR)); mui_msg_box_set_message(app->p_msg_box, msg); - mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_CONFIRM), NULL); + mui_msg_box_set_btn_text(app->p_msg_box, NULL, getLangString(_L_KNOW), NULL); mui_msg_box_set_btn_focus(app->p_msg_box, 1); mui_msg_box_set_event_cb(app->p_msg_box, amiidb_msg_box_error_cb); From 127270469d1e9ec484a0c19dcadb370019479654 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 22:56:55 +0700 Subject: [PATCH 093/101] Add zh_Hans and zh_TW, Fix French _L_KNOW --- fw/data/i18n.csv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fw/data/i18n.csv b/fw/data/i18n.csv index 9e343ed1..0cac034b 100644 --- a/fw/data/i18n.csv +++ b/fw/data/i18n.csv @@ -38,7 +38,7 @@ _L_2MIN,2 Minutes,2分钟,2分鐘,2 minutos,2 min.,2 Minuten,2 min.,2 min.,2 min _L_3MIN,3 Minutes,3分钟,3分鐘,3 minutos,3 min.,3 Minuten,3 min.,3 min.,3 min.,3分,3 minuti,3 минуты _L_AMIIBO_KEY_UNLOADED,Amiibo Key not loaded,Amiibo Key未加载,Amiibo Key未載入,Sin llave amiibo,Amiibo kulcs nincs betöltve,Amiibo Schlüssel fehlt,Clé Amiibo Non Chargée,Amiibo-Sleutel Niet Geladen,A chave Amiibo não foi carregada,Amiiboキーが読み込まれない,Chiave Amiibo non caricata,Отсутствует файл ключа _L_UPLOAD_KEY_RETAIL_BIN,Upload the file key_retail.bin to the root directory of the storage.,上传文件 key_retail.bin\n到存储根目录下。,上傳檔案 key_retail.bin\n到儲存根目錄下。,Suba el archivo\nkey_retail.bin\nal directorio raíz.,Töltse fel a key_retail.bin fájlt a gyökérkönyvtárába.,Platzieren Sie die Datei key_retail.bin im Hauptverzeichnis des Speichers.,Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.,Upload het bestand key_retail.bin naar de hoofdmap van de opslag.,Carregue o arquivo key_retail.bin no diretório raiz do armazenamento.,key_retail.binファイルをストレージのルートディレクトリにアップロードする。,Carica il file key_retail.bin nella directory root della memoria.,Поместите key_retail.bin\n в корень накопителя -_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris (NOTE please feel free to simply change any entry as needed),Begrepen,Entendi,了解,Ho Capito,[Понятно] +_L_KNOW,Got it,知道了,知道了,Entendido,Megvan,Verstanden,Compris,Begrepen,Entendi,了解,Ho Capito,[Понятно] _L_RANDOM_GENERATION,Rand. Tag,随机生成,隨機產生,Nuevo serial aleat.,Véletlengenerátor,Zufällige UUID,Randomiser la Balise,Willekeurige Tag,Randomizar Etiqueta,タグのランダム化,Tag casuale,Сгенерировать UUID _L_AUTO_RANDOM_GENERATION,Auto Rand.,自动随机生成,自動隨機產生,Serial alea. aut,Automat. Véletlengenerátor,Zufällige UUID (Automatisch),Randomisation Automatique,Automatische Randomisatie,Randomização Automática,自動ランダム化,Casuale automatico,Автогенерация _L_SHOW_QRCODE,Display QR Code,显示二维码,顯示二維碼,Mostrar QR,QR-kód Megjelenítése,QR Code,Afficher le Code QR,QR-Code Weergeven,Exibir QR Code,QRコード表示,Mostra codice QR,QR-код @@ -114,7 +114,7 @@ _L_APP_AMIIDB_DETAIL_BACK_DETAIL,[Back to Detail],[返回详情],[返回詳情], _L_APP_AMIIDB_DETAIL_BACK_LIST,[Back to List],[返回列表],[返回列表],[Volver a Lista],[Vissza a Listához],[Zurück zur Liste],[Retour à la Liste],[Terug naar Lijst].,[Voltar Para a Lista],[リストに戻る],[Torna alla lista],[Назад к списку] _L_APP_AMIIDB_SEARCH_HEAD,Search:,搜索:,搜索:,Buscar:,Keresés:,Suche:,Recherche:,Zoeken:,Pesquisar:,検索する:,Cerca:,Поиск: _L_APP_AMIIDB_MORE,[More...],[更多],[更多],[Más...],[Bővebben...],[Mehr...],[Plus...],[Meer...],[Mais...],[もっと見る...],[Più...],[Дальше...] -_L_APP_AMIIDB_MORE_MESSAGE,Too many results. Try a more specific search.,,,,,Zu viele Ergebnisse. Bitte Suche eingrenzen.,,,,,,, +_L_APP_AMIIDB_MORE_MESSAGE,Too many results. Try a more specific search.,搜索结果过多,尝试增加搜索词。,搜索結果過多,嘗試增加搜索詞。,,,Zu viele Ergebnisse. Bitte Suche eingrenzen.,,,,,,, _L_APP_AMIIDB_EMPTY_TAG,,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,,<пустой тег> _L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina...,Сброс... _L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Да From 2e8d24a66ae713ab9cdde79174902470cab5a7a6 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 22:57:25 +0700 Subject: [PATCH 094/101] Update Language Files --- fw/application/src/i18n/fr_FR.c | 2 +- fw/application/src/i18n/zh_Hans.c | 2 +- fw/application/src/i18n/zh_TW.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fw/application/src/i18n/fr_FR.c b/fw/application/src/i18n/fr_FR.c index 83107bec..2c99a55f 100644 --- a/fw/application/src/i18n/fr_FR.c +++ b/fw/application/src/i18n/fr_FR.c @@ -39,7 +39,7 @@ const char * const lang_fr_FR[_L_COUNT] = { [_L_3MIN] = "3 min.", [_L_AMIIBO_KEY_UNLOADED] = "Clé Amiibo Non Chargée", [_L_UPLOAD_KEY_RETAIL_BIN] = "Téléchargez le fichier key_retail.bin dans le répertoire racine du stockage.", - [_L_KNOW] = "Compris (NOTE please feel free to simply change any entry as needed)", + [_L_KNOW] = "Compris", [_L_RANDOM_GENERATION] = "Randomiser la Balise", [_L_AUTO_RANDOM_GENERATION] = "Randomisation Automatique", [_L_SHOW_QRCODE] = "Afficher le Code QR", diff --git a/fw/application/src/i18n/zh_Hans.c b/fw/application/src/i18n/zh_Hans.c index 2ea13d9b..1d937c4b 100644 --- a/fw/application/src/i18n/zh_Hans.c +++ b/fw/application/src/i18n/zh_Hans.c @@ -115,7 +115,7 @@ const char * const lang_zh_Hans[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]", [_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:", [_L_APP_AMIIDB_MORE] = "[更多]", - [_L_APP_AMIIDB_MORE_MESSAGE] = "", + [_L_APP_AMIIDB_MORE_MESSAGE] = "搜索结果过多,尝试增加搜索词。", [_L_APP_AMIIDB_EMPTY_TAG] = "<空标签>", [_L_APP_AMIIDB_SLOT_DELETE] = "重置...", [_L_APP_AMIIDB_CONFIRM] = "确认", diff --git a/fw/application/src/i18n/zh_TW.c b/fw/application/src/i18n/zh_TW.c index 0a56622c..0eba38ea 100644 --- a/fw/application/src/i18n/zh_TW.c +++ b/fw/application/src/i18n/zh_TW.c @@ -115,7 +115,7 @@ const char * const lang_zh_TW[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[返回列表]", [_L_APP_AMIIDB_SEARCH_HEAD] = "搜索:", [_L_APP_AMIIDB_MORE] = "[更多]", - [_L_APP_AMIIDB_MORE_MESSAGE] = "", + [_L_APP_AMIIDB_MORE_MESSAGE] = "搜索結果過多,嘗試增加搜索詞。", [_L_APP_AMIIDB_EMPTY_TAG] = "<空標簽>", [_L_APP_AMIIDB_SLOT_DELETE] = "重置...", [_L_APP_AMIIDB_CONFIRM] = "確認", From b578310e3cbc2db28bd0684b1497ef5243269943 Mon Sep 17 00:00:00 2001 From: Schoko Date: Tue, 9 Apr 2024 22:57:34 +0700 Subject: [PATCH 095/101] Update Font Data --- .../src/mui/u8g2_font_wqy12_t_gb2312a.c | 2538 ++++++++--------- 1 file changed, 1264 insertions(+), 1274 deletions(-) diff --git a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c index 86228c04..cc31bd4a 100644 --- a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c +++ b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c @@ -1,1274 +1,1264 @@ - -#include "mui_u8g2.h" - -#include "u8x8.h" - -/* - Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--12-120-75-75-P-119-ISO10646-1 - Copyright: (null) - Glyphs: 1606/30503 - BBX Build Mode: 0 -*/ -#ifdef U8G2_USE_LARGE_FONTS -const uint8_t u8g2_font_wqy12_t_gb2312a[40297] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") = - "F\0\3\2\4\4\4\4\5\14\15\0\376\10\376\12\377\1d\2\332\5y \5\0\230\26!\7\221\212" - "\26\247\0\42\7\64\371\26\221)#\16\226\210\67Q\313\260D\275\14K\324\2$\17\245xV\331RQ" - "\62QK\224\312\26\1%\20\226x\66Q\322EK\302\64\211\222.Z\2&\16\205\210VY\22%Y" - "eJ\242H\11'\6\61\372\25\3(\13\263yVI\224D\335\242,)\14\263y\26Y\224E]\242" - "$\2*\14u\210V\225\312AY\232\42\0+\13w\210xqm\30\262\270\6,\7\62z\26\212\2" - "-\7\25\310\26\203\0.\6!\212\25\2/\14\304xvMY)+e\65\0\60\12\205\210\66K\346" - "[\262\0\61\11\205\210\26c\237\6\1\62\13\205\210\66K\26\326\332\6\1\63\15\205\210\26C\32&k" - "\30\16\12\0\64\16\206\210wZ\22u\311\222aL\23\0\65\15\205\210\26C\22\206C\32\206\203\2\66" - "\15\205\210\66K\30\16IfK\26\0\67\13\205\210\26\203X\13\263\260\4\70\15\205\210\66K\246%K" - "fK\26\0\71\15\205\210\66KfK\206PK\26\0:\7a\210\22\222\0;\11\202z\26C\254(" - "\0<\10\225\210\226Y\327\16=\10\65\270\26\203:\10>\11\225\210\26i\267\216\0\77\15\225\210\66K" - "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" - "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" - "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" - "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" - "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" - "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" - "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX[" - "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256" - "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d" - "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D" - "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z" - "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V" - "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205" - "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210" - "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210" - "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i" - "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222" - "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226" - "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm" - "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE" - "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e" - "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT" - "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311" - "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X" - "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17" - "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266" - "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314" - "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210" - "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22" - "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V" - "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361" - "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c" - "\62$\0\366\13\205\210\66u`\311\334\222\5\371\13\225\210\66i\16d\336\222!\372\13\225\210vu " - "\363\226\14\1\374\12\205\210\66\345\314[\62\4\0\0\0\70\60\247\6\71N\272\10\241Q\267\12\220T\15" - "\12\77Y\256\12~^\267\12ib\377\13\10g\177\13\26pc\12\364xn\12\273\177:\13\23\211\217" - "\12\261\217\307\13\15\377\377\1M\14\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311" - "\2\4\1\15\245\210\66\345a\14\207\261\70\10\4\20\16\205\210VK\224D\232\66\14\231\26\4\21\15\205" - "\210\26\307pH\62\333\240\0\4\22\16\205\210\26C\222i\203\222\331\6\5\4\23\11\205\210\26\307>\2" - "\4\24\23\227xXC\26eQ\26eQ-\312\222aP\3\4\27\16\205\210\66K\26Fj\250%\13" - "\0\4\30\15\205\210\26\231\323\222(\311\244\5\4\32\17\205\210\26\231\224\224\246J\224dZ\0\4\34\21" - "\207\210\30\351\66dKE\251H\221\24\251\1\4\35\14\205\210\26\231m\30\62\267\0\4\36\13\205\210\66" - "K\346[\262\0\4\37\11\205\210\26\67\277\5\4 \15\205\210\26C\222i\203\22\66\2\4!\14\205\210" - "\66K&vK\26\0\4\42\12\205\210\26\203\24\366\11\4#\14\205\210\26\231\267d\10\7\5\4$\21" - "\207\210x\341\240D\221\24I\221T\31\304\14\4'\13\205\210\26\231[\62\204\15\4-\16\205\210\66K" - "\26&C\30j\311\2\4/\17\205\210\66\203\246%C\22%\221\246\5\4\60\13d\210\65b\62DR" - "\62\4\61\15\224\210u\211\222-\221S\242\0\4\62\15d\210\25K\64$\221\64$\0\4\63\11d\210" - "\25\203\326\15\4\64\17vxW[\222%Y\22U\206!\14\4\65\14d\210\65J\64lQ\242\0\4" - "\66\16g\210\30Q\245mK\232\42\251\0\4\67\13d\210\65JT\224\22\5\4\70\15e\210\26\231\264" - "$J\62i\1\4\71\17\225\210\66\265\34\310\244%Q\222I\13\4:\14d\210\25\221\222HII\12" - "\4;\12d\210\65K\277H\1\4<\14f\210\27\341\64D\213\307\0\4=\13d\210\25\221\64L\246" - "\0\4>\13d\210\65J\344\224(\0\4\77\11d\210\25\203\344)\4@\16\205h\26\211I\323&E" - "\11C\0\4A\13d\210\65J\244\225\22\5\4B\12e\210\26\203\24v\2\4C\14\204h\25\221\245" - "I\312\242\14\4D\23\247hxq\70(Q$ER$U\6\61\316\0\4E\14e\210\26YR\253" - "\324\264\0\4F\20ux\26Q\22%Q\22%Q\62\210\1\4G\12d\210\25\221)\331\12\4H\20" - "g\210\30Q$ER$ER\64\14\2\4I\22xx\31Q%\252D\225\250\22U\206A\7\2\4" - "K\16f\210\27\241\70DR\42%C\24\4L\14d\210\25Y\266D\322\220\0\4M\14d\210\65J" - "\24iR\242\0\4N\17f\210\27\221R\32\42%R\42\13\0\4O\14d\210\65C$%K\42\5" - "\4Q\16\204\210\25Q\252D\303\26%\12\0 \23\10\33\311\34\17\2 \34\13E\376<\221\224(C" - "\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13D\213\30\273x\34\273x\134\311\260\225\262R" - "\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a\32\246a\66,i\224\14" - "Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321p\210\243b\224\225\222," - "\211\264h\323r,G\24\0WO\32\273x\134\71\226\14C\224F\203\26VC\61S\62\245\64\265\3" - "\71\226\1WP\27\273x\274\71\20\25\243bTKz\333\322x\70\347X:\34\4WW\35\273x\134" - "a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\16d\241\32W[\32\273x\134\71\26\15" - "Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y\34\246\321p\320\221(+" - "eM\331\22%b\222c\361\60\4W\213\37\273x<\303\224%Q\222%Q\222\14\203\222%Q\222%" - "a\24\231s\340\220\3\351p\20W\316\33\273x<\261\24'\245\341\255\264\64%]\224DR\232\224D" - "\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213&F\232R\223\22\71\13" - "W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10X\2\32\273x\134\255I" - "mx\207\224aH\242\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134\265\312\60D\225\312\240\24" - "\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224E\311p\314\262\341\240U" - "\243Z\62(q:\34\4X\203\36\273x\134a\232\14C\224%\321p\220j\245A\213\262L\31\24\61" - "\311\201(\311D\1X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p\220\232\224AQ\343\341\2" - "X\231\37\273x\32\273x\274\351pPs *F\265" - "\244\267-Lr K\323A\7\22\0YG\33\273x\274\361pMr \313\206\203\216\204\203\22fI" - "\70(\71\226C\22\0YH\27\273x\274\351p\320\252%ePtt\70\347@Tk\311\304\0YO" - "\31\273x\274\361p\215\207\203V\35\206H\313\244a\210\223\34\310BU\1YV\33\273x\34Q\26&" - "\321\240%RfR\262\70\321\241t\70\210I\254I: YW\32\273x\234\361p\320\302pX\22%" - "\316\6\71\7\36\304\34\12\303aP\0Ye\31\273x\234\71\360\224t\212\246h\70ES\245\313p\20" - "\223\34\310\262uYs\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351H\244\255\11\0Yy\36" - "\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11\223Fu\20Y}\33\273x" - "\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202 \273x\134\71\226#\203" - "\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y\231\34\273x\134a\32f\203" - "\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x<\331\260d\341\60\204Ie" - "X\232\223&)i\222\22Q)%QI\12\7Y\306 \273x<\331 eR\62$MI-J\206" - "S\42%Q\322$e\231\62H\305$\7\24\0Y\313 \273x\134a\32f\203\22eI-J\206!" - "\211r \211\6I\312\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65\15S\226T\246\244S\322" - ")\351\26%\233\22e\221T\34\6Z\1 \273x\374@\222#Q\62\34\222\64L\226(\211Z\206!" - "\211\222N\221\224H\221\262Da\0Z\3\34\273x\134a\32fC\62HI\26&\303)\13\223,\215" - "\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245\27KT\311\264$\314\222" - ",\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211\322\242$\203\222(}J" - "Z\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI\42)\345\244\62hQ\226" - ")\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7\65\307r,G\352P\14" - "[W\31\273x\274\361pHrD\32\224\34\310\241t\70\250\71\226c\71\262\2[X\31\273x\234\361" - "p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\31\272y\33\273x\134\303\240\305\331\60h\241\70\310\331\220" - "\15r\66d\203\226\204\231:\10\134@\36\273x\134\303\240\305\331\60h\71\66\234r J\206\250\22U" - "\242!J\242\222\16(\0\134B\33\273x\134\303\240\305\331\60h\71\226\14[\216\15\247,\216jQ\230" - "d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226\204Q\64,Y\230\0\134" - "O\31\273x\134\303)\7\242\341\224\204YT\34N\215\303\251-\312\242b\4\134U\31\273x<\303)" - "\7\242\341\324\70\234\32\207CRj\311\244JT\22\5\134^\37\273x<\303)\7\242\341\224\3Q\62" - "la\232\14C\224D\225d\70$Y\246$C\42\134q\27\271y\234\71\22f\231\226i\231\226i\231" - "\226i\331p\320\201\0\134\201\30\272x \273x\134" - "a\234e\303\62DY\224EImJ\262$J\262$+EZ\224DI\224\204\1e\77\37\273x\374" - "@\66,q\66d\221\22%K)\311\222(\311\222(\11\263d\212\306$\326\2eE\33\273x|\345" - ",\33\226!\253\204QiPJ-Q\255\224eC\224D\321\26eH\35\273x\134a\234e\303\62D" - "I\242DY\322\26%Y\22%aKVM\212Z\0eL\34\273x|R\66\246\341p\211\262(\251" - "\205I\62HI\255\224\225\6)\251m\1eO\37\273x\34\273x\134\303\20" - "\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\35\273x\374@\66$\203\22e" - "\245,\33\236\302(\32NI\24\15Q\222c\71\62\1fZ\36\273x\274\351\64DI)K\206AY" - "JI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246\341\60\204i\66\34\222\34" - "K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262\244i\70\350\360\60\204i" - "\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220DI\244\14C\226f\303" - "\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15I\24\16C\230\206\303\20" - "\246\341\60D\0f\227\36\273x\374@\66<%Y\22U\242\341)\7\242dP\206$K\242d\220\263" - "xP\0f\362\27\272y|Q\34e\303A*I%\251\64<\225\244\322\360\216\4f\364\31\273x<" - "\303!\216\207A+e\303\240\225\262aP\223\34\312\21\333:f\370\33\273x\134\303\220\3Q\64\34\324" - "(\33\316\351p\220\322p\30\302\64\34\206\10f\374\32\272y\134\303\230Da\224D\303A*\15\7\35" - "\35\326(\7\304!\32\2f\376\31\271y\134\265\341 EK\313p\310\261a\210\322h\30\242\64\32\206" - "\4g\0\33\273x\134\303\20\246\341\60\204i\64\34\224(\7\236*Q\64D\246H\236\4g\10\32\271" - "y\134\303\20\245Q\32\15C\224Fi\64\14Q\32\245I\230\310\11\0g\11\30\273x\234\361p\320r" - "l\30\305,\31\246b:\254a\32\246\231\4g\13\36\273x\33\273x|\265a\211\263!\31\222,G*C\226c\321\60eIOMK\30kL\37" - "\273x\34\227\34\210\262%\32\224\266aP\342,Z\262()%\311\22%i\222ec\0kb\27\272" - "y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205\303!kc\32\253x\34\17j\216\345@\224\3" - "\321\240E\71\20\345@\224\3Q:\34\4kd\36\273x|\345,\316\242\244\226D\311\242%Y\230d" - "a\222\205I\26%\311\22\15\351\0ke\31\273x\274\71\20\15Z\224\3Q:\34\324\34\251\225ji" - "\216\210\203\14kw\34\273x<\303!\311J\211\244EY\66\34\222(\253\234\224>\15ITL\206\3" - "k{\30\273x\34\17Z\216\225\227\250\245$%R\245\16Dq\26\25\243yk\265\34\273x|\312\246" - "%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301\33\273x\34\213\262\204IEY" - "\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303\20&Y\30\25\323h\70HI" - "\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(\32\326$\212\206\203\324\230%\331" - "p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i\70(Y\224\15\207X\3k\324" - "\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27\273x\334\333\240c\71\66d\203" - "\216\345\330\360\216\205i\30\17\2l\21\31\272y\34/\71\220\344@\62\134\262\64K\207\203XJ\62%" - "\213\326\1l\24\32\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224\3Q\216\324!\1l\27\33" - "\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302,l\64\30\273x\274\71\226" - "c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30\17Y\34ECRN\344" - "(I\243ZmJr(\6lB\32\273x\274Q\16d\311pPs \252&u`\7\222jT\322" - "\62Q\5lI\33\273x<\71\220%\303 fQR\13\223\254%\314\222H\15+YS\242\6l_" - "\32\273x<\71\30\15J\34&Y\234\245a\32fj\230\206\311\60(\71\4l`\37\273x\35\273x<" - "\261\226\14\71\20n\311\226(\305\244SR\61%\265(\211Z\242J$\5mA\32\273x\34ie\30" - "\324Z\313\60dq\226\64II-J:%=E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222\205\311\240\345\330pQ\242" - "HI\206!J\242\226a\10y\273\33\273x\274\351p\220\222\306\250\230\64\16C\16\304\303\251%J\6" - "%\212\25\0y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312\60D\305(G\0y\315" - "\33\273x|R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314\0y\321\34\273x|b" - "\262EY\230$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33\273x|\265\61\215\222\312" - "\220\224Z\242d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270\305\321p\220\32\303\245I" - "Jz*iQ\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J\230DC\242eJ\224\324" - "\322\60\332\0z\13\36\273x|\311\240LY)K\206d\320rL\31$%\12\245A)\246a\232\14" - "C\0z\15\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224\6-\312JY)R\0" - "z.\34\273x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264\60M\206!z\61\35\273" - "x|\241\62M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244\0z\77\36\273x|R" - "\66\15S\26%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5zv\30\273x\274\351\360\224" - "E\325,\12\323\34\31v \212\263\250\30\315\3zz\30\273x\274\361pHrD\213\342\60\223\303a" - "\7r,\307\342\341\20z\177\32\273x\274\351\360\224EJ\232$\303 f\351pMr \212\263P\32" - "\1z\201\31\273x\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223t@z\227\36\272y\274" - "\341pP\302\244\224%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0z\313\30\273x\274\71\230" - "\16\207\234\20\246a\34\345@\224\3I\216\205\303Az\326\36\273x|\311 %\265(\211\222,\311\302" - "$J\322$\223\323\341\230\345@\22\16\7\1z\331\34\273x\65&\215Z\0\226b\35\273" - "x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244T\226d\36\273x\34C" - "V\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226\206 \273x\34C\222F" - "\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226\217 \273x\34c\226(" - "\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226\220\42\273x\34C\62D" - "\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207\10\226\250!\273x\34C" - "VR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22eC\0\226\274\30\273x\134" - "Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334I\64DI\232\14C\64" - "eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211\206\203\224%a\244dI" - "\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351pP\242\34\70hQ\16" - "\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203\22%\225a\351\224T\206" - "\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235\42O\225NY)\213\24" - "\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15\27\0\226\366\31\273x<" - "\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x<\303\71\35\36CEI" - "\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62\234\262\322p\312J\303\71" - "L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j\211Z\22\5\227\6\34\273" - "x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0\227\23\34\273x<\303\71" - "\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273x<\303\71\35\236\222\322" - "\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236\222\322 \15I\224H\311" - "\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322p\220*Q\62(C\322" - ")\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13\323a\15\323a\15#\0" - "\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!J\244\60*&\66\0\227" - "^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224ALr\244\10\227`\34\273x" - "\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227b\30\272y\34\17a\216" - "\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240\225\7\35\311\201C\30\25" - "\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360RJ\222A\211\262P\32" - "\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206\303\20\246\341\60D\0\227" - "\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i\351\260)\0\230\30\36\273" - "x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230\204\1\230^\36\273x\34" - "IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0\230o\42\273x<\203\62" - "$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372\267\0\230u\31\273x\34" - "\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x\134\331 \245\321\240\14R" - "\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240\205\225(\224\206!\252\305" - "IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224R\66\14J-J\272(" - "-JE\252\224\302$\321\264\0\230\230!\273x\11\225\210\26i\267\216\0\77\15\225\210\66K" + "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" + "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" + "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" + "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" + "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" + "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" + "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\15\227xX[" + "%uM\262lO\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256a" + "\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232dQ" + "V\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D\231" + "\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z\26" + "C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350VY" + "R\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205\210" + "\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210\66" + "K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210\26" + "a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))iI" + "T\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222y" + "\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226\14" + "a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm\2" + "u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE\351" + "\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e\210" + "\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YTK" + "\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311\60" + "\277\12\204\210Uy\26\325\302\1\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210XJ" + "TG\343\64\11\223\254\64(\251\32\311\14\265\210v\365a\14\207\261\70\10\312\15\265\210VY\22\17c" + "\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266\210" + "wa\16\205~L\206\4\334\14\246\210\67Q\36\372\61\31\22\0\337\15\205\210\66R%JJ\225\314\224" + "\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210\66" + "\246|M\6MK\206\0\344\14\205\210\66\365\65\31\64-\31\2\347\13\204h\65C\326\70%\22\0\350" + "\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\15\225\210VY\222" + "/\331\60\204\351\20\353\14\205\210\66\365%\33\206\60\35\2\355\11\222\210\63Z\322\13\0\361\13\225\210\66" + "\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c\62$\0\366" + "\13\205\210\66\365%sK\26\0\371\13\225\210\66i\236yK\206\0\372\12\225\210v\365\314[\62\4\374" + "\12\205\210\66\345\314[\62\4\0\0\0\70\60\247\6\32N\272\10OQ\267\12dT\15\12\36Y\231\12" + "M^\253\12\71b\354\12\362go\12\365on\12\312x\64\12\246\177\23\12\361\211\177\12\223\217\203\12" + "\370\377\377\1M\14\205\210\66\373\222\271%\13\0\1Q\15\225\210VI\373\222\271%\13\0\4\1\15\245" + "\210\66\345a\14\207\261\70\10\4\20\16\205\210VK\224D\232\66\14\231\26\4\21\15\205\210\26\307pH" + "\62\333\240\0\4\22\16\205\210\26C\222i\203\222\331\6\5\4\23\11\205\210\26\307>\2\4\24\23\227x" + "XC\26eQ\26eQ-\312\222aP\3\4\27\16\205\210\66K\26Fj\250%\13\0\4\30\15\205" + "\210\26\231\323\222(\311\244\5\4\32\17\205\210\26\231\224\224\246J\224dZ\0\4\34\21\207\210\30\351\66" + "dKE\251H\221\24\251\1\4\35\14\205\210\26\231m\30\62\267\0\4\36\13\205\210\66K\346[\262\0" + "\4\37\11\205\210\26\67\277\5\4 \15\205\210\26C\222i\203\22\66\2\4!\14\205\210\66K&vK" + "\26\0\4\42\12\205\210\26\203\24\366\11\4#\14\205\210\26\231\267d\10\7\5\4$\21\207\210x\341\240" + "D\221\24I\221T\31\304\14\4'\13\205\210\26\231[\62\204\15\4-\16\205\210\66K\26&C\30j" + "\311\2\4/\17\205\210\66\203\246%C\22%\221\246\5\4\60\13d\210\65b\62DR\62\4\61\15\224" + "\210u\211\222-\221S\242\0\4\62\15d\210\25K\64$\221\64$\0\4\63\11d\210\25\203\326\15\4" + "\64\17vxW[\222%Y\22U\206!\14\4\65\14d\210\65J\64lQ\242\0\4\66\16g\210\30" + "Q\245mK\232\42\251\0\4\67\13d\210\65JT\224\22\5\4\70\15e\210\26\231\264$J\62i\1" + "\4\71\16\225\210\66\265<\223\226DI&-\4:\14d\210\25\221\222HII\12\4;\12d\210\65" + "K\277H\1\4<\14f\210\27\341\64D\213\307\0\4=\13d\210\25\221\64L\246\0\4>\13d\210" + "\65J\344\224(\0\4\77\11d\210\25\203\344)\4@\16\205h\26\211I\323&E\11C\0\4A\13" + "d\210\65J\244\225\22\5\4B\12e\210\26\203\24v\2\4C\14\204h\25\221\245I\312\242\14\4D" + "\23\247hxq\70(Q$ER$U\6\61\316\0\4E\14e\210\26YR\253\324\264\0\4F\20" + "ux\26Q\22%Q\22%Q\62\210\1\4G\12d\210\25\221)\331\12\4H\20g\210\30Q$E" + "R$ER\64\14\2\4I\21xx\31Q%\252D\225\250\22U\206A\17\4K\16f\210\27\241\70" + "DR\42%C\24\4L\14d\210\25Y\266D\322\220\0\4M\14d\210\65J\24iR\242\0\4N" + "\17f\210\27\221R\32\42%R\42\13\0\4O\14d\210\65C$%K\42\5\4Q\16\204\210\25Q" + "\252D\303\26%\12\0 \23\10\33\311\34\17\2 \34\13E\376<\221\224(C\42 \35\14E\371\34" + "\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13D\213\10\60j" + "\30\271y\134\71\224d\203\242\205RV\314\302(\32\302L\253d\33\0\60k\26\251y\34\71\224M\211" + "\264F\71\222#Y\230\24\265!\311\1\60n\24\231\211|kR\213*Y&\205R\250\204Q\30k\0" + "\60o\32\272y\334Y\234%\331\22\15Q\34\305Q\34eC\224h\212\222%\245\15\60y\22\213\230\374" + "I\216\24u$J\305\34\314\301\34\24\60~\26\270z|a\66$C\236e\323\220\207C\226-Y\224" + "\214\0\60\177\32\272y\30\273x\14aT\34\206\60*F\245\341 \245" + "a\32\206\22\0Q\231\33\273x<\303!\311\21)\15\207\65\307\206!\307\242aHr,Or(\3" + "Q\233\30\272y\34\17:\22\306\303 \346H\224\16\203\34\16\207\64\207B\0Q\234\32\273x\274\361p" + "H\262P\323\302(\217jR\222%Y)\211RQ\213\3Q\245\31\273x\34\337!e\30\222(\15\207" + "!L\303a\310\323\341\240\325\326\1Q\260\33\273x\34\324,\315\322l\30\2T\16\32\273x\374\333 \347\330p\312\261\34K\206-\11" + "\243b\24\15K\26&\0T\21\30\272x\234\71\22\17\7\35\221\206H*I%i\210tDG\344\1" + "T\27\34\273x\234\303\62\244I\324\22\265DI\226D\311\60D\261\64,\203\234c\371\2T\36\30\273" + "x<\303\71\307\322\341\240Uk\303\245\232Di\70\14a\32\1T&\32\273x\34\17j\16)\242\222" + "%Z\230\346\303\240\305Y\234\15\203\26'\0T'\32\273x\234\303\262DI\247\244S\322)i\31\226" + "%N\352X\32\246\351\60T,\35\273x\374\210\62$[\224\244Q\222F\311\60DI\24\15I\224G" + "q\226\206\325\10T/\32\272x\274\361\60Hq\24G\303 \345\320\60HjRM\222a\220\322\0T" + "J\31\273x\134\365(\37\6)\313\261t\70\350\360\60\204i\230\206\303\20\1TX\31\273x\134\303\20" + "\246\341\60\344\370p\312\243\254\224\225*Q\230e\353\0Tb\34\273x\234\303\262\204IcR\31\226\346" + "\244mH*J\213\236d\245,\21\207\0Th\35\273x\134\303)+%\203\22e\245\341\224G\311\240" + "DI\226\224\6\245\216\350\210\0Ts\32\273x\374\331\220\225\222A\211\262\322p\312\262!\232*\255Q" + "\255\224g\0T}\32\273x\274\71\224\344Y\266\334\321!\31\242J\324\22EC\22\265$z\10T\206" + "\35\273x\274\71\66\134RE\31\22%\252(QE\211\206d\210\262\244\224ca<\10T\214\32\273x" + "\234\362\216e\303!\211\262R\64\225\224R\322I\312\242,\33\262\34T\232\32\273x\334\341\66$\245," + "\351)\11\263$K\242E[$\35\314uP\2T\301\26\272y\134\303\330q\330\321!\32\244\222T\222" + "J\203\64H\15T\315\33\273x\374\71\24.\303\240T\225\312\242tQ\272\14I\262\204i\230\206\241\0" + "T\345\31\272y\34\17y\66DYT\33\242h\70\344\331\20eQm\210\362\11T\350\34\273x\234Q" + "\64(\235\262R\62\14Q\22J\311pHB)\31\326\60\15\323hT\352\37\273x|C\62,-J" + "\27eP\224^\224AI\206\244E\351\61I\266(\11#%\2T\356\36\273x\334\331\220\14K-\211" + "\222\341\220da\22\15\312\222E\211\62Li\216\345\310\4U$\34\273x\334\71\66$C\22\225\206!" + "\211\222NI\313\220t\32\6=\207\222X\23U.\31\273x\134Y<\234\262t\270\324\342a\320\312\303" + ")\316\342l\30\24\0UF\35\273x\274\351p\320\212\303\251\22U\262$\32NI\226D\311\240DI" + "\226D\261\2U_\35\273x|\305A\11\263dH\6\245\24*Q\262\224\222NI\251%*-\255Y" + "\0Uf\33\273x\274I\66\265\14\207$J\223HJJIeQZ\224\346(\37\266\25U\232\33\273" + "x\274C\64\265\224\262d\30\224\26\245ER\226R\70\14r\222g\241\32U\234\31\273x\274\351pP" + "\343\341\226\206\303\220f\331p\220\322\60\15\207!\2U\256\34\272y\34C\64H%\251\64\34\224,\212" + "\206A\312\242h\30\344p\70\244!\0U\267\34\273x\374\331\62\14J\224t\31\6%\312\222\312pH" + "R\245T\214\312I\254\11V\27\31\273x\134M\303S\26e\203\232\305\211\226\15\203X\35\326\60\35&" + "\0V\30\36\273x\334C\262\205I\62\14J\233\222\14K\267!\211\6\245\253\322\24)R\62\14\2V" + "h \273x\34\273x\134\311" + "\260\225\262R\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a\32\246a\66" + ",i\224\14Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321p\210\243b" + "\224\225\222,\211\264h\323r,G\24\0WO\31\273x\134\71\226\14C\224F\203\26VC\61S\62" + "\245\64\265\347X\6WP\26\273x\274yT\214\212Q-\351mK\343\341\234c\351p\20WW\35\273" + "x\134a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\236\205j\0W[\32\273x\134\71" + "\26\15Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y\34\246\321p\320\221" + "(+eM\331\22%b\222c\361\60\4W\213\36\273x<\303\224%Q\222%Q\222\14\203\222%Q" + "\222%a\24\231\363a\310\323\341 W\316\33\273x<\261\24'\245\341\255\264\64%]\224DR\232\224" + "D\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213&F\232R\223\22\71" + "\13W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10X\2\31\273x\134\255" + "Imx\207\224aH\242\64\34\206<\37\6\71\35\16\2XT\35\273x\134\265\312\60D\225\312\240\24" + "\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224E\311p\314\262\341\240U" + "\243Z\62(q:\34\4X\203\35\273x\134a\232\14C\224%\321p\220j\245A\213\262L\31\24\61" + "\311\243$\23\5X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p\220\232\224AQ\343\341\2X" + "\231\37\273x\27\273x\274\351pP\363\250\30\325\222\336\266\60\311\263\64\35\364\4YG\32\273x\274\361p" + "M\362,\33\16:\22\16J\230%\341\240\344X\16I\0YH\26\273x\274\351p\320\252%ePt" + "t\70\347Q\255%\23\3YO\30\273x\274\361p\215\207\203V\35\206H\313\244a\210\223<\13U\5" + "YV\33\273x\34Q\26&\321\240%RfR\262\70\321\241t\70\210I\254I\272\0YW\32\273x" + "\234\361p\320\302pX\22%\316\6\71\37\16b\16\205\341\60(\0Ye\31\273x\234\371pJ:E" + "S\64\234\242\251\322e\70\210I\236e\353\0Ys\30\273x\234\71\226c\361p\320\312Y\32\246K\16" + "\351H\244\255\11\0Yy\36\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11" + "\223Fu\20Y}\33\273x\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y" + "\202 \273x\134\71\226#\203\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y" + "\231\34\273x\134a\32f\203\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x" + "<\331\260d\341\60\204IeX\232\223&)i\222\22Q)%QI\12\7Y\306\37\273x<\331 " + "eR\62$MI-J\206S\42%Q\322$e\231\62H\305$W\0Y\313\37\273x\134a\32f" + "\203\22eI-J\206!\211\362$\32$)\213\222Z\22%\303\232\5Y\354\34\273x\134\321\60\65\15" + "S\226T\246\244S\322)\351\26%\233\22e\221T\34\6Z\1\37\273x\374I\216D\311pH\322\60" + "Y\242$j\31\206$J:ER\42E\312\22\205\1Z\3\34\273x\134a\32fC\62HI\26&" + "\303)\13\223,\215\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245\27K" + "T\311\264$\314\222,\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211\322\242" + "$\203\222(}JZ\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI\42)" + "\345\244\62hQ\226)\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7\65\307" + "r,G\352P\14[W\30\273x\274\361pHrD\32\224<\207\322\341\240\346X\216\345\310\12[X" + "\31\273x\234\361p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\30\272y\33\273x\134\303\240\305\331" + "\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\34\273x\134\303\240\305\331\60h\71\66\234" + "\362(\31\242JT\211\206(\211J\272\2\134B\33\273x\134\303\240\305\331\60h\71\226\14[\216\15\247" + ",\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226\204Q\64" + ",Y\230\0\134O\31\273x\134\303)\217\206S\22fQq\70\65\16\247\266(\213\212\21\0\134U\30" + "\273x<\303)\217\206S\343pj\34\16I\251%\223*QI\24\134^\36\273x<\303)\217\206S" + "\36%\303\26\246\311\60DITI\206C\222eJ\62$\2\134q\26\271y\234\71\22f\231\226i\231" + "\226i\231\226i\331p\320\3\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$" + "J\262$+EZ\224DI\224\204\1e\77\36\273x\374\331\260\304\331\220EJ\224,\245$K\242$" + "K\242$\314\222)\32\223X\13eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224e" + "C\224D\321\26eH\35\273x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212" + "Z\0eL\34\273x|R\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO" + "\37\273x\34\273" + "x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\34\273x\374\331\220" + "\14J\224\225\262lx\12\243h\70%Q\64DI\216\345\310\4fZ\36\273x\274\351\64DI)K" + "\206AYJI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246\341\60\204i\66" + "\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262\244i\70\350\360" + "\60\204i\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220DI\244\14C" + "\226f\303\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15I\24\16C\230" + "\206\303\20\246\341\60D\0f\227\34\273x\374\331\360\224dIT\211\206\247\33\273x|\265a\211\263!\31\222," + "G*C\226c\321\60eIOMK\30kL\36\273x\34\227<\312\226hP\332\206A\211\263h\311" + "\242\244\224$K\224\244I\226\215\1kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205" + "\303!kc\26\253x\34\17j\216\345Q\36\15Z\224Gy\224G\351p\20kd\36\273x|\345," + "\316\242\244\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\30\273x\274y\64hQ" + "\36\245\303A\315\221Z\251\226\346\210\70\310\0kw\34\273x<\303!\311J\211\244EY\66\34\222(" + "\253\234\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%R\245\36\305YT\214" + "\346\1k\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301" + "\33\273x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303" + "\20&Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(" + "\32\326$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i" + "\70(Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27" + "\273x\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\27\272y\34/y\222'\303%" + "K\263t\70\210\245$S\262h\35l\24\31\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224G" + "\71R\207\4l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302,l" + "\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30\17" + "Y\34ECRN\344(I\243ZmJr(\6lB\27\273x\274Q\236%\303A\315\243jR\337" + "\223jT\322\62Q\5lI\32\273x\34\273x<\261" + "\226\14y\270%[\242\24\223NI\305\224\324\242$j\211*\221\24mA\32\273x\34ie\30\324Z" + "\313\60dq\226\64II-J:%=E\2mN\34\273x\14\1t*\32\273x\274Y\62\34\244ZiP\206$+" + "\15Z\224e\303A\307\263\264\0t\64\32\273x\34\203\62HivK\243A\31\324\34\261M\321\66\350" + "P\16\245\0t^\34\273x\234Q\64L-\303\20\345\320p\210\262\70\31\206h\251LIc\322\30\12" + "t\334\34\273x\374\333\260FI\32%i\224\244Q\61*FY\224%\245lH\64)\11t\343 \273" + "x\32\273x\245\331" + "pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222\205\311\240\345\330pQ\242HI\206" + "!J\242\226a\10y\273\32\273x\274\351p\220\222\306\250\230\64\16C\36\17\247\226(\31\224(V\0" + "y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312\60D\305(G\0y\315\33\273x|" + "R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314\0y\321\34\273x|b\262EY\230" + "$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33\273x|\265\61\215\222\312\220\224Z\242" + "d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270\305\321p\220\32\303\245IJz*i" + "Q\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J\230DC\242eJ\224\324\322\60\332\0" + "z\13\36\273x|\311\240LY)K\206d\320rL\31$%\12\245A)\246a\232\14C\0z\15" + "\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224\6-\312JY)R\0z.\34\273" + "x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264\60M\206!z\61\35\273x|\241\62" + "M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244\0z\77\36\273x|R\66\15S\26" + "%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5zv\27\273x\274\351\360\224E\325,\12" + "\323\34\31\366(\316\242b\64\17zz\30\273x\274\361pHrD\213\342\60\223\303a\317\261\34\213\207" + "C\0z\177\31\273x\274\351\360\224EJ\232$\303 f\351pM\362(\316Bi\4z\201\31\273x" + "\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223t\1z\227\36\272y\274\341pP\302\244\224" + "%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0z\313\27\273x\274\71\230\16\207\34\17\323\60" + "\216\362(Or,\34\16\2z\326\35\273x|\311 %\265(\211\222,\311\302$J\322$\223\323\341" + "\230\345I\70\34\4z\331\34\273x\254a\32\246\303\4{~\33\273x\34\242J\324\22%\303A\205\317\37\273x\234Q\66\34\304(\251\14" + "\207\244\323\62(Q\222%C\62,\275(\311\240T\23\1\206\21\36\273x\234Y\64\34\304\244\66\34\222" + "(\313\206C\242t\31\16I\24FC\230d\303\2\206N\34\273x\274\203\34\17\207$\12\243a\320\242" + "\64\211\206!\311\261h\10\243\222\42\16\206k\26\273x\274\71\26\17\247\254\224\225\206s\216Ey\26\17" + "\7\65\206y\35\273x\134\71\226\15\207,JjQR\213\222Z\64ha\32&Y\270E\313\60\4\206" + "}\30\273x\134\303\20\246\341\60\204Q=\36NYi\70\347Xe\70\10\206~\35\273x\134\71\26\15" + "\7)KJYR\222\222R\222\14Rc\232D\351\224iI\6\206\331\35\273x\134a\32\15Z\230\15" + "R\226$\303\240\224\7)\215\6-\211\322)\223\206!\207\203\37\273x\134a\32\15\7\245\224$\303\240" + "$R\242$\303K\234\15RR\213\206pH\62\5\207\215 \273x\34\247\34\313\206dP\242\244eH" + "\232\223dxPJ\321\60%J\24\15I\62D\1\207\371\35\273x\134\313\240D\245aH\22\245)\33" + "\16ISe\70\325\262a\220\263d\270\4\210@\32\273x\234\71\224#\303\251\22\265D-QK\324\22" + "\265D-Q\62\34\4\210L\32\273x\134\321 \345P\16\347P\62\14\211\32%i\230\206i\230\206\331" + "\4\210W\34\273x\134\245%\31\302\372\60f\321\240\225\222A\211\262R\266D\311\26\305\12\0\210c\31" + "\273x\274\71\30\16\7\65\207\222(\214\222P\13\223\254\224D\251X\16\210e\31\273x\65&\215Z\0\226b\35\273x\34C\24FY%\31N\251\22\15J\224" + "G\303!)U\242\212V\221R\1\226d\36\273x\34CV\252DI\224%R\262(a\26\15\247," + "\233\222\266(\222\262H\325\0\226\206 \273x\34C\222F\311\240T\264D\234\222D\233\222Z\224\14\7" + ")K\242A\211\263h\30\4\226\217 \273x\34c\226(\303\220\64j\203R\213\222\344\220tJ\244d" + "H\262$J\62\65\212\6\1\226\220\42\273x\34C\62D\225\250\222\14\213\222&\245A\211\322$J\6" + "E\211\302$Q\232\222(\21\207\10\226\250!\273x\34CVR\206%*i\303\220\204IiY\242\244" + "eH\222\245\224\264%Q\22eC\0\226\274\30\273x\134Y<\134\264\60\31\6\255<\14Zy\70\207" + "\303A\16\1\226\276\35\273x\334I\64DI\232\14C\64eI)\214\206\251-I\206\245\251\30\345\303" + "\0\226\304\37\273x|\345(\211\206\203\224%a\244dI\64(\245$*\15K\226\204I\333\220\14\2" + "\226\306\33\273x|I\236\245\303A\211\362a\320\242|\30\264(\35\16ZR\233\242\1\226\314\37\273x" + "\134I\224&\215I\62,\203\22%\225a\351\224T\206\245S\62(\221\224\14r\10\226\350\30\273x\34" + "\17j\216\305\303)+%\235\42O\225NY)\213\24\0\226\352\31\273x<\303\71\35\36CEI\224" + "\34\35\356X\66\14:\26\15\27\0\226\366\30\273x<\303\71\35\236\222R\70k\222\226I\303\220C\371" + "\216i\0\226\367\30\273x<\303\71\35\36CEI\224\64\36NYi\70e\245\341\2\226\373\30\273x" + "<\303\71\35^\242J\62\234\262\322p\312J\303\71L\207\1\227\0\31\273x<\303\71\35^\224DI" + "\323\341 \346\303\251\22\265D-\211\2\227\6\34\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205" + "\311\60H\71\242\14\203\0\227\23\33\273x<\303\71\35^\242J\62\15Q\36\15\311\20\345\321p\214\262" + "!\33\4\227\36\32\273x<\303\71\35\236\222\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36" + "\273x<\303\71\35\236\222\322 \15I\224H\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x" + "<\303\71\35\236\222\322p\220*Q\62(C\322)\31\16Y)\213\42\5\227R\27\273x\274\361p\316" + "\207!O\207\203\26\246\303\32\246\303\32F\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70" + "(Q%R\222!J\244\60*&\66\0\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&" + "\71R\34\224ALr\244\10\227`\34\273x\134\365a\220\262t\70Hi\70\14q\22\16\312 &\341" + "\240\14b\22\2\227b\30\272y\34\17a\216\304\303A*IC$\225\244!\222J\303;\22\227i\30" + "\273x|\265\341\240\225\7\35\311\207!\214\212\303\220\247\303AM\1\227\215\35\273x<\265l\70(\215" + "\311\226\206\331\360RJ\222A\211\262P\32\244$\213\264\0\227\363\31\273x\274\361p\314\362$\34\16:" + "<\14a\32\16C\230\206\303\20\1\227\365\34\273x\134Y\70(a\226\14J\343\260dy\64\254Z\244" + "\14\203\246\245\303\246\0\230\30\36\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33" + "\264\250\230\204\1\230^\36\273x\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RK" + "j[\0\230o\42\273x<\203\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224" + "aH\372\267\0\230u\31\273x\34\17j>\14a\32F\305\250\30\25#%\216\342P\222\23\0\230\177" + "\35\273x\134\331 \245\321\240\14R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x" + "|\321\240\205\225(\224\206!\252\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263" + "d\30\224R\66\14J-J\272(-JE\252\224\302$\321\264\0\230\230!\273x Date: Tue, 9 Apr 2024 22:10:05 +0500 Subject: [PATCH 096/101] Add files via upload --- web/src/i18n/index.js | 4 +- web/src/i18n/ru_RU.js | 86 +++++++++++++++++++++---------------------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/web/src/i18n/index.js b/web/src/i18n/index.js index 88aa677e..dbdb4a31 100644 --- a/web/src/i18n/index.js +++ b/web/src/i18n/index.js @@ -10,8 +10,8 @@ import enLocale from './en_US' import zhTWLocale from './zh_TW' import zhCNLocale from './zh_Hans' import esLocale from './es_ES' -import ruLocale from "./ru_RU"; -import deLocale from "./de_DE"; +import ruLocale from './ru_RU'; +import deLocale from './de_DE'; Vue.use(VueI18n) diff --git a/web/src/i18n/ru_RU.js b/web/src/i18n/ru_RU.js index 3cda5253..c438caef 100644 --- a/web/src/i18n/ru_RU.js +++ b/web/src/i18n/ru_RU.js @@ -1,17 +1,17 @@ export default { lang: { - choose: 'Выбор языка/Language', + choose: '语言/Language', zhcn: '简体中文', zhtw: '繁體中文(臺灣)', en: 'English', es: 'Español', ru: 'Русский', de: 'Deutsch', - changeok: 'Язык изменен успешно!', + changeok: 'Язык интерфейса успешно изменён!', }, btn: { - ok: 'OK', + ok: 'ОК', cancel: 'Отмена', cont: 'Продолжить' }, @@ -19,93 +19,93 @@ export default { upload: 'Загрузить', newfolder: 'Новая папка', del: 'Удалить', - up: 'Родительская папка', + up: 'Выше', refresh: 'Обновить', dfu: 'DFU' }, status: { - connected: 'Подключено, Версия: ', + connected: 'Подключено. Версия ПО: ', version: 'Версия:', - mac: 'MAC-адрес:', + mac: 'MAC-адрес: ', loading: 'загрузка…' }, conn: { connect: 'Подключиться', connecting: 'Подключение…', - disconnect: 'Отключиться…', + disconnect: 'Отключиться', consuccess: 'Успешное подключение к Pixl.js!', - disconnected: 'Pixl.js был отключен!', + disconnected: 'Pixl.js отключён!', connfailed: 'Ошибка подключения к Pixl.js!' }, labels: { name: 'Имя', size: 'Размер', type: 'Тип', - remark: 'Примечание' + remark: 'Заметка' }, contxmenu: { del: 'Удалить…', rename: 'Переименовать…', prop: 'Свойства…', - format: 'Форматировать…' + format: 'Отформатировать…' }, properties: { title: 'Свойства', - remark: 'Примечание', - entermsg: 'Пожалуйста, введите примечание', + remark: 'Заметка:', + entermsg: 'Задайте заметку', attrib: 'Атрибуты', - hide: 'Скрыть', - errupdate: 'Не удалось обновить свойства!', - remarktoolong: 'Примечания могут быть длиной до 90 байт!, то есть 90 символов или 30 китайских символов (текущее значение: ', - remarktoolongend: ' Байт)' + hide: 'Скрытый', + errupdate: 'Ошибка обновления свойств', + remarktoolong: 'Заметки могут быть длиной до 90 байт (то есть 90 символов или 30 китайских символов). Текущее значение: ', + remarktoolongend: ' байт.' }, upload: { title: 'Загрузка', drag: 'Перетащите файлы сюда или ', - click: 'нажмите для загрузки.', - maxsize: 'Общая длина пути к файлу не может превышать 63 байта.', - maxname: 'Имя файла не может превышать 47 байт.', - closetitle: 'Подтвердить закрытие?', - closemessage: 'Закрытие диалога очистит список загрузок и прервёт очередь загрузки.', - errupload: 'Ошибка загрузки: ' + click: 'выберите файлы.', + maxsize: 'Общая длина пути к файлу не должна превышать 63 байта.', + maxname: 'Имя файла не должно превышать 47 байт.', + closetitle: 'Закрыть окно загрузчика файлов?', + closemessage: 'Закрытие окна загрузчика файлов приведёт к удалению списка загрузок и прервёт выполнение текущей очереди загрузки.', + errupload: ' Ошибка загрузки: ' }, format: { title: 'Форматирование', - messrow1a: 'Вы уверены, что хотите отформатировать ', - messrow1b: ' ?', - messrow2: 'Форматирование приведет к удалению всех данных!', - messrow3: 'Форматирование может занять около 10 секунд, пожалуйста, подождите.', - formatok: 'Форматирование завершено!', - formaterr: 'Ошибка форматирования!: ' + messrow1a: 'Отформатировать «', + messrow1b: '»?', + messrow2: 'Форматирование приведёт к удалению всех данных. Это действие необратимо.', + messrow3: 'Процесс форматирования может занять до 10 секунд, наберитесь терпения.', + formatok: 'Форматирование завершено', + formaterr: 'Ошибка форматирования: ' }, del: { title: 'Удаление', - message: 'Удалить файл: ', - messageend: ' ?', - error: 'Ошибка удаления файла!: ', - deleteok: 'Файл успешно удален!' + message: 'Удалить «', + messageend: '»?', + error: 'Ошибка удаления: ', + deleteok: 'Удаление успешно завершено' }, dfumode: { title: 'Режим DFU', startconfirm: 'Войти в режим DFU?', - updateconfirm: 'Вход в режим DFU выполнен успешно. Хотите открыть страницу обновления по DFU?', - updatetitle: 'Режим DFU принят' + updateconfirm: 'Вход в режим DFU выполнен успешно. Открыть страницу обновления программного обеспечения (ПО) через DFU?', + updatetitle: 'Устройство в режиме DFU' }, oldfirm: { - title: 'Советы по обновлению', - message: 'Версия встроенного ПО вашего устройства слишком старая. Пожалуйста, обновитесь до последней версии ПО перед использованием функции загрузки.' + title: 'Советы по обновлению ПО', + message: 'Программное обеспечение (ПО) устройства слишком старое. Для использования функции загрузки обновите ПО до последней версии.' }, newfolder: { title: 'Новая папка', - message: 'Пожалуйста, введите название папки', - newfoldererr: 'Ошибка создания папки!:' + message: 'Задайте название папки:', + newfoldererr: 'Ошибка создания папки: ' }, rename: { - title: 'Переименовать', - message: 'Пожалуйста, введите новое имя файла: ', - errrename: 'Ошибка переименования!: ', - nametoolong: 'Максимальная длина пути к файлу не должна превышать 63 байта', - pathtoolong: 'Максимальная длина имени файла не должна превышать 47 байт' + title: 'Переименование', + message: 'Задайте новое имя:', + errrename: 'Ошибка переименования: ', + nametoolong: 'Максимальная длина пути к файлу не должна превышать 63 байта.', + pathtoolong: 'Максимальная длина имени файла не должна превышать 47 байт.' }, drive: { message: '(Диск недоступен [код ошибки: ', From 853819197d54d52e7a22b6befad6e76168aee137 Mon Sep 17 00:00:00 2001 From: MayanKoyote <43220515+MayanKoyote@users.noreply.github.com> Date: Wed, 10 Apr 2024 02:02:47 +0500 Subject: [PATCH 097/101] Changes related to PR #245 --- fw/application/src/i18n/ru_RU.c | 2 +- .../src/mui/u8g2_font_wqy12_t_gb2312a.c | 2545 +++++++++-------- fw/data/i18n.csv | 2 +- 3 files changed, 1283 insertions(+), 1266 deletions(-) diff --git a/fw/application/src/i18n/ru_RU.c b/fw/application/src/i18n/ru_RU.c index 97f5c55e..895106a6 100644 --- a/fw/application/src/i18n/ru_RU.c +++ b/fw/application/src/i18n/ru_RU.c @@ -115,7 +115,7 @@ const char * const lang_ru_RU[_L_COUNT] = { [_L_APP_AMIIDB_DETAIL_BACK_LIST] = "[Назад к списку]", [_L_APP_AMIIDB_SEARCH_HEAD] = "Поиск:", [_L_APP_AMIIDB_MORE] = "[Дальше...]", - [_L_APP_AMIIDB_MORE_MESSAGE] = "", + [_L_APP_AMIIDB_MORE_MESSAGE] = "Очень много совпадений.\nУточните запрос.", [_L_APP_AMIIDB_EMPTY_TAG] = "<пустой тег>", [_L_APP_AMIIDB_SLOT_DELETE] = "Сброс...", [_L_APP_AMIIDB_CONFIRM] = "Да", diff --git a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c index cc31bd4a..90fa8c12 100644 --- a/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c +++ b/fw/application/src/mui/u8g2_font_wqy12_t_gb2312a.c @@ -1,1264 +1,1281 @@ - -#include "mui_u8g2.h" - -#include "u8x8.h" - -/* - Fontname: -wenquanyi-wenquanyi bitmap song-medium-r-normal--12-120-75-75-P-119-ISO10646-1 - Copyright: (null) - Glyphs: 1615/30503 - BBX Build Mode: 0 -*/ -#ifdef U8G2_USE_LARGE_FONTS -const uint8_t u8g2_font_wqy12_t_gb2312a[39984] U8G2_FONT_SECTION("u8g2_font_wqy12_t_gb2312a") = - "O\0\3\2\4\4\4\4\5\14\15\0\376\10\376\12\377\1d\2\331\5t \5\0\230\26!\7\221\212" - "\26\247\0\42\7\64\371\26\221)#\16\226\210\67Q\313\260D\275\14K\324\2$\17\245xV\331RQ" - "\62QK\224\312\26\1%\20\226x\66Q\322EK\302\64\211\222.Z\2&\16\205\210VY\22%Y" - "eJ\242H\11'\6\61\372\25\3(\13\263yVI\224D\335\242,)\14\263y\26Y\224E]\242" - "$\2*\14u\210V\225\312AY\232\42\0+\13w\210xqm\30\262\270\6,\7\62z\26\212\2" - "-\7\25\310\26\203\0.\6!\212\25\2/\14\304xvMY)+e\65\0\60\12\205\210\66K\346" - "[\262\0\61\11\205\210\26c\237\6\1\62\13\205\210\66K\26\326\332\6\1\63\15\205\210\26C\32&k" - "\30\16\12\0\64\16\206\210wZ\22u\311\222aL\23\0\65\15\205\210\26C\22\206C\32\206\203\2\66" - "\15\205\210\66K\30\16IfK\26\0\67\13\205\210\26\203X\13\263\260\4\70\15\205\210\66K\246%K" - "fK\26\0\71\15\205\210\66KfK\206PK\26\0:\7a\210\22\222\0;\11\202z\26C\254(" - "\0<\10\225\210\226Y\327\16=\10\65\270\26\203:\10>\11\225\210\26i\267\216\0\77\15\225\210\66K" - "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" - "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" - "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" - "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" - "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" - "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" - "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\15\227xX[" - "%uM\262lO\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256a" - "\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232dQ" - "V\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D\231" - "\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z\26" - "C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350VY" - "R\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205\210" - "\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210\66" - "K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210\26" - "a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))iI" - "T\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222y" - "\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226\14" - "a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm\2" - "u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE\351" - "\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e\210" - "\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YTK" - "\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311\60" - "\277\12\204\210Uy\26\325\302\1\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210XJ" - "TG\343\64\11\223\254\64(\251\32\311\14\265\210v\365a\14\207\261\70\10\312\15\265\210VY\22\17c" - "\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266\210" - "wa\16\205~L\206\4\334\14\246\210\67Q\36\372\61\31\22\0\337\15\205\210\66R%JJ\225\314\224" - "\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210\66" - "\246|M\6MK\206\0\344\14\205\210\66\365\65\31\64-\31\2\347\13\204h\65C\326\70%\22\0\350" - "\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\15\225\210VY\222" - "/\331\60\204\351\20\353\14\205\210\66\365%\33\206\60\35\2\355\11\222\210\63Z\322\13\0\361\13\225\210\66" - "\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c\62$\0\366" - "\13\205\210\66\365%sK\26\0\371\13\225\210\66i\236yK\206\0\372\12\225\210v\365\314[\62\4\374" - "\12\205\210\66\345\314[\62\4\0\0\0\70\60\247\6\32N\272\10OQ\267\12dT\15\12\36Y\231\12" - "M^\253\12\71b\354\12\362go\12\365on\12\312x\64\12\246\177\23\12\361\211\177\12\223\217\203\12" - "\370\377\377\1M\14\205\210\66\373\222\271%\13\0\1Q\15\225\210VI\373\222\271%\13\0\4\1\15\245" - "\210\66\345a\14\207\261\70\10\4\20\16\205\210VK\224D\232\66\14\231\26\4\21\15\205\210\26\307pH" - "\62\333\240\0\4\22\16\205\210\26C\222i\203\222\331\6\5\4\23\11\205\210\26\307>\2\4\24\23\227x" - "XC\26eQ\26eQ-\312\222aP\3\4\27\16\205\210\66K\26Fj\250%\13\0\4\30\15\205" - "\210\26\231\323\222(\311\244\5\4\32\17\205\210\26\231\224\224\246J\224dZ\0\4\34\21\207\210\30\351\66" - "dKE\251H\221\24\251\1\4\35\14\205\210\26\231m\30\62\267\0\4\36\13\205\210\66K\346[\262\0" - "\4\37\11\205\210\26\67\277\5\4 \15\205\210\26C\222i\203\22\66\2\4!\14\205\210\66K&vK" - "\26\0\4\42\12\205\210\26\203\24\366\11\4#\14\205\210\26\231\267d\10\7\5\4$\21\207\210x\341\240" - "D\221\24I\221T\31\304\14\4'\13\205\210\26\231[\62\204\15\4-\16\205\210\66K\26&C\30j" - "\311\2\4/\17\205\210\66\203\246%C\22%\221\246\5\4\60\13d\210\65b\62DR\62\4\61\15\224" - "\210u\211\222-\221S\242\0\4\62\15d\210\25K\64$\221\64$\0\4\63\11d\210\25\203\326\15\4" - "\64\17vxW[\222%Y\22U\206!\14\4\65\14d\210\65J\64lQ\242\0\4\66\16g\210\30" - "Q\245mK\232\42\251\0\4\67\13d\210\65JT\224\22\5\4\70\15e\210\26\231\264$J\62i\1" - "\4\71\16\225\210\66\265<\223\226DI&-\4:\14d\210\25\221\222HII\12\4;\12d\210\65" - "K\277H\1\4<\14f\210\27\341\64D\213\307\0\4=\13d\210\25\221\64L\246\0\4>\13d\210" - "\65J\344\224(\0\4\77\11d\210\25\203\344)\4@\16\205h\26\211I\323&E\11C\0\4A\13" - "d\210\65J\244\225\22\5\4B\12e\210\26\203\24v\2\4C\14\204h\25\221\245I\312\242\14\4D" - "\23\247hxq\70(Q$ER$U\6\61\316\0\4E\14e\210\26YR\253\324\264\0\4F\20" - "ux\26Q\22%Q\22%Q\62\210\1\4G\12d\210\25\221)\331\12\4H\20g\210\30Q$E" - "R$ER\64\14\2\4I\21xx\31Q%\252D\225\250\22U\206A\17\4K\16f\210\27\241\70" - "DR\42%C\24\4L\14d\210\25Y\266D\322\220\0\4M\14d\210\65J\24iR\242\0\4N" - "\17f\210\27\221R\32\42%R\42\13\0\4O\14d\210\65C$%K\42\5\4Q\16\204\210\25Q" - "\252D\303\26%\12\0 \23\10\33\311\34\17\2 \34\13E\376<\221\224(C\42 \35\14E\371\34" - "\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13D\213\10\60j" - "\30\271y\134\71\224d\203\242\205RV\314\302(\32\302L\253d\33\0\60k\26\251y\34\71\224M\211" - "\264F\71\222#Y\230\24\265!\311\1\60n\24\231\211|kR\213*Y&\205R\250\204Q\30k\0" - "\60o\32\272y\334Y\234%\331\22\15Q\34\305Q\34eC\224h\212\222%\245\15\60y\22\213\230\374" - "I\216\24u$J\305\34\314\301\34\24\60~\26\270z|a\66$C\236e\323\220\207C\226-Y\224" - "\214\0\60\177\32\272y\30\273x\14aT\34\206\60*F\245\341 \245" - "a\32\206\22\0Q\231\33\273x<\303!\311\21)\15\207\65\307\206!\307\242aHr,Or(\3" - "Q\233\30\272y\34\17:\22\306\303 \346H\224\16\203\34\16\207\64\207B\0Q\234\32\273x\274\361p" - "H\262P\323\302(\217jR\222%Y)\211RQ\213\3Q\245\31\273x\34\337!e\30\222(\15\207" - "!L\303a\310\323\341\240\325\326\1Q\260\33\273x\34\324,\315\322l\30\2T\16\32\273x\374\333 \347\330p\312\261\34K\206-\11" - "\243b\24\15K\26&\0T\21\30\272x\234\71\22\17\7\35\221\206H*I%i\210tDG\344\1" - "T\27\34\273x\234\303\62\244I\324\22\265DI\226D\311\60D\261\64,\203\234c\371\2T\36\30\273" - "x<\303\71\307\322\341\240Uk\303\245\232Di\70\14a\32\1T&\32\273x\34\17j\16)\242\222" - "%Z\230\346\303\240\305Y\234\15\203\26'\0T'\32\273x\234\303\262DI\247\244S\322)i\31\226" - "%N\352X\32\246\351\60T,\35\273x\374\210\62$[\224\244Q\222F\311\60DI\24\15I\224G" - "q\226\206\325\10T/\32\272x\274\361\60Hq\24G\303 \345\320\60HjRM\222a\220\322\0T" - "J\31\273x\134\365(\37\6)\313\261t\70\350\360\60\204i\230\206\303\20\1TX\31\273x\134\303\20" - "\246\341\60\344\370p\312\243\254\224\225*Q\230e\353\0Tb\34\273x\234\303\262\204IcR\31\226\346" - "\244mH*J\213\236d\245,\21\207\0Th\35\273x\134\303)+%\203\22e\245\341\224G\311\240" - "DI\226\224\6\245\216\350\210\0Ts\32\273x\374\331\220\225\222A\211\262\322p\312\262!\232*\255Q" - "\255\224g\0T}\32\273x\274\71\224\344Y\266\334\321!\31\242J\324\22EC\22\265$z\10T\206" - "\35\273x\274\71\66\134RE\31\22%\252(QE\211\206d\210\262\244\224ca<\10T\214\32\273x" - "\234\362\216e\303!\211\262R\64\225\224R\322I\312\242,\33\262\34T\232\32\273x\334\341\66$\245," - "\351)\11\263$K\242E[$\35\314uP\2T\301\26\272y\134\303\330q\330\321!\32\244\222T\222" - "J\203\64H\15T\315\33\273x\374\71\24.\303\240T\225\312\242tQ\272\14I\262\204i\230\206\241\0" - "T\345\31\272y\34\17y\66DYT\33\242h\70\344\331\20eQm\210\362\11T\350\34\273x\234Q" - "\64(\235\262R\62\14Q\22J\311pHB)\31\326\60\15\323hT\352\37\273x|C\62,-J" - "\27eP\224^\224AI\206\244E\351\61I\266(\11#%\2T\356\36\273x\334\331\220\14K-\211" - "\222\341\220da\22\15\312\222E\211\62Li\216\345\310\4U$\34\273x\334\71\66$C\22\225\206!" - "\211\222NI\313\220t\32\6=\207\222X\23U.\31\273x\134Y<\234\262t\270\324\342a\320\312\303" - ")\316\342l\30\24\0UF\35\273x\274\351p\320\212\303\251\22U\262$\32NI\226D\311\240DI" - "\226D\261\2U_\35\273x|\305A\11\263dH\6\245\24*Q\262\224\222NI\251%*-\255Y" - "\0Uf\33\273x\274I\66\265\14\207$J\223HJJIeQZ\224\346(\37\266\25U\232\33\273" - "x\274C\64\265\224\262d\30\224\26\245ER\226R\70\14r\222g\241\32U\234\31\273x\274\351pP" - "\343\341\226\206\303\220f\331p\220\322\60\15\207!\2U\256\34\272y\34C\64H%\251\64\34\224,\212" - "\206A\312\242h\30\344p\70\244!\0U\267\34\273x\374\331\62\14J\224t\31\6%\312\222\312pH" - "R\245T\214\312I\254\11V\27\31\273x\134M\303S\26e\203\232\305\211\226\15\203X\35\326\60\35&" - "\0V\30\36\273x\334C\262\205I\62\14J\233\222\14K\267!\211\6\245\253\322\24)R\62\14\2V" - "h \273x\34\273x\134\311" - "\260\225\262R\62(\305,\231\262R\61RZ\244,\315\222,\322\2W@\35\273x\134a\32\246a\66" - ",i\224\14Q%\215\222\64J\322!\311\264$\36\6\1WG\33\273x\134Y\234\305\321p\210\243b" - "\224\225\222,\211\264h\323r,G\24\0WO\31\273x\134\71\226\14C\224F\203\26VC\61S\62" - "\245\64\265\347X\6WP\26\273x\274yT\214\212Q-\351mK\343\341\234c\351p\20WW\35\273" - "x\134a\32\246\321\240\14R\222\205I\26&Y\62\14\221\226\211I\236\205j\0W[\32\273x\134\71" - "\26\15Z\216\14\71\224\14C\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y\34\246\321p\320\221" - "(+eM\331\22%b\222c\361\60\4W\213\36\273x<\303\224%Q\222%Q\222\14\203\222%Q" - "\222%a\24\231\363a\310\323\341 W\316\33\273x<\261\24'\245\341\255\264\64%]\224DR\232\224" - "D\251U\244\254\0W\337\33\273x\134\251\226&Q\62\34\304\312RJ:%\213&F\232R\223\22\71" - "\13W\372\30\273x|\305\341\230\305K\234\314Y\66\34\244&eP\324t\70\10X\2\31\273x\134\255" - "Imx\207\224aH\242\64\34\206<\37\6\71\35\16\2XT\35\273x\134\265\312\60D\225\312\240\24" - "\243\254\222,Q\216\15\203\62e\361 g\11\0X^\31\273x\274\351\360\224E\311p\314\262\341\240U" - "\243Z\62(q:\34\4X\203\35\273x\134a\232\14C\224%\321p\220j\245A\213\262L\31\24\61" - "\311\243$\23\5X\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p\220\232\224AQ\343\341\2X" - "\231\37\273x\27\273x\274\351pP\363\250\30\325\222\336\266\60\311\263\64\35\364\4YG\32\273x\274\361p" - "M\362,\33\16:\22\16J\230%\341\240\344X\16I\0YH\26\273x\274\351p\320\252%ePt" - "t\70\347Q\255%\23\3YO\30\273x\274\361p\215\207\203V\35\206H\313\244a\210\223<\13U\5" - "YV\33\273x\34Q\26&\321\240%RfR\262\70\321\241t\70\210I\254I\272\0YW\32\273x" - "\234\361p\320\302pX\22%\316\6\71\37\16b\16\205\341\60(\0Ye\31\273x\234\371pJ:E" - "S\64\234\242\251\322e\70\210I\236e\353\0Ys\30\273x\234\71\226c\361p\320\312Y\32\246K\16" - "\351H\244\255\11\0Yy\36\273x\134a\32%\331\220$S\222,Q\262\224\222NIe\213\222T\11" - "\223Fu\20Y}\33\273x\134\71\226\15\207\60K\262\60\311J\303\220\24C\261\222\225\262(\235\0Y" - "\202 \273x\134\71\226#\203\62HI-JjI\224dI\224d\221\224E\322\240DI\246c\0Y" - "\231\34\273x\134a\32f\203\242d\211\22U\242JT\325\242,\315\222\254\232\205\42\0Y\256\35\273x" - "<\331\260d\341\60\204IeX\232\223&)i\222\22Q)%QI\12\7Y\306\37\273x<\331 " - "eR\62$MI-J\206S\42%Q\322$e\231\62H\305$W\0Y\313\37\273x\134a\32f" - "\203\22eI-J\206!\211\362$\32$)\213\222Z\22%\303\232\5Y\354\34\273x\134\321\60\65\15" - "S\226T\246\244S\322)\351\26%\233\22e\221T\34\6Z\1\37\273x\374I\216D\311pH\322\60" - "Y\242$j\31\206$J:ER\42E\312\22\205\1Z\3\34\273x\134a\32fC\62HI\26&" - "\303)\13\223,\215\6M\13\243Z\70\14Z\5 \273x<\71\26\15\7)\311\222(\311\22\245\27K" - "T\311\264$\314\222,\211\222(\33\206\0Z\34\42\273x<\311\220,QR\31\226\212\222,\211\322\242" - "$\203\222(}JZ\224\312RJ\242J\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI\42)" - "\345\244\62hQ\226)\203\24iI\70(\0[P\30\273x\134\303\220C\71\224C\71\226\16\7\65\307" - "r,G\352P\14[W\30\273x\274\361pHrD\32\224<\207\322\341\240\346X\216\345\310\12[X" - "\31\273x\234\361p\320r(\31\266\64\23\263d\70\205i\230\206i\264\1[f\30\272y\33\273x\134\303\240\305\331" - "\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\34\273x\134\303\240\305\331\60h\71\66\234" - "\362(\31\242JT\211\206(\211J\272\2\134B\33\273x\134\303\240\305\331\60h\71\226\14[\216\15\247" - ",\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h\345\341\224\305\311\260%a\226\204Q\64" - ",Y\230\0\134O\31\273x\134\303)\217\206S\22fQq\70\65\16\247\266(\213\212\21\0\134U\30" - "\273x<\303)\217\206S\343pj\34\16I\251%\223*QI\24\134^\36\273x<\303)\217\206S" - "\36%\303\26\246\311\60DITI\206C\222eJ\62$\2\134q\26\271y\234\71\22f\231\226i\231" - "\226i\231\226i\331p\320\3\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$" - "J\262$+EZ\224DI\224\204\1e\77\36\273x\374\331\260\304\331\220EJ\224,\245$K\242$" - "K\242$\314\222)\32\223X\13eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224e" - "C\224D\321\26eH\35\273x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212" - "Z\0eL\34\273x|R\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO" - "\37\273x\34\273" - "x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245,iN\302\341 fB\34\273x\374\331\220" - "\14J\224\225\262lx\12\243h\70%Q\64DI\216\345\310\4fZ\36\273x\274\351\64DI)K" - "\206AYJI\247\244\62,\65mJ\242\60\252eC\0fh\36\273x\134\303\20\246\341\60\204i\66" - "\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn\32\273x|\305\341T\211\262\244i\70\350\360" - "\60\204i\70\14a\32\16C\4fz\37\272y<\71\64$\203\222E\303 E\322\220DI\244\14C" - "\226f\303\220\245\331\60$\0f\202\37\273x\134q\62([\22\205\203\62hQ\22\15I\24\16C\230" - "\206\303\20\246\341\60D\0f\227\34\273x\374\331\360\224dIT\211\206\247\33\273x|\265a\211\263!\31\222," - "G*C\226c\321\60eIOMK\30kL\36\273x\34\227<\312\226hP\332\206A\211\263h\311" - "\242\244\224$K\224\244I\226\215\1kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q\34\205" - "\303!kc\26\253x\34\17j\216\345Q\36\15Z\224Gy\224G\351p\20kd\36\273x|\345," - "\316\242\244\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\30\273x\274y\64hQ" - "\36\245\303A\315\221Z\251\226\346\210\70\310\0kw\34\273x<\303!\311J\211\244EY\66\34\222(" - "\253\234\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%R\245\36\305YT\214" - "\346\1k\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!\13+Y\244\11k\301" - "\33\273x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+k\315\34\273x\134\303" - "\20&Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273x\134\71\66\134r(" - "\32\326$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP\343\341\234\16\7\251i" - "\70(Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262-S\207\0k\333\27" - "\273x\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\27\272y\34/y\222'\303%" - "K\263t\70\210\245$S\262h\35l\24\31\273x|\71\66\14Y\16%\303\224\243\303\216\345X\224G" - "\71R\207\4l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350H\61\252jI\24Y\302,l" - "\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260\14l\70\31\273x\274\71\30\17" - "Y\34ECRN\344(I\243ZmJr(\6lB\27\273x\274Q\236%\303A\315\243jR\337" - "\223jT\322\62Q\5lI\32\273x\34\273x<\261" - "\226\14y\270%[\242\24\223NI\305\224\324\242$j\211*\221\24mA\32\273x\34ie\30\324Z" - "\313\60dq\226\64II-J:%=E\2mN\34\273x\14\1t*\32\273x\274Y\62\34\244ZiP\206$+" - "\15Z\224e\303A\307\263\264\0t\64\32\273x\34\203\62HivK\243A\31\324\34\261M\321\66\350" - "P\16\245\0t^\34\273x\234Q\64L-\303\20\345\320p\210\262\70\31\206h\251LIc\322\30\12" - "t\334\34\273x\374\333\260FI\32%i\224\244Q\61*FY\224%\245lH\64)\11t\343 \273" - "x\32\273x\245\331" - "pG\207\203\324d\23y\217\37\273x<\321\60D\71<(C\222\205\311\240\345\330pQ\242HI\206" - "!J\242\226a\10y\273\32\273x\274\351p\220\222\306\250\230\64\16C\36\17\247\226(\31\224(V\0" - "y\301\32\273x|\362\230\206\331 \245Y:\245J\61\211\262\312\60D\305(G\0y\315\33\273x|" - "R\66\246\321\360\22\265D\221RJ\224aP\302\64L\303\64\314\0y\321\34\273x|b\262EY\230" - "$\203\230\225\62-\211\224p\11\267H\312\342,N\0y\322\33\273x|\265\61\215\222\312\220\224Z\242" - "d)*Q\244\304Y\32fj\242\2y\360\31\273x|J\270\305\321p\220\32\303\245IJz*i" - "Q\61\315\64\0y\373\33\273x|\265\203T\34\226(\13-J\230DC\242eJ\224\324\322\60\332\0" - "z\13\36\273x|\311\240LY)K\206d\320rL\31$%\12\245A)\246a\232\14C\0z\15" - "\36\273x|R\64DI-\314\206C\26e\321\62H\212\226\224\6-\312JY)R\0z.\34\273" - "x|\311\240\214i\64\274\324\242AS\332\222a\22\263$\32\264\60M\206!z\61\35\273x|\241\62" - "M\225(\32\224\266h\320\224\266d\230\244\244\313\60D\265R\244\0z\77\36\273x|R\66\15S\26" - "%\203\62d\71\66\234\222\64Q\222E\351)I\226(\11\5zv\27\273x\274\351\360\224E\325,\12" - "\323\34\31\366(\316\242b\64\17zz\30\273x\274\361pHrD\213\342\60\223\303a\317\261\34\213\207" - "C\0z\177\31\273x\274\351\360\224EJ\232$\303 f\351pM\362(\316Bi\4z\201\31\273x" - "\274\361pH\242\222\24\226\222r\224\15\207\64\207\222X\223t\1z\227\36\272y\274\341pP\302\244\224" - "%\303!\211\262(\31\246)\211\42\251\22%\321\60(\0z\313\27\273x\274\71\230\16\207\34\17\323\60" - "\216\362(Or,\34\16\2z\326\35\273x|\311 %\265(\211\222,\311\302$J\322$\223\323\341" - "\230\345I\70\34\4z\331\34\273x\254a\32\246\303\4{~\33\273x\34\242J\324\22%\303A\205\317\37\273x\234Q\66\34\304(\251\14" - "\207\244\323\62(Q\222%C\62,\275(\311\240T\23\1\206\21\36\273x\234Y\64\34\304\244\66\34\222" - "(\313\206C\242t\31\16I\24FC\230d\303\2\206N\34\273x\274\203\34\17\207$\12\243a\320\242" - "\64\211\206!\311\261h\10\243\222\42\16\206k\26\273x\274\71\26\17\247\254\224\225\206s\216Ey\26\17" - "\7\65\206y\35\273x\134\71\226\15\207,JjQR\213\222Z\64ha\32&Y\270E\313\60\4\206" - "}\30\273x\134\303\20\246\341\60\204Q=\36NYi\70\347Xe\70\10\206~\35\273x\134\71\26\15" - "\7)KJYR\222\222R\222\14Rc\232D\351\224iI\6\206\331\35\273x\134a\32\15Z\230\15" - "R\226$\303\240\224\7)\215\6-\211\322)\223\206!\207\203\37\273x\134a\32\15\7\245\224$\303\240" - "$R\242$\303K\234\15RR\213\206pH\62\5\207\215 \273x\34\247\34\313\206dP\242\244eH" - "\232\223dxPJ\321\60%J\24\15I\62D\1\207\371\35\273x\134\313\240D\245aH\22\245)\33" - "\16ISe\70\325\262a\220\263d\270\4\210@\32\273x\234\71\224#\303\251\22\265D-QK\324\22" - "\265D-Q\62\34\4\210L\32\273x\134\321 \345P\16\347P\62\14\211\32%i\230\206i\230\206\331" - "\4\210W\34\273x\134\245%\31\302\372\60f\321\240\225\222A\211\262R\266D\311\26\305\12\0\210c\31" - "\273x\274\71\30\16\7\65\207\222(\214\222P\13\223\254\224D\251X\16\210e\31\273x\65&\215Z\0\226b\35\273x\34C\24FY%\31N\251\22\15J\224" - "G\303!)U\242\212V\221R\1\226d\36\273x\34CV\252DI\224%R\262(a\26\15\247," - "\233\222\266(\222\262H\325\0\226\206 \273x\34C\222F\311\240T\264D\234\222D\233\222Z\224\14\7" - ")K\242A\211\263h\30\4\226\217 \273x\34c\226(\303\220\64j\203R\213\222\344\220tJ\244d" - "H\262$J\62\65\212\6\1\226\220\42\273x\34C\62D\225\250\222\14\213\222&\245A\211\322$J\6" - "E\211\302$Q\232\222(\21\207\10\226\250!\273x\34CVR\206%*i\303\220\204IiY\242\244" - "eH\222\245\224\264%Q\22eC\0\226\274\30\273x\134Y<\134\264\60\31\6\255<\14Zy\70\207" - "\303A\16\1\226\276\35\273x\334I\64DI\232\14C\64eI)\214\206\251-I\206\245\251\30\345\303" - "\0\226\304\37\273x|\345(\211\206\203\224%a\244dI\64(\245$*\15K\226\204I\333\220\14\2" - "\226\306\33\273x|I\236\245\303A\211\362a\320\242|\30\264(\35\16ZR\233\242\1\226\314\37\273x" - "\134I\224&\215I\62,\203\22%\225a\351\224T\206\245S\62(\221\224\14r\10\226\350\30\273x\34" - "\17j\216\305\303)+%\235\42O\225NY)\213\24\0\226\352\31\273x<\303\71\35\36CEI\224" - "\34\35\356X\66\14:\26\15\27\0\226\366\30\273x<\303\71\35\236\222R\70k\222\226I\303\220C\371" - "\216i\0\226\367\30\273x<\303\71\35\36CEI\224\64\36NYi\70e\245\341\2\226\373\30\273x" - "<\303\71\35^\242J\62\234\262\322p\312J\303\71L\207\1\227\0\31\273x<\303\71\35^\224DI" - "\323\341 \346\303\251\22\265D-\211\2\227\6\34\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205" - "\311\60H\71\242\14\203\0\227\23\33\273x<\303\71\35^\242J\62\15Q\36\15\311\20\345\321p\214\262" - "!\33\4\227\36\32\273x<\303\71\35\236\222\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36" - "\273x<\303\71\35\236\222\322 \15I\224H\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x" - "<\303\71\35\236\222\322p\220*Q\62(C\322)\31\16Y)\213\42\5\227R\27\273x\274\361p\316" - "\207!O\207\203\26\246\303\32\246\303\32F\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70" - "(Q%R\222!J\244\60*&\66\0\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&" - "\71R\34\224ALr\244\10\227`\34\273x\134\365a\220\262t\70Hi\70\14q\22\16\312 &\341" - "\240\14b\22\2\227b\30\272y\34\17a\216\304\303A*IC$\225\244!\222J\303;\22\227i\30" - "\273x|\265\341\240\225\7\35\311\207!\214\212\303\220\247\303AM\1\227\215\35\273x<\265l\70(\215" - "\311\226\206\331\360RJ\222A\211\262P\32\244$\213\264\0\227\363\31\273x\274\361p\314\362$\34\16:" - "<\14a\32\16C\230\206\303\20\1\227\365\34\273x\134Y\70(a\226\14J\343\260dy\64\254Z\244" - "\14\203\246\245\303\246\0\230\30\36\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33" - "\264\250\230\204\1\230^\36\273x\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RK" - "j[\0\230o\42\273x<\203\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224" - "aH\372\267\0\230u\31\273x\34\17j>\14a\32F\305\250\30\25#%\216\342P\222\23\0\230\177" - "\35\273x\134\331 \245\321\240\14R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x" - "|\321\240\205\225(\224\206!\252\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263" - "d\30\224R\66\14J-J\272(-JE\252\224\302$\321\264\0\230\230!\273x\11\225\210\26i\267\216\0\77\15\225\210\66K" + "\246\205\221\226Ca\4@\24\247xX[%\221\264DR\224\212R\221\22%\313&\0A\16\207\210x" + "q\232\204IV\32\224T\15B\15\206\210\27\203\22\212\303\22\32\207\5C\14\206\210\67C\22\252\35\223" + "!\1D\15\207\210\30\203\24&\251\307d\220\0E\13\205\210\26\307p\30\213\203\0F\13\205\210\26\307" + "pH\302F\0G\15\206\210\67C\22\252\265QL\6\1H\13\206\210\27\241q\30D\307\0I\11\203" + "\210\24K\324\313\0J\10\243hT\375i\1K\16\205\210\26\231\224\224\64-\211*Y\0L\11\205\210" + "\26a\37\7\1M\20\207\210\30\332\220-\25\245\42ER\244\252\1N\15\206\210\27\341\246DR\242\215" + "\306\0O\14\207\210X[%uM\262l\2P\14\205\210\26C\222\331\6%,\2Q\16\227xX[" + "%uM\262l\7\22\0R\20\206\210\27C\224%Y\222%C\324\226\204\1S\14\205\210\66\203\230\256" + "a\70(\0T\12\207\210\30\207,\356\33\0U\12\206\210\27\241\37\223!\1V\17\207\210\30\251\232d" + "QV\11\223\64\316\0W\21\211\210\32Y\246eZ\245S\322\224\264\25\263\10X\16\206\210\27\241\230D" + "\231\26\265\204b\0Y\14\207\210\30i\222U\322\270\33\0Z\12\207\210\30\207\264\317\303\20[\11\263z" + "\26C\324\237\6\134\15\245x\26a\32\246a\32\246a\0]\11\263y\26S\177\32\2^\10\65\350V" + "YR\13_\7\25x\26\203\0`\7\62\371\25I\24a\14e\210\66K\226\14\232\226\14\1b\14\205" + "\210\26a\70$\231\333\240\0c\10d\210\65C\326\70d\13\205\210\226\225AsK\206\0e\13e\210" + "\66K\66\14a:\4f\11\203\210\64\323\20u\2g\14\205h\66\203\346\226\14a\262\0h\13\205\210" + "\26a\70$\231\267\0i\7\201\210\22\311\60j\11\242h\63Y\322\313\0k\15\205\210\26a))i" + "IT\311\2l\7\201\210\22\7\1m\16g\210\30\213\22ER$ER$\25n\11e\210\26C\222" + "y\13o\12e\210\66K\346\226,\0p\14\205h\26C\222\271\15J\30\2q\13\205h\66\203\346\226" + "\14a\1r\10c\210\24C\324\11s\14e\210\66K\226\250I\226,\0t\12\203\210\24Q\64Dm" + "\2u\11e\210\26\231\267d\10v\14e\210\26\231\226\224\222,\214\0w\17g\210\30Q$EJE" + "\351\26e\11\0x\13e\210\26YR\253\324\264\0y\15\205h\26\231\226\224\222,\314\302\14z\12e" + "\210\26\203\230\265\15\2{\13\243xTIT\311\242\266\0|\7\261z\25\17\2}\13\243x\24YT" + "K\242\226\10~\7&\270\67\222\5\200\17\225\210VR%\33\242l\210\302(R\0\241\7\201\210\22\311" + "\60\277\12\204\210U\71\220E\265p\301\20\267\210\230i\16W\223\60\311J\203\222\252\1\303\21\267\210X" + "JTG\343\64\11\223\254\64(\251\32\311\14\265\210vu\340\30\16cq\20\312\15\265\210VY\22\17" + "c\70\214\305A\315\12\263\210TI\270D\275\14\326\16\247\210XI\16n\225\324\65\311\262\11\332\14\266" + "\210wa\16\205~L\206\4\334\14\246\210\67Q\16\204~L\206\4\337\15\205\210\66R%JJ\225\314" + "\224\0\340\15\225\210\66i\216\254\311\240i\311\20\341\15\225\210vudM\6MK\206\0\343\15\225\210" + "\66\246\34X\223A\323\222!\344\15\205\210\66u`M\6MK\206\0\347\13\204h\65C\326\70%\22" + "\0\350\15\225\210\66i\216,\331\60\204\351\20\351\15\225\210vud\311\206!L\207\0\352\16\225\210V" + "Y\222\3K\66\14a:\4\353\15\205\210\66u`\311\206!L\207\0\355\11\222\210\63Z\322\13\0\361" + "\13\225\210\66\246xH\62o\1\363\13\225\210vud\311\334\222\5\365\16\246\210\66\222\35\31\222\320c" + "\62$\0\366\13\205\210\66u`\311\334\222\5\371\13\225\210\66i\16d\336\222!\372\13\225\210vu " + "\363\226\14\1\374\12\205\210\66\345\314[\62\4\0\0\0\70\60\247\6\71N\272\10\241Q\267\12\220T\15" + "\12\77Y\231\12z^\253\12bb\354\13\21go\13\25on\12\350x\64\12\300\177\23\13\21\211\177" + "\12\270\217\203\13\22\377\377\1M\14\205\210\66;\260dn\311\2\1Q\15\225\210VI;\260dn\311" + "\2\4\1\15\245\210\66\345a\14\207\261\70\10\4\20\16\205\210VK\224D\232\66\14\231\26\4\21\15\205" + "\210\26\307pH\62\333\240\0\4\22\16\205\210\26C\222i\203\222\331\6\5\4\23\11\205\210\26\307>\2" + "\4\24\23\227xXC\26eQ\26eQ-\312\222aP\3\4\27\16\205\210\66K\26Fj\250%\13" + "\0\4\30\15\205\210\26\231\323\222(\311\244\5\4\32\17\205\210\26\231\224\224\246J\224dZ\0\4\34\21" + "\207\210\30\351\66dKE\251H\221\24\251\1\4\35\14\205\210\26\231m\30\62\267\0\4\36\13\205\210\66" + "K\346[\262\0\4\37\11\205\210\26\67\277\5\4 \15\205\210\26C\222i\203\22\66\2\4!\14\205\210" + "\66K&vK\26\0\4\42\12\205\210\26\203\24\366\11\4#\14\205\210\26\231\267d\10\7\5\4$\21" + "\207\210x\341\240D\221\24I\221T\31\304\14\4'\13\205\210\26\231[\62\204\15\4-\16\205\210\66K" + "\26&C\30j\311\2\4/\17\205\210\66\203\246%C\22%\221\246\5\4\60\13d\210\65b\62DR" + "\62\4\61\15\224\210u\211\222-\221S\242\0\4\62\15d\210\25K\64$\221\64$\0\4\63\11d\210" + "\25\203\326\15\4\64\17vxW[\222%Y\22U\206!\14\4\65\14d\210\65J\64lQ\242\0\4" + "\66\16g\210\30Q\245mK\232\42\251\0\4\67\13d\210\65JT\224\22\5\4\70\15e\210\26\231\264" + "$J\62i\1\4\71\17\225\210\66\265\34\310\244%Q\222I\13\4:\14d\210\25\221\222HII\12" + "\4;\12d\210\65K\277H\1\4<\14f\210\27\341\64D\213\307\0\4=\13d\210\25\221\64L\246" + "\0\4>\13d\210\65J\344\224(\0\4\77\11d\210\25\203\344)\4@\16\205h\26\211I\323&E" + "\11C\0\4A\13d\210\65J\244\225\22\5\4B\12e\210\26\203\24v\2\4C\14\204h\25\221\245" + "I\312\242\14\4D\23\247hxq\70(Q$ER$U\6\61\316\0\4E\14e\210\26YR\253" + "\324\264\0\4F\20ux\26Q\22%Q\22%Q\62\210\1\4G\12d\210\25\221)\331\12\4H\20" + "g\210\30Q$ER$ER\64\14\2\4I\22xx\31Q%\252D\225\250\22U\206A\7\2\4" + "K\16f\210\27\241\70DR\42%C\24\4L\14d\210\25Y\266D\322\220\0\4M\14d\210\65J" + "\24iR\242\0\4N\17f\210\27\221R\32\42%R\42\13\0\4O\14d\210\65C$%K\42\5" + "\4Q\16\204\210\25Q\252D\303\26%\12\0 \23\10\33\311\34\17\2 \34\13E\376<\221\224(C" + "\42 \35\14E\371\34\312\220(\221\224\0\60\1\10\63\210\34\231\24\60\2\13D\213\30\273x\34\273x\134\311\260\225\262R\62(\305,\231\262R" + "\61RZ\244,\315\222,\322\2W@\35\273x\134a\32\246a\66,i\224\14Q%\215\222\64J\322" + "!\311\264$\36\6\1WG\33\273x\134Y\234\305\321p\210\243b\224\225\222,\211\264h\323r,G" + "\24\0WO\32\273x\134\71\226\14C\224F\203\26VC\61S\62\245\64\265\3\71\226\1WP\27\273" + "x\274\71\20\25\243bTKz\333\322x\70\347X:\34\4WW\35\273x\134a\32\246\321\240\14R" + "\222\205I\26&Y\62\14\221\226\211I\16d\241\32W[\32\273x\134\71\26\15Z\216\14\71\224\14C" + "\24\246Y,\205Zq\30\304\64W\203\32\273x\134Y\34\246\321p\320\221(+eM\331\22%b\222" + "c\361\60\4W\213\37\273x<\303\224%Q\222%Q\222\14\203\222%Q\222%a\24\231s\340\220\3" + "\351p\20W\316\33\273x<\261\24'\245\341\255\264\64%]\224DR\232\224D\251U\244\254\0W\337" + "\33\273x\134\251\226&Q\62\34\304\312RJ:%\213&F\232R\223\22\71\13W\372\30\273x|\305" + "\341\230\305K\234\314Y\66\34\244&eP\324t\70\10X\2\32\273x\134\255Imx\207\224aH\242" + "\64\34\206\34\310\201\203\234\16\7\1XT\35\273x\134\265\312\60D\225\312\240\24\243\254\222,Q\216\15" + "\203\62e\361 g\11\0X^\31\273x\274\351\360\224E\311p\314\262\341\240U\243Z\62(q:\34" + "\4X\203\36\273x\134a\232\14C\224%\321p\220j\245A\213\262L\31\24\61\311\201(\311D\1X" + "\223\32\273x\34\17b\224\16C\230\206\303\20\246\321p\220\232\224AQ\343\341\2X\231\37\273x\32\273x\274\351pPs *F\265\244\267-Lr K" + "\323A\7\22\0YG\33\273x\274\361pMr \313\206\203\216\204\203\22fI\70(\71\226C\22\0" + "YH\27\273x\274\351p\320\252%ePtt\70\347@Tk\311\304\0YO\31\273x\274\361p\215" + "\207\203V\35\206H\313\244a\210\223\34\310BU\1YV\33\273x\34Q\26&\321\240%RfR\262" + "\70\321\241t\70\210I\254I: YW\32\273x\234\361p\320\302pX\22%\316\6\71\7\36\304\34" + "\12\303aP\0Ye\31\273x\234\71\360\224t\212\246h\70ES\245\313p\20\223\34\310\262uYs" + "\30\273x\234\71\226c\361p\320\312Y\32\246K\16\351H\244\255\11\0Yy\36\273x\134a\32%\331" + "\220$S\222,Q\262\224\222NIe\213\222T\11\223Fu\20Y}\33\273x\134\71\226\15\207\60K" + "\262\60\311J\303\220\24C\261\222\225\262(\235\0Y\202 \273x\134\71\226#\203\62HI-JjI" + "\224dI\224d\221\224E\322\240DI\246c\0Y\231\34\273x\134a\32f\203\242d\211\22U\242J" + "T\325\242,\315\222\254\232\205\42\0Y\256\35\273x<\331\260d\341\60\204IeX\232\223&)i\222" + "\22Q)%QI\12\7Y\306 \273x<\331 eR\62$MI-J\206S\42%Q\322$e" + "\231\62H\305$\7\24\0Y\313 \273x\134a\32f\203\22eI-J\206!\211r \211\6I\312" + "\242\244\226D\311\260f\1Y\354\34\273x\134\321\60\65\15S\226T\246\244S\322)\351\26%\233\22e" + "\221T\34\6Z\1 \273x\374@\222#Q\62\34\222\64L\226(\211Z\206!\211\222N\221\224H\221" + "\262Da\0Z\3\34\273x\134a\32fC\62HI\26&\303)\13\223,\215\6M\13\243Z\70\14" + "Z\5 \273x<\71\26\15\7)\311\222(\311\22\245\27KT\311\264$\314\222,\211\222(\33\206\0" + "Z\34\42\273x<\311\220,QR\31\226\212\222,\211\322\242$\203\222(}JZ\224\312RJ\242J" + "\24\1ZZ\37\273x\134\321\240E\245\341\240\64eI\42)\345\244\62hQ\226)\203\24iI\70(" + "\0[P\30\273x\134\303\220C\71\224C\71\226\16\7\65\307r,G\352P\14[W\31\273x\274\361" + "pHrD\32\224\34\310\241t\70\250\71\226c\71\262\2[X\31\273x\234\361p\320r(\31\266\64" + "\23\263d\70\205i\230\206i\264\1[f\31\272y\33\273x\134\303\240\305\331\60h\241\70\310\331\220\15r\66d\203\226\204\231:\10\134@\36\273x" + "\134\303\240\305\331\60h\71\66\234r J\206\250\22U\242!J\242\222\16(\0\134B\33\273x\134\303" + "\240\305\331\60h\71\226\14[\216\15\247,\216jQ\230d\303\20\134E\34\273x\134\303\240\305\331\60h" + "\345\341\224\305\311\260%a\226\204Q\64,Y\230\0\134O\31\273x\134\303)\7\242\341\224\204YT\34" + "N\215\303\251-\312\242b\4\134U\31\273x<\303)\7\242\341\324\70\234\32\207CRj\311\244JT" + "\22\5\134^\37\273x<\303)\7\242\341\224\3Q\62la\232\14C\224D\225d\70$Y\246$C" + "\42\134q\27\271y\234\71\22f\231\226i\231\226i\231\226i\331p\320\201\0\134\201\30\272x \273x\134a\234e\303\62DY\224EImJ\262$J" + "\262$+EZ\224DI\224\204\1e\77\37\273x\374@\66,q\66d\221\22%K)\311\222(\311" + "\222(\11\263d\212\306$\326\2eE\33\273x|\345,\33\226!\253\204QiPJ-Q\255\224e" + "C\224D\321\26eH\35\273x\134a\234e\303\62DI\242DY\322\26%Y\22%aKVM\212" + "Z\0eL\34\273x|R\66\246\341p\211\262(\251\205I\62HI\255\224\225\6)\251m\1eO" + "\37\273x\34\273x\134\303\20\246\341\60\204i\70\14q\222FI\224%\245," + "iN\302\341 fB\35\273x\374@\66$\203\22e\245,\33\236\302(\32NI\24\15Q\222c\71" + "\62\1fZ\36\273x\274\351\64DI)K\206AYJI\247\244\62,\65mJ\242\60\252eC\0" + "fh\36\273x\134\303\20\246\341\60\204i\66\34\222\34K\206!\312\261\341\220\224\222(\222\26\0fn" + "\32\273x|\305\341T\211\262\244i\70\350\360\60\204i\70\14a\32\16C\4fz\37\272y<\71\64" + "$\203\222E\303 E\322\220DI\244\14C\226f\303\220\245\331\60$\0f\202\37\273x\134q\62(" + "[\22\205\203\62hQ\22\15I\24\16C\230\206\303\20\246\341\60D\0f\227\36\273x\374@\66<%" + "Y\22U\242\341)\7\242dP\206$K\242d\220\263xP\0f\362\27\272y|Q\34e\303A*" + "I%\251\64<\225\244\322\360\216\4f\364\31\273x<\303!\216\207A+e\303\240\225\262aP\223\34" + "\312\21\333:f\370\33\273x\134\303\220\3Q\64\34\324(\33\316\351p\220\322p\30\302\64\34\206\10f" + "\374\32\272y\134\303\230Da\224D\303A*\15\7\35\35\326(\7\304!\32\2f\376\31\271y\134\265" + "\341 EK\313p\310\261a\210\322h\30\242\64\32\206\4g\0\33\273x\134\303\20\246\341\60\204i\64" + "\34\224(\7\236*Q\64D\246H\236\4g\10\32\271y\134\303\20\245Q\32\15C\224Fi\64\14Q" + "\32\245I\230\310\11\0g\11\30\273x\234\361p\320rl\30\305,\31\246b:\254a\32\246\231\4g" + "\13\36\273x\33\273x|\265a\211\263!\31\222" + ",G*C\226c\321\60eIOMK\30kL\37\273x\34\227\34\210\262%\32\224\266aP\342," + "Z\262()%\311\22%i\222ec\0kb\27\272y\274\71\224Cq\24GC\26\305Q\34\305Q" + "\34\205\303!kc\32\253x\34\17j\216\345@\224\3\321\240E\71\20\345@\224\3Q:\34\4kd" + "\36\273x|\345,\316\242\244\226D\311\242%Y\230da\222\205I\26%\311\22\15\351\0ke\31\273" + "x\274\71\20\15Z\224\3Q:\34\324\34\251\225ji\216\210\203\14kw\34\273x<\303!\311J\211" + "\244EY\66\34\222(\253\234\224>\15ITL\206\3k{\30\273x\34\17Z\216\225\227\250\245$%" + "R\245\16Dq\26\25\243yk\265\34\273x|\312\246%Y\230dK\264\344\330\62HY)L\242!" + "\13+Y\244\11k\301\33\273x\34\213\262\204IEY\32\223d\270cC\62,\305,\11\253Ke+" + "k\315\34\273x\134\303\20&Y\30\25\323h\70HI\26F\305\64\33\16\71\222#\32\0k\317\33\273" + "x\134\71\66\134r(\32\326$\212\206\203\324\230%\331p\310\221\34\321\0k\322\30\273x\274\351pP" + "\343\341\234\16\7\251i\70(Y\224\15\207X\3k\324\25\272y\34aOI\230DC\242\205}Q\262" + "-S\207\0k\333\27\273x\334\333\240c\71\66d\203\216\345\330\360\216\205i\30\17\2l\21\31\272y" + "\34/\71\220\344@\62\134\262\64K\207\203XJ\62%\213\326\1l\24\32\273x|\71\66\14Y\16%" + "\303\224\243\303\216\345X\224\3Q\216\324!\1l\27\33\273x|\71\66\14R\16%\303\220\344\340\60\350" + "H\61\252jI\24Y\302,l\64\30\273x\274\71\226c\225!Q\322\244\234T\243bTk\211\222\260" + "\14l\70\31\273x\274\71\30\17Y\34ECRN\344(I\243ZmJr(\6lB\32\273x\274" + "Q\16d\311pPs \252&u`\7\222jT\322\62Q\5lI\33\273x<\71\220%\303 f" + "QR\13\223\254%\314\222H\15+YS\242\6l_\32\273x<\71\30\15J\34&Y\234\245a\32" + "fj\230\206\311\60(\71\4l`\37\273x\35\273x<\261\226\14\71\20n\311\226(\305\244SR\61%" + "\265(\211Z\242J$\5mA\32\273x\34ie\30\324Z\313\60dq\226\64II-J:%=" + "E\2mN\34\273x\32\273x\245\331pG\207\203\324d\23y\217\37\273x" + "<\321\60D\71<(C\222\205\311\240\345\330pQ\242HI\206!J\242\226a\10y\273\33\273x\274" + "\351p\220\222\306\250\230\64\16C\16\304\303\251%J\6%\212\25\0y\301\32\273x|\362\230\206\331 " + "\245Y:\245J\61\211\262\312\60D\305(G\0y\315\33\273x|R\66\246\321\360\22\265D\221RJ" + "\224aP\302\64L\303\64\314\0y\321\34\273x|b\262EY\230$\203\230\225\62-\211\224p\11\267" + "H\312\342,N\0y\322\33\273x|\265\61\215\222\312\220\224Z\242d)*Q\244\304Y\32fj\242" + "\2y\360\31\273x|J\270\305\321p\220\32\303\245IJz*iQ\61\315\64\0y\373\33\273x|" + "\265\203T\34\226(\13-J\230DC\242eJ\224\324\322\60\332\0z\13\36\273x|\311\240LY)" + "K\206d\320rL\31$%\12\245A)\246a\232\14C\0z\15\36\273x|R\64DI-\314\206" + "C\26e\321\62H\212\226\224\6-\312JY)R\0z.\34\273x|\311\240\214i\64\274\324\242A" + "S\332\222a\22\263$\32\264\60M\206!z\61\35\273x|\241\62M\225(\32\224\266h\320\224\266d" + "\230\244\244\313\60D\265R\244\0z\77\36\273x|R\66\15S\26%\203\62d\71\66\234\222\64Q\222" + "E\351)I\226(\11\5zv\30\273x\274\351\360\224E\325,\12\323\34\31v \212\263\250\30\315\3" + "zz\30\273x\274\361pHrD\213\342\60\223\303a\7r,\307\342\341\20z\177\32\273x\274\351\360" + "\224EJ\232$\303 f\351pMr \212\263P\32\1z\201\31\273x\274\361pH\242\222\24\226\222" + "r\224\15\207\64\207\222X\223t@z\227\36\272y\274\341pP\302\244\224%\303!\211\262(\31\246)" + "\211\42\251\22%\321\60(\0z\313\30\273x\274\71\230\16\207\234\20\246a\34\345@\224\3I\216\205\303" + "Az\326\36\273x|\311 %\265(\211\222,\311\302$J\322$\223\323\341\230\345@\22\16\7\1z" + "\331\34\273x\65&\215Z\0\226b\35" + "\273x\34C\24FY%\31N\251\22\15J\224\3\321pHJ\225\250\242U\244T\226d\36\273x\34" + "CV\252DI\224%R\262(a\26\15\247,\233\222\266(\222\262H\325\0\226\206 \273x\34C\222" + "F\311\240T\264D\234\222D\233\222Z\224\14\7)K\242A\211\263h\30\4\226\217 \273x\34c\226" + "(\303\220\64j\203R\213\222\344\220tJ\244dH\262$J\62\65\212\6\1\226\220\42\273x\34C\62" + "D\225\250\222\14\213\222&\245A\211\322$J\6E\211\302$Q\232\222(\21\207\10\226\250!\273x\34" + "CVR\206%*i\303\220\204IiY\242\244eH\222\245\224\264%Q\22eC\0\226\274\30\273x" + "\134Y<\134\264\60\31\6\255<\14Zy\70\207\303A\16\1\226\276\35\273x\334I\64DI\232\14C" + "\64eI)\214\206\251-I\206\245\251\30\345\300\1\226\304\37\273x|\345(\211\206\203\224%a\244d" + "I\64(\245$*\15K\226\204I\333\220\14\2\226\306\34\273x|I\16d\351pP\242\34\70hQ" + "\16\34\264(\35\16ZR\233\242\1\226\314\37\273x\134I\224&\215I\62,\203\22%\225a\351\224T" + "\206\245S\62(\221\224\14r\10\226\350\30\273x\34\17j\216\305\303)+%\235\42O\225NY)\213" + "\24\0\226\352\31\273x<\303\71\35\36CEI\224\34\35\356X\66\14:\26\15\27\0\226\366\31\273x" + "<\303\71\35\236\222R\70k\222\226I\303\220C\71\260c\32\0\226\367\30\273x<\303\71\35\36CE" + "I\224\64\36NYi\70e\245\341\2\226\373\30\273x<\303\71\35^\242J\62\234\262\322p\312J\303" + "\71L\207\1\227\0\31\273x<\303\71\35^\224DI\323\341 \346\300S%j\211Z\22\5\227\6\34" + "\273x<\303\71\35^\242\312\240\14Z\30.\203\230\205\311\60H\71\242\14\203\0\227\23\34\273x<\303" + "\71\35^\242J\62\15Q\16DC\62D\71\20\15\307(\33\262A\227\36\32\273x<\303\71\35\236\222" + "\322\260\14Q\61\32Na\24\15IT\325\242I\227\62\36\273x<\303\71\35\236\222\322 \15I\224H" + "\311\220\211\221\264\34\222Z\224\14\321\220\0\227\70\34\273x<\303\71\35\236\222\322p\220*Q\62(C" + "\322)\31\16Y)\213\42\5\227R\30\273x\274\361p\316\201C\16\244\303A\13\323a\15\323a\15#" + "\0\227Y\37\273x\134a\66,[%\33\222!\13\223d\70(Q%R\222!J\244\60*&\66\0" + "\227^\34\273x\234I\216\24\7e\20\223\34\251\16\311\220&\71R\34\224ALr\244\10\227`\34\273" + "x\134u\340 e\351p\220\322p\30\342$\34\224AL\302A\31\304$\4\227b\30\272y\34\17a" + "\216\304\303A*IC$\225\244!\222J\303;\22\227i\31\273x|\265\341\240\225\7\35\311\201C\30" + "\25\207!\7\322\341\240\246\0\227\215\35\273x<\265l\70(\215\311\226\206\331\360RJ\222A\211\262P" + "\32\244$\213\264\0\227\363\32\273x\274\361p\314r \11\207\203\16\17C\230\206\303\20\246\341\60D\0" + "\227\365\35\273x\134Y\70(a\226\14J\343\260d\71\20\15\253\26)\303\240i\351\260)\0\230\30\36" + "\273x|\311\60\211Y\224\14K\244\225\206C\222\205\311\240\224\262(\33\264\250\230\204\1\230^\36\273x" + "\34IeP\306\332pH\262d\32\226\266(\33\16I\26e\203RKj[\0\230o\42\273x<\203" + "\62$Y\224\15\312\220dI\224\14\312\220D\211\24)\311\220tJ\224aH\372\267\0\230u\31\273x" + "\34\17j\16\34\302\64\214\212Q\61*FJ\34\305\241$'\0\230\177\35\273x\134\331 \245\321\240\14" + "R\226)]\224.\303\322\224%\245$\13\265$\326\2\230\206\33\273x|\321\240\205\225(\224\206!\252" + "\305IeH\32\223\266\260%\214\262\0\230\221\37\273x|\321\240\24\263d\30\224R\66\14J-J\272" + "(-JE\252\224\302$\321\264\0\230\230!\273x,<空标签>,<空標簽>,,<Üres Amiibo>,,,,,,,<пустой тег> _L_APP_AMIIDB_SLOT_DELETE,Reset...,重置...,重置...,Borrar...,Újraindítás...,Zurücksetzen...,Réinitialiser...,Reset...,Reiniciar...,リセット...,Elimina...,Сброс... _L_APP_AMIIDB_CONFIRM,Confirm,确认,確認,Confirmar,Megerősítés,Bestätigen,Confirmer,Bevestigen,Confirmar,確認する,Conferma,Да From 162d3f6ec71944e87dcd986486b0aae20f88e264 Mon Sep 17 00:00:00 2001 From: solosky Date: Wed, 10 Apr 2024 11:33:26 +0800 Subject: [PATCH 098/101] update web translation docs --- docs/en/05+5-translation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/05+5-translation.md b/docs/en/05+5-translation.md index 172ea780..51acf930 100644 --- a/docs/en/05+5-translation.md +++ b/docs/en/05+5-translation.md @@ -63,7 +63,7 @@ In this example, we will add a Japanese (ja_JP) translation: `ja: '日本語',` -3. Edit `index.js` while keeping its current structure, adding: +3. Edit `web/src/i18n/index.js` while keeping its current structure, adding: ```js import elementJaLocale from 'element-ui/lib/locale/lang/ja' // element-ui From dda1bd5f11980351508bfa7a9948d7459986d67f Mon Sep 17 00:00:00 2001 From: MayanKoyote <43220515+MayanKoyote@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:14:26 +0500 Subject: [PATCH 099/101] update index.js --- web/src/i18n/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/web/src/i18n/index.js b/web/src/i18n/index.js index dbdb4a31..5d547170 100644 --- a/web/src/i18n/index.js +++ b/web/src/i18n/index.js @@ -1,17 +1,17 @@ import Vue from 'vue' import VueI18n from 'vue-i18n' import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang -import elementZhCnLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang -import elementEsLocale from 'element-ui/lib/locale/lang/es'// element-ui lang -import elementZhTwLocale from 'element-ui/lib/locale/lang/zh-TW'// element-ui lang -import elementRuLocale from 'element-ui/lib/locale/lang/ru-RU'// element-ui lang +import elementZhCnLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang +import elementEsLocale from 'element-ui/lib/locale/lang/es' // element-ui lang +import elementZhTwLocale from 'element-ui/lib/locale/lang/zh-TW' // element-ui lang +import elementRuLocale from 'element-ui/lib/locale/lang/ru-RU' // element-ui lang import elementDeLocale from 'element-ui/lib/locale/lang/de' // element-ui lang import enLocale from './en_US' import zhTWLocale from './zh_TW' import zhCNLocale from './zh_Hans' import esLocale from './es_ES' -import ruLocale from './ru_RU'; -import deLocale from './de_DE'; +import ruLocale from './ru_RU' +import deLocale from './de_DE' Vue.use(VueI18n) From 3a070c685711eb602913936cae09316813e6695c Mon Sep 17 00:00:00 2001 From: solosky Date: Fri, 12 Apr 2024 23:37:49 +0800 Subject: [PATCH 100/101] add de language select for en_us --- web/src/i18n/en_US.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web/src/i18n/en_US.js b/web/src/i18n/en_US.js index a24532d7..4bd69a03 100644 --- a/web/src/i18n/en_US.js +++ b/web/src/i18n/en_US.js @@ -6,6 +6,7 @@ export default { en: 'English', es: 'Español', ru: 'Русский', + de: 'Deutsch', changeok: 'Switch Language Success' }, btn: { From dec79b4f3ce629828b10897b4f4e9c14cd303264 Mon Sep 17 00:00:00 2001 From: solosky Date: Fri, 12 Apr 2024 23:40:25 +0800 Subject: [PATCH 101/101] web release --- gh-pages/index.html | 2 +- gh-pages/index.js | 16 ++++++++-------- gh-pages/index.js.map | 2 +- gh-pages/manifest.js | 4 ++-- gh-pages/manifest.js.map | 2 +- gh-pages/vendor.js | 6 +++--- gh-pages/vendor.js.map | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gh-pages/index.html b/gh-pages/index.html index e95058ee..1796976c 100644 --- a/gh-pages/index.html +++ b/gh-pages/index.html @@ -11,6 +11,6 @@ - + \ No newline at end of file diff --git a/gh-pages/index.js b/gh-pages/index.js index 2d74c6db..eb43fed8 100644 --- a/gh-pages/index.js +++ b/gh-pages/index.js @@ -1,30 +1,30 @@ -webpackJsonp([1],Array(37).concat([function(e,t,o){"use strict";function i(){return n}t.a=i;var r=o(206),n=(o.n(r),new r.EventEmitter)},,,,,function(e,t,o){"use strict";function i(e){var t,o;this.promise=new e(function(e,i){if(void 0!==t||void 0!==o)throw TypeError("Bad Promise constructor");t=e,o=i}),this.resolve=r(t),this.reject=r(o)}var r=o(27);e.exports.f=function(e){return new i(e)}},,,,,,,,,function(e,t,o){var i=o(69),r=o(5)("iterator"),n=o(21);e.exports=o(3).getIteratorMethod=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||n[i(e)]}},,,,,,,,,,,,function(e,t,o){"use strict";var i=o(133),r=o.n(i),n=o(135),l=o.n(n),a=o(38),s=o.n(a),c=o(1),f=o(224),p=o(191),d=o.n(p),u=o(88),h=o.n(u),b=o(192),g=o.n(b),m=o(193),_=o.n(m),x=o(124),v=o(127),w=o(126),y=o(125);c.default.use(f.a);var k={en:s()({},x.a,d.a),zh_TW:s()({},v.a,_.a),es:s()({},y.a,g.a),zh_CN:s()({},w.a,h.a)},E=new f.a({locale:function(){var e=(navigator.language||navigator.browserLanguage).toLowerCase(),t=l()(k),o=!0,i=!1,n=void 0;try{for(var a,s=r()(t);!(o=(a=s.next()).done);o=!0){var c=a.value;if(e.indexOf(c)>-1)return c}}catch(e){i=!0,n=e}finally{try{!o&&s.return&&s.return()}finally{if(i)throw n}}return"zh_TW"}(),messages:k});t.a=E},,,function(e,t,o){"use strict";var i=o(67),r=o(37),n=o(128);t.a={data:function(){return{tableData:[],connBtnType:"",connBtnText:""+this.$t("conn.connect"),version:"",connected:!1,table_loading:!1,current_dir:"",upload_diag_visible:!1,table_selection:[],language:"zh_CN",meta_diag_visible:!1,meta_form:{notes:"",flags:{hide:!1},amiibo:{head:0,tail:0},name:"",row:null}}},methods:{on_btn_ble_connect:function(){this.connected?(i.a(),this.connBtnText=""+this.$t("conn.connect")):(this.connBtnText=""+this.$t("conn.connecting"),i.b())},on_ble_connected:function(){var e=this;this.connBtnText=""+this.$t("conn.disconnect"),this.connBtnType="success",this.connected=!0,this.$notify({title:"Pixl.js",type:"success",message:""+this.$t("conn.consuccess"),duration:5e3}),n.a().then(function(t){console.log("get version result",t),e.version=""+e.$t("status.connected")+t.data.ver,t.data.ver.startsWith("2.0.0")&&e.$alert(""+e.$t("oldfirm.message"),""+e.$t("oldfirm.title"),{confirmButtonText:""+e.$t("btn.ok"),callback:function(e){}});var o=t.data;LA.track("pixl_device_connect",{version:o.ver,mac:o.ble_addr}),e.reload_drive()})},on_ble_disconnected:function(){this.connBtnType="",this.connected=!1,this.connBtnText=""+this.$t("conn.connect"),this.version="",this.table_loading=!1,this.tableData=[],this.current_dir="",this.$notify({title:"Pixl.js",type:"error",message:""+this.$t("conn.disconnected"),duration:5e3})},on_ble_connect_error:function(){this.connBtnType="",this.connBtnText=""+this.$t("conn.connect"),this.version="",this.table_loading=!1,this.tableData=[],this.current_dir="",this.$notify({title:"Pixl.js",type:"error",message:""+this.$t("conn.connfailed"),duration:5e3})},on_btn_enter_dfu:function(){var e=this;this.$confirm(""+this.$t("dfumode.startconfirm"),""+this.$t("dfumode.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),type:"warning"}).then(function(){n.b().then(function(t){e.$confirm(""+e.$t("dfumode.updateconfirm"),""+e.$t("dfumode.updatetitle"),{confirmButtonText:""+e.$t("btn.ok"),cancelButtonText:""+e.$t("btn.cancel"),type:"success"}).then(function(e){document.location.href="https://thegecko.github.io/web-bluetooth-dfu/examples/web.html"})})})},on_btn_up:function(){var e=this.current_dir.substring(0,2),t=this.current_dir.substring(2);if("/"==t)this.current_dir="",this.reload_drive();else{var o=t.lastIndexOf("/");this.current_dir=0==o?e+"/":e+t.substring(0,o),this.reload_folder()}},on_btn_refresh:function(){""==this.current_dir?this.reload_drive():this.reload_folder()},on_btn_new_folder:function(){var e=this,t=this;this.$prompt(""+this.$t("newfolder.message"),""+this.$t("newfolder.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),inputValue:""}).then(function(o){var i=o.value;if(""!=i){t.table_loading=!0;var r=e.append_segment(e.current_dir,i);n.c(r).then(function(o){t.table_loading=!1,0==o.status?e.reload_folder():e.$message({type:"error",message:e.$t("newfolder.newfoldererr")+" ["+o.status+"]"})}).catch(function(o){t.table_loading=!1,e.$message({type:"error",message:e.$t("newfolder.newfoldererr")+" ["+o.message+"]"})})}}).catch(function(){})},on_btn_upload:function(){this.upload_diag_visible=!0},on_btn_remove:function(){var e=this;if(0!=this.table_selection.length){var t=this,o=this.current_dir,i=0,r=this.table_selection.length;t.table_loading=!0,this.table_selection.forEach(function(l){n.d(e.append_segment(o,l.name)).then(function(o){e.delete_table_row_by_name(l.name),++i==r&&(t.table_loading=!1)}).catch(function(o){e.$message({type:"error",message:l.name+""+e.$t("del.error")+o}),++i==r&&(t.table_loading=!1)})},this)}},on_upload_diag_close:function(e){var t=this;this.$confirm(""+this.$t("upload.closemessage"),""+this.$t("upload.closetitle"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel")}).then(function(o){t.$refs.upload.clearFiles(),t.reload_folder(),e()}).catch(function(e){})},on_upload_request:function(e){console.log(e),n.e(this.append_segment(this.current_dir,e.file.name),e.file,function(t){e.onProgress({percent:t.written_bytes/t.total_bytes*100})},function(t){e.onSuccess()},function(t){e.onError(t)})},on_upload_error:function(e,t,o){this.$message({type:"error",message:t.name+""+this.$t("upload.errupload")+e})},on_row_btn_format:function(e,t){var o=this,i=this;this.$confirm(""+this.$t("format.messrow1a")+t.name+this.$t("format.messrow1b")+"\n"+this.$t("format.messrow2")+"\n"+this.$t("format.messrow3"),""+this.$t("format.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),type:"warning"}).then(function(){i.table_loading=!0;var e=t.name.substr(0,1);n.f(e).then(function(e){o.$message({type:"success",message:t.name+""+o.$t("format.formatok")}),i.table_loading=!1,o.reload_drive()}).catch(function(e){o.$message({type:"error",message:t.name+""+o.$t("format.formaterr")+err}),i.table_loading=!1})})},on_row_btn_remove:function(e,t){var o=this,i=this;this.$confirm(""+this.$t("del.message")+t.name+this.$t("del.messageend"),""+this.$t("del.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),type:"warning"}).then(function(){i.table_loading=!0;var e=o.append_segment(o.current_dir,t.name);n.d(e).then(function(e){i.table_loading=!1,0==e.status?(o.$message({type:"success",message:""+o.$t("del.deleteok")}),o.reload_folder()):o.$message({type:"error",message:t.name+""+o.$t("del.error")+"["+e.status+"]"})}).catch(function(e){o.$message({type:"error",message:t.name+""+o.$t("del.error")+"["+err+"]"}),i.table_loading=!1})})},on_row_btn_notes:function(e,t){var o=this;this.$prompt(""+this.$t("properties.entermsg"),""+this.$t("properties.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),inputValue:t.notes}).then(function(e){var i=e.value,r={notes:i},l=o.append_segment(o.current_dir,t.name);n.g(l,r).then(function(e){0==e.status?t.notes=i:o.$message({type:"error",message:""+o.$t("properties.errupdate")})}).catch(function(e){o.$message({type:"error",message:e.message})})}).catch(function(){})},on_row_btn_rename:function(e,t){var o=this,i=this;this.$prompt(""+this.$t("rename.message"),""+this.$t("rename.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),inputValue:t.name}).then(function(e){var r=e.value;if(r!=t.name){i.table_loading=!0;var l=o.append_segment(o.current_dir,t.name),a=o.append_segment(o.current_dir,r);n.h(l,a).then(function(e){i.table_loading=!1,0==e.status?t.name=r:o.$message({type:"error",message:o.$t("rename.errrename")+" ["+e.status+"]"})}).catch(function(e){i.table_loading=!1,o.$message({type:"error",message:o.$t("rename.errrename")+" ["+e.message+"]"})})}}).catch(function(){})},on_row_btn_meta:function(e,t){this.meta_form.name=t.name,this.meta_form.notes=t.notes,this.meta_form.flags=t.flags,this.meta_form.amiibo=t.amiibo,this.meta_form.row=t,this.meta_diag_visible=!0},on_diag_meta_close:function(){var e=this,t={notes:this.meta_form.notes,flags:this.meta_form.flags,amiibo:this.meta_form.amiibo};this.meta_diag_visible=!1;var o=this.append_segment(this.current_dir,this.meta_form.name),i=this.meta_form;n.g(o,t).then(function(t){0==t.status?(i.row.notes=i.notes,i.row.flags=i.flags,i.row.amiibo=i.amiibo):e.$message({type:"error",message:""+e.$t("properties.errupdate")})}).catch(function(t){e.$message({type:"error",message:t.message})})},on_table_selection_change:function(e){this.table_selection=e},on_table_sort_change:function(e,t,o){console.log("sort change: ",e,t,o)},sort_table_row_name:function(e,t){return console.log(e,t),e found nus Service: "+e.uuid))}),c.getCharacteristics()}).then(function(e){e.forEach(function(e){console.log(">> Characteristic: "+e.uuid+" "+s(e)),e.uuid==g?p=e:e.uuid==m&&(f=e,e.addEventListener("characteristicvaluechanged",l),e.startNotifications())}),console.log("connected!"),o.i(u.a)().emit("ble_connected")}).catch(function(e){o.i(u.a)().emit("ble_connect_error")})}function r(){d&&d.gatt.connected&&(d.gatt.disconnect(),d=null)}function n(e){return console.log("tx data:",h.wrap(e).toDebug()),p.writeValue(e)}function l(e){console.log("rx data:",h.wrap(e.target.value.buffer).toDebug()),o.i(u.a)().emit("ble_rx_data",e.target.value.buffer)}function a(e){o.i(u.a)().emit("ble_disconnected")}function s(e){var t=[];for(var o in e.properties)!0===e.properties[o]&&t.push(o.toUpperCase());return"["+t.join(", ")+"]"}t.b=i,t.a=r,t.c=n;var c,f,p,d,u=o(37),h=o(68),b=(o.n(h),"6e400001-b5a3-f393-e0a9-e50e24dcca9e"),g="6e400002-b5a3-f393-e0a9-e50e24dcca9e",m="6e400003-b5a3-f393-e0a9-e50e24dcca9e"},function(e,t,o){var i,r,n;/** +webpackJsonp([1],Array(37).concat([function(e,t,o){"use strict";function i(){return n}t.a=i;var r=o(210),n=(o.n(r),new r.EventEmitter)},,,,,function(e,t,o){"use strict";function i(e){var t,o;this.promise=new e(function(e,i){if(void 0!==t||void 0!==o)throw TypeError("Bad Promise constructor");t=e,o=i}),this.resolve=r(t),this.reject=r(o)}var r=o(27);e.exports.f=function(e){return new i(e)}},,,,,,,,,function(e,t,o){var i=o(69),r=o(5)("iterator"),n=o(21);e.exports=o(3).getIteratorMethod=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||n[i(e)]}},,,,,,,,,,,,function(e,t,o){"use strict";var i=o(135),r=o.n(i),n=o(137),l=o.n(n),a=o(38),s=o.n(a),c=o(1),f=o(228),p=o(194),d=o.n(p),u=o(88),h=o.n(u),g=o(195),b=o.n(g),m=o(197),_=o.n(m),x=o(196),v=o.n(x),w=o(193),y=o.n(w),k=o(125),E=o(129),z=o(128),A=o(126),T=o(127),L=o(124);c.default.use(f.a);var I={en:s()({},k.a,d.a),zh_TW:s()({},E.a,_.a),es:s()({},A.a,b.a),zh_CN:s()({},z.a,h.a),ru_RU:s()({},T.a,v.a),de_DE:s()({},L.a,y.a)},C=new f.a({locale:function(){var e=(navigator.language||navigator.browserLanguage).toLowerCase(),t=l()(I),o=!0,i=!1,n=void 0;try{for(var a,s=r()(t);!(o=(a=s.next()).done);o=!0){var c=a.value;if(e.indexOf(c)>-1)return c}}catch(e){i=!0,n=e}finally{try{!o&&s.return&&s.return()}finally{if(i)throw n}}return"zh_TW"}(),messages:I});t.a=C},,,function(e,t,o){"use strict";var i=o(67),r=o(37),n=o(130);t.a={data:function(){return{tableData:[],connBtnType:"",connBtnText:""+this.$t("conn.connect"),version:"",connected:!1,table_loading:!1,current_dir:"",upload_diag_visible:!1,table_selection:[],language:"zh_CN",meta_diag_visible:!1,meta_form:{notes:"",flags:{hide:!1},amiibo:{head:0,tail:0},name:"",row:null}}},methods:{on_btn_ble_connect:function(){this.connected?(i.a(),this.connBtnText=""+this.$t("conn.connect")):(this.connBtnText=""+this.$t("conn.connecting"),i.b())},on_ble_connected:function(){var e=this;this.connBtnText=""+this.$t("conn.disconnect"),this.connBtnType="success",this.connected=!0,this.$notify({title:"Pixl.js",type:"success",message:""+this.$t("conn.consuccess"),duration:5e3}),n.a().then(function(t){console.log("get version result",t),e.version=""+e.$t("status.connected")+t.data.ver,t.data.ver.startsWith("2.0.0")&&e.$alert(""+e.$t("oldfirm.message"),""+e.$t("oldfirm.title"),{confirmButtonText:""+e.$t("btn.ok"),callback:function(e){}});var o=t.data;LA.track("pixl_device_connect",{version:o.ver,mac:o.ble_addr}),e.reload_drive()})},on_ble_disconnected:function(){this.connBtnType="",this.connected=!1,this.connBtnText=""+this.$t("conn.connect"),this.version="",this.table_loading=!1,this.tableData=[],this.current_dir="",this.$notify({title:"Pixl.js",type:"error",message:""+this.$t("conn.disconnected"),duration:5e3})},on_ble_connect_error:function(){this.connBtnType="",this.connBtnText=""+this.$t("conn.connect"),this.version="",this.table_loading=!1,this.tableData=[],this.current_dir="",this.$notify({title:"Pixl.js",type:"error",message:""+this.$t("conn.connfailed"),duration:5e3})},on_btn_enter_dfu:function(){var e=this;this.$confirm(""+this.$t("dfumode.startconfirm"),""+this.$t("dfumode.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),type:"warning"}).then(function(){n.b().then(function(t){e.$confirm(""+e.$t("dfumode.updateconfirm"),""+e.$t("dfumode.updatetitle"),{confirmButtonText:""+e.$t("btn.ok"),cancelButtonText:""+e.$t("btn.cancel"),type:"success"}).then(function(e){document.location.href="https://thegecko.github.io/web-bluetooth-dfu/examples/web.html"})})})},on_btn_up:function(){var e=this.current_dir.substring(0,2),t=this.current_dir.substring(2);if("/"==t)this.current_dir="",this.reload_drive();else{var o=t.lastIndexOf("/");this.current_dir=0==o?e+"/":e+t.substring(0,o),this.reload_folder()}},on_btn_refresh:function(){""==this.current_dir?this.reload_drive():this.reload_folder()},on_btn_new_folder:function(){var e=this,t=this;this.$prompt(""+this.$t("newfolder.message"),""+this.$t("newfolder.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),inputValue:""}).then(function(o){var i=o.value;if(""!=i){t.table_loading=!0;var r=e.append_segment(e.current_dir,i);n.c(r).then(function(o){t.table_loading=!1,0==o.status?e.reload_folder():e.$message({type:"error",message:e.$t("newfolder.newfoldererr")+" ["+o.status+"]"})}).catch(function(o){t.table_loading=!1,e.$message({type:"error",message:e.$t("newfolder.newfoldererr")+" ["+o.message+"]"})})}}).catch(function(){})},on_btn_upload:function(){this.upload_diag_visible=!0},on_btn_remove:function(){var e=this;if(0!=this.table_selection.length){var t=this,o=this.current_dir,i=0,r=this.table_selection.length;t.table_loading=!0,this.table_selection.forEach(function(l){n.d(e.append_segment(o,l.name)).then(function(o){e.delete_table_row_by_name(l.name),++i==r&&(t.table_loading=!1)}).catch(function(o){e.$message({type:"error",message:l.name+""+e.$t("del.error")+o}),++i==r&&(t.table_loading=!1)})},this)}},on_upload_diag_close:function(e){var t=this;this.$confirm(""+this.$t("upload.closemessage"),""+this.$t("upload.closetitle"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel")}).then(function(o){t.$refs.upload.clearFiles(),t.reload_folder(),e()}).catch(function(e){})},on_upload_request:function(e){console.log(e),n.e(this.append_segment(this.current_dir,e.file.name),e.file,function(t){e.onProgress({percent:t.written_bytes/t.total_bytes*100})},function(t){e.onSuccess()},function(t){e.onError(t)})},on_upload_error:function(e,t,o){this.$message({type:"error",message:t.name+""+this.$t("upload.errupload")+e})},on_row_btn_format:function(e,t){var o=this,i=this;this.$confirm(""+this.$t("format.messrow1a")+t.name+this.$t("format.messrow1b")+"\n"+this.$t("format.messrow2")+"\n"+this.$t("format.messrow3"),""+this.$t("format.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),type:"warning"}).then(function(){i.table_loading=!0;var e=t.name.substr(0,1);n.f(e).then(function(e){o.$message({type:"success",message:t.name+""+o.$t("format.formatok")}),i.table_loading=!1,o.reload_drive()}).catch(function(e){o.$message({type:"error",message:t.name+""+o.$t("format.formaterr")+err}),i.table_loading=!1})})},on_row_btn_remove:function(e,t){var o=this,i=this;this.$confirm(""+this.$t("del.message")+t.name+this.$t("del.messageend"),""+this.$t("del.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),type:"warning"}).then(function(){i.table_loading=!0;var e=o.append_segment(o.current_dir,t.name);n.d(e).then(function(e){i.table_loading=!1,0==e.status?(o.$message({type:"success",message:""+o.$t("del.deleteok")}),o.reload_folder()):o.$message({type:"error",message:t.name+""+o.$t("del.error")+"["+e.status+"]"})}).catch(function(e){o.$message({type:"error",message:t.name+""+o.$t("del.error")+"["+err+"]"}),i.table_loading=!1})})},on_row_btn_notes:function(e,t){var o=this;this.$prompt(""+this.$t("properties.entermsg"),""+this.$t("properties.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),inputValue:t.notes}).then(function(e){var i=e.value,r={notes:i},l=o.append_segment(o.current_dir,t.name);n.g(l,r).then(function(e){0==e.status?t.notes=i:o.$message({type:"error",message:""+o.$t("properties.errupdate")})}).catch(function(e){o.$message({type:"error",message:e.message})})}).catch(function(){})},on_row_btn_rename:function(e,t){var o=this,i=this;this.$prompt(""+this.$t("rename.message"),""+this.$t("rename.title"),{confirmButtonText:""+this.$t("btn.ok"),cancelButtonText:""+this.$t("btn.cancel"),inputValue:t.name}).then(function(e){var r=e.value;if(r!=t.name){i.table_loading=!0;var l=o.append_segment(o.current_dir,t.name),a=o.append_segment(o.current_dir,r);n.h(l,a).then(function(e){i.table_loading=!1,0==e.status?t.name=r:o.$message({type:"error",message:o.$t("rename.errrename")+" ["+e.status+"]"})}).catch(function(e){i.table_loading=!1,o.$message({type:"error",message:o.$t("rename.errrename")+" ["+e.message+"]"})})}}).catch(function(){})},on_row_btn_meta:function(e,t){this.meta_form.name=t.name,this.meta_form.notes=t.notes,this.meta_form.flags=t.flags,this.meta_form.amiibo=t.amiibo,this.meta_form.row=t,this.meta_diag_visible=!0},on_diag_meta_close:function(){var e=this,t={notes:this.meta_form.notes,flags:this.meta_form.flags,amiibo:this.meta_form.amiibo};this.meta_diag_visible=!1;var o=this.append_segment(this.current_dir,this.meta_form.name),i=this.meta_form;n.g(o,t).then(function(t){0==t.status?(i.row.notes=i.notes,i.row.flags=i.flags,i.row.amiibo=i.amiibo):e.$message({type:"error",message:""+e.$t("properties.errupdate")})}).catch(function(t){e.$message({type:"error",message:t.message})})},on_table_selection_change:function(e){this.table_selection=e},on_table_sort_change:function(e,t,o){console.log("sort change: ",e,t,o)},sort_table_row_name:function(e,t){return console.log(e,t),e found nus Service: "+e.uuid))}),c.getCharacteristics()}).then(function(e){e.forEach(function(e){console.log(">> Characteristic: "+e.uuid+" "+s(e)),e.uuid==b?p=e:e.uuid==m&&(f=e,e.addEventListener("characteristicvaluechanged",l),e.startNotifications())}),console.log("connected!"),o.i(u.a)().emit("ble_connected")}).catch(function(e){o.i(u.a)().emit("ble_connect_error")})}function r(){d&&d.gatt.connected&&(d.gatt.disconnect(),d=null)}function n(e){return console.log("tx data:",h.wrap(e).toDebug()),p.writeValue(e)}function l(e){console.log("rx data:",h.wrap(e.target.value.buffer).toDebug()),o.i(u.a)().emit("ble_rx_data",e.target.value.buffer)}function a(e){o.i(u.a)().emit("ble_disconnected")}function s(e){var t=[];for(var o in e.properties)!0===e.properties[o]&&t.push(o.toUpperCase());return"["+t.join(", ")+"]"}t.b=i,t.a=r,t.c=n;var c,f,p,d,u=o(37),h=o(68),g=(o.n(h),"6e400001-b5a3-f393-e0a9-e50e24dcca9e"),b="6e400002-b5a3-f393-e0a9-e50e24dcca9e",m="6e400003-b5a3-f393-e0a9-e50e24dcca9e"},function(e,t,o){var i,r,n;/** * @license bytebuffer.js (c) 2015 Daniel Wirtz * Backing buffer: ArrayBuffer, Accessor: Uint8Array * Released under the Apache License, Version 2.0 * see: https://github.com/dcodeIO/bytebuffer.js for details */ -!function(l,a){r=[o(210)],i=a,void 0!==(n="function"==typeof i?i.apply(t,r):i)&&(e.exports=n)}(0,function(e){"use strict";function t(e){var t=0;return function(){return t1024&&(t.push(s.apply(String,e)),e.length=0),Array.prototype.push.apply(e,arguments)}}function i(e,t,o,i,r){var n,l,a=8*r-i-1,s=(1<>1,f=-7,p=o?r-1:0,d=o?-1:1,u=e[t+p];for(p+=d,n=u&(1<<-f)-1,u>>=-f,f+=a;f>0;n=256*n+e[t+p],p+=d,f-=8);for(l=n&(1<<-f)-1,n>>=-f,f+=i;f>0;l=256*l+e[t+p],p+=d,f-=8);if(0===n)n=1-c;else{if(n===s)return l?NaN:1/0*(u?-1:1);l+=Math.pow(2,i),n-=c}return(u?-1:1)*l*Math.pow(2,n-i)}function r(e,t,o,i,r,n){var l,a,s,c=8*n-r-1,f=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,u=i?0:n-1,h=i?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,l=f):(l=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-l))<1&&(l--,s*=2),t+=l+p>=1?d/s:d*Math.pow(2,1-p),t*s>=2&&(l++,s/=2),l+p>=f?(a=0,l=f):l+p>=1?(a=(t*s-1)*Math.pow(2,r),l+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,r),l=0));r>=8;e[o+u]=255&a,u+=h,a/=256,r-=8);for(l=l<0;e[o+u]=255&l,u+=h,l/=256,c-=8);e[o+u-h]|=128*b}var n=function(e,t,o){if(void 0===e&&(e=n.DEFAULT_CAPACITY),void 0===t&&(t=n.DEFAULT_ENDIAN),void 0===o&&(o=n.DEFAULT_NOASSERT),!o){if((e|=0)<0)throw RangeError("Illegal capacity");t=!!t,o=!!o}this.buffer=0===e?a:new ArrayBuffer(e),this.view=0===e?null:new Uint8Array(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian=t,this.noAssert=o};n.VERSION="5.0.1",n.LITTLE_ENDIAN=!0,n.BIG_ENDIAN=!1,n.DEFAULT_CAPACITY=16,n.DEFAULT_ENDIAN=n.BIG_ENDIAN,n.DEFAULT_NOASSERT=!1,n.Long=e||null;var l=n.prototype;l.__isByteBuffer__,Object.defineProperty(l,"__isByteBuffer__",{value:!0,enumerable:!1,configurable:!1});var a=new ArrayBuffer(0),s=String.fromCharCode;n.accessor=function(){return Uint8Array},n.allocate=function(e,t,o){return new n(e,t,o)},n.concat=function(e,t,o,i){"boolean"!=typeof t&&"string"==typeof t||(i=o,o=t,t=void 0);for(var r,l=0,a=0,s=e.length;a0&&(l+=r);if(0===l)return new n(0,o,i);var c,f=new n(l,o,i);for(a=0;a0&&(r.buffer=e.buffer,r.offset=e.byteOffset,r.limit=e.byteOffset+e.byteLength,r.view=new Uint8Array(e.buffer));else if(e instanceof ArrayBuffer)r=new n(0,o,i),e.byteLength>0&&(r.buffer=e,r.offset=0,r.limit=e.byteLength,r.view=e.byteLength>0?new Uint8Array(e):null);else{if("[object Array]"!==Object.prototype.toString.call(e))throw TypeError("Illegal buffer");r=new n(e.length,o,i),r.limit=e.length;for(var a=0;a>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i,r=t,n=e.length,l=n>>3,a=0;for(t+=this.writeVarint32(n,t);l--;)i=1&!!e[a++]|(1&!!e[a++])<<1|(1&!!e[a++])<<2|(1&!!e[a++])<<3|(1&!!e[a++])<<4|(1&!!e[a++])<<5|(1&!!e[a++])<<6|(1&!!e[a++])<<7,this.writeByte(i,t++);if(a>3,l=0,a=[];for(e+=i.length;n--;)o=this.readByte(e++),a[l++]=!!(1&o),a[l++]=!!(2&o),a[l++]=!!(4&o),a[l++]=!!(8&o),a[l++]=!!(16&o),a[l++]=!!(32&o),a[l++]=!!(64&o),a[l++]=!!(128&o);if(l>s++&1)}return t&&(this.offset=e),a},l.readBytes=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+e+") <= "+this.buffer.byteLength)}var i=this.slice(t,t+e);return o&&(this.offset+=e),i},l.writeBytes=l.append,l.writeInt8=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,o&&(this.offset+=1),this},l.writeByte=l.writeInt8,l.readInt8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o=this.view[e];return 128==(128&o)&&(o=-(255-o+1)),t&&(this.offset+=1),o},l.readByte=l.readInt8,l.writeUint8=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,o&&(this.offset+=1),this},l.writeUInt8=l.writeUint8,l.readUint8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o=this.view[e];return t&&(this.offset+=1),o},l.readUInt8=l.readUint8,l.writeInt16=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),o&&(this.offset+=2),this},l.writeShort=l.writeInt16,l.readInt16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e],o|=this.view[e+1]<<8):(o=this.view[e]<<8,o|=this.view[e+1]),32768==(32768&o)&&(o=-(65535-o+1)),t&&(this.offset+=2),o},l.readShort=l.readInt16,l.writeUint16=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),o&&(this.offset+=2),this},l.writeUInt16=l.writeUint16,l.readUint16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e],o|=this.view[e+1]<<8):(o=this.view[e]<<8,o|=this.view[e+1]),t&&(this.offset+=2),o},l.readUInt16=l.readUint16,l.writeInt32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),o&&(this.offset+=4),this},l.writeInt=l.writeInt32,l.readInt32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e+2]<<16,o|=this.view[e+1]<<8,o|=this.view[e],o+=this.view[e+3]<<24>>>0):(o=this.view[e+1]<<16,o|=this.view[e+2]<<8,o|=this.view[e+3],o+=this.view[e]<<24>>>0),o|=0,t&&(this.offset+=4),o},l.readInt=l.readInt32,l.writeUint32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),o&&(this.offset+=4),this},l.writeUInt32=l.writeUint32,l.readUint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e+2]<<16,o|=this.view[e+1]<<8,o|=this.view[e],o+=this.view[e+3]<<24>>>0):(o=this.view[e+1]<<16,o|=this.view[e+2]<<8,o|=this.view[e+3],o+=this.view[e]<<24>>>0),t&&(this.offset+=4),o},l.readUInt32=l.readUint32,e&&(l.writeInt64=function(t,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),o+=8;var r=this.buffer.byteLength;o>r&&this.resize((r*=2)>o?r:o),o-=8;var n=t.low,l=t.high;return this.littleEndian?(this.view[o+3]=n>>>24&255,this.view[o+2]=n>>>16&255,this.view[o+1]=n>>>8&255,this.view[o]=255&n,o+=4,this.view[o+3]=l>>>24&255,this.view[o+2]=l>>>16&255,this.view[o+1]=l>>>8&255,this.view[o]=255&l):(this.view[o]=l>>>24&255,this.view[o+1]=l>>>16&255,this.view[o+2]=l>>>8&255,this.view[o+3]=255&l,o+=4,this.view[o]=n>>>24&255,this.view[o+1]=n>>>16&255,this.view[o+2]=n>>>8&255,this.view[o+3]=255&n),i&&(this.offset+=8),this},l.writeLong=l.writeInt64,l.readInt64=function(t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,r=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,r=this.view[t+2]<<16,r|=this.view[t+1]<<8,r|=this.view[t],r+=this.view[t+3]<<24>>>0):(r=this.view[t+1]<<16,r|=this.view[t+2]<<8,r|=this.view[t+3],r+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var n=new e(i,r,!1);return o&&(this.offset+=8),n},l.readLong=l.readInt64,l.writeUint64=function(t,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),o+=8;var r=this.buffer.byteLength;o>r&&this.resize((r*=2)>o?r:o),o-=8;var n=t.low,l=t.high;return this.littleEndian?(this.view[o+3]=n>>>24&255,this.view[o+2]=n>>>16&255,this.view[o+1]=n>>>8&255,this.view[o]=255&n,o+=4,this.view[o+3]=l>>>24&255,this.view[o+2]=l>>>16&255,this.view[o+1]=l>>>8&255,this.view[o]=255&l):(this.view[o]=l>>>24&255,this.view[o+1]=l>>>16&255,this.view[o+2]=l>>>8&255,this.view[o+3]=255&l,o+=4,this.view[o]=n>>>24&255,this.view[o+1]=n>>>16&255,this.view[o+2]=n>>>8&255,this.view[o+3]=255&n),i&&(this.offset+=8),this},l.writeUInt64=l.writeUint64,l.readUint64=function(t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,r=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,r=this.view[t+2]<<16,r|=this.view[t+1]<<8,r|=this.view[t],r+=this.view[t+3]<<24>>>0):(r=this.view[t+1]<<16,r|=this.view[t+2]<<8,r|=this.view[t+3],r+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var n=new e(i,r,!0);return o&&(this.offset+=8),n},l.readUInt64=l.readUint64),l.writeFloat32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,r(this.view,e,t,this.littleEndian,23,4),o&&(this.offset+=4),this},l.writeFloat=l.writeFloat32,l.readFloat32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=i(this.view,e,this.littleEndian,23,4);return t&&(this.offset+=4),o},l.readFloat=l.readFloat32,l.writeFloat64=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=8;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=8,r(this.view,e,t,this.littleEndian,52,8),o&&(this.offset+=8),this},l.writeDouble=l.writeFloat64,l.readFloat64=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var o=i(this.view,e,this.littleEndian,52,8);return t&&(this.offset+=8),o},l.readDouble=l.readFloat64,n.MAX_VARINT32_BYTES=5,n.calculateVarint32=function(e){return e>>>=0,e<128?1:e<16384?2:e<1<<21?3:e<1<<28?4:5},n.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},n.zigZagDecode32=function(e){return e>>>1^-(1&e)|0},l.writeVarint32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i,r=n.calculateVarint32(e);t+=r;var l=this.buffer.byteLength;for(t>l&&this.resize((l*=2)>t?l:t),t-=r,e>>>=0;e>=128;)i=127&e|128,this.view[t++]=i,e>>>=7;return this.view[t++]=e,o?(this.offset=t,this):r},l.writeVarint32ZigZag=function(e,t){return this.writeVarint32(n.zigZagEncode32(e),t)},l.readVarint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o,i=0,r=0;do{if(!this.noAssert&&e>this.limit){var n=Error("Truncated");throw n.truncated=!0,n}o=this.view[e++],i<5&&(r|=(127&o)<<7*i),++i}while(0!=(128&o));return r|=0,t?(this.offset=e,r):{value:r,length:i}},l.readVarint32ZigZag=function(e){var t=this.readVarint32(e);return"object"==typeof t?t.value=n.zigZagDecode32(t.value):t=n.zigZagDecode32(t),t},e&&(n.MAX_VARINT64_BYTES=10,n.calculateVarint64=function(t){"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t));var o=t.toInt()>>>0,i=t.shiftRightUnsigned(28).toInt()>>>0,r=t.shiftRightUnsigned(56).toInt()>>>0;return 0==r?0==i?o<16384?o<128?1:2:o<1<<21?3:4:i<16384?i<128?5:6:i<1<<21?7:8:r<128?9:10},n.zigZagEncode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftLeft(1).xor(t.shiftRight(63)).toUnsigned()},n.zigZagDecode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftRightUnsigned(1).xor(t.and(e.ONE).toSigned().negate()).toSigned()},l.writeVarint64=function(t,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned());var r=n.calculateVarint64(t),l=t.toInt()>>>0,a=t.shiftRightUnsigned(28).toInt()>>>0,s=t.shiftRightUnsigned(56).toInt()>>>0;o+=r;var c=this.buffer.byteLength;switch(o>c&&this.resize((c*=2)>o?c:o),o-=r,r){case 10:this.view[o+9]=s>>>7&1;case 9:this.view[o+8]=9!==r?128|s:127&s;case 8:this.view[o+7]=8!==r?a>>>21|128:a>>>21&127;case 7:this.view[o+6]=7!==r?a>>>14|128:a>>>14&127;case 6:this.view[o+5]=6!==r?a>>>7|128:a>>>7&127;case 5:this.view[o+4]=5!==r?128|a:127&a;case 4:this.view[o+3]=4!==r?l>>>21|128:l>>>21&127;case 3:this.view[o+2]=3!==r?l>>>14|128:l>>>14&127;case 2:this.view[o+1]=2!==r?l>>>7|128:l>>>7&127;case 1:this.view[o]=1!==r?128|l:127&l}return i?(this.offset+=r,this):r},l.writeVarint64ZigZag=function(e,t){return this.writeVarint64(n.zigZagEncode64(e),t)},l.readVarint64=function(t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var i=t,r=0,n=0,l=0,a=0;if(a=this.view[t++],r=127&a,128&a&&(a=this.view[t++],r|=(127&a)<<7,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],r|=(127&a)<<14,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],r|=(127&a)<<21,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n=127&a,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n|=(127&a)<<7,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n|=(127&a)<<14,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n|=(127&a)<<21,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],l=127&a,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],l|=(127&a)<<7,128&a||this.noAssert&&void 0===a))))))))))throw Error("Buffer overrun");var s=e.fromBits(r|n<<28,n>>>4|l<<24,!1);return o?(this.offset=t,s):{value:s,length:t-i}},l.readVarint64ZigZag=function(t){var o=this.readVarint64(t);return o&&o.value instanceof e?o.value=n.zigZagDecode64(o.value):o=n.zigZagDecode64(o),o}),l.writeCString=function(e,o){var i=void 0===o;i&&(o=this.offset);var r,n=e.length;if(!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");for(r=0;r>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}n=f.calculateUTF16asUTF8(t(e))[1],o+=n+1;var l=this.buffer.byteLength;return o>l&&this.resize((l*=2)>o?l:o),o-=n+1,f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),this.view[o++]=0,i?(this.offset=o,this):n},l.readCString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var i,r=e,n=-1;return f.decodeUTF8toUTF16(function(){if(0===n)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);return n=this.view[e++],0===n?null:n}.bind(this),i=o(),!0),t?(this.offset=e,i()):{string:i(),length:e-r}},l.writeIString=function(e,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}var r,n=o;r=f.calculateUTF16asUTF8(t(e),this.noAssert)[1],o+=4+r;var l=this.buffer.byteLength;if(o>l&&this.resize((l*=2)>o?l:o),o-=4+r,this.littleEndian?(this.view[o+3]=r>>>24&255,this.view[o+2]=r>>>16&255,this.view[o+1]=r>>>8&255,this.view[o]=255&r):(this.view[o]=r>>>24&255,this.view[o+1]=r>>>16&255,this.view[o+2]=r>>>8&255,this.view[o+3]=255&r),o+=4,f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),o!==n+4+r)throw RangeError("Illegal range: Truncated data, "+o+" == "+(o+4+r));return i?(this.offset=o,this):o-n},l.readIString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=e,i=this.readUint32(e),r=this.readUTF8String(i,n.METRICS_BYTES,e+=4);return e+=r.length,t?(this.offset=e,r.string):{string:r.string,length:e-o}},n.METRICS_CHARS="c",n.METRICS_BYTES="b",l.writeUTF8String=function(e,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}var r,n=o;r=f.calculateUTF16asUTF8(t(e))[1],o+=r;var l=this.buffer.byteLength;return o>l&&this.resize((l*=2)>o?l:o),o-=r,f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),i?(this.offset=o,this):o-n},l.writeString=l.writeUTF8String,n.calculateUTF8Chars=function(e){return f.calculateUTF16asUTF8(t(e))[0]},n.calculateUTF8Bytes=function(e){return f.calculateUTF16asUTF8(t(e))[1]},n.calculateString=n.calculateUTF8Bytes,l.readUTF8String=function(e,t,i){"number"==typeof t&&(i=t,t=void 0);var r=void 0===i;if(r&&(i=this.offset),void 0===t&&(t=n.METRICS_CHARS),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");if(e|=0,"number"!=typeof i||i%1!=0)throw TypeError("Illegal offset: "+i+" (not an integer)");if((i>>>=0)<0||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+0) <= "+this.buffer.byteLength)}var l,a=0,s=i;if(t===n.METRICS_CHARS){if(l=o(),f.decodeUTF8(function(){return a>>=0)<0||i+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+e+") <= "+this.buffer.byteLength)}var c=i+e;if(f.decodeUTF8toUTF16(function(){return i>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}var r,l,a=o;r=f.calculateUTF16asUTF8(t(e),this.noAssert)[1],l=n.calculateVarint32(r),o+=l+r;var s=this.buffer.byteLength;if(o>s&&this.resize((s*=2)>o?s:o),o-=l+r,o+=this.writeVarint32(r,o),f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),o!==a+r+l)throw RangeError("Illegal range: Truncated data, "+o+" == "+(o+r+l));return i?(this.offset=o,this):o-a},l.readVString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o=e,i=this.readVarint32(e),r=this.readUTF8String(i.value,n.METRICS_BYTES,e+=i.length);return e+=r.length,t?(this.offset=e,r.string):{string:r.string,length:e-o}},l.append=function(e,t,o){"number"!=typeof t&&"string"==typeof t||(o=t,t=void 0);var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}e instanceof n||(e=n.wrap(e,t));var r=e.limit-e.offset;if(r<=0)return this;o+=r;var l=this.buffer.byteLength;return o>l&&this.resize((l*=2)>o?l:o),o-=r,this.view.set(e.view.subarray(e.offset,e.limit),o),e.offset+=r,i&&(this.offset+=r),this},l.appendTo=function(e,t){return e.append(this,t),this},l.assert=function(e){return this.noAssert=!e,this},l.capacity=function(){return this.buffer.byteLength},l.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},l.clone=function(e){var t=new n(0,this.littleEndian,this.noAssert);return e?(t.buffer=new ArrayBuffer(this.buffer.byteLength),t.view=new Uint8Array(t.buffer)):(t.buffer=this.buffer,t.view=this.view),t.offset=this.offset,t.markedOffset=this.markedOffset,t.limit=this.limit,t},l.compact=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(0===e&&t===this.buffer.byteLength)return this;var o=t-e;if(0===o)return this.buffer=a,this.view=null,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(o),r=new Uint8Array(i);return r.set(this.view.subarray(e,t)),this.buffer=i,this.view=r,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=o,this},l.copy=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(e===t)return new n(0,this.littleEndian,this.noAssert);var o=t-e,i=new n(o,this.littleEndian,this.noAssert);return i.offset=0,i.limit=o,i.markedOffset>=0&&(i.markedOffset-=e),this.copyTo(i,0,e,t),i},l.copyTo=function(e,t,o,i){var r,l;if(!this.noAssert&&!n.isByteBuffer(e))throw TypeError("Illegal target: Not a ByteBuffer");if(t=(l=void 0===t)?e.offset:0|t,o=(r=void 0===o)?this.offset:0|o,i=void 0===i?this.limit:0|i,t<0||t>e.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+t+" <= "+e.buffer.byteLength);if(o<0||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+o+" <= "+this.buffer.byteLength);var a=i-o;return 0===a?e:(e.ensureCapacity(t+a),e.view.set(this.view.subarray(o,i),t),r&&(this.offset+=a),l&&(e.offset+=a),this)},l.ensureCapacity=function(e){var t=this.buffer.byteLength;return te?t:e):this},l.fill=function(e,t,o){var i=void 0===t;if(i&&(t=this.offset),"string"==typeof e&&e.length>0&&(e=e.charCodeAt(0)),void 0===t&&(t=this.offset),void 0===o&&(o=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof o||o%1!=0)throw TypeError("Illegal end: Not an integer");if(o>>>=0,t<0||t>o||o>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+o+" <= "+this.buffer.byteLength)}if(t>=o)return this;for(;t>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=e,this},l.order=function(e){if(!this.noAssert&&"boolean"!=typeof e)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!e,this},l.LE=function(e){return this.littleEndian=void 0===e||!!e,this},l.BE=function(e){return this.littleEndian=void 0!==e&&!e,this},l.prepend=function(e,t,o){"number"!=typeof t&&"string"==typeof t||(o=t,t=void 0);var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}e instanceof n||(e=n.wrap(e,t));var r=e.limit-e.offset;if(r<=0)return this;var l=r-o;if(l>0){var a=new ArrayBuffer(this.buffer.byteLength+l),s=new Uint8Array(a);s.set(this.view.subarray(o,this.buffer.byteLength),r),this.buffer=a,this.view=s,this.offset+=l,this.markedOffset>=0&&(this.markedOffset+=l),this.limit+=l,o+=l}else{new Uint8Array(this.buffer)}return this.view.set(e.view.subarray(e.offset,e.limit),o-r),e.offset=e.limit,i&&(this.offset-=r),this},l.prependTo=function(e,t){return e.prepend(this,t),this},l.printDebug=function(e){"function"!=typeof e&&(e=console.log.bind(console)),e(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},l.remaining=function(){return this.limit-this.offset},l.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},l.resize=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal capacity: "+e+" (not an integer)");if((e|=0)<0)throw RangeError("Illegal capacity: 0 <= "+e)}if(this.buffer.byteLength>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}return e===t?this:(Array.prototype.reverse.call(this.view.subarray(e,t)),this)},l.skip=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0}var t=this.offset+e;if(!this.noAssert&&(t<0||t>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+e+" <= "+this.buffer.byteLength);return this.offset=t,this},l.slice=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var o=this.clone();return o.offset=e,o.limit=t,o},l.toBuffer=function(e){var t=this.offset,o=this.limit;if(!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: Not an integer");if(t>>>=0,"number"!=typeof o||o%1!=0)throw TypeError("Illegal limit: Not an integer");if(o>>>=0,t<0||t>o||o>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+o+" <= "+this.buffer.byteLength)}if(!e&&0===t&&o===this.buffer.byteLength)return this.buffer;if(t===o)return a;var i=new ArrayBuffer(o-t);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(t,o),0),i},l.toArrayBuffer=l.toBuffer,l.toString=function(e,t,o){if(void 0===e)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof e&&(e="utf8",t=e,o=t),e){case"utf8":return this.toUTF8(t,o);case"base64":return this.toBase64(t,o);case"hex":return this.toHex(t,o);case"binary":return this.toBinary(t,o);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+e)}};var c=function(){for(var e={},t=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],o=[],i=0,r=t.length;i>2&63]),r=(3&i)<<4,null!==(i=e())?(r|=i>>4&15,o(t[63&(r|i>>4&15)]),r=(15&i)<<2,null!==(i=e())?(o(t[63&(r|i>>6&3)]),o(t[63&i])):(o(t[63&r]),o(61))):(o(t[63&r]),o(61),o(61))},e.decode=function(e,t){function i(e){throw Error("Illegal character code: "+e)}for(var r,n,l;null!==(r=e());)if(n=o[r],void 0===n&&i(r),null!==(r=e())&&(l=o[r],void 0===l&&i(r),t(n<<2>>>0|(48&l)>>4),null!==(r=e()))){if(void 0===(n=o[r])){if(61===r)break;i(r)}if(t((15&l)<<4>>>0|(60&n)>>2),null!==(r=e())){if(void 0===(l=o[r])){if(61===r)break;i(r)}t((3&n)<<6>>>0|l)}}},e.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)},e}();l.toBase64=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),e|=0,t|=0,e<0||t>this.capacity||e>t)throw RangeError("begin, end");var i;return c.encode(function(){return ethis.capacity()||e>t)throw RangeError("begin, end");if(e===t)return"";for(var o=[],i=[];e=1024&&(i.push(String.fromCharCode.apply(String,o)),o=[]);return i.join("")+String.fromCharCode.apply(String,o)},n.fromBinary=function(e,t){if("string"!=typeof e)throw TypeError("str");for(var o,i=0,r=e.length,l=new n(r,t);i255)throw RangeError("illegal char code: "+o);l.view[i++]=o}return l.limit=r,l},l.toDebug=function(e){for(var t,o=-1,i=this.buffer.byteLength,r="",n="",l="";o32&&t<127?String.fromCharCode(t):".")),++o,e&&o>0&&o%16==0&&o!==i){for(;r.length<51;)r+=" ";l+=r+n+"\n",r=n=""}o===this.offset&&o===this.limit?r+=o===this.markedOffset?"!":"|":o===this.offset?r+=o===this.markedOffset?"[":"<":o===this.limit?r+=o===this.markedOffset?"]":">":r+=o===this.markedOffset?"'":e||0!==o&&o!==i?" ":""}if(e&&" "!==r){for(;r.length<51;)r+=" ";l+=r+n+"\n"}return e?l:r},n.fromDebug=function(e,t,o){for(var i,r,l=e.length,a=new n((l+1)/3|0,t,o),s=0,c=0,f=!1,p=!1,d=!1,u=!1,h=!1;s":if(!o){if(u){h=!0;break}u=!0}a.limit=c,f=!1;break;case"'":if(!o){if(d){h=!0;break}d=!0}a.markedOffset=c,f=!1;break;case" ":f=!1;break;default:if(!o&&f){h=!0;break}if(r=parseInt(i+e.charAt(s++),16),!o&&(isNaN(r)||r<0||r>255))throw TypeError("Illegal str: Not a debug encoded string");a.view[c++]=r,f=!0}if(h)throw TypeError("Illegal str: Invalid symbol at "+s)}if(!o){if(!p||!u)throw TypeError("Illegal str: Missing offset or limit");if(c>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}for(var o,i=new Array(t-e);e255))throw TypeError("Illegal str: Contains non-hex characters");l.view[s++]=i}return l.limit=s,l};var f=function(){var e={};return e.MAX_CODEPOINT=1114111,e.encodeUTF8=function(e,t){var o=null;for("number"==typeof e&&(o=e,e=function(){return null});null!==o||null!==(o=e());)o<128?t(127&o):o<2048?(t(o>>6&31|192),t(63&o|128)):o<65536?(t(o>>12&15|224),t(o>>6&63|128),t(63&o|128)):(t(o>>18&7|240),t(o>>12&63|128),t(o>>6&63|128),t(63&o|128)),o=null},e.decodeUTF8=function(e,t){for(var o,i,r,n,l=function(e){e=e.slice(0,e.indexOf(null));var t=Error(e.toString());throw t.name="TruncatedError",t.bytes=e,t};null!==(o=e());)if(0==(128&o))t(o);else if(192==(224&o))null===(i=e())&&l([o,i]),t((31&o)<<6|63&i);else if(224==(240&o))(null===(i=e())||null===(r=e()))&&l([o,i,r]),t((15&o)<<12|(63&i)<<6|63&r);else{if(240!=(248&o))throw RangeError("Illegal starting byte: "+o);(null===(i=e())||null===(r=e())||null===(n=e()))&&l([o,i,r,n]),t((7&o)<<18|(63&i)<<12|(63&r)<<6|63&n)}},e.UTF16toUTF8=function(e,t){for(var o,i=null;;){if(null===(o=null!==i?i:e()))break;o>=55296&&o<=57343&&null!==(i=e())&&i>=56320&&i<=57343?(t(1024*(o-55296)+i-56320+65536),i=null):t(o)}null!==i&&t(i)},e.UTF8toUTF16=function(e,t){var o=null;for("number"==typeof e&&(o=e,e=function(){return null});null!==o||null!==(o=e());)o<=65535?t(o):(o-=65536,t(55296+(o>>10)),t(o%1024+56320)),o=null},e.encodeUTF16toUTF8=function(t,o){e.UTF16toUTF8(t,function(t){e.encodeUTF8(t,o)})},e.decodeUTF8toUTF16=function(t,o){e.decodeUTF8(t,function(t){e.UTF8toUTF16(t,o)})},e.calculateCodePoint=function(e){return e<128?1:e<2048?2:e<65536?3:4},e.calculateUTF8=function(e){for(var t,o=0;null!==(t=e());)o+=t<128?1:t<2048?2:t<65536?3:4;return o},e.calculateUTF16asUTF8=function(t){var o=0,i=0;return e.UTF16toUTF8(t,function(e){++o,i+=e<128?1:e<2048?2:e<65536?3:4}),[o,i]},e}();return l.toUTF8=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var i;try{f.decodeUTF8toUTF16(function(){return eo;)t.push(arguments[o++]);return m[++g]=function(){a("function"==typeof e?e:Function(e),t)},i(g),g},u=function(e){delete m[e]},"process"==o(19)(p)?i=function(e){p.nextTick(l(_,e,1))}:b&&b.now?i=function(e){b.now(l(_,e,1))}:h?(r=new h,n=r.port2,r.port1.onmessage=x,i=l(n.postMessage,n,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(i=function(e){f.postMessage(e+"","*")},f.addEventListener("message",x,!1)):i="onreadystatechange"in c("script")?function(e){s.appendChild(c("script")).onreadystatechange=function(){s.removeChild(this),_.call(e)}}:function(e){setTimeout(l(_,e,1),0)}),e.exports={set:d,clear:u}},,function(e,t,o){(function(t){function o(e,t){var o=e[1]||"",r=e[3];if(!r)return o;if(t){var n=i(r);return[o].concat(r.sources.map(function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"})).concat([n]).join("\n")}return[o].join("\n")}function i(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+new t(JSON.stringify(e)).toString("base64")+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var i=o(t,e);return t[2]?"@media "+t[2]+"{"+i+"}":i}).join("")},t.i=function(e,o){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},r=0;r0){n(J.shift())}}function n(e){D().then(function(t){try{var o=Z.wrap(t),i=T(o);return i.data=e.rx_data_cb(o),K=!1,e.p_resolve(i),r(),i}catch(t){e.p_reject(t)}}).catch(function(t){K=!1,e.p_reject(t),r()});var t=new Z;e.tx_data_cb(t),K=!0,$(e.cmd,0,0,t).catch(function(t){e.p_reject(t)})}function l(){o.i(H.a)().addListener("ble_rx_data",O),o.i(H.a)().addListener("ble_disconnected",N),Z.DEFAULT_ENDIAN=Z.LITTLE_ENDIAN}function a(){return console.log("get_version"),i(1,function(e){},function(e){var t=U(e),o="";return e.remaining()&&(o=U(e)),{ver:t,ble_addr:o}})}function s(){return console.log("enter_dfu"),i(2,function(e){},function(e){})}function c(){return console.log("vfs_get_drive_list"),i(16,function(e){},function(e){var t=[];if(e.readUint8()>0){var o={};o.status=e.readUint8(),o.label=String.fromCharCode(e.readByte()),o.name=U(e),o.total_size=e.readUint32(),o.used_size=e.readUint32(),t.push(o)}return t})}function f(e){return console.log("vfs_drive_format",e),i(17,function(t){t.writeByte(e.charCodeAt(0))},function(e){})}function p(e){return console.log("vfs_read_dir",e),i(22,function(t){F(t,e)},function(e){for(var t=[];e.remaining()>0;){var o={};o.name=U(e),o.size=e.readUint32(),o.type=e.readUint8(),o.meta=I(e),t.push(o)}return t})}function d(e){return console.log("vfs_create_folder",e),i(23,function(t){z(e),F(t,e)},function(e){})}function u(e){return console.log("vfs_remove",e),i(24,function(t){F(t,e)},function(e){})}function h(e,t){return console.log("vfs_open_file",e,t),i(18,function(o){z(e),F(o,e),"r"==t?o.writeUint8(8):"w"==t&&o.writeUint8(22)},function(e){return{file_id:e.readUint8()}})}function b(e){return console.log("vfs_close_file",e),i(19,function(t){t.writeUint8(e)},function(e){})}function g(e){return console.log("vfs_read_file",e),i(20,function(t){t.writeUint8(e)},function(e){return e.readBytes(e.remaining()).toArrayBuffer()})}function m(e,t){return console.log("vfs_write_file",e),i(21,function(o){o.writeUint8(e),B(o,t)},function(e){})}function _(e,t){return console.log("vfs_update_meta",e,t),i(26,function(o){F(o,e),L(o,t)},function(e){})}function x(e,t){return console.log("vfs_rename",e,t),i(25,function(o){z(e),z(t),F(o,e),F(o,t)},function(e){})}function v(e){return R(e).length}function w(e,t,o,i){h(e,"r").then(function(e){if(console.log(e),0!=e.status)return console.log("vfs_open_file error: status=",e.status),o(new Error("create file failed!")),void i();var r={file_id:e.data.file_id};g(r.file_id).then(function(e){console.log(e),console.log("vfs read end"),b(r.file_id).then(function(o){t(e.data),i()}).catch(function(e){o(e),i()})}).catch(function(e){console.log("vfs read error",e),b(r.file_id).then(function(t){o(e),i()}).catch(function(e){console.log("vfs close error",e),o(e),i()})})}).catch(function(e){console.log("vfs_open_file error",e),o(e),i()})}function y(e,t,o,i,r){Q.push({path:e,file:t,progress_cb:o,success_cb:i,error_cb:r}),k()}function k(){if(!ee&&Q.length>0){var e=Q.shift();ee=!0,E(e.path,e.file,e.progress_cb,e.success_cb,e.error_cb,function(t){ee=!1,console.log("vfs process file done",e.path),k()})}}function E(e,t,o,i,r,n){console.log("vfs_process_file_write",e),A(t).then(function(l){h(e,"w").then(function(e){function a(){if(s.write_offset63)throw new Error(X.a.t("rename.nametoolong"));if(e.length>3){var t=e.lastIndexOf("/");if(v(e.substring(t+1))>47)throw new Error(X.a.t("rename.pathtoolong"))}}function A(e){return new q.a(function(t,o){var i=new FileReader;i.onload=function(){t(Z.wrap(i.result))},i.onerror=function(){o(i.error)},i.readAsArrayBuffer(e)})}function T(e){return{cmd:e.readUint8(),status:e.readUint8(),chunk:e.readUint16()}}function I(e){var t=e.readUint8(),o={notes:"",flags:{hide:!1},amiibo:{head:0,tail:0}};if(0==t)return o;for(var i=Z.wrap(S(e,t));i.remaining()>0;){var r=i.readUint8();if(1==r){var n=i.readUint8();if(n>0){var l=S(i,n);l.length>0&&(o.notes=C(l))}}else if(2==r){var a=i.readUint8();1&a&&(o.flags.hide=!0)}else 3==r&&(o.amiibo.head=i.readUint32(),o.amiibo.tail=i.readUint32())}return o}function L(e,t){var o=t.notes,i=R(o);if(i.length>90)throw new Error(X.a.t("properties.remarktoolong")+i.length+X.a.t("properties.remarktoolongend"));var r=new Z;if(o.length>0){r.writeUint8(1),r.writeUint8(i.length);for(var n=0;n0||t.amiibo.tail>0)&&(r.writeUint8(3),r.writeUint32(t.amiibo.head),r.writeUint32(t.amiibo.tail)),r.flip(),e.writeUint8(r.remaining()),B(e,r)}function C(e){return(new TextDecoder).decode(new Uint8Array(e))}function R(e){return Y()((new TextEncoder).encode(e))}function U(e){for(var t=e.readUint16(),o=[],i=0;i0)throw new Error("Invalid string. Length must be a multiple of 4");var o=e.indexOf("=");return-1===o&&(o=t),[o,o===t?0:4-o%4]}function r(e){var t=i(e),o=t[0],r=t[1];return 3*(o+r)/4-r}function n(e,t,o){return 3*(t+o)/4-o}function l(e){var t,o,r=i(e),l=r[0],a=r[1],s=new d(n(e,l,a)),c=0,f=a>0?l-4:l;for(o=0;o>16&255,s[c++]=t>>8&255,s[c++]=255&t;return 2===a&&(t=p[e.charCodeAt(o)]<<2|p[e.charCodeAt(o+1)]>>4,s[c++]=255&t),1===a&&(t=p[e.charCodeAt(o)]<<10|p[e.charCodeAt(o+1)]<<4|p[e.charCodeAt(o+2)]>>2,s[c++]=t>>8&255,s[c++]=255&t),s}function a(e){return f[e>>18&63]+f[e>>12&63]+f[e>>6&63]+f[63&e]}function s(e,t,o){for(var i,r=[],n=t;nl?l:n+16383));return 1===i?(t=e[o-1],r.push(f[t>>2]+f[t<<4&63]+"==")):2===i&&(t=(e[o-2]<<8)+e[o-1],r.push(f[t>>10]+f[t>>4&63]+f[t<<2&63]+"=")),r.join("")}t.byteLength=r,t.toByteArray=l,t.fromByteArray=c;for(var f=[],p=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,b=u.length;h=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function b(e){return+e!=e&&(e=0),n.alloc(+e)}function g(e,t){if(n.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var o=e.length;if(0===o)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":case void 0:return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return W(e).length;default:if(i)return V(e).length;t=(""+t).toLowerCase(),i=!0}}function m(e,t,o){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===o||o>this.length)&&(o=this.length),o<=0)return"";if(o>>>=0,t>>>=0,o<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return U(this,t,o);case"utf8":case"utf-8":return I(this,t,o);case"ascii":return C(this,t,o);case"latin1":case"binary":return R(this,t,o);case"base64":return T(this,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,t,o);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function _(e,t,o){var i=e[t];e[t]=e[o],e[o]=i}function x(e,t,o,i,r){if(0===e.length)return-1;if("string"==typeof o?(i=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),o=+o,isNaN(o)&&(o=r?0:e.length-1),o<0&&(o=e.length+o),o>=e.length){if(r)return-1;o=e.length-1}else if(o<0){if(!r)return-1;o=0}if("string"==typeof t&&(t=n.from(t,i)),n.isBuffer(t))return 0===t.length?-1:v(e,t,o,i,r);if("number"==typeof t)return t&=255,n.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,o):Uint8Array.prototype.lastIndexOf.call(e,t,o):v(e,[t],o,i,r);throw new TypeError("val must be string, number or Buffer")}function v(e,t,o,i,r){function n(e,t){return 1===l?e[t]:e.readUInt16BE(t*l)}var l=1,a=e.length,s=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;l=2,a/=2,s/=2,o/=2}var c;if(r){var f=-1;for(c=o;ca&&(o=a-s),c=o;c>=0;c--){for(var p=!0,d=0;dr&&(i=r):i=r;var n=t.length;if(n%2!=0)throw new TypeError("Invalid hex string");i>n/2&&(i=n/2);for(var l=0;l239?4:n>223?3:n>191?2:1;if(r+a<=o){var s,c,f,p;switch(a){case 1:n<128&&(l=n);break;case 2:s=e[r+1],128==(192&s)&&(p=(31&n)<<6|63&s)>127&&(l=p);break;case 3:s=e[r+1],c=e[r+2],128==(192&s)&&128==(192&c)&&(p=(15&n)<<12|(63&s)<<6|63&c)>2047&&(p<55296||p>57343)&&(l=p);break;case 4:s=e[r+1],c=e[r+2],f=e[r+3],128==(192&s)&&128==(192&c)&&128==(192&f)&&(p=(15&n)<<18|(63&s)<<12|(63&c)<<6|63&f)>65535&&p<1114112&&(l=p)}}null===l?(l=65533,a=1):l>65535&&(l-=65536,i.push(l>>>10&1023|55296),l=56320|1023&l),i.push(l),r+=a}return L(i)}function L(e){var t=e.length;if(t<=Q)return String.fromCharCode.apply(String,e);for(var o="",i=0;ii)&&(o=i);for(var r="",n=t;no)throw new RangeError("Trying to access beyond buffer length")}function S(e,t,o,i,r,l){if(!n.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function $(e,t,o,i){t<0&&(t=65535+t+1);for(var r=0,n=Math.min(e.length-o,2);r>>8*(i?r:1-r)}function D(e,t,o,i){t<0&&(t=4294967295+t+1);for(var r=0,n=Math.min(e.length-o,4);r>>8*(i?r:3-r)&255}function O(e,t,o,i,r,n){if(o+i>e.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function N(e,t,o,i,r){return r||O(e,t,o,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,o,i,23,4),o+4}function M(e,t,o,i,r){return r||O(e,t,o,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,o,i,52,8),o+8}function j(e){if(e=P(e).replace(ee,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function P(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Y(e){return e<16?"0"+e.toString(16):e.toString(16)}function V(e,t){t=t||1/0;for(var o,i=e.length,r=null,n=[],l=0;l55295&&o<57344){if(!r){if(o>56319){(t-=3)>-1&&n.push(239,191,189);continue}if(l+1===i){(t-=3)>-1&&n.push(239,191,189);continue}r=o;continue}if(o<56320){(t-=3)>-1&&n.push(239,191,189),r=o;continue}o=65536+(r-55296<<10|o-56320)}else r&&(t-=3)>-1&&n.push(239,191,189);if(r=null,o<128){if((t-=1)<0)break;n.push(o)}else if(o<2048){if((t-=2)<0)break;n.push(o>>6|192,63&o|128)}else if(o<65536){if((t-=3)<0)break;n.push(o>>12|224,o>>6&63|128,63&o|128)}else{if(!(o<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;n.push(o>>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}}return n}function q(e){for(var t=[],o=0;o>8,r=o%256,n.push(r),n.push(i);return n}function W(e){return G.toByteArray(j(e))}function Z(e,t,o,i){for(var r=0;r=t.length||r>=e.length);++r)t[r+o]=e[r];return r}function X(e){return e!==e}/*! +!function(l,a){r=[o(214)],i=a,void 0!==(n="function"==typeof i?i.apply(t,r):i)&&(e.exports=n)}(0,function(e){"use strict";function t(e){var t=0;return function(){return t1024&&(t.push(s.apply(String,e)),e.length=0),Array.prototype.push.apply(e,arguments)}}function i(e,t,o,i,r){var n,l,a=8*r-i-1,s=(1<>1,f=-7,p=o?r-1:0,d=o?-1:1,u=e[t+p];for(p+=d,n=u&(1<<-f)-1,u>>=-f,f+=a;f>0;n=256*n+e[t+p],p+=d,f-=8);for(l=n&(1<<-f)-1,n>>=-f,f+=i;f>0;l=256*l+e[t+p],p+=d,f-=8);if(0===n)n=1-c;else{if(n===s)return l?NaN:1/0*(u?-1:1);l+=Math.pow(2,i),n-=c}return(u?-1:1)*l*Math.pow(2,n-i)}function r(e,t,o,i,r,n){var l,a,s,c=8*n-r-1,f=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,u=i?0:n-1,h=i?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,l=f):(l=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-l))<1&&(l--,s*=2),t+=l+p>=1?d/s:d*Math.pow(2,1-p),t*s>=2&&(l++,s/=2),l+p>=f?(a=0,l=f):l+p>=1?(a=(t*s-1)*Math.pow(2,r),l+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,r),l=0));r>=8;e[o+u]=255&a,u+=h,a/=256,r-=8);for(l=l<0;e[o+u]=255&l,u+=h,l/=256,c-=8);e[o+u-h]|=128*g}var n=function(e,t,o){if(void 0===e&&(e=n.DEFAULT_CAPACITY),void 0===t&&(t=n.DEFAULT_ENDIAN),void 0===o&&(o=n.DEFAULT_NOASSERT),!o){if((e|=0)<0)throw RangeError("Illegal capacity");t=!!t,o=!!o}this.buffer=0===e?a:new ArrayBuffer(e),this.view=0===e?null:new Uint8Array(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian=t,this.noAssert=o};n.VERSION="5.0.1",n.LITTLE_ENDIAN=!0,n.BIG_ENDIAN=!1,n.DEFAULT_CAPACITY=16,n.DEFAULT_ENDIAN=n.BIG_ENDIAN,n.DEFAULT_NOASSERT=!1,n.Long=e||null;var l=n.prototype;l.__isByteBuffer__,Object.defineProperty(l,"__isByteBuffer__",{value:!0,enumerable:!1,configurable:!1});var a=new ArrayBuffer(0),s=String.fromCharCode;n.accessor=function(){return Uint8Array},n.allocate=function(e,t,o){return new n(e,t,o)},n.concat=function(e,t,o,i){"boolean"!=typeof t&&"string"==typeof t||(i=o,o=t,t=void 0);for(var r,l=0,a=0,s=e.length;a0&&(l+=r);if(0===l)return new n(0,o,i);var c,f=new n(l,o,i);for(a=0;a0&&(r.buffer=e.buffer,r.offset=e.byteOffset,r.limit=e.byteOffset+e.byteLength,r.view=new Uint8Array(e.buffer));else if(e instanceof ArrayBuffer)r=new n(0,o,i),e.byteLength>0&&(r.buffer=e,r.offset=0,r.limit=e.byteLength,r.view=e.byteLength>0?new Uint8Array(e):null);else{if("[object Array]"!==Object.prototype.toString.call(e))throw TypeError("Illegal buffer");r=new n(e.length,o,i),r.limit=e.length;for(var a=0;a>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i,r=t,n=e.length,l=n>>3,a=0;for(t+=this.writeVarint32(n,t);l--;)i=1&!!e[a++]|(1&!!e[a++])<<1|(1&!!e[a++])<<2|(1&!!e[a++])<<3|(1&!!e[a++])<<4|(1&!!e[a++])<<5|(1&!!e[a++])<<6|(1&!!e[a++])<<7,this.writeByte(i,t++);if(a>3,l=0,a=[];for(e+=i.length;n--;)o=this.readByte(e++),a[l++]=!!(1&o),a[l++]=!!(2&o),a[l++]=!!(4&o),a[l++]=!!(8&o),a[l++]=!!(16&o),a[l++]=!!(32&o),a[l++]=!!(64&o),a[l++]=!!(128&o);if(l>s++&1)}return t&&(this.offset=e),a},l.readBytes=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+"+e+") <= "+this.buffer.byteLength)}var i=this.slice(t,t+e);return o&&(this.offset+=e),i},l.writeBytes=l.append,l.writeInt8=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,o&&(this.offset+=1),this},l.writeByte=l.writeInt8,l.readInt8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o=this.view[e];return 128==(128&o)&&(o=-(255-o+1)),t&&(this.offset+=1),o},l.readByte=l.readInt8,l.writeUint8=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=1,this.view[t]=e,o&&(this.offset+=1),this},l.writeUInt8=l.writeUint8,l.readUint8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o=this.view[e];return t&&(this.offset+=1),o},l.readUInt8=l.readUint8,l.writeInt16=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),o&&(this.offset+=2),this},l.writeShort=l.writeInt16,l.readInt16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e],o|=this.view[e+1]<<8):(o=this.view[e]<<8,o|=this.view[e+1]),32768==(32768&o)&&(o=-(65535-o+1)),t&&(this.offset+=2),o},l.readShort=l.readInt16,l.writeUint16=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=2,this.littleEndian?(this.view[t+1]=(65280&e)>>>8,this.view[t]=255&e):(this.view[t]=(65280&e)>>>8,this.view[t+1]=255&e),o&&(this.offset+=2),this},l.writeUInt16=l.writeUint16,l.readUint16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e],o|=this.view[e+1]<<8):(o=this.view[e]<<8,o|=this.view[e+1]),t&&(this.offset+=2),o},l.readUInt16=l.readUint16,l.writeInt32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),o&&(this.offset+=4),this},l.writeInt=l.writeInt32,l.readInt32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e+2]<<16,o|=this.view[e+1]<<8,o|=this.view[e],o+=this.view[e+3]<<24>>>0):(o=this.view[e+1]<<16,o|=this.view[e+2]<<8,o|=this.view[e+3],o+=this.view[e]<<24>>>0),o|=0,t&&(this.offset+=4),o},l.readInt=l.readInt32,l.writeUint32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,this.littleEndian?(this.view[t+3]=e>>>24&255,this.view[t+2]=e>>>16&255,this.view[t+1]=e>>>8&255,this.view[t]=255&e):(this.view[t]=e>>>24&255,this.view[t+1]=e>>>16&255,this.view[t+2]=e>>>8&255,this.view[t+3]=255&e),o&&(this.offset+=4),this},l.writeUInt32=l.writeUint32,l.readUint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=0;return this.littleEndian?(o=this.view[e+2]<<16,o|=this.view[e+1]<<8,o|=this.view[e],o+=this.view[e+3]<<24>>>0):(o=this.view[e+1]<<16,o|=this.view[e+2]<<8,o|=this.view[e+3],o+=this.view[e]<<24>>>0),t&&(this.offset+=4),o},l.readUInt32=l.readUint32,e&&(l.writeInt64=function(t,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),o+=8;var r=this.buffer.byteLength;o>r&&this.resize((r*=2)>o?r:o),o-=8;var n=t.low,l=t.high;return this.littleEndian?(this.view[o+3]=n>>>24&255,this.view[o+2]=n>>>16&255,this.view[o+1]=n>>>8&255,this.view[o]=255&n,o+=4,this.view[o+3]=l>>>24&255,this.view[o+2]=l>>>16&255,this.view[o+1]=l>>>8&255,this.view[o]=255&l):(this.view[o]=l>>>24&255,this.view[o+1]=l>>>16&255,this.view[o+2]=l>>>8&255,this.view[o+3]=255&l,o+=4,this.view[o]=n>>>24&255,this.view[o+1]=n>>>16&255,this.view[o+2]=n>>>8&255,this.view[o+3]=255&n),i&&(this.offset+=8),this},l.writeLong=l.writeInt64,l.readInt64=function(t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,r=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,r=this.view[t+2]<<16,r|=this.view[t+1]<<8,r|=this.view[t],r+=this.view[t+3]<<24>>>0):(r=this.view[t+1]<<16,r|=this.view[t+2]<<8,r|=this.view[t+3],r+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var n=new e(i,r,!1);return o&&(this.offset+=8),n},l.readLong=l.readInt64,l.writeUint64=function(t,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),o+=8;var r=this.buffer.byteLength;o>r&&this.resize((r*=2)>o?r:o),o-=8;var n=t.low,l=t.high;return this.littleEndian?(this.view[o+3]=n>>>24&255,this.view[o+2]=n>>>16&255,this.view[o+1]=n>>>8&255,this.view[o]=255&n,o+=4,this.view[o+3]=l>>>24&255,this.view[o+2]=l>>>16&255,this.view[o+1]=l>>>8&255,this.view[o]=255&l):(this.view[o]=l>>>24&255,this.view[o+1]=l>>>16&255,this.view[o+2]=l>>>8&255,this.view[o+3]=255&l,o+=4,this.view[o]=n>>>24&255,this.view[o+1]=n>>>16&255,this.view[o+2]=n>>>8&255,this.view[o+3]=255&n),i&&(this.offset+=8),this},l.writeUInt64=l.writeUint64,l.readUint64=function(t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var i=0,r=0;this.littleEndian?(i=this.view[t+2]<<16,i|=this.view[t+1]<<8,i|=this.view[t],i+=this.view[t+3]<<24>>>0,t+=4,r=this.view[t+2]<<16,r|=this.view[t+1]<<8,r|=this.view[t],r+=this.view[t+3]<<24>>>0):(r=this.view[t+1]<<16,r|=this.view[t+2]<<8,r|=this.view[t+3],r+=this.view[t]<<24>>>0,t+=4,i=this.view[t+1]<<16,i|=this.view[t+2]<<8,i|=this.view[t+3],i+=this.view[t]<<24>>>0);var n=new e(i,r,!0);return o&&(this.offset+=8),n},l.readUInt64=l.readUint64),l.writeFloat32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=4,r(this.view,e,t,this.littleEndian,23,4),o&&(this.offset+=4),this},l.writeFloat=l.writeFloat32,l.readFloat32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=i(this.view,e,this.littleEndian,23,4);return t&&(this.offset+=4),o},l.readFloat=l.readFloat32,l.writeFloat64=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=8;var i=this.buffer.byteLength;return t>i&&this.resize((i*=2)>t?i:t),t-=8,r(this.view,e,t,this.littleEndian,52,8),o&&(this.offset+=8),this},l.writeDouble=l.writeFloat64,l.readFloat64=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var o=i(this.view,e,this.littleEndian,52,8);return t&&(this.offset+=8),o},l.readDouble=l.readFloat64,n.MAX_VARINT32_BYTES=5,n.calculateVarint32=function(e){return e>>>=0,e<128?1:e<16384?2:e<1<<21?3:e<1<<28?4:5},n.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},n.zigZagDecode32=function(e){return e>>>1^-(1&e)|0},l.writeVarint32=function(e,t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i,r=n.calculateVarint32(e);t+=r;var l=this.buffer.byteLength;for(t>l&&this.resize((l*=2)>t?l:t),t-=r,e>>>=0;e>=128;)i=127&e|128,this.view[t++]=i,e>>>=7;return this.view[t++]=e,o?(this.offset=t,this):r},l.writeVarint32ZigZag=function(e,t){return this.writeVarint32(n.zigZagEncode32(e),t)},l.readVarint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o,i=0,r=0;do{if(!this.noAssert&&e>this.limit){var n=Error("Truncated");throw n.truncated=!0,n}o=this.view[e++],i<5&&(r|=(127&o)<<7*i),++i}while(0!=(128&o));return r|=0,t?(this.offset=e,r):{value:r,length:i}},l.readVarint32ZigZag=function(e){var t=this.readVarint32(e);return"object"==typeof t?t.value=n.zigZagDecode32(t.value):t=n.zigZagDecode32(t),t},e&&(n.MAX_VARINT64_BYTES=10,n.calculateVarint64=function(t){"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t));var o=t.toInt()>>>0,i=t.shiftRightUnsigned(28).toInt()>>>0,r=t.shiftRightUnsigned(56).toInt()>>>0;return 0==r?0==i?o<16384?o<128?1:2:o<1<<21?3:4:i<16384?i<128?5:6:i<1<<21?7:8:r<128?9:10},n.zigZagEncode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftLeft(1).xor(t.shiftRight(63)).toUnsigned()},n.zigZagDecode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftRightUnsigned(1).xor(t.and(e.ONE).toSigned().negate()).toSigned()},l.writeVarint64=function(t,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned());var r=n.calculateVarint64(t),l=t.toInt()>>>0,a=t.shiftRightUnsigned(28).toInt()>>>0,s=t.shiftRightUnsigned(56).toInt()>>>0;o+=r;var c=this.buffer.byteLength;switch(o>c&&this.resize((c*=2)>o?c:o),o-=r,r){case 10:this.view[o+9]=s>>>7&1;case 9:this.view[o+8]=9!==r?128|s:127&s;case 8:this.view[o+7]=8!==r?a>>>21|128:a>>>21&127;case 7:this.view[o+6]=7!==r?a>>>14|128:a>>>14&127;case 6:this.view[o+5]=6!==r?a>>>7|128:a>>>7&127;case 5:this.view[o+4]=5!==r?128|a:127&a;case 4:this.view[o+3]=4!==r?l>>>21|128:l>>>21&127;case 3:this.view[o+2]=3!==r?l>>>14|128:l>>>14&127;case 2:this.view[o+1]=2!==r?l>>>7|128:l>>>7&127;case 1:this.view[o]=1!==r?128|l:127&l}return i?(this.offset+=r,this):r},l.writeVarint64ZigZag=function(e,t){return this.writeVarint64(n.zigZagEncode64(e),t)},l.readVarint64=function(t){var o=void 0===t;if(o&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var i=t,r=0,n=0,l=0,a=0;if(a=this.view[t++],r=127&a,128&a&&(a=this.view[t++],r|=(127&a)<<7,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],r|=(127&a)<<14,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],r|=(127&a)<<21,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n=127&a,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n|=(127&a)<<7,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n|=(127&a)<<14,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],n|=(127&a)<<21,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],l=127&a,(128&a||this.noAssert&&void 0===a)&&(a=this.view[t++],l|=(127&a)<<7,128&a||this.noAssert&&void 0===a))))))))))throw Error("Buffer overrun");var s=e.fromBits(r|n<<28,n>>>4|l<<24,!1);return o?(this.offset=t,s):{value:s,length:t-i}},l.readVarint64ZigZag=function(t){var o=this.readVarint64(t);return o&&o.value instanceof e?o.value=n.zigZagDecode64(o.value):o=n.zigZagDecode64(o),o}),l.writeCString=function(e,o){var i=void 0===o;i&&(o=this.offset);var r,n=e.length;if(!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");for(r=0;r>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}n=f.calculateUTF16asUTF8(t(e))[1],o+=n+1;var l=this.buffer.byteLength;return o>l&&this.resize((l*=2)>o?l:o),o-=n+1,f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),this.view[o++]=0,i?(this.offset=o,this):n},l.readCString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var i,r=e,n=-1;return f.decodeUTF8toUTF16(function(){if(0===n)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);return n=this.view[e++],0===n?null:n}.bind(this),i=o(),!0),t?(this.offset=e,i()):{string:i(),length:e-r}},l.writeIString=function(e,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}var r,n=o;r=f.calculateUTF16asUTF8(t(e),this.noAssert)[1],o+=4+r;var l=this.buffer.byteLength;if(o>l&&this.resize((l*=2)>o?l:o),o-=4+r,this.littleEndian?(this.view[o+3]=r>>>24&255,this.view[o+2]=r>>>16&255,this.view[o+1]=r>>>8&255,this.view[o]=255&r):(this.view[o]=r>>>24&255,this.view[o+1]=r>>>16&255,this.view[o+2]=r>>>8&255,this.view[o+3]=255&r),o+=4,f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),o!==n+4+r)throw RangeError("Illegal range: Truncated data, "+o+" == "+(o+4+r));return i?(this.offset=o,this):o-n},l.readIString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var o=e,i=this.readUint32(e),r=this.readUTF8String(i,n.METRICS_BYTES,e+=4);return e+=r.length,t?(this.offset=e,r.string):{string:r.string,length:e-o}},n.METRICS_CHARS="c",n.METRICS_BYTES="b",l.writeUTF8String=function(e,o){var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}var r,n=o;r=f.calculateUTF16asUTF8(t(e))[1],o+=r;var l=this.buffer.byteLength;return o>l&&this.resize((l*=2)>o?l:o),o-=r,f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),i?(this.offset=o,this):o-n},l.writeString=l.writeUTF8String,n.calculateUTF8Chars=function(e){return f.calculateUTF16asUTF8(t(e))[0]},n.calculateUTF8Bytes=function(e){return f.calculateUTF16asUTF8(t(e))[1]},n.calculateString=n.calculateUTF8Bytes,l.readUTF8String=function(e,t,i){"number"==typeof t&&(i=t,t=void 0);var r=void 0===i;if(r&&(i=this.offset),void 0===t&&(t=n.METRICS_CHARS),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");if(e|=0,"number"!=typeof i||i%1!=0)throw TypeError("Illegal offset: "+i+" (not an integer)");if((i>>>=0)<0||i+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+0) <= "+this.buffer.byteLength)}var l,a=0,s=i;if(t===n.METRICS_CHARS){if(l=o(),f.decodeUTF8(function(){return a>>=0)<0||i+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+i+" (+"+e+") <= "+this.buffer.byteLength)}var c=i+e;if(f.decodeUTF8toUTF16(function(){return i>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}var r,l,a=o;r=f.calculateUTF16asUTF8(t(e),this.noAssert)[1],l=n.calculateVarint32(r),o+=l+r;var s=this.buffer.byteLength;if(o>s&&this.resize((s*=2)>o?s:o),o-=l+r,o+=this.writeVarint32(r,o),f.encodeUTF16toUTF8(t(e),function(e){this.view[o++]=e}.bind(this)),o!==a+r+l)throw RangeError("Illegal range: Truncated data, "+o+" == "+(o+r+l));return i?(this.offset=o,this):o-a},l.readVString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var o=e,i=this.readVarint32(e),r=this.readUTF8String(i.value,n.METRICS_BYTES,e+=i.length);return e+=r.length,t?(this.offset=e,r.string):{string:r.string,length:e-o}},l.append=function(e,t,o){"number"!=typeof t&&"string"==typeof t||(o=t,t=void 0);var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}e instanceof n||(e=n.wrap(e,t));var r=e.limit-e.offset;if(r<=0)return this;o+=r;var l=this.buffer.byteLength;return o>l&&this.resize((l*=2)>o?l:o),o-=r,this.view.set(e.view.subarray(e.offset,e.limit),o),e.offset+=r,i&&(this.offset+=r),this},l.appendTo=function(e,t){return e.append(this,t),this},l.assert=function(e){return this.noAssert=!e,this},l.capacity=function(){return this.buffer.byteLength},l.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},l.clone=function(e){var t=new n(0,this.littleEndian,this.noAssert);return e?(t.buffer=new ArrayBuffer(this.buffer.byteLength),t.view=new Uint8Array(t.buffer)):(t.buffer=this.buffer,t.view=this.view),t.offset=this.offset,t.markedOffset=this.markedOffset,t.limit=this.limit,t},l.compact=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(0===e&&t===this.buffer.byteLength)return this;var o=t-e;if(0===o)return this.buffer=a,this.view=null,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(o),r=new Uint8Array(i);return r.set(this.view.subarray(e,t)),this.buffer=i,this.view=r,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=o,this},l.copy=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(e===t)return new n(0,this.littleEndian,this.noAssert);var o=t-e,i=new n(o,this.littleEndian,this.noAssert);return i.offset=0,i.limit=o,i.markedOffset>=0&&(i.markedOffset-=e),this.copyTo(i,0,e,t),i},l.copyTo=function(e,t,o,i){var r,l;if(!this.noAssert&&!n.isByteBuffer(e))throw TypeError("Illegal target: Not a ByteBuffer");if(t=(l=void 0===t)?e.offset:0|t,o=(r=void 0===o)?this.offset:0|o,i=void 0===i?this.limit:0|i,t<0||t>e.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+t+" <= "+e.buffer.byteLength);if(o<0||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+o+" <= "+this.buffer.byteLength);var a=i-o;return 0===a?e:(e.ensureCapacity(t+a),e.view.set(this.view.subarray(o,i),t),r&&(this.offset+=a),l&&(e.offset+=a),this)},l.ensureCapacity=function(e){var t=this.buffer.byteLength;return te?t:e):this},l.fill=function(e,t,o){var i=void 0===t;if(i&&(t=this.offset),"string"==typeof e&&e.length>0&&(e=e.charCodeAt(0)),void 0===t&&(t=this.offset),void 0===o&&(o=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof o||o%1!=0)throw TypeError("Illegal end: Not an integer");if(o>>>=0,t<0||t>o||o>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+o+" <= "+this.buffer.byteLength)}if(t>=o)return this;for(;t>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=e,this},l.order=function(e){if(!this.noAssert&&"boolean"!=typeof e)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!e,this},l.LE=function(e){return this.littleEndian=void 0===e||!!e,this},l.BE=function(e){return this.littleEndian=void 0!==e&&!e,this},l.prepend=function(e,t,o){"number"!=typeof t&&"string"==typeof t||(o=t,t=void 0);var i=void 0===o;if(i&&(o=this.offset),!this.noAssert){if("number"!=typeof o||o%1!=0)throw TypeError("Illegal offset: "+o+" (not an integer)");if((o>>>=0)<0||o+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+o+" (+0) <= "+this.buffer.byteLength)}e instanceof n||(e=n.wrap(e,t));var r=e.limit-e.offset;if(r<=0)return this;var l=r-o;if(l>0){var a=new ArrayBuffer(this.buffer.byteLength+l),s=new Uint8Array(a);s.set(this.view.subarray(o,this.buffer.byteLength),r),this.buffer=a,this.view=s,this.offset+=l,this.markedOffset>=0&&(this.markedOffset+=l),this.limit+=l,o+=l}else{new Uint8Array(this.buffer)}return this.view.set(e.view.subarray(e.offset,e.limit),o-r),e.offset=e.limit,i&&(this.offset-=r),this},l.prependTo=function(e,t){return e.prepend(this,t),this},l.printDebug=function(e){"function"!=typeof e&&(e=console.log.bind(console)),e(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},l.remaining=function(){return this.limit-this.offset},l.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},l.resize=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal capacity: "+e+" (not an integer)");if((e|=0)<0)throw RangeError("Illegal capacity: 0 <= "+e)}if(this.buffer.byteLength>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}return e===t?this:(Array.prototype.reverse.call(this.view.subarray(e,t)),this)},l.skip=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0}var t=this.offset+e;if(!this.noAssert&&(t<0||t>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+e+" <= "+this.buffer.byteLength);return this.offset=t,this},l.slice=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var o=this.clone();return o.offset=e,o.limit=t,o},l.toBuffer=function(e){var t=this.offset,o=this.limit;if(!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: Not an integer");if(t>>>=0,"number"!=typeof o||o%1!=0)throw TypeError("Illegal limit: Not an integer");if(o>>>=0,t<0||t>o||o>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+o+" <= "+this.buffer.byteLength)}if(!e&&0===t&&o===this.buffer.byteLength)return this.buffer;if(t===o)return a;var i=new ArrayBuffer(o-t);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(t,o),0),i},l.toArrayBuffer=l.toBuffer,l.toString=function(e,t,o){if(void 0===e)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof e&&(e="utf8",t=e,o=t),e){case"utf8":return this.toUTF8(t,o);case"base64":return this.toBase64(t,o);case"hex":return this.toHex(t,o);case"binary":return this.toBinary(t,o);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+e)}};var c=function(){for(var e={},t=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],o=[],i=0,r=t.length;i>2&63]),r=(3&i)<<4,null!==(i=e())?(r|=i>>4&15,o(t[63&(r|i>>4&15)]),r=(15&i)<<2,null!==(i=e())?(o(t[63&(r|i>>6&3)]),o(t[63&i])):(o(t[63&r]),o(61))):(o(t[63&r]),o(61),o(61))},e.decode=function(e,t){function i(e){throw Error("Illegal character code: "+e)}for(var r,n,l;null!==(r=e());)if(n=o[r],void 0===n&&i(r),null!==(r=e())&&(l=o[r],void 0===l&&i(r),t(n<<2>>>0|(48&l)>>4),null!==(r=e()))){if(void 0===(n=o[r])){if(61===r)break;i(r)}if(t((15&l)<<4>>>0|(60&n)>>2),null!==(r=e())){if(void 0===(l=o[r])){if(61===r)break;i(r)}t((3&n)<<6>>>0|l)}}},e.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)},e}();l.toBase64=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),e|=0,t|=0,e<0||t>this.capacity||e>t)throw RangeError("begin, end");var i;return c.encode(function(){return ethis.capacity()||e>t)throw RangeError("begin, end");if(e===t)return"";for(var o=[],i=[];e=1024&&(i.push(String.fromCharCode.apply(String,o)),o=[]);return i.join("")+String.fromCharCode.apply(String,o)},n.fromBinary=function(e,t){if("string"!=typeof e)throw TypeError("str");for(var o,i=0,r=e.length,l=new n(r,t);i255)throw RangeError("illegal char code: "+o);l.view[i++]=o}return l.limit=r,l},l.toDebug=function(e){for(var t,o=-1,i=this.buffer.byteLength,r="",n="",l="";o32&&t<127?String.fromCharCode(t):".")),++o,e&&o>0&&o%16==0&&o!==i){for(;r.length<51;)r+=" ";l+=r+n+"\n",r=n=""}o===this.offset&&o===this.limit?r+=o===this.markedOffset?"!":"|":o===this.offset?r+=o===this.markedOffset?"[":"<":o===this.limit?r+=o===this.markedOffset?"]":">":r+=o===this.markedOffset?"'":e||0!==o&&o!==i?" ":""}if(e&&" "!==r){for(;r.length<51;)r+=" ";l+=r+n+"\n"}return e?l:r},n.fromDebug=function(e,t,o){for(var i,r,l=e.length,a=new n((l+1)/3|0,t,o),s=0,c=0,f=!1,p=!1,d=!1,u=!1,h=!1;s":if(!o){if(u){h=!0;break}u=!0}a.limit=c,f=!1;break;case"'":if(!o){if(d){h=!0;break}d=!0}a.markedOffset=c,f=!1;break;case" ":f=!1;break;default:if(!o&&f){h=!0;break}if(r=parseInt(i+e.charAt(s++),16),!o&&(isNaN(r)||r<0||r>255))throw TypeError("Illegal str: Not a debug encoded string");a.view[c++]=r,f=!0}if(h)throw TypeError("Illegal str: Invalid symbol at "+s)}if(!o){if(!p||!u)throw TypeError("Illegal str: Missing offset or limit");if(c>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}for(var o,i=new Array(t-e);e255))throw TypeError("Illegal str: Contains non-hex characters");l.view[s++]=i}return l.limit=s,l};var f=function(){var e={};return e.MAX_CODEPOINT=1114111,e.encodeUTF8=function(e,t){var o=null;for("number"==typeof e&&(o=e,e=function(){return null});null!==o||null!==(o=e());)o<128?t(127&o):o<2048?(t(o>>6&31|192),t(63&o|128)):o<65536?(t(o>>12&15|224),t(o>>6&63|128),t(63&o|128)):(t(o>>18&7|240),t(o>>12&63|128),t(o>>6&63|128),t(63&o|128)),o=null},e.decodeUTF8=function(e,t){for(var o,i,r,n,l=function(e){e=e.slice(0,e.indexOf(null));var t=Error(e.toString());throw t.name="TruncatedError",t.bytes=e,t};null!==(o=e());)if(0==(128&o))t(o);else if(192==(224&o))null===(i=e())&&l([o,i]),t((31&o)<<6|63&i);else if(224==(240&o))(null===(i=e())||null===(r=e()))&&l([o,i,r]),t((15&o)<<12|(63&i)<<6|63&r);else{if(240!=(248&o))throw RangeError("Illegal starting byte: "+o);(null===(i=e())||null===(r=e())||null===(n=e()))&&l([o,i,r,n]),t((7&o)<<18|(63&i)<<12|(63&r)<<6|63&n)}},e.UTF16toUTF8=function(e,t){for(var o,i=null;;){if(null===(o=null!==i?i:e()))break;o>=55296&&o<=57343&&null!==(i=e())&&i>=56320&&i<=57343?(t(1024*(o-55296)+i-56320+65536),i=null):t(o)}null!==i&&t(i)},e.UTF8toUTF16=function(e,t){var o=null;for("number"==typeof e&&(o=e,e=function(){return null});null!==o||null!==(o=e());)o<=65535?t(o):(o-=65536,t(55296+(o>>10)),t(o%1024+56320)),o=null},e.encodeUTF16toUTF8=function(t,o){e.UTF16toUTF8(t,function(t){e.encodeUTF8(t,o)})},e.decodeUTF8toUTF16=function(t,o){e.decodeUTF8(t,function(t){e.UTF8toUTF16(t,o)})},e.calculateCodePoint=function(e){return e<128?1:e<2048?2:e<65536?3:4},e.calculateUTF8=function(e){for(var t,o=0;null!==(t=e());)o+=t<128?1:t<2048?2:t<65536?3:4;return o},e.calculateUTF16asUTF8=function(t){var o=0,i=0;return e.UTF16toUTF8(t,function(e){++o,i+=e<128?1:e<2048?2:e<65536?3:4}),[o,i]},e}();return l.toUTF8=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var i;try{f.decodeUTF8toUTF16(function(){return eo;)t.push(arguments[o++]);return m[++b]=function(){a("function"==typeof e?e:Function(e),t)},i(b),b},u=function(e){delete m[e]},"process"==o(19)(p)?i=function(e){p.nextTick(l(_,e,1))}:g&&g.now?i=function(e){g.now(l(_,e,1))}:h?(r=new h,n=r.port2,r.port1.onmessage=x,i=l(n.postMessage,n,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(i=function(e){f.postMessage(e+"","*")},f.addEventListener("message",x,!1)):i="onreadystatechange"in c("script")?function(e){s.appendChild(c("script")).onreadystatechange=function(){s.removeChild(this),_.call(e)}}:function(e){setTimeout(l(_,e,1),0)}),e.exports={set:d,clear:u}},,function(e,t,o){(function(t){function o(e,t){var o=e[1]||"",r=e[3];if(!r)return o;if(t){var n=i(r);return[o].concat(r.sources.map(function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"})).concat([n]).join("\n")}return[o].join("\n")}function i(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+new t(JSON.stringify(e)).toString("base64")+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var i=o(t,e);return t[2]?"@media "+t[2]+"{"+i+"}":i}).join("")},t.i=function(e,o){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},r=0;r0){n(J.shift())}}function n(e){$().then(function(t){try{var o=Z.wrap(t),i=T(o);return i.data=e.rx_data_cb(o),K=!1,e.p_resolve(i),r(),i}catch(t){e.p_reject(t)}}).catch(function(t){K=!1,e.p_reject(t),r()});var t=new Z;e.tx_data_cb(t),K=!0,S(e.cmd,0,0,t).catch(function(t){e.p_reject(t)})}function l(){o.i(H.a)().addListener("ble_rx_data",O),o.i(H.a)().addListener("ble_disconnected",M),Z.DEFAULT_ENDIAN=Z.LITTLE_ENDIAN}function a(){return console.log("get_version"),i(1,function(e){},function(e){var t=U(e),o="";return e.remaining()&&(o=U(e)),{ver:t,ble_addr:o}})}function s(){return console.log("enter_dfu"),i(2,function(e){},function(e){})}function c(){return console.log("vfs_get_drive_list"),i(16,function(e){},function(e){var t=[];if(e.readUint8()>0){var o={};o.status=e.readUint8(),o.label=String.fromCharCode(e.readByte()),o.name=U(e),o.total_size=e.readUint32(),o.used_size=e.readUint32(),t.push(o)}return t})}function f(e){return console.log("vfs_drive_format",e),i(17,function(t){t.writeByte(e.charCodeAt(0))},function(e){})}function p(e){return console.log("vfs_read_dir",e),i(22,function(t){R(t,e)},function(e){for(var t=[];e.remaining()>0;){var o={};o.name=U(e),o.size=e.readUint32(),o.type=e.readUint8(),o.meta=L(e),t.push(o)}return t})}function d(e){return console.log("vfs_create_folder",e),i(23,function(t){z(e),R(t,e)},function(e){})}function u(e){return console.log("vfs_remove",e),i(24,function(t){R(t,e)},function(e){})}function h(e,t){return console.log("vfs_open_file",e,t),i(18,function(o){z(e),R(o,e),"r"==t?o.writeUint8(8):"w"==t&&o.writeUint8(22)},function(e){return{file_id:e.readUint8()}})}function g(e){return console.log("vfs_close_file",e),i(19,function(t){t.writeUint8(e)},function(e){})}function b(e){return console.log("vfs_read_file",e),i(20,function(t){t.writeUint8(e)},function(e){return e.readBytes(e.remaining()).toArrayBuffer()})}function m(e,t){return console.log("vfs_write_file",e),i(21,function(o){o.writeUint8(e),B(o,t)},function(e){})}function _(e,t){return console.log("vfs_update_meta",e,t),i(26,function(o){R(o,e),I(o,t)},function(e){})}function x(e,t){return console.log("vfs_rename",e,t),i(25,function(o){z(e),z(t),R(o,e),R(o,t)},function(e){})}function v(e){return F(e).length}function w(e,t,o,i){h(e,"r").then(function(e){if(console.log(e),0!=e.status)return console.log("vfs_open_file error: status=",e.status),o(new Error("create file failed!")),void i();var r={file_id:e.data.file_id};b(r.file_id).then(function(e){console.log(e),console.log("vfs read end"),g(r.file_id).then(function(o){t(e.data),i()}).catch(function(e){o(e),i()})}).catch(function(e){console.log("vfs read error",e),g(r.file_id).then(function(t){o(e),i()}).catch(function(e){console.log("vfs close error",e),o(e),i()})})}).catch(function(e){console.log("vfs_open_file error",e),o(e),i()})}function y(e,t,o,i,r){Q.push({path:e,file:t,progress_cb:o,success_cb:i,error_cb:r}),k()}function k(){if(!ee&&Q.length>0){var e=Q.shift();ee=!0,E(e.path,e.file,e.progress_cb,e.success_cb,e.error_cb,function(t){ee=!1,console.log("vfs process file done",e.path),k()})}}function E(e,t,o,i,r,n){console.log("vfs_process_file_write",e),A(t).then(function(l){h(e,"w").then(function(e){function a(){if(s.write_offset63)throw new Error(X.a.t("rename.nametoolong"));if(e.length>3){var t=e.lastIndexOf("/");if(v(e.substring(t+1))>47)throw new Error(X.a.t("rename.pathtoolong"))}}function A(e){return new q.a(function(t,o){var i=new FileReader;i.onload=function(){t(Z.wrap(i.result))},i.onerror=function(){o(i.error)},i.readAsArrayBuffer(e)})}function T(e){return{cmd:e.readUint8(),status:e.readUint8(),chunk:e.readUint16()}}function L(e){var t=e.readUint8(),o={notes:"",flags:{hide:!1},amiibo:{head:0,tail:0}};if(0==t)return o;for(var i=Z.wrap(D(e,t));i.remaining()>0;){var r=i.readUint8();if(1==r){var n=i.readUint8();if(n>0){var l=D(i,n);l.length>0&&(o.notes=C(l))}}else if(2==r){var a=i.readUint8();1&a&&(o.flags.hide=!0)}else 3==r&&(o.amiibo.head=i.readUint32(),o.amiibo.tail=i.readUint32())}return o}function I(e,t){var o=t.notes,i=F(o);if(i.length>90)throw new Error(X.a.t("properties.remarktoolong")+i.length+X.a.t("properties.remarktoolongend"));var r=new Z;if(o.length>0){r.writeUint8(1),r.writeUint8(i.length);for(var n=0;n0||t.amiibo.tail>0)&&(r.writeUint8(3),r.writeUint32(t.amiibo.head),r.writeUint32(t.amiibo.tail)),r.flip(),e.writeUint8(r.remaining()),B(e,r)}function C(e){return(new TextDecoder).decode(new Uint8Array(e))}function F(e){return Y()((new TextEncoder).encode(e))}function U(e){for(var t=e.readUint16(),o=[],i=0;i0)throw new Error("Invalid string. Length must be a multiple of 4");var o=e.indexOf("=");return-1===o&&(o=t),[o,o===t?0:4-o%4]}function r(e){var t=i(e),o=t[0],r=t[1];return 3*(o+r)/4-r}function n(e,t,o){return 3*(t+o)/4-o}function l(e){var t,o,r=i(e),l=r[0],a=r[1],s=new d(n(e,l,a)),c=0,f=a>0?l-4:l;for(o=0;o>16&255,s[c++]=t>>8&255,s[c++]=255&t;return 2===a&&(t=p[e.charCodeAt(o)]<<2|p[e.charCodeAt(o+1)]>>4,s[c++]=255&t),1===a&&(t=p[e.charCodeAt(o)]<<10|p[e.charCodeAt(o+1)]<<4|p[e.charCodeAt(o+2)]>>2,s[c++]=t>>8&255,s[c++]=255&t),s}function a(e){return f[e>>18&63]+f[e>>12&63]+f[e>>6&63]+f[63&e]}function s(e,t,o){for(var i,r=[],n=t;nl?l:n+16383));return 1===i?(t=e[o-1],r.push(f[t>>2]+f[t<<4&63]+"==")):2===i&&(t=(e[o-2]<<8)+e[o-1],r.push(f[t>>10]+f[t>>4&63]+f[t<<2&63]+"=")),r.join("")}t.byteLength=r,t.toByteArray=l,t.fromByteArray=c;for(var f=[],p=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,g=u.length;h=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function g(e){return+e!=e&&(e=0),n.alloc(+e)}function b(e,t){if(n.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var o=e.length;if(0===o)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":case void 0:return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return W(e).length;default:if(i)return V(e).length;t=(""+t).toLowerCase(),i=!0}}function m(e,t,o){var i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===o||o>this.length)&&(o=this.length),o<=0)return"";if(o>>>=0,t>>>=0,o<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return U(this,t,o);case"utf8":case"utf-8":return L(this,t,o);case"ascii":return C(this,t,o);case"latin1":case"binary":return F(this,t,o);case"base64":return T(this,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,o);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function _(e,t,o){var i=e[t];e[t]=e[o],e[o]=i}function x(e,t,o,i,r){if(0===e.length)return-1;if("string"==typeof o?(i=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),o=+o,isNaN(o)&&(o=r?0:e.length-1),o<0&&(o=e.length+o),o>=e.length){if(r)return-1;o=e.length-1}else if(o<0){if(!r)return-1;o=0}if("string"==typeof t&&(t=n.from(t,i)),n.isBuffer(t))return 0===t.length?-1:v(e,t,o,i,r);if("number"==typeof t)return t&=255,n.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,o):Uint8Array.prototype.lastIndexOf.call(e,t,o):v(e,[t],o,i,r);throw new TypeError("val must be string, number or Buffer")}function v(e,t,o,i,r){function n(e,t){return 1===l?e[t]:e.readUInt16BE(t*l)}var l=1,a=e.length,s=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;l=2,a/=2,s/=2,o/=2}var c;if(r){var f=-1;for(c=o;ca&&(o=a-s),c=o;c>=0;c--){for(var p=!0,d=0;dr&&(i=r):i=r;var n=t.length;if(n%2!=0)throw new TypeError("Invalid hex string");i>n/2&&(i=n/2);for(var l=0;l239?4:n>223?3:n>191?2:1;if(r+a<=o){var s,c,f,p;switch(a){case 1:n<128&&(l=n);break;case 2:s=e[r+1],128==(192&s)&&(p=(31&n)<<6|63&s)>127&&(l=p);break;case 3:s=e[r+1],c=e[r+2],128==(192&s)&&128==(192&c)&&(p=(15&n)<<12|(63&s)<<6|63&c)>2047&&(p<55296||p>57343)&&(l=p);break;case 4:s=e[r+1],c=e[r+2],f=e[r+3],128==(192&s)&&128==(192&c)&&128==(192&f)&&(p=(15&n)<<18|(63&s)<<12|(63&c)<<6|63&f)>65535&&p<1114112&&(l=p)}}null===l?(l=65533,a=1):l>65535&&(l-=65536,i.push(l>>>10&1023|55296),l=56320|1023&l),i.push(l),r+=a}return I(i)}function I(e){var t=e.length;if(t<=Q)return String.fromCharCode.apply(String,e);for(var o="",i=0;ii)&&(o=i);for(var r="",n=t;no)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,o,i,r,l){if(!n.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function S(e,t,o,i){t<0&&(t=65535+t+1);for(var r=0,n=Math.min(e.length-o,2);r>>8*(i?r:1-r)}function $(e,t,o,i){t<0&&(t=4294967295+t+1);for(var r=0,n=Math.min(e.length-o,4);r>>8*(i?r:3-r)&255}function O(e,t,o,i,r,n){if(o+i>e.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function M(e,t,o,i,r){return r||O(e,t,o,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,o,i,23,4),o+4}function N(e,t,o,i,r){return r||O(e,t,o,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,o,i,52,8),o+8}function j(e){if(e=P(e).replace(ee,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function P(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Y(e){return e<16?"0"+e.toString(16):e.toString(16)}function V(e,t){t=t||1/0;for(var o,i=e.length,r=null,n=[],l=0;l55295&&o<57344){if(!r){if(o>56319){(t-=3)>-1&&n.push(239,191,189);continue}if(l+1===i){(t-=3)>-1&&n.push(239,191,189);continue}r=o;continue}if(o<56320){(t-=3)>-1&&n.push(239,191,189),r=o;continue}o=65536+(r-55296<<10|o-56320)}else r&&(t-=3)>-1&&n.push(239,191,189);if(r=null,o<128){if((t-=1)<0)break;n.push(o)}else if(o<2048){if((t-=2)<0)break;n.push(o>>6|192,63&o|128)}else if(o<65536){if((t-=3)<0)break;n.push(o>>12|224,o>>6&63|128,63&o|128)}else{if(!(o<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;n.push(o>>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}}return n}function q(e){for(var t=[],o=0;o>8,r=o%256,n.push(r),n.push(i);return n}function W(e){return G.toByteArray(j(e))}function Z(e,t,o,i){for(var r=0;r=t.length||r>=e.length);++r)t[r+o]=e[r];return r}function X(e){return e!==e}/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -var G=o(139),J=o(207),K=o(208);t.Buffer=n,t.SlowBuffer=b,t.INSPECT_MAX_BYTES=50,n.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=i(),n.poolSize=8192,n._augment=function(e){return e.__proto__=n.prototype,e},n.from=function(e,t,o){return l(null,e,t,o)},n.TYPED_ARRAY_SUPPORT&&(n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0})),n.alloc=function(e,t,o){return s(null,e,t,o)},n.allocUnsafe=function(e){return c(null,e)},n.allocUnsafeSlow=function(e){return c(null,e)},n.isBuffer=function(e){return!(null==e||!e._isBuffer)},n.compare=function(e,t){if(!n.isBuffer(e)||!n.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var o=e.length,i=t.length,r=0,l=Math.min(o,i);r0&&(e=this.toString("hex",0,o).match(/.{2}/g).join(" "),this.length>o&&(e+=" ... ")),""},n.prototype.compare=function(e,t,o,i,r){if(!n.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===o&&(o=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||o>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=o)return 0;if(i>=r)return-1;if(t>=o)return 1;if(t>>>=0,o>>>=0,i>>>=0,r>>>=0,this===e)return 0;for(var l=r-i,a=o-t,s=Math.min(l,a),c=this.slice(i,r),f=e.slice(t,o),p=0;pr)&&(o=r),e.length>0&&(o<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var n=!1;;)switch(i){case"hex":return w(this,e,t,o);case"utf8":case"utf-8":return y(this,e,t,o);case"ascii":return k(this,e,t,o);case"latin1":case"binary":return E(this,e,t,o);case"base64":return z(this,e,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,o);default:if(n)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),n=!0}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;n.prototype.slice=function(e,t){var o=this.length;e=~~e,t=void 0===t?o:~~t,e<0?(e+=o)<0&&(e=0):e>o&&(e=o),t<0?(t+=o)<0&&(t=0):t>o&&(t=o),t0&&(r*=256);)i+=this[e+--t]*r;return i},n.prototype.readUInt8=function(e,t){return t||B(e,1,this.length),this[e]},n.prototype.readUInt16LE=function(e,t){return t||B(e,2,this.length),this[e]|this[e+1]<<8},n.prototype.readUInt16BE=function(e,t){return t||B(e,2,this.length),this[e]<<8|this[e+1]},n.prototype.readUInt32LE=function(e,t){return t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},n.prototype.readUInt32BE=function(e,t){return t||B(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},n.prototype.readIntLE=function(e,t,o){e|=0,t|=0,o||B(e,t,this.length);for(var i=this[e],r=1,n=0;++n=r&&(i-=Math.pow(2,8*t)),i},n.prototype.readIntBE=function(e,t,o){e|=0,t|=0,o||B(e,t,this.length);for(var i=t,r=1,n=this[e+--i];i>0&&(r*=256);)n+=this[e+--i]*r;return r*=128,n>=r&&(n-=Math.pow(2,8*t)),n},n.prototype.readInt8=function(e,t){return t||B(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},n.prototype.readInt16LE=function(e,t){t||B(e,2,this.length);var o=this[e]|this[e+1]<<8;return 32768&o?4294901760|o:o},n.prototype.readInt16BE=function(e,t){t||B(e,2,this.length);var o=this[e+1]|this[e]<<8;return 32768&o?4294901760|o:o},n.prototype.readInt32LE=function(e,t){return t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},n.prototype.readInt32BE=function(e,t){return t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},n.prototype.readFloatLE=function(e,t){return t||B(e,4,this.length),J.read(this,e,!0,23,4)},n.prototype.readFloatBE=function(e,t){return t||B(e,4,this.length),J.read(this,e,!1,23,4)},n.prototype.readDoubleLE=function(e,t){return t||B(e,8,this.length),J.read(this,e,!0,52,8)},n.prototype.readDoubleBE=function(e,t){return t||B(e,8,this.length),J.read(this,e,!1,52,8)},n.prototype.writeUIntLE=function(e,t,o,i){if(e=+e,t|=0,o|=0,!i){S(this,e,t,o,Math.pow(2,8*o)-1,0)}var r=1,n=0;for(this[t]=255&e;++n=0&&(n*=256);)this[t+r]=e/n&255;return t+o},n.prototype.writeUInt8=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,1,255,0),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},n.prototype.writeUInt16LE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):$(this,e,t,!0),t+2},n.prototype.writeUInt16BE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):$(this,e,t,!1),t+2},n.prototype.writeUInt32LE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):D(this,e,t,!0),t+4},n.prototype.writeUInt32BE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},n.prototype.writeIntLE=function(e,t,o,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*o-1);S(this,e,t,o,r-1,-r)}var n=0,l=1,a=0;for(this[t]=255&e;++n>0)-a&255;return t+o},n.prototype.writeIntBE=function(e,t,o,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*o-1);S(this,e,t,o,r-1,-r)}var n=o-1,l=1,a=0;for(this[t+n]=255&e;--n>=0&&(l*=256);)e<0&&0===a&&0!==this[t+n+1]&&(a=1),this[t+n]=(e/l>>0)-a&255;return t+o},n.prototype.writeInt8=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,1,127,-128),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},n.prototype.writeInt16LE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):$(this,e,t,!0),t+2},n.prototype.writeInt16BE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):$(this,e,t,!1),t+2},n.prototype.writeInt32LE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,4,2147483647,-2147483648),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):D(this,e,t,!0),t+4},n.prototype.writeInt32BE=function(e,t,o){return e=+e,t|=0,o||S(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},n.prototype.writeFloatLE=function(e,t,o){return N(this,e,t,!0,o)},n.prototype.writeFloatBE=function(e,t,o){return N(this,e,t,!1,o)},n.prototype.writeDoubleLE=function(e,t,o){return M(this,e,t,!0,o)},n.prototype.writeDoubleBE=function(e,t,o){return M(this,e,t,!1,o)},n.prototype.copy=function(e,t,o,i){if(o||(o=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--r)e[r+t]=this[r+o];else if(l<1e3||!n.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,o=void 0===o?this.length:o>>>0,e||(e=0);var l;if("number"==typeof e)for(l=t;lx;x++)if((g=t?_(l(h=e[x])[0],h[1]):_(e[x]))===c||g===f)return g}else for(b=m.call(e);!(h=b.next()).done;)if((g=r(b,_,h.value,t))===c||g===f)return g};t.BREAK=c,t.RETURN=f},function(e,t){e.exports=function(e,t,o){var i=void 0===o;switch(t.length){case 0:return i?e():e.call(o);case 1:return i?e(t[0]):e.call(o,t[0]);case 2:return i?e(t[0],t[1]):e.call(o,t[0],t[1]);case 3:return i?e(t[0],t[1],t[2]):e.call(o,t[0],t[1],t[2]);case 4:return i?e(t[0],t[1],t[2],t[3]):e.call(o,t[0],t[1],t[2],t[3])}return e.apply(o,t)}},,,,,function(e,t,o){var i=o(4),r=o(84).set,n=i.MutationObserver||i.WebKitMutationObserver,l=i.process,a=i.Promise,s="process"==o(19)(l);e.exports=function(){var e,t,o,c=function(){var i,r;for(s&&(i=l.domain)&&i.exit();e;){r=e.fn,e=e.next;try{r()}catch(i){throw e?o():t=void 0,i}}t=void 0,i&&i.enter()};if(s)o=function(){l.nextTick(c)};else if(!n||i.navigator&&i.navigator.standalone)if(a&&a.resolve){var f=a.resolve(void 0);o=function(){f.then(c)}}else o=function(){r.call(i,c)};else{var p=!0,d=document.createTextNode("");new n(c).observe(d,{characterData:!0}),o=function(){d.data=p=!p}}return function(i){var r={fn:i,next:void 0};t&&(t.next=r),e||(e=r,o()),t=r}}},,,,,,function(e,t,o){var i=o(10),r=o(3),n=o(16);e.exports=function(e,t){var o=(r.Object||{})[e]||Object[e],l={};l[e]=t(o),i(i.S+i.F*n(function(){o(1)}),"Object",l)}},function(e,t,o){var i=o(13);e.exports=function(e,t,o){for(var r in t)o&&e[r]?e[r]=t[r]:i(e,r,t[r]);return e}},function(e,t,o){"use strict";var i=o(4),r=o(3),n=o(11),l=o(9),a=o(5)("species");e.exports=function(e){var t="function"==typeof r[e]?r[e]:i[e];l&&t&&!t[a]&&n.f(t,a,{configurable:!0,get:function(){return this}})}},,,function(e,t,o){var i=o(4),r=i.navigator;e.exports=r&&r.userAgent||""},function(e,t,o){var i=o(7),r=o(51);e.exports=o(3).getIterator=function(e){var t=r(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return i(t.call(e))}},function(e,t,o){"use strict";var i=o(20),r=o(10),n=o(25),l=o(74),a=o(73),s=o(47),c=o(151),f=o(51);r(r.S+r.F*!o(76)(function(e){Array.from(e)}),"Array",{from:function(e){var t,o,r,p,d=n(e),u="function"==typeof this?this:Array,h=arguments.length,b=h>1?arguments[1]:void 0,g=void 0!==b,m=0,_=f(d);if(g&&(b=i(b,h>2?arguments[2]:void 0,2)),void 0==_||u==Array&&a(_))for(t=s(d.length),o=new u(t);t>m;m++)c(o,m,g?b(d[m],m):d[m]);else for(p=_.call(d),o=new u;!(r=p.next()).done;m++)c(o,m,g?l(p,b,[r.value,m],!0):r.value);return o.length=m,o}})},,,function(e,t,o){var i=o(25),r=o(23);o(165)("keys",function(){return function(e){return r(i(e))}})},function(e,t,o){"use strict";var i,r,n,l,a=o(22),s=o(4),c=o(20),f=o(69),p=o(10),d=o(14),u=o(27),h=o(149),b=o(153),g=o(83),m=o(84).set,_=o(159)(),x=o(42),v=o(80),w=o(170),y=o(81),k=s.TypeError,E=s.process,z=E&&E.versions,A=z&&z.v8||"",T=s.Promise,I="process"==f(E),L=function(){},C=r=x.f,R=!!function(){try{var e=T.resolve(1),t=(e.constructor={})[o(5)("species")]=function(e){e(L,L)};return(I||"function"==typeof PromiseRejectionEvent)&&e.then(L)instanceof t&&0!==A.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(e){}}(),U=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},F=function(e,t){if(!e._n){e._n=!0;var o=e._c;_(function(){for(var i=e._v,r=1==e._s,n=0;o.length>n;)!function(t){var o,n,l,a=r?t.ok:t.fail,s=t.resolve,c=t.reject,f=t.domain;try{a?(r||(2==e._h&&$(e),e._h=1),!0===a?o=i:(f&&f.enter(),o=a(i),f&&(f.exit(),l=!0)),o===t.promise?c(k("Promise-chain cycle")):(n=U(o))?n.call(o,s,c):s(o)):c(i)}catch(e){f&&!l&&f.exit(),c(e)}}(o[n++]);e._c=[],e._n=!1,t&&!e._h&&B(e)})}},B=function(e){m.call(s,function(){var t,o,i,r=e._v,n=S(e);if(n&&(t=v(function(){I?E.emit("unhandledRejection",r,e):(o=s.onunhandledrejection)?o({promise:e,reason:r}):(i=s.console)&&i.error&&i.error("Unhandled promise rejection",r)}),e._h=I||S(e)?2:1),e._a=void 0,n&&t.e)throw t.v})},S=function(e){return 1!==e._h&&0===(e._a||e._c).length},$=function(e){m.call(s,function(){var t;I?E.emit("rejectionHandled",e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},D=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),F(t,!0))},O=function(e){var t,o=this;if(!o._d){o._d=!0,o=o._w||o;try{if(o===e)throw k("Promise can't be resolved itself");(t=U(e))?_(function(){var i={_w:o,_d:!1};try{t.call(e,c(O,i,1),c(D,i,1))}catch(e){D.call(i,e)}}):(o._v=e,o._s=1,F(o,!1))}catch(e){D.call({_w:o,_d:!1},e)}}};R||(T=function(e){h(this,T,"Promise","_h"),u(e),i.call(this);try{e(c(O,this,1),c(D,this,1))}catch(e){D.call(this,e)}},i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=o(166)(T.prototype,{then:function(e,t){var o=C(g(this,T));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=I?E.domain:void 0,this._c.push(o),this._a&&this._a.push(o),this._s&&F(this,!1),o.promise},catch:function(e){return this.then(void 0,e)}}),n=function(){var e=new i;this.promise=e,this.resolve=c(O,e,1),this.reject=c(D,e,1)},x.f=C=function(e){return e===T||e===l?new n(e):r(e)}),p(p.G+p.W+p.F*!R,{Promise:T}),o(29)(T,"Promise"),o(167)("Promise"),l=o(3).Promise,p(p.S+p.F*!R,"Promise",{reject:function(e){var t=C(this);return(0,t.reject)(e),t.promise}}),p(p.S+p.F*(a||!R),"Promise",{resolve:function(e){return y(a&&this===l?T:this,e)}}),p(p.S+p.F*!(R&&o(76)(function(e){T.all(e).catch(L)})),"Promise",{all:function(e){var t=this,o=C(t),i=o.resolve,r=o.reject,n=v(function(){var o=[],n=0,l=1;b(e,!1,function(e){var a=n++,s=!1;o.push(void 0),l++,t.resolve(e).then(function(e){s||(s=!0,o[a]=e,--l||i(o))},r)}),--l||i(o)});return n.e&&r(n.v),o.promise},race:function(e){var t=this,o=C(t),i=o.reject,r=v(function(){b(e,!1,function(e){t.resolve(e).then(o.resolve,i)})});return r.e&&i(r.v),o.promise}})},,function(e,t,o){"use strict";var i=o(10),r=o(3),n=o(4),l=o(83),a=o(81);i(i.P+i.R,"Promise",{finally:function(e){var t=l(this,r.Promise||n.Promise),o="function"==typeof e;return this.then(o?function(o){return a(t,e()).then(function(){return o})}:e,o?function(o){return a(t,e()).then(function(){throw o})}:e)}})},function(e,t,o){"use strict";var i=o(10),r=o(42),n=o(80);i(i.S,"Promise",{try:function(e){var t=r.f(this),o=n(e);return(o.e?t.reject:t.resolve)(o.v),t.promise}})},,,function(e,t,o){t=e.exports=o(86)(void 0),t.push([e.i,"@font-face{font-family:element-icons;src:url("+o(223)+') format("woff"),url('+o(222)+') format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\\E6A0"}.el-icon-ice-cream-square:before{content:"\\E6A3"}.el-icon-lollipop:before{content:"\\E6A4"}.el-icon-potato-strips:before{content:"\\E6A5"}.el-icon-milk-tea:before{content:"\\E6A6"}.el-icon-ice-drink:before{content:"\\E6A7"}.el-icon-ice-tea:before{content:"\\E6A9"}.el-icon-coffee:before{content:"\\E6AA"}.el-icon-orange:before{content:"\\E6AB"}.el-icon-pear:before{content:"\\E6AC"}.el-icon-apple:before{content:"\\E6AD"}.el-icon-cherry:before{content:"\\E6AE"}.el-icon-watermelon:before{content:"\\E6AF"}.el-icon-grape:before{content:"\\E6B0"}.el-icon-refrigerator:before{content:"\\E6B1"}.el-icon-goblet-square-full:before{content:"\\E6B2"}.el-icon-goblet-square:before{content:"\\E6B3"}.el-icon-goblet-full:before{content:"\\E6B4"}.el-icon-goblet:before{content:"\\E6B5"}.el-icon-cold-drink:before{content:"\\E6B6"}.el-icon-coffee-cup:before{content:"\\E6B8"}.el-icon-water-cup:before{content:"\\E6B9"}.el-icon-hot-water:before{content:"\\E6BA"}.el-icon-ice-cream:before{content:"\\E6BB"}.el-icon-dessert:before{content:"\\E6BC"}.el-icon-sugar:before{content:"\\E6BD"}.el-icon-tableware:before{content:"\\E6BE"}.el-icon-burger:before{content:"\\E6BF"}.el-icon-knife-fork:before{content:"\\E6C1"}.el-icon-fork-spoon:before{content:"\\E6C2"}.el-icon-chicken:before{content:"\\E6C3"}.el-icon-food:before{content:"\\E6C4"}.el-icon-dish-1:before{content:"\\E6C5"}.el-icon-dish:before{content:"\\E6C6"}.el-icon-moon-night:before{content:"\\E6EE"}.el-icon-moon:before{content:"\\E6F0"}.el-icon-cloudy-and-sunny:before{content:"\\E6F1"}.el-icon-partly-cloudy:before{content:"\\E6F2"}.el-icon-cloudy:before{content:"\\E6F3"}.el-icon-sunny:before{content:"\\E6F6"}.el-icon-sunset:before{content:"\\E6F7"}.el-icon-sunrise-1:before{content:"\\E6F8"}.el-icon-sunrise:before{content:"\\E6F9"}.el-icon-heavy-rain:before{content:"\\E6FA"}.el-icon-lightning:before{content:"\\E6FB"}.el-icon-light-rain:before{content:"\\E6FC"}.el-icon-wind-power:before{content:"\\E6FD"}.el-icon-baseball:before{content:"\\E712"}.el-icon-soccer:before{content:"\\E713"}.el-icon-football:before{content:"\\E715"}.el-icon-basketball:before{content:"\\E716"}.el-icon-ship:before{content:"\\E73F"}.el-icon-truck:before{content:"\\E740"}.el-icon-bicycle:before{content:"\\E741"}.el-icon-mobile-phone:before{content:"\\E6D3"}.el-icon-service:before{content:"\\E6D4"}.el-icon-key:before{content:"\\E6E2"}.el-icon-unlock:before{content:"\\E6E4"}.el-icon-lock:before{content:"\\E6E5"}.el-icon-watch:before{content:"\\E6FE"}.el-icon-watch-1:before{content:"\\E6FF"}.el-icon-timer:before{content:"\\E702"}.el-icon-alarm-clock:before{content:"\\E703"}.el-icon-map-location:before{content:"\\E704"}.el-icon-delete-location:before{content:"\\E705"}.el-icon-add-location:before{content:"\\E706"}.el-icon-location-information:before{content:"\\E707"}.el-icon-location-outline:before{content:"\\E708"}.el-icon-location:before{content:"\\E79E"}.el-icon-place:before{content:"\\E709"}.el-icon-discover:before{content:"\\E70A"}.el-icon-first-aid-kit:before{content:"\\E70B"}.el-icon-trophy-1:before{content:"\\E70C"}.el-icon-trophy:before{content:"\\E70D"}.el-icon-medal:before{content:"\\E70E"}.el-icon-medal-1:before{content:"\\E70F"}.el-icon-stopwatch:before{content:"\\E710"}.el-icon-mic:before{content:"\\E711"}.el-icon-copy-document:before{content:"\\E718"}.el-icon-full-screen:before{content:"\\E719"}.el-icon-switch-button:before{content:"\\E71B"}.el-icon-aim:before{content:"\\E71C"}.el-icon-crop:before{content:"\\E71D"}.el-icon-odometer:before{content:"\\E71E"}.el-icon-time:before{content:"\\E71F"}.el-icon-bangzhu:before{content:"\\E724"}.el-icon-close-notification:before{content:"\\E726"}.el-icon-microphone:before{content:"\\E727"}.el-icon-turn-off-microphone:before{content:"\\E728"}.el-icon-position:before{content:"\\E729"}.el-icon-postcard:before{content:"\\E72A"}.el-icon-message:before{content:"\\E72B"}.el-icon-chat-line-square:before{content:"\\E72D"}.el-icon-chat-dot-square:before{content:"\\E72E"}.el-icon-chat-dot-round:before{content:"\\E72F"}.el-icon-chat-square:before{content:"\\E730"}.el-icon-chat-line-round:before{content:"\\E731"}.el-icon-chat-round:before{content:"\\E732"}.el-icon-set-up:before{content:"\\E733"}.el-icon-turn-off:before{content:"\\E734"}.el-icon-open:before{content:"\\E735"}.el-icon-connection:before{content:"\\E736"}.el-icon-link:before{content:"\\E737"}.el-icon-cpu:before{content:"\\E738"}.el-icon-thumb:before{content:"\\E739"}.el-icon-female:before{content:"\\E73A"}.el-icon-male:before{content:"\\E73B"}.el-icon-guide:before{content:"\\E73C"}.el-icon-news:before{content:"\\E73E"}.el-icon-price-tag:before{content:"\\E744"}.el-icon-discount:before{content:"\\E745"}.el-icon-wallet:before{content:"\\E747"}.el-icon-coin:before{content:"\\E748"}.el-icon-money:before{content:"\\E749"}.el-icon-bank-card:before{content:"\\E74A"}.el-icon-box:before{content:"\\E74B"}.el-icon-present:before{content:"\\E74C"}.el-icon-sell:before{content:"\\E6D5"}.el-icon-sold-out:before{content:"\\E6D6"}.el-icon-shopping-bag-2:before{content:"\\E74D"}.el-icon-shopping-bag-1:before{content:"\\E74E"}.el-icon-shopping-cart-2:before{content:"\\E74F"}.el-icon-shopping-cart-1:before{content:"\\E750"}.el-icon-shopping-cart-full:before{content:"\\E751"}.el-icon-smoking:before{content:"\\E752"}.el-icon-no-smoking:before{content:"\\E753"}.el-icon-house:before{content:"\\E754"}.el-icon-table-lamp:before{content:"\\E755"}.el-icon-school:before{content:"\\E756"}.el-icon-office-building:before{content:"\\E757"}.el-icon-toilet-paper:before{content:"\\E758"}.el-icon-notebook-2:before{content:"\\E759"}.el-icon-notebook-1:before{content:"\\E75A"}.el-icon-files:before{content:"\\E75B"}.el-icon-collection:before{content:"\\E75C"}.el-icon-receiving:before{content:"\\E75D"}.el-icon-suitcase-1:before{content:"\\E760"}.el-icon-suitcase:before{content:"\\E761"}.el-icon-film:before{content:"\\E763"}.el-icon-collection-tag:before{content:"\\E765"}.el-icon-data-analysis:before{content:"\\E766"}.el-icon-pie-chart:before{content:"\\E767"}.el-icon-data-board:before{content:"\\E768"}.el-icon-data-line:before{content:"\\E76D"}.el-icon-reading:before{content:"\\E769"}.el-icon-magic-stick:before{content:"\\E76A"}.el-icon-coordinate:before{content:"\\E76B"}.el-icon-mouse:before{content:"\\E76C"}.el-icon-brush:before{content:"\\E76E"}.el-icon-headset:before{content:"\\E76F"}.el-icon-umbrella:before{content:"\\E770"}.el-icon-scissors:before{content:"\\E771"}.el-icon-mobile:before{content:"\\E773"}.el-icon-attract:before{content:"\\E774"}.el-icon-monitor:before{content:"\\E775"}.el-icon-search:before{content:"\\E778"}.el-icon-takeaway-box:before{content:"\\E77A"}.el-icon-paperclip:before{content:"\\E77D"}.el-icon-printer:before{content:"\\E77E"}.el-icon-document-add:before{content:"\\E782"}.el-icon-document:before{content:"\\E785"}.el-icon-document-checked:before{content:"\\E786"}.el-icon-document-copy:before{content:"\\E787"}.el-icon-document-delete:before{content:"\\E788"}.el-icon-document-remove:before{content:"\\E789"}.el-icon-tickets:before{content:"\\E78B"}.el-icon-folder-checked:before{content:"\\E77F"}.el-icon-folder-delete:before{content:"\\E780"}.el-icon-folder-remove:before{content:"\\E781"}.el-icon-folder-add:before{content:"\\E783"}.el-icon-folder-opened:before{content:"\\E784"}.el-icon-folder:before{content:"\\E78A"}.el-icon-edit-outline:before{content:"\\E764"}.el-icon-edit:before{content:"\\E78C"}.el-icon-date:before{content:"\\E78E"}.el-icon-c-scale-to-original:before{content:"\\E7C6"}.el-icon-view:before{content:"\\E6CE"}.el-icon-loading:before{content:"\\E6CF"}.el-icon-rank:before{content:"\\E6D1"}.el-icon-sort-down:before{content:"\\E7C4"}.el-icon-sort-up:before{content:"\\E7C5"}.el-icon-sort:before{content:"\\E6D2"}.el-icon-finished:before{content:"\\E6CD"}.el-icon-refresh-left:before{content:"\\E6C7"}.el-icon-refresh-right:before{content:"\\E6C8"}.el-icon-refresh:before{content:"\\E6D0"}.el-icon-video-play:before{content:"\\E7C0"}.el-icon-video-pause:before{content:"\\E7C1"}.el-icon-d-arrow-right:before{content:"\\E6DC"}.el-icon-d-arrow-left:before{content:"\\E6DD"}.el-icon-arrow-up:before{content:"\\E6E1"}.el-icon-arrow-down:before{content:"\\E6DF"}.el-icon-arrow-right:before{content:"\\E6E0"}.el-icon-arrow-left:before{content:"\\E6DE"}.el-icon-top-right:before{content:"\\E6E7"}.el-icon-top-left:before{content:"\\E6E8"}.el-icon-top:before{content:"\\E6E6"}.el-icon-bottom:before{content:"\\E6EB"}.el-icon-right:before{content:"\\E6E9"}.el-icon-back:before{content:"\\E6EA"}.el-icon-bottom-right:before{content:"\\E6EC"}.el-icon-bottom-left:before{content:"\\E6ED"}.el-icon-caret-top:before{content:"\\E78F"}.el-icon-caret-bottom:before{content:"\\E790"}.el-icon-caret-right:before{content:"\\E791"}.el-icon-caret-left:before{content:"\\E792"}.el-icon-d-caret:before{content:"\\E79A"}.el-icon-share:before{content:"\\E793"}.el-icon-menu:before{content:"\\E798"}.el-icon-s-grid:before{content:"\\E7A6"}.el-icon-s-check:before{content:"\\E7A7"}.el-icon-s-data:before{content:"\\E7A8"}.el-icon-s-opportunity:before{content:"\\E7AA"}.el-icon-s-custom:before{content:"\\E7AB"}.el-icon-s-claim:before{content:"\\E7AD"}.el-icon-s-finance:before{content:"\\E7AE"}.el-icon-s-comment:before{content:"\\E7AF"}.el-icon-s-flag:before{content:"\\E7B0"}.el-icon-s-marketing:before{content:"\\E7B1"}.el-icon-s-shop:before{content:"\\E7B4"}.el-icon-s-open:before{content:"\\E7B5"}.el-icon-s-management:before{content:"\\E7B6"}.el-icon-s-ticket:before{content:"\\E7B7"}.el-icon-s-release:before{content:"\\E7B8"}.el-icon-s-home:before{content:"\\E7B9"}.el-icon-s-promotion:before{content:"\\E7BA"}.el-icon-s-operation:before{content:"\\E7BB"}.el-icon-s-unfold:before{content:"\\E7BC"}.el-icon-s-fold:before{content:"\\E7A9"}.el-icon-s-platform:before{content:"\\E7BD"}.el-icon-s-order:before{content:"\\E7BE"}.el-icon-s-cooperation:before{content:"\\E7BF"}.el-icon-bell:before{content:"\\E725"}.el-icon-message-solid:before{content:"\\E799"}.el-icon-video-camera:before{content:"\\E772"}.el-icon-video-camera-solid:before{content:"\\E796"}.el-icon-camera:before{content:"\\E779"}.el-icon-camera-solid:before{content:"\\E79B"}.el-icon-download:before{content:"\\E77C"}.el-icon-upload2:before{content:"\\E77B"}.el-icon-upload:before{content:"\\E7C3"}.el-icon-picture-outline-round:before{content:"\\E75F"}.el-icon-picture-outline:before{content:"\\E75E"}.el-icon-picture:before{content:"\\E79F"}.el-icon-close:before{content:"\\E6DB"}.el-icon-check:before{content:"\\E6DA"}.el-icon-plus:before{content:"\\E6D9"}.el-icon-minus:before{content:"\\E6D8"}.el-icon-help:before{content:"\\E73D"}.el-icon-s-help:before{content:"\\E7B3"}.el-icon-circle-close:before{content:"\\E78D"}.el-icon-circle-check:before{content:"\\E720"}.el-icon-circle-plus-outline:before{content:"\\E723"}.el-icon-remove-outline:before{content:"\\E722"}.el-icon-zoom-out:before{content:"\\E776"}.el-icon-zoom-in:before{content:"\\E777"}.el-icon-error:before{content:"\\E79D"}.el-icon-success:before{content:"\\E79C"}.el-icon-circle-plus:before{content:"\\E7A0"}.el-icon-remove:before{content:"\\E7A2"}.el-icon-info:before{content:"\\E7A1"}.el-icon-question:before{content:"\\E7A4"}.el-icon-warning-outline:before{content:"\\E6C9"}.el-icon-warning:before{content:"\\E7A3"}.el-icon-goods:before{content:"\\E7C2"}.el-icon-s-goods:before{content:"\\E7B2"}.el-icon-star-off:before{content:"\\E717"}.el-icon-star-on:before{content:"\\E797"}.el-icon-more-outline:before{content:"\\E6CC"}.el-icon-more:before{content:"\\E794"}.el-icon-phone-outline:before{content:"\\E6CB"}.el-icon-phone:before{content:"\\E795"}.el-icon-user:before{content:"\\E6E3"}.el-icon-user-solid:before{content:"\\E7A5"}.el-icon-setting:before{content:"\\E6CA"}.el-icon-s-tools:before{content:"\\E7AC"}.el-icon-delete:before{content:"\\E6D7"}.el-icon-delete-solid:before{content:"\\E7C9"}.el-icon-eleme:before{content:"\\E7C7"}.el-icon-platform-eleme:before{content:"\\E7CA"}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-dialog,.el-pager li{-webkit-box-sizing:border-box}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled):before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item,.el-menu-item{font-size:14px;padding:0 20px;cursor:pointer}.el-dropdown-menu__item{list-style:none;line-height:36px;margin:0;color:#606266;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-breadcrumb__item:last-child .el-breadcrumb__separator,.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--collapse .el-submenu,.el-menu-item{position:relative}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;list-style:none}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{color:#303133;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-radio-button__inner,.el-submenu__title{-webkit-box-sizing:border-box;position:relative;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px #409eff}.el-picker-panel,.el-popover,.el-select-dropdown,.el-table-filter,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-switch{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-input__prefix,.el-input__suffix{-webkit-transition:all .3s;color:#c0c4cc}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\\E6DA";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;transition:transform .3s;transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;transform:rotate(180deg);border-radius:100%;color:#c0c4cc;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-range-editor.is-active,.el-range-editor.is-active:hover,.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;transform:translateY(-50%);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-ms-flexbox;display:flex;max-width:100%;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#f5f7fa}.el-table .el-table__cell{padding:12px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#409eff}.el-table th.el-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-date-table td,.el-table-filter,.el-table .cell{-webkit-box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th.el-table__cell,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#f5f7fa}.el-table__body tr.current-row>td.el-table__cell{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:#409eff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409eff}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#409eff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409eff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder,.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder,.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover,.el-cascader__dropdown,.el-color-picker__panel,.el-message-box,.el-notification{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__active-bar,.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-col-offset-0,.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-cascader-menu:last-child .el-cascader-node,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-button-group>.el-button:not(:last-child),.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content:hover,.el-upload-list__item:hover{background-color:#f5f7fa}.el-tree-node__content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active,.el-upload iframe{opacity:0}.el-carousel__arrow--right,.el-notification.right{right:16px}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;overflow:hidden}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;transform:translateX(100%)}.el-notification-fade-enter.left{left:0;transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-button-group:after,.el-button-group:before,.el-color-dropdown__main-wrapper:after,.el-link.is-underline:hover:after,.el-page-header__left:after,.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-transfer-panel .el-transfer-panel__footer:after,.el-upload-cover:after,.el-upload-list--picture-card .el-upload-list__item-actions:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal}.el-image-viewer__btn,.el-slider__button,.el-slider__button-wrapper,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-12,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row,.el-upload-dragger,.el-upload-list__item{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-top{-ms-flex-align:start;align-items:flex-start}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;box-sizing:border-box}.el-col-0{width:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-badge__content,.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-card__header,.el-message,.el-step__icon{-webkit-box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border-radius:4px;border:1px solid #ebeef5;position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:#edf2fc;transition:opacity .3s,transform .4s,top .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-message.is-center{-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;box-sizing:border-box}.el-card__body,.el-main{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#fff;transition:.15s ease-out}.el-step.is-horizontal,.el-step__icon-inner{display:inline-block}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;position:absolute;top:0;left:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__search-input,.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-cascader,.el-tag{display:inline-block}.el-popper .popper__arrow{border-width:6px;filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf5ff;border:1px solid #d9ecff;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409eff;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409eff}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#409eff;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#409eff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409eff}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;transform:scale(.7)}.el-cascader{position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{transition:transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#409eff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input:-ms-input-placeholder,.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__icon,.el-input,.el-textarea{display:inline-block;width:100%}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{font-size:12px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{color:#fff;text-align:center}.el-input__prefix,.el-input__suffix{position:absolute;top:0;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-input__inner,.el-textarea__inner,.el-transfer-panel{-webkit-box-sizing:border-box}.el-textarea{position:relative;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder,.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder,.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input,.el-input__inner{font-size:inherit}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;color:#606266;display:inline-block;height:40px;line-height:40px;outline:0;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder,.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{height:100%;right:5px;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{height:100%;left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder,.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-image-viewer__btn,.el-image__preview,.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-button-group>.el-button+.el-button,.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-divider__text,.el-image__error,.el-link,.el-timeline,.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{overflow:auto}.el-main{display:block;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto}.el-footer,.el-main{box-sizing:border-box}.el-footer{padding:0 20px;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409eff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0;font-weight:500}.el-link.is-underline:hover:after{position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409eff}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409eff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409eff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#409eff}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;transform:translate(-50%,-50%);display:block}.el-image__error{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;color:#c0c4cc;vertical-align:middle}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;box-sizing:border-box;user-select:none}.el-button,.el-checkbox,.el-checkbox-button__inner,.el-empty__image img,.el-image-viewer__btn,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;top:50%}.el-image-viewer__prev{transform:translateY(-50%);left:40px}.el-image-viewer__next{transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in .3s}.viewer-fade-leave-active{animation:viewer-fade-out .3s}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button,.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini{font-size:12px;border-radius:3px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button-group .el-button--danger:last-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:last-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:last-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:last-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:last-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child),.el-button-group>.el-dropdown>.el-button{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:first-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:first-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:first-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:first-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-right-color:hsla(0,0%,100%,.5)}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0}.el-calendar{background-color:#fff}.el-calendar__header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#409eff}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:20px;box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{display:-ms-flexbox;display:flex;line-height:24px}.el-page-header__left{display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-avatar,.el-cascader-panel,.el-radio,.el-radio--medium.is-bordered .el-radio__label,.el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;height:40px}.el-cascader-menu,.el-cascader-menu__list,.el-radio__inner{-webkit-box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px #409eff}.el-radio__label{padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:hsla(220,4%,58%,.3);transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:hsla(220,4%,58%,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-ms-flexbox;display:flex;border-radius:4px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409eff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-empty__image img,.el-empty__image svg{vertical-align:top;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rtl-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rtl-drawer-out{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes ltr-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ltr-drawer-out{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes ttb-drawer-in{0%{transform:translateY(-100%)}to{transform:translate(0)}}@keyframes ttb-drawer-out{0%{transform:translate(0)}to{transform:translateY(-100%)}}@keyframes btt-drawer-in{0%{transform:translateY(100%)}to{transform:translate(0)}}@keyframes btt-drawer-out{0%{transform:translate(0)}to{transform:translateY(100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#fff;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-ms-flex-align:center;align-items:center;color:#72767b;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-ms-flex:1;flex:1}.el-drawer__title{margin:0;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-ms-flex:1;flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{width:100%;left:0;right:0}.el-drawer__container{position:relative;top:0;bottom:0;height:100%}.el-drawer-fade-enter-active{animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-statistic{width:100%;box-sizing:border-box;margin:0;padding:0;color:#000;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";text-align:center}.el-statistic .head{margin-bottom:4px;color:#00073;font-size:14px}.el-statistic .con{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-statistic .con .number{font-size:20px;padding:0 4px}.el-statistic .con span{display:inline-block;margin:0;line-height:100%}.el-popconfirm__main,.el-skeleton__image{display:-ms-flexbox;-webkit-box-align:center;display:-webkit-box}.el-popconfirm__main{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#dcdde0;width:22%;height:22%}.el-empty{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;object-fit:contain}.el-empty__image svg{fill:#dcdde0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom,.el-result__title{margin-top:20px}.el-descriptions{box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#fff}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #ebeef5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon:after{content:":";position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67c23a}.el-result .icon-error{fill:#f56c6c}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#e6a23c}',""])},function(e,t,o){t=e.exports=o(86)(void 0),t.push([e.i,"#app{font-family:Helvetica,sans-serif;width:960px;margin:0 auto}.action-left{float:left}.action-right{float:right}.folder-path{margin:20px auto}.folder-action{float:right}.file-cell{padding:4px 0!important}.header{text-align:center;margin:100px auto}",""])},,,,,,,,function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"OK",clear:"Clear"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:""},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},empty:{description:"No Data"}}}},function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"Confirmar",clear:"Despejar"},datepicker:{now:"Ahora",today:"Hoy",cancel:"Cancelar",clear:"Limpiar",confirm:"Confirmar",selectDate:"Seleccionar fecha",selectTime:"Seleccionar hora",startDate:"Fecha Incial",startTime:"Hora Inicial",endDate:"Fecha Final",endTime:"Hora Final",prevYear:"Año Anterior",nextYear:"Próximo Año",prevMonth:"Mes Anterior",nextMonth:"Próximo Mes",year:"",month1:"enero",month2:"febrero",month3:"marzo",month4:"abril",month5:"mayo",month6:"junio",month7:"julio",month8:"agosto",month9:"septiembre",month10:"octubre",month11:"noviembre",month12:"diciembre",weeks:{sun:"dom",mon:"lun",tue:"mar",wed:"mié",thu:"jue",fri:"vie",sat:"sáb"},months:{jan:"ene",feb:"feb",mar:"mar",apr:"abr",may:"may",jun:"jun",jul:"jul",aug:"ago",sep:"sep",oct:"oct",nov:"nov",dec:"dic"}},select:{loading:"Cargando",noMatch:"No hay datos que coincidan",noData:"Sin datos",placeholder:"Seleccionar"},cascader:{noMatch:"No hay datos que coincidan",loading:"Cargando",placeholder:"Seleccionar",noData:"Sin datos"},pagination:{goto:"Ir a",pagesize:"/página",total:"Total {total}",pageClassifier:""},messagebox:{confirm:"Aceptar",cancel:"Cancelar",error:"Entrada inválida"},upload:{deleteTip:"Pulse Eliminar para retirar",delete:"Eliminar",preview:"Vista Previa",continue:"Continuar"},table:{emptyText:"Sin Datos",confirmFilter:"Confirmar",resetFilter:"Reiniciar",clearFilter:"Limpiar",sumText:"Suma"},tree:{emptyText:"Sin Datos"},transfer:{noMatch:"No hay datos que coincidan",noData:"Sin datos",titles:["Lista 1","Lista 2"],filterPlaceholder:"Ingresar palabra clave",noCheckedFormat:"{total} artículos",hasCheckedFormat:"{checked}/{total} revisados"},image:{error:"HA FALLADO"},pageHeader:{title:"Volver"},popconfirm:{confirmButtonText:"Si",cancelButtonText:"No"},empty:{description:"Sin Datos"}}}},function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"確認",clear:"清空"},datepicker:{now:"現在",today:"今天",cancel:"取消",clear:"清空",confirm:"確認",selectDate:"選擇日期",selectTime:"選擇時間",startDate:"開始日期",startTime:"開始時間",endDate:"結束日期",endTime:"結束時間",prevYear:"前一年",nextYear:"後一年",prevMonth:"上個月",nextMonth:"下個月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加載中",noMatch:"無匹配資料",noData:"無資料",placeholder:"請選擇"},cascader:{noMatch:"無匹配資料",loading:"加載中",placeholder:"請選擇",noData:"無資料"},pagination:{goto:"前往",pagesize:"項/頁",total:"共 {total} 項",pageClassifier:"頁"},messagebox:{title:"提示",confirm:"確定",cancel:"取消",error:"輸入的資料不符規定!"},upload:{deleteTip:"按 delete 鍵可刪除",delete:"刪除",preview:"查看圖片",continue:"繼續上傳"},table:{emptyText:"暫無資料",confirmFilter:"篩選",resetFilter:"重置",clearFilter:"全部",sumText:"Sum"},tree:{emptyText:"暫無資料"},transfer:{noMatch:"無匹配資料",noData:"無資料",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"加載失敗"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},empty:{description:"暫無資料"}}}},,,,,,,,,,,,,function(e,t,o){"use strict";function i(e){console&&console.warn&&console.warn(e)}function r(){r.init.call(this)}function n(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function a(e,t,o,r){var a,s,c;if(n(o),s=e._events,void 0===s?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,o.listener?o.listener:o),s=e._events),c=s[t]),void 0===c)c=s[t]=o,++e._eventsCount;else if("function"==typeof c?c=s[t]=r?[o,c]:[c,o]:r?c.unshift(o):c.push(o),(a=l(e))>0&&c.length>a&&!c.warned){c.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+c.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=e,f.type=t,f.count=c.length,i(f)}return e}function s(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(e,t,o){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:o},r=s.bind(i);return r.listener=o,i.wrapFn=r,r}function f(e,t,o){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?o?[r.listener||r]:[r]:o?h(r):d(r,r.length)}function p(e){var t=this._events;if(void 0!==t){var o=t[e];if("function"==typeof o)return 1;if(void 0!==o)return o.length}return 0}function d(e,t){for(var o=new Array(t),i=0;i0&&(n=t[0]),n instanceof Error)throw n;var l=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw l.context=n,l}var a=r[e];if(void 0===a)return!1;if("function"==typeof a)v(a,this,t);else for(var s=a.length,c=d(a,s),o=0;o=0;l--)if(o[l]===t||o[l].listener===t){a=o[l].listener,r=l;break}if(r<0)return this;0===r?o.shift():u(o,r),1===o.length&&(i[e]=o[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(e){var t,o,i;if(void 0===(o=this._events))return this;if(void 0===o.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==o[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete o[e]),this;if(0===arguments.length){var r,n=Object.keys(o);for(i=0;i=0;i--)this.removeListener(e,t[i]);return this},r.prototype.listeners=function(e){return f(this,e,!0)},r.prototype.rawListeners=function(e){return f(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},r.prototype.listenerCount=p,r.prototype.eventNames=function(){return this._eventsCount>0?_(this._events):[]}},function(e,t){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -t.read=function(e,t,o,i,r){var n,l,a=8*r-i-1,s=(1<>1,f=-7,p=o?r-1:0,d=o?-1:1,u=e[t+p];for(p+=d,n=u&(1<<-f)-1,u>>=-f,f+=a;f>0;n=256*n+e[t+p],p+=d,f-=8);for(l=n&(1<<-f)-1,n>>=-f,f+=i;f>0;l=256*l+e[t+p],p+=d,f-=8);if(0===n)n=1-c;else{if(n===s)return l?NaN:1/0*(u?-1:1);l+=Math.pow(2,i),n-=c}return(u?-1:1)*l*Math.pow(2,n-i)},t.write=function(e,t,o,i,r,n){var l,a,s,c=8*n-r-1,f=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,u=i?0:n-1,h=i?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,l=f):(l=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-l))<1&&(l--,s*=2),t+=l+p>=1?d/s:d*Math.pow(2,1-p),t*s>=2&&(l++,s/=2),l+p>=f?(a=0,l=f):l+p>=1?(a=(t*s-1)*Math.pow(2,r),l+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,r),l=0));r>=8;e[o+u]=255&a,u+=h,a/=256,r-=8);for(l=l<0;e[o+u]=255&l,u+=h,l/=256,c-=8);e[o+u-h]|=128*b}},function(e,t){var o={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==o.call(e)}},,function(e,t,o){var i,r,n;/** +var G=o(141),J=o(211),K=o(212);t.Buffer=n,t.SlowBuffer=g,t.INSPECT_MAX_BYTES=50,n.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=i(),n.poolSize=8192,n._augment=function(e){return e.__proto__=n.prototype,e},n.from=function(e,t,o){return l(null,e,t,o)},n.TYPED_ARRAY_SUPPORT&&(n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0})),n.alloc=function(e,t,o){return s(null,e,t,o)},n.allocUnsafe=function(e){return c(null,e)},n.allocUnsafeSlow=function(e){return c(null,e)},n.isBuffer=function(e){return!(null==e||!e._isBuffer)},n.compare=function(e,t){if(!n.isBuffer(e)||!n.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var o=e.length,i=t.length,r=0,l=Math.min(o,i);r0&&(e=this.toString("hex",0,o).match(/.{2}/g).join(" "),this.length>o&&(e+=" ... ")),""},n.prototype.compare=function(e,t,o,i,r){if(!n.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===o&&(o=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||o>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=o)return 0;if(i>=r)return-1;if(t>=o)return 1;if(t>>>=0,o>>>=0,i>>>=0,r>>>=0,this===e)return 0;for(var l=r-i,a=o-t,s=Math.min(l,a),c=this.slice(i,r),f=e.slice(t,o),p=0;pr)&&(o=r),e.length>0&&(o<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var n=!1;;)switch(i){case"hex":return w(this,e,t,o);case"utf8":case"utf-8":return y(this,e,t,o);case"ascii":return k(this,e,t,o);case"latin1":case"binary":return E(this,e,t,o);case"base64":return z(this,e,t,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,o);default:if(n)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),n=!0}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;n.prototype.slice=function(e,t){var o=this.length;e=~~e,t=void 0===t?o:~~t,e<0?(e+=o)<0&&(e=0):e>o&&(e=o),t<0?(t+=o)<0&&(t=0):t>o&&(t=o),t0&&(r*=256);)i+=this[e+--t]*r;return i},n.prototype.readUInt8=function(e,t){return t||B(e,1,this.length),this[e]},n.prototype.readUInt16LE=function(e,t){return t||B(e,2,this.length),this[e]|this[e+1]<<8},n.prototype.readUInt16BE=function(e,t){return t||B(e,2,this.length),this[e]<<8|this[e+1]},n.prototype.readUInt32LE=function(e,t){return t||B(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},n.prototype.readUInt32BE=function(e,t){return t||B(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},n.prototype.readIntLE=function(e,t,o){e|=0,t|=0,o||B(e,t,this.length);for(var i=this[e],r=1,n=0;++n=r&&(i-=Math.pow(2,8*t)),i},n.prototype.readIntBE=function(e,t,o){e|=0,t|=0,o||B(e,t,this.length);for(var i=t,r=1,n=this[e+--i];i>0&&(r*=256);)n+=this[e+--i]*r;return r*=128,n>=r&&(n-=Math.pow(2,8*t)),n},n.prototype.readInt8=function(e,t){return t||B(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},n.prototype.readInt16LE=function(e,t){t||B(e,2,this.length);var o=this[e]|this[e+1]<<8;return 32768&o?4294901760|o:o},n.prototype.readInt16BE=function(e,t){t||B(e,2,this.length);var o=this[e+1]|this[e]<<8;return 32768&o?4294901760|o:o},n.prototype.readInt32LE=function(e,t){return t||B(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},n.prototype.readInt32BE=function(e,t){return t||B(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},n.prototype.readFloatLE=function(e,t){return t||B(e,4,this.length),J.read(this,e,!0,23,4)},n.prototype.readFloatBE=function(e,t){return t||B(e,4,this.length),J.read(this,e,!1,23,4)},n.prototype.readDoubleLE=function(e,t){return t||B(e,8,this.length),J.read(this,e,!0,52,8)},n.prototype.readDoubleBE=function(e,t){return t||B(e,8,this.length),J.read(this,e,!1,52,8)},n.prototype.writeUIntLE=function(e,t,o,i){if(e=+e,t|=0,o|=0,!i){D(this,e,t,o,Math.pow(2,8*o)-1,0)}var r=1,n=0;for(this[t]=255&e;++n=0&&(n*=256);)this[t+r]=e/n&255;return t+o},n.prototype.writeUInt8=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,1,255,0),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},n.prototype.writeUInt16LE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},n.prototype.writeUInt16BE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},n.prototype.writeUInt32LE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):$(this,e,t,!0),t+4},n.prototype.writeUInt32BE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):$(this,e,t,!1),t+4},n.prototype.writeIntLE=function(e,t,o,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*o-1);D(this,e,t,o,r-1,-r)}var n=0,l=1,a=0;for(this[t]=255&e;++n>0)-a&255;return t+o},n.prototype.writeIntBE=function(e,t,o,i){if(e=+e,t|=0,!i){var r=Math.pow(2,8*o-1);D(this,e,t,o,r-1,-r)}var n=o-1,l=1,a=0;for(this[t+n]=255&e;--n>=0&&(l*=256);)e<0&&0===a&&0!==this[t+n+1]&&(a=1),this[t+n]=(e/l>>0)-a&255;return t+o},n.prototype.writeInt8=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,1,127,-128),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},n.prototype.writeInt16LE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):S(this,e,t,!0),t+2},n.prototype.writeInt16BE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):S(this,e,t,!1),t+2},n.prototype.writeInt32LE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,4,2147483647,-2147483648),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):$(this,e,t,!0),t+4},n.prototype.writeInt32BE=function(e,t,o){return e=+e,t|=0,o||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):$(this,e,t,!1),t+4},n.prototype.writeFloatLE=function(e,t,o){return M(this,e,t,!0,o)},n.prototype.writeFloatBE=function(e,t,o){return M(this,e,t,!1,o)},n.prototype.writeDoubleLE=function(e,t,o){return N(this,e,t,!0,o)},n.prototype.writeDoubleBE=function(e,t,o){return N(this,e,t,!1,o)},n.prototype.copy=function(e,t,o,i){if(o||(o=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--r)e[r+t]=this[r+o];else if(l<1e3||!n.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,o=void 0===o?this.length:o>>>0,e||(e=0);var l;if("number"==typeof e)for(l=t;lx;x++)if((b=t?_(l(h=e[x])[0],h[1]):_(e[x]))===c||b===f)return b}else for(g=m.call(e);!(h=g.next()).done;)if((b=r(g,_,h.value,t))===c||b===f)return b};t.BREAK=c,t.RETURN=f},function(e,t){e.exports=function(e,t,o){var i=void 0===o;switch(t.length){case 0:return i?e():e.call(o);case 1:return i?e(t[0]):e.call(o,t[0]);case 2:return i?e(t[0],t[1]):e.call(o,t[0],t[1]);case 3:return i?e(t[0],t[1],t[2]):e.call(o,t[0],t[1],t[2]);case 4:return i?e(t[0],t[1],t[2],t[3]):e.call(o,t[0],t[1],t[2],t[3])}return e.apply(o,t)}},,,,,function(e,t,o){var i=o(4),r=o(84).set,n=i.MutationObserver||i.WebKitMutationObserver,l=i.process,a=i.Promise,s="process"==o(19)(l);e.exports=function(){var e,t,o,c=function(){var i,r;for(s&&(i=l.domain)&&i.exit();e;){r=e.fn,e=e.next;try{r()}catch(i){throw e?o():t=void 0,i}}t=void 0,i&&i.enter()};if(s)o=function(){l.nextTick(c)};else if(!n||i.navigator&&i.navigator.standalone)if(a&&a.resolve){var f=a.resolve(void 0);o=function(){f.then(c)}}else o=function(){r.call(i,c)};else{var p=!0,d=document.createTextNode("");new n(c).observe(d,{characterData:!0}),o=function(){d.data=p=!p}}return function(i){var r={fn:i,next:void 0};t&&(t.next=r),e||(e=r,o()),t=r}}},,,,,,function(e,t,o){var i=o(10),r=o(3),n=o(16);e.exports=function(e,t){var o=(r.Object||{})[e]||Object[e],l={};l[e]=t(o),i(i.S+i.F*n(function(){o(1)}),"Object",l)}},function(e,t,o){var i=o(13);e.exports=function(e,t,o){for(var r in t)o&&e[r]?e[r]=t[r]:i(e,r,t[r]);return e}},function(e,t,o){"use strict";var i=o(4),r=o(3),n=o(11),l=o(9),a=o(5)("species");e.exports=function(e){var t="function"==typeof r[e]?r[e]:i[e];l&&t&&!t[a]&&n.f(t,a,{configurable:!0,get:function(){return this}})}},,,function(e,t,o){var i=o(4),r=i.navigator;e.exports=r&&r.userAgent||""},function(e,t,o){var i=o(7),r=o(51);e.exports=o(3).getIterator=function(e){var t=r(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return i(t.call(e))}},function(e,t,o){"use strict";var i=o(20),r=o(10),n=o(25),l=o(74),a=o(73),s=o(47),c=o(153),f=o(51);r(r.S+r.F*!o(76)(function(e){Array.from(e)}),"Array",{from:function(e){var t,o,r,p,d=n(e),u="function"==typeof this?this:Array,h=arguments.length,g=h>1?arguments[1]:void 0,b=void 0!==g,m=0,_=f(d);if(b&&(g=i(g,h>2?arguments[2]:void 0,2)),void 0==_||u==Array&&a(_))for(t=s(d.length),o=new u(t);t>m;m++)c(o,m,b?g(d[m],m):d[m]);else for(p=_.call(d),o=new u;!(r=p.next()).done;m++)c(o,m,b?l(p,g,[r.value,m],!0):r.value);return o.length=m,o}})},,,function(e,t,o){var i=o(25),r=o(23);o(167)("keys",function(){return function(e){return r(i(e))}})},function(e,t,o){"use strict";var i,r,n,l,a=o(22),s=o(4),c=o(20),f=o(69),p=o(10),d=o(14),u=o(27),h=o(151),g=o(155),b=o(83),m=o(84).set,_=o(161)(),x=o(42),v=o(80),w=o(172),y=o(81),k=s.TypeError,E=s.process,z=E&&E.versions,A=z&&z.v8||"",T=s.Promise,L="process"==f(E),I=function(){},C=r=x.f,F=!!function(){try{var e=T.resolve(1),t=(e.constructor={})[o(5)("species")]=function(e){e(I,I)};return(L||"function"==typeof PromiseRejectionEvent)&&e.then(I)instanceof t&&0!==A.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(e){}}(),U=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},R=function(e,t){if(!e._n){e._n=!0;var o=e._c;_(function(){for(var i=e._v,r=1==e._s,n=0;o.length>n;)!function(t){var o,n,l,a=r?t.ok:t.fail,s=t.resolve,c=t.reject,f=t.domain;try{a?(r||(2==e._h&&S(e),e._h=1),!0===a?o=i:(f&&f.enter(),o=a(i),f&&(f.exit(),l=!0)),o===t.promise?c(k("Promise-chain cycle")):(n=U(o))?n.call(o,s,c):s(o)):c(i)}catch(e){f&&!l&&f.exit(),c(e)}}(o[n++]);e._c=[],e._n=!1,t&&!e._h&&B(e)})}},B=function(e){m.call(s,function(){var t,o,i,r=e._v,n=D(e);if(n&&(t=v(function(){L?E.emit("unhandledRejection",r,e):(o=s.onunhandledrejection)?o({promise:e,reason:r}):(i=s.console)&&i.error&&i.error("Unhandled promise rejection",r)}),e._h=L||D(e)?2:1),e._a=void 0,n&&t.e)throw t.v})},D=function(e){return 1!==e._h&&0===(e._a||e._c).length},S=function(e){m.call(s,function(){var t;L?E.emit("rejectionHandled",e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},$=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),R(t,!0))},O=function(e){var t,o=this;if(!o._d){o._d=!0,o=o._w||o;try{if(o===e)throw k("Promise can't be resolved itself");(t=U(e))?_(function(){var i={_w:o,_d:!1};try{t.call(e,c(O,i,1),c($,i,1))}catch(e){$.call(i,e)}}):(o._v=e,o._s=1,R(o,!1))}catch(e){$.call({_w:o,_d:!1},e)}}};F||(T=function(e){h(this,T,"Promise","_h"),u(e),i.call(this);try{e(c(O,this,1),c($,this,1))}catch(e){$.call(this,e)}},i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=o(168)(T.prototype,{then:function(e,t){var o=C(b(this,T));return o.ok="function"!=typeof e||e,o.fail="function"==typeof t&&t,o.domain=L?E.domain:void 0,this._c.push(o),this._a&&this._a.push(o),this._s&&R(this,!1),o.promise},catch:function(e){return this.then(void 0,e)}}),n=function(){var e=new i;this.promise=e,this.resolve=c(O,e,1),this.reject=c($,e,1)},x.f=C=function(e){return e===T||e===l?new n(e):r(e)}),p(p.G+p.W+p.F*!F,{Promise:T}),o(29)(T,"Promise"),o(169)("Promise"),l=o(3).Promise,p(p.S+p.F*!F,"Promise",{reject:function(e){var t=C(this);return(0,t.reject)(e),t.promise}}),p(p.S+p.F*(a||!F),"Promise",{resolve:function(e){return y(a&&this===l?T:this,e)}}),p(p.S+p.F*!(F&&o(76)(function(e){T.all(e).catch(I)})),"Promise",{all:function(e){var t=this,o=C(t),i=o.resolve,r=o.reject,n=v(function(){var o=[],n=0,l=1;g(e,!1,function(e){var a=n++,s=!1;o.push(void 0),l++,t.resolve(e).then(function(e){s||(s=!0,o[a]=e,--l||i(o))},r)}),--l||i(o)});return n.e&&r(n.v),o.promise},race:function(e){var t=this,o=C(t),i=o.reject,r=v(function(){g(e,!1,function(e){t.resolve(e).then(o.resolve,i)})});return r.e&&i(r.v),o.promise}})},,function(e,t,o){"use strict";var i=o(10),r=o(3),n=o(4),l=o(83),a=o(81);i(i.P+i.R,"Promise",{finally:function(e){var t=l(this,r.Promise||n.Promise),o="function"==typeof e;return this.then(o?function(o){return a(t,e()).then(function(){return o})}:e,o?function(o){return a(t,e()).then(function(){throw o})}:e)}})},function(e,t,o){"use strict";var i=o(10),r=o(42),n=o(80);i(i.S,"Promise",{try:function(e){var t=r.f(this),o=n(e);return(o.e?t.reject:t.resolve)(o.v),t.promise}})},,,function(e,t,o){t=e.exports=o(86)(void 0),t.push([e.i,"@font-face{font-family:element-icons;src:url("+o(227)+') format("woff"),url('+o(226)+') format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\\E6A0"}.el-icon-ice-cream-square:before{content:"\\E6A3"}.el-icon-lollipop:before{content:"\\E6A4"}.el-icon-potato-strips:before{content:"\\E6A5"}.el-icon-milk-tea:before{content:"\\E6A6"}.el-icon-ice-drink:before{content:"\\E6A7"}.el-icon-ice-tea:before{content:"\\E6A9"}.el-icon-coffee:before{content:"\\E6AA"}.el-icon-orange:before{content:"\\E6AB"}.el-icon-pear:before{content:"\\E6AC"}.el-icon-apple:before{content:"\\E6AD"}.el-icon-cherry:before{content:"\\E6AE"}.el-icon-watermelon:before{content:"\\E6AF"}.el-icon-grape:before{content:"\\E6B0"}.el-icon-refrigerator:before{content:"\\E6B1"}.el-icon-goblet-square-full:before{content:"\\E6B2"}.el-icon-goblet-square:before{content:"\\E6B3"}.el-icon-goblet-full:before{content:"\\E6B4"}.el-icon-goblet:before{content:"\\E6B5"}.el-icon-cold-drink:before{content:"\\E6B6"}.el-icon-coffee-cup:before{content:"\\E6B8"}.el-icon-water-cup:before{content:"\\E6B9"}.el-icon-hot-water:before{content:"\\E6BA"}.el-icon-ice-cream:before{content:"\\E6BB"}.el-icon-dessert:before{content:"\\E6BC"}.el-icon-sugar:before{content:"\\E6BD"}.el-icon-tableware:before{content:"\\E6BE"}.el-icon-burger:before{content:"\\E6BF"}.el-icon-knife-fork:before{content:"\\E6C1"}.el-icon-fork-spoon:before{content:"\\E6C2"}.el-icon-chicken:before{content:"\\E6C3"}.el-icon-food:before{content:"\\E6C4"}.el-icon-dish-1:before{content:"\\E6C5"}.el-icon-dish:before{content:"\\E6C6"}.el-icon-moon-night:before{content:"\\E6EE"}.el-icon-moon:before{content:"\\E6F0"}.el-icon-cloudy-and-sunny:before{content:"\\E6F1"}.el-icon-partly-cloudy:before{content:"\\E6F2"}.el-icon-cloudy:before{content:"\\E6F3"}.el-icon-sunny:before{content:"\\E6F6"}.el-icon-sunset:before{content:"\\E6F7"}.el-icon-sunrise-1:before{content:"\\E6F8"}.el-icon-sunrise:before{content:"\\E6F9"}.el-icon-heavy-rain:before{content:"\\E6FA"}.el-icon-lightning:before{content:"\\E6FB"}.el-icon-light-rain:before{content:"\\E6FC"}.el-icon-wind-power:before{content:"\\E6FD"}.el-icon-baseball:before{content:"\\E712"}.el-icon-soccer:before{content:"\\E713"}.el-icon-football:before{content:"\\E715"}.el-icon-basketball:before{content:"\\E716"}.el-icon-ship:before{content:"\\E73F"}.el-icon-truck:before{content:"\\E740"}.el-icon-bicycle:before{content:"\\E741"}.el-icon-mobile-phone:before{content:"\\E6D3"}.el-icon-service:before{content:"\\E6D4"}.el-icon-key:before{content:"\\E6E2"}.el-icon-unlock:before{content:"\\E6E4"}.el-icon-lock:before{content:"\\E6E5"}.el-icon-watch:before{content:"\\E6FE"}.el-icon-watch-1:before{content:"\\E6FF"}.el-icon-timer:before{content:"\\E702"}.el-icon-alarm-clock:before{content:"\\E703"}.el-icon-map-location:before{content:"\\E704"}.el-icon-delete-location:before{content:"\\E705"}.el-icon-add-location:before{content:"\\E706"}.el-icon-location-information:before{content:"\\E707"}.el-icon-location-outline:before{content:"\\E708"}.el-icon-location:before{content:"\\E79E"}.el-icon-place:before{content:"\\E709"}.el-icon-discover:before{content:"\\E70A"}.el-icon-first-aid-kit:before{content:"\\E70B"}.el-icon-trophy-1:before{content:"\\E70C"}.el-icon-trophy:before{content:"\\E70D"}.el-icon-medal:before{content:"\\E70E"}.el-icon-medal-1:before{content:"\\E70F"}.el-icon-stopwatch:before{content:"\\E710"}.el-icon-mic:before{content:"\\E711"}.el-icon-copy-document:before{content:"\\E718"}.el-icon-full-screen:before{content:"\\E719"}.el-icon-switch-button:before{content:"\\E71B"}.el-icon-aim:before{content:"\\E71C"}.el-icon-crop:before{content:"\\E71D"}.el-icon-odometer:before{content:"\\E71E"}.el-icon-time:before{content:"\\E71F"}.el-icon-bangzhu:before{content:"\\E724"}.el-icon-close-notification:before{content:"\\E726"}.el-icon-microphone:before{content:"\\E727"}.el-icon-turn-off-microphone:before{content:"\\E728"}.el-icon-position:before{content:"\\E729"}.el-icon-postcard:before{content:"\\E72A"}.el-icon-message:before{content:"\\E72B"}.el-icon-chat-line-square:before{content:"\\E72D"}.el-icon-chat-dot-square:before{content:"\\E72E"}.el-icon-chat-dot-round:before{content:"\\E72F"}.el-icon-chat-square:before{content:"\\E730"}.el-icon-chat-line-round:before{content:"\\E731"}.el-icon-chat-round:before{content:"\\E732"}.el-icon-set-up:before{content:"\\E733"}.el-icon-turn-off:before{content:"\\E734"}.el-icon-open:before{content:"\\E735"}.el-icon-connection:before{content:"\\E736"}.el-icon-link:before{content:"\\E737"}.el-icon-cpu:before{content:"\\E738"}.el-icon-thumb:before{content:"\\E739"}.el-icon-female:before{content:"\\E73A"}.el-icon-male:before{content:"\\E73B"}.el-icon-guide:before{content:"\\E73C"}.el-icon-news:before{content:"\\E73E"}.el-icon-price-tag:before{content:"\\E744"}.el-icon-discount:before{content:"\\E745"}.el-icon-wallet:before{content:"\\E747"}.el-icon-coin:before{content:"\\E748"}.el-icon-money:before{content:"\\E749"}.el-icon-bank-card:before{content:"\\E74A"}.el-icon-box:before{content:"\\E74B"}.el-icon-present:before{content:"\\E74C"}.el-icon-sell:before{content:"\\E6D5"}.el-icon-sold-out:before{content:"\\E6D6"}.el-icon-shopping-bag-2:before{content:"\\E74D"}.el-icon-shopping-bag-1:before{content:"\\E74E"}.el-icon-shopping-cart-2:before{content:"\\E74F"}.el-icon-shopping-cart-1:before{content:"\\E750"}.el-icon-shopping-cart-full:before{content:"\\E751"}.el-icon-smoking:before{content:"\\E752"}.el-icon-no-smoking:before{content:"\\E753"}.el-icon-house:before{content:"\\E754"}.el-icon-table-lamp:before{content:"\\E755"}.el-icon-school:before{content:"\\E756"}.el-icon-office-building:before{content:"\\E757"}.el-icon-toilet-paper:before{content:"\\E758"}.el-icon-notebook-2:before{content:"\\E759"}.el-icon-notebook-1:before{content:"\\E75A"}.el-icon-files:before{content:"\\E75B"}.el-icon-collection:before{content:"\\E75C"}.el-icon-receiving:before{content:"\\E75D"}.el-icon-suitcase-1:before{content:"\\E760"}.el-icon-suitcase:before{content:"\\E761"}.el-icon-film:before{content:"\\E763"}.el-icon-collection-tag:before{content:"\\E765"}.el-icon-data-analysis:before{content:"\\E766"}.el-icon-pie-chart:before{content:"\\E767"}.el-icon-data-board:before{content:"\\E768"}.el-icon-data-line:before{content:"\\E76D"}.el-icon-reading:before{content:"\\E769"}.el-icon-magic-stick:before{content:"\\E76A"}.el-icon-coordinate:before{content:"\\E76B"}.el-icon-mouse:before{content:"\\E76C"}.el-icon-brush:before{content:"\\E76E"}.el-icon-headset:before{content:"\\E76F"}.el-icon-umbrella:before{content:"\\E770"}.el-icon-scissors:before{content:"\\E771"}.el-icon-mobile:before{content:"\\E773"}.el-icon-attract:before{content:"\\E774"}.el-icon-monitor:before{content:"\\E775"}.el-icon-search:before{content:"\\E778"}.el-icon-takeaway-box:before{content:"\\E77A"}.el-icon-paperclip:before{content:"\\E77D"}.el-icon-printer:before{content:"\\E77E"}.el-icon-document-add:before{content:"\\E782"}.el-icon-document:before{content:"\\E785"}.el-icon-document-checked:before{content:"\\E786"}.el-icon-document-copy:before{content:"\\E787"}.el-icon-document-delete:before{content:"\\E788"}.el-icon-document-remove:before{content:"\\E789"}.el-icon-tickets:before{content:"\\E78B"}.el-icon-folder-checked:before{content:"\\E77F"}.el-icon-folder-delete:before{content:"\\E780"}.el-icon-folder-remove:before{content:"\\E781"}.el-icon-folder-add:before{content:"\\E783"}.el-icon-folder-opened:before{content:"\\E784"}.el-icon-folder:before{content:"\\E78A"}.el-icon-edit-outline:before{content:"\\E764"}.el-icon-edit:before{content:"\\E78C"}.el-icon-date:before{content:"\\E78E"}.el-icon-c-scale-to-original:before{content:"\\E7C6"}.el-icon-view:before{content:"\\E6CE"}.el-icon-loading:before{content:"\\E6CF"}.el-icon-rank:before{content:"\\E6D1"}.el-icon-sort-down:before{content:"\\E7C4"}.el-icon-sort-up:before{content:"\\E7C5"}.el-icon-sort:before{content:"\\E6D2"}.el-icon-finished:before{content:"\\E6CD"}.el-icon-refresh-left:before{content:"\\E6C7"}.el-icon-refresh-right:before{content:"\\E6C8"}.el-icon-refresh:before{content:"\\E6D0"}.el-icon-video-play:before{content:"\\E7C0"}.el-icon-video-pause:before{content:"\\E7C1"}.el-icon-d-arrow-right:before{content:"\\E6DC"}.el-icon-d-arrow-left:before{content:"\\E6DD"}.el-icon-arrow-up:before{content:"\\E6E1"}.el-icon-arrow-down:before{content:"\\E6DF"}.el-icon-arrow-right:before{content:"\\E6E0"}.el-icon-arrow-left:before{content:"\\E6DE"}.el-icon-top-right:before{content:"\\E6E7"}.el-icon-top-left:before{content:"\\E6E8"}.el-icon-top:before{content:"\\E6E6"}.el-icon-bottom:before{content:"\\E6EB"}.el-icon-right:before{content:"\\E6E9"}.el-icon-back:before{content:"\\E6EA"}.el-icon-bottom-right:before{content:"\\E6EC"}.el-icon-bottom-left:before{content:"\\E6ED"}.el-icon-caret-top:before{content:"\\E78F"}.el-icon-caret-bottom:before{content:"\\E790"}.el-icon-caret-right:before{content:"\\E791"}.el-icon-caret-left:before{content:"\\E792"}.el-icon-d-caret:before{content:"\\E79A"}.el-icon-share:before{content:"\\E793"}.el-icon-menu:before{content:"\\E798"}.el-icon-s-grid:before{content:"\\E7A6"}.el-icon-s-check:before{content:"\\E7A7"}.el-icon-s-data:before{content:"\\E7A8"}.el-icon-s-opportunity:before{content:"\\E7AA"}.el-icon-s-custom:before{content:"\\E7AB"}.el-icon-s-claim:before{content:"\\E7AD"}.el-icon-s-finance:before{content:"\\E7AE"}.el-icon-s-comment:before{content:"\\E7AF"}.el-icon-s-flag:before{content:"\\E7B0"}.el-icon-s-marketing:before{content:"\\E7B1"}.el-icon-s-shop:before{content:"\\E7B4"}.el-icon-s-open:before{content:"\\E7B5"}.el-icon-s-management:before{content:"\\E7B6"}.el-icon-s-ticket:before{content:"\\E7B7"}.el-icon-s-release:before{content:"\\E7B8"}.el-icon-s-home:before{content:"\\E7B9"}.el-icon-s-promotion:before{content:"\\E7BA"}.el-icon-s-operation:before{content:"\\E7BB"}.el-icon-s-unfold:before{content:"\\E7BC"}.el-icon-s-fold:before{content:"\\E7A9"}.el-icon-s-platform:before{content:"\\E7BD"}.el-icon-s-order:before{content:"\\E7BE"}.el-icon-s-cooperation:before{content:"\\E7BF"}.el-icon-bell:before{content:"\\E725"}.el-icon-message-solid:before{content:"\\E799"}.el-icon-video-camera:before{content:"\\E772"}.el-icon-video-camera-solid:before{content:"\\E796"}.el-icon-camera:before{content:"\\E779"}.el-icon-camera-solid:before{content:"\\E79B"}.el-icon-download:before{content:"\\E77C"}.el-icon-upload2:before{content:"\\E77B"}.el-icon-upload:before{content:"\\E7C3"}.el-icon-picture-outline-round:before{content:"\\E75F"}.el-icon-picture-outline:before{content:"\\E75E"}.el-icon-picture:before{content:"\\E79F"}.el-icon-close:before{content:"\\E6DB"}.el-icon-check:before{content:"\\E6DA"}.el-icon-plus:before{content:"\\E6D9"}.el-icon-minus:before{content:"\\E6D8"}.el-icon-help:before{content:"\\E73D"}.el-icon-s-help:before{content:"\\E7B3"}.el-icon-circle-close:before{content:"\\E78D"}.el-icon-circle-check:before{content:"\\E720"}.el-icon-circle-plus-outline:before{content:"\\E723"}.el-icon-remove-outline:before{content:"\\E722"}.el-icon-zoom-out:before{content:"\\E776"}.el-icon-zoom-in:before{content:"\\E777"}.el-icon-error:before{content:"\\E79D"}.el-icon-success:before{content:"\\E79C"}.el-icon-circle-plus:before{content:"\\E7A0"}.el-icon-remove:before{content:"\\E7A2"}.el-icon-info:before{content:"\\E7A1"}.el-icon-question:before{content:"\\E7A4"}.el-icon-warning-outline:before{content:"\\E6C9"}.el-icon-warning:before{content:"\\E7A3"}.el-icon-goods:before{content:"\\E7C2"}.el-icon-s-goods:before{content:"\\E7B2"}.el-icon-star-off:before{content:"\\E717"}.el-icon-star-on:before{content:"\\E797"}.el-icon-more-outline:before{content:"\\E6CC"}.el-icon-more:before{content:"\\E794"}.el-icon-phone-outline:before{content:"\\E6CB"}.el-icon-phone:before{content:"\\E795"}.el-icon-user:before{content:"\\E6E3"}.el-icon-user-solid:before{content:"\\E7A5"}.el-icon-setting:before{content:"\\E6CA"}.el-icon-s-tools:before{content:"\\E7AC"}.el-icon-delete:before{content:"\\E6D7"}.el-icon-delete-solid:before{content:"\\E7C9"}.el-icon-eleme:before{content:"\\E7C7"}.el-icon-platform-eleme:before{content:"\\E7CA"}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-dialog,.el-pager li{-webkit-box-sizing:border-box}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled):before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item,.el-menu-item{font-size:14px;padding:0 20px;cursor:pointer}.el-dropdown-menu__item{list-style:none;line-height:36px;margin:0;color:#606266;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-breadcrumb__item:last-child .el-breadcrumb__separator,.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--collapse .el-submenu,.el-menu-item{position:relative}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;list-style:none}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{color:#303133;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-radio-button__inner,.el-submenu__title{-webkit-box-sizing:border-box;position:relative;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px #409eff}.el-picker-panel,.el-popover,.el-select-dropdown,.el-table-filter,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-switch{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-input__prefix,.el-input__suffix{-webkit-transition:all .3s;color:#c0c4cc}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\\E6DA";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;transition:transform .3s;transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;transform:rotate(180deg);border-radius:100%;color:#c0c4cc;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-range-editor.is-active,.el-range-editor.is-active:hover,.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;transform:translateY(-50%);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-ms-flexbox;display:flex;max-width:100%;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#f5f7fa}.el-table .el-table__cell{padding:12px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#409eff}.el-table th.el-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-date-table td,.el-table-filter,.el-table .cell{-webkit-box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th.el-table__cell,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#f5f7fa}.el-table__body tr.current-row>td.el-table__cell{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:#409eff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409eff}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#409eff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409eff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder,.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder,.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover,.el-cascader__dropdown,.el-color-picker__panel,.el-message-box,.el-notification{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__active-bar,.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-col-offset-0,.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-cascader-menu:last-child .el-cascader-node,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-button-group>.el-button:not(:last-child),.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content:hover,.el-upload-list__item:hover{background-color:#f5f7fa}.el-tree-node__content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active,.el-upload iframe{opacity:0}.el-carousel__arrow--right,.el-notification.right{right:16px}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;overflow:hidden}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;transform:translateX(100%)}.el-notification-fade-enter.left{left:0;transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-button-group:after,.el-button-group:before,.el-color-dropdown__main-wrapper:after,.el-link.is-underline:hover:after,.el-page-header__left:after,.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-transfer-panel .el-transfer-panel__footer:after,.el-upload-cover:after,.el-upload-list--picture-card .el-upload-list__item-actions:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal}.el-image-viewer__btn,.el-slider__button,.el-slider__button-wrapper,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-12,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row,.el-upload-dragger,.el-upload-list__item{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-top{-ms-flex-align:start;align-items:flex-start}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;box-sizing:border-box}.el-col-0{width:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-badge__content,.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-card__header,.el-message,.el-step__icon{-webkit-box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border-radius:4px;border:1px solid #ebeef5;position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:#edf2fc;transition:opacity .3s,transform .4s,top .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-message.is-center{-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;box-sizing:border-box}.el-card__body,.el-main{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#fff;transition:.15s ease-out}.el-step.is-horizontal,.el-step__icon-inner{display:inline-block}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;position:absolute;top:0;left:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__search-input,.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-cascader,.el-tag{display:inline-block}.el-popper .popper__arrow{border-width:6px;filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf5ff;border:1px solid #d9ecff;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409eff;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409eff}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#409eff;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#409eff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409eff}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;transform:scale(.7)}.el-cascader{position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{transition:transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#409eff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input:-ms-input-placeholder,.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__icon,.el-input,.el-textarea{display:inline-block;width:100%}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{font-size:12px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{color:#fff;text-align:center}.el-input__prefix,.el-input__suffix{position:absolute;top:0;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-input__inner,.el-textarea__inner,.el-transfer-panel{-webkit-box-sizing:border-box}.el-textarea{position:relative;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder,.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder,.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input,.el-input__inner{font-size:inherit}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;color:#606266;display:inline-block;height:40px;line-height:40px;outline:0;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder,.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{height:100%;right:5px;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{height:100%;left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder,.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-image-viewer__btn,.el-image__preview,.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-button-group>.el-button+.el-button,.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-divider__text,.el-image__error,.el-link,.el-timeline,.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{overflow:auto}.el-main{display:block;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto}.el-footer,.el-main{box-sizing:border-box}.el-footer{padding:0 20px;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409eff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0;font-weight:500}.el-link.is-underline:hover:after{position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409eff}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409eff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409eff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#409eff}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;transform:translate(-50%,-50%);display:block}.el-image__error{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;color:#c0c4cc;vertical-align:middle}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;box-sizing:border-box;user-select:none}.el-button,.el-checkbox,.el-checkbox-button__inner,.el-empty__image img,.el-image-viewer__btn,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;top:50%}.el-image-viewer__prev{transform:translateY(-50%);left:40px}.el-image-viewer__next{transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in .3s}.viewer-fade-leave-active{animation:viewer-fade-out .3s}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button,.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini{font-size:12px;border-radius:3px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button-group .el-button--danger:last-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:last-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:last-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:last-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:last-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child),.el-button-group>.el-dropdown>.el-button{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:first-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:first-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:first-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:first-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-right-color:hsla(0,0%,100%,.5)}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0}.el-calendar{background-color:#fff}.el-calendar__header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#409eff}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:20px;box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{display:-ms-flexbox;display:flex;line-height:24px}.el-page-header__left{display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-avatar,.el-cascader-panel,.el-radio,.el-radio--medium.is-bordered .el-radio__label,.el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;height:40px}.el-cascader-menu,.el-cascader-menu__list,.el-radio__inner{-webkit-box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px #409eff}.el-radio__label{padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:hsla(220,4%,58%,.3);transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:hsla(220,4%,58%,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-ms-flexbox;display:flex;border-radius:4px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409eff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-empty__image img,.el-empty__image svg{vertical-align:top;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rtl-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rtl-drawer-out{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes ltr-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ltr-drawer-out{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes ttb-drawer-in{0%{transform:translateY(-100%)}to{transform:translate(0)}}@keyframes ttb-drawer-out{0%{transform:translate(0)}to{transform:translateY(-100%)}}@keyframes btt-drawer-in{0%{transform:translateY(100%)}to{transform:translate(0)}}@keyframes btt-drawer-out{0%{transform:translate(0)}to{transform:translateY(100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#fff;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-ms-flex-align:center;align-items:center;color:#72767b;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-ms-flex:1;flex:1}.el-drawer__title{margin:0;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-ms-flex:1;flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{width:100%;left:0;right:0}.el-drawer__container{position:relative;top:0;bottom:0;height:100%}.el-drawer-fade-enter-active{animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-statistic{width:100%;box-sizing:border-box;margin:0;padding:0;color:#000;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";text-align:center}.el-statistic .head{margin-bottom:4px;color:#00073;font-size:14px}.el-statistic .con{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-statistic .con .number{font-size:20px;padding:0 4px}.el-statistic .con span{display:inline-block;margin:0;line-height:100%}.el-popconfirm__main,.el-skeleton__image{display:-ms-flexbox;-webkit-box-align:center;display:-webkit-box}.el-popconfirm__main{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#dcdde0;width:22%;height:22%}.el-empty{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;object-fit:contain}.el-empty__image svg{fill:#dcdde0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom,.el-result__title{margin-top:20px}.el-descriptions{box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#fff}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #ebeef5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon:after{content:":";position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67c23a}.el-result .icon-error{fill:#f56c6c}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#e6a23c}',""])},function(e,t,o){t=e.exports=o(86)(void 0),t.push([e.i,"#app{font-family:Helvetica,sans-serif;width:960px;margin:0 auto}.action-left{float:left}.action-right{float:right}.folder-path{margin:20px auto}.folder-action{float:right}.file-cell{padding:4px 0!important}.header{text-align:center;margin:100px auto}",""])},,,,,,,,function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"OK",clear:"Leeren"},datepicker:{now:"Jetzt",today:"Heute",cancel:"Abbrechen",clear:"Leeren",confirm:"OK",selectDate:"Datum wählen",selectTime:"Uhrzeit wählen",startDate:"Startdatum",startTime:"Startzeit",endDate:"Enddatum",endTime:"Endzeit",prevYear:"Letztes Jahr",nextYear:"Nächtes Jahr",prevMonth:"Letzter Monat",nextMonth:"Nächster Monat",day:"Tag",week:"Woche",month:"Monat",year:"",month1:"Januar",month2:"Februar",month3:"März",month4:"April",month5:"Mai",month6:"Juni",month7:"Juli",month8:"August",month9:"September",month10:"Oktober",month11:"November",month12:"Dezember",weeks:{sun:"So",mon:"Mo",tue:"Di",wed:"Mi",thu:"Do",fri:"Fr",sat:"Sa"},months:{jan:"Jan",feb:"Feb",mar:"Mär",apr:"Apr",may:"Mai",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Okt",nov:"Nov",dec:"Dez"}},select:{loading:"Lädt.",noMatch:"Nichts gefunden.",noData:"Keine Daten",placeholder:"Daten wählen"},cascader:{noMatch:"Nichts gefunden.",loading:"Lädt.",placeholder:"Daten wählen",noData:"Keine Daten"},pagination:{goto:"Gehe zu",pagesize:" pro Seite",total:"Gesamt {total}",pageClassifier:""},messagebox:{confirm:"OK",cancel:"Abbrechen",error:"Fehler"},upload:{deleteTip:"Klicke löschen zum entfernen",delete:"Löschen",preview:"Vorschau",continue:"Fortsetzen"},table:{emptyText:"Keine Daten",confirmFilter:"Anwenden",resetFilter:"Zurücksetzen",clearFilter:"Alles ",sumText:"Summe"},tree:{emptyText:"Keine Einträge"},transfer:{noMatch:"Nichts gefunden.",noData:"Keine Einträge",titles:["Liste 1","Liste 2"],filterPlaceholder:"Einträge filtern",noCheckedFormat:"{total} Einträge",hasCheckedFormat:"{checked}/{total} ausgewählt"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},empty:{description:"Keine Daten"}}}},function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"OK",clear:"Clear"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:""},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},empty:{description:"No Data"}}}},function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"Confirmar",clear:"Despejar"},datepicker:{now:"Ahora",today:"Hoy",cancel:"Cancelar",clear:"Limpiar",confirm:"Confirmar",selectDate:"Seleccionar fecha",selectTime:"Seleccionar hora",startDate:"Fecha Incial",startTime:"Hora Inicial",endDate:"Fecha Final",endTime:"Hora Final",prevYear:"Año Anterior",nextYear:"Próximo Año",prevMonth:"Mes Anterior",nextMonth:"Próximo Mes",year:"",month1:"enero",month2:"febrero",month3:"marzo",month4:"abril",month5:"mayo",month6:"junio",month7:"julio",month8:"agosto",month9:"septiembre",month10:"octubre",month11:"noviembre",month12:"diciembre",weeks:{sun:"dom",mon:"lun",tue:"mar",wed:"mié",thu:"jue",fri:"vie",sat:"sáb"},months:{jan:"ene",feb:"feb",mar:"mar",apr:"abr",may:"may",jun:"jun",jul:"jul",aug:"ago",sep:"sep",oct:"oct",nov:"nov",dec:"dic"}},select:{loading:"Cargando",noMatch:"No hay datos que coincidan",noData:"Sin datos",placeholder:"Seleccionar"},cascader:{noMatch:"No hay datos que coincidan",loading:"Cargando",placeholder:"Seleccionar",noData:"Sin datos"},pagination:{goto:"Ir a",pagesize:"/página",total:"Total {total}",pageClassifier:""},messagebox:{confirm:"Aceptar",cancel:"Cancelar",error:"Entrada inválida"},upload:{deleteTip:"Pulse Eliminar para retirar",delete:"Eliminar",preview:"Vista Previa",continue:"Continuar"},table:{emptyText:"Sin Datos",confirmFilter:"Confirmar",resetFilter:"Reiniciar",clearFilter:"Limpiar",sumText:"Suma"},tree:{emptyText:"Sin Datos"},transfer:{noMatch:"No hay datos que coincidan",noData:"Sin datos",titles:["Lista 1","Lista 2"],filterPlaceholder:"Ingresar palabra clave",noCheckedFormat:"{total} artículos",hasCheckedFormat:"{checked}/{total} revisados"},image:{error:"HA FALLADO"},pageHeader:{title:"Volver"},popconfirm:{confirmButtonText:"Si",cancelButtonText:"No"},empty:{description:"Sin Datos"}}}},function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"OK",clear:"Очистить"},datepicker:{now:"Сейчас",today:"Сегодня",cancel:"Отмена",clear:"Очистить",confirm:"OK",selectDate:"Выбрать дату",selectTime:"Выбрать время",startDate:"Дата начала",startTime:"Время начала",endDate:"Дата окончания",endTime:"Время окончания",prevYear:"Предыдущий год",nextYear:"Следующий год",prevMonth:"Предыдущий месяц",nextMonth:"Следующий месяц",year:"",month1:"Январь",month2:"Февраль",month3:"Март",month4:"Апрель",month5:"Май",month6:"Июнь",month7:"Июль",month8:"Август",month9:"Сентябрь",month10:"Октябрь",month11:"Ноябрь",month12:"Декабрь",week:"неделя",weeks:{sun:"Вс",mon:"Пн",tue:"Вт",wed:"Ср",thu:"Чт",fri:"Пт",sat:"Сб"},months:{jan:"Янв",feb:"Фев",mar:"Мар",apr:"Апр",may:"Май",jun:"Июн",jul:"Июл",aug:"Авг",sep:"Сен",oct:"Окт",nov:"Ноя",dec:"Дек"}},select:{loading:"Загрузка",noMatch:"Совпадений не найдено",noData:"Нет данных",placeholder:"Выбрать"},cascader:{noMatch:"Совпадений не найдено",loading:"Загрузка",placeholder:"Выбрать",noData:"Нет данных"},pagination:{goto:"Перейти",pagesize:" на странице",total:"Всего {total}",pageClassifier:""},messagebox:{title:"Сообщение",confirm:"OK",cancel:"Отмена",error:"Недопустимый ввод данных"},upload:{deleteTip:"Нажмите [Удалить] для удаления",delete:"Удалить",preview:"Предпросмотр",continue:"Продолжить"},table:{emptyText:"Нет данных",confirmFilter:"Подтвердить",resetFilter:"Сбросить",clearFilter:"Все",sumText:"Сумма"},tree:{emptyText:"Нет данных"},transfer:{noMatch:"Совпадений не найдено",noData:"Нет данных",titles:["Список 1","Список 2"],filterPlaceholder:"Введите ключевое слово",noCheckedFormat:"{total} пунктов",hasCheckedFormat:"{checked}/{total} выбрано"},image:{error:"Произошла ошибка"},pageHeader:{title:"Назад"},popconfirm:{confirmButtonText:"OK",cancelButtonText:"Отмена"},empty:{description:"Нет данных"}}}},function(e,t,o){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"確認",clear:"清空"},datepicker:{now:"現在",today:"今天",cancel:"取消",clear:"清空",confirm:"確認",selectDate:"選擇日期",selectTime:"選擇時間",startDate:"開始日期",startTime:"開始時間",endDate:"結束日期",endTime:"結束時間",prevYear:"前一年",nextYear:"後一年",prevMonth:"上個月",nextMonth:"下個月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加載中",noMatch:"無匹配資料",noData:"無資料",placeholder:"請選擇"},cascader:{noMatch:"無匹配資料",loading:"加載中",placeholder:"請選擇",noData:"無資料"},pagination:{goto:"前往",pagesize:"項/頁",total:"共 {total} 項",pageClassifier:"頁"},messagebox:{title:"提示",confirm:"確定",cancel:"取消",error:"輸入的資料不符規定!"},upload:{deleteTip:"按 delete 鍵可刪除",delete:"刪除",preview:"查看圖片",continue:"繼續上傳"},table:{emptyText:"暫無資料",confirmFilter:"篩選",resetFilter:"重置",clearFilter:"全部",sumText:"Sum"},tree:{emptyText:"暫無資料"},transfer:{noMatch:"無匹配資料",noData:"無資料",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"加載失敗"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},empty:{description:"暫無資料"}}}},,,,,,,,,,,,,function(e,t,o){"use strict";function i(e){console&&console.warn&&console.warn(e)}function r(){r.init.call(this)}function n(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function a(e,t,o,r){var a,s,c;if(n(o),s=e._events,void 0===s?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,o.listener?o.listener:o),s=e._events),c=s[t]),void 0===c)c=s[t]=o,++e._eventsCount;else if("function"==typeof c?c=s[t]=r?[o,c]:[c,o]:r?c.unshift(o):c.push(o),(a=l(e))>0&&c.length>a&&!c.warned){c.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+c.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=e,f.type=t,f.count=c.length,i(f)}return e}function s(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(e,t,o){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:o},r=s.bind(i);return r.listener=o,i.wrapFn=r,r}function f(e,t,o){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?o?[r.listener||r]:[r]:o?h(r):d(r,r.length)}function p(e){var t=this._events;if(void 0!==t){var o=t[e];if("function"==typeof o)return 1;if(void 0!==o)return o.length}return 0}function d(e,t){for(var o=new Array(t),i=0;i0&&(n=t[0]),n instanceof Error)throw n;var l=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw l.context=n,l}var a=r[e];if(void 0===a)return!1;if("function"==typeof a)v(a,this,t);else for(var s=a.length,c=d(a,s),o=0;o=0;l--)if(o[l]===t||o[l].listener===t){a=o[l].listener,r=l;break}if(r<0)return this;0===r?o.shift():u(o,r),1===o.length&&(i[e]=o[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(e){var t,o,i;if(void 0===(o=this._events))return this;if(void 0===o.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==o[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete o[e]),this;if(0===arguments.length){var r,n=Object.keys(o);for(i=0;i=0;i--)this.removeListener(e,t[i]);return this},r.prototype.listeners=function(e){return f(this,e,!0)},r.prototype.rawListeners=function(e){return f(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},r.prototype.listenerCount=p,r.prototype.eventNames=function(){return this._eventsCount>0?_(this._events):[]}},function(e,t){/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +t.read=function(e,t,o,i,r){var n,l,a=8*r-i-1,s=(1<>1,f=-7,p=o?r-1:0,d=o?-1:1,u=e[t+p];for(p+=d,n=u&(1<<-f)-1,u>>=-f,f+=a;f>0;n=256*n+e[t+p],p+=d,f-=8);for(l=n&(1<<-f)-1,n>>=-f,f+=i;f>0;l=256*l+e[t+p],p+=d,f-=8);if(0===n)n=1-c;else{if(n===s)return l?NaN:1/0*(u?-1:1);l+=Math.pow(2,i),n-=c}return(u?-1:1)*l*Math.pow(2,n-i)},t.write=function(e,t,o,i,r,n){var l,a,s,c=8*n-r-1,f=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,u=i?0:n-1,h=i?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,l=f):(l=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-l))<1&&(l--,s*=2),t+=l+p>=1?d/s:d*Math.pow(2,1-p),t*s>=2&&(l++,s/=2),l+p>=f?(a=0,l=f):l+p>=1?(a=(t*s-1)*Math.pow(2,r),l+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,r),l=0));r>=8;e[o+u]=255&a,u+=h,a/=256,r-=8);for(l=l<0;e[o+u]=255&l,u+=h,l/=256,c-=8);e[o+u-h]|=128*g}},function(e,t){var o={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==o.call(e)}},,function(e,t,o){var i,r,n;/** * @license long.js (c) 2013 Daniel Wirtz * Released under the Apache License, Version 2.0 * see: https://github.com/dcodeIO/long.js for details */ -!function(o,l){r=[],i=l,void 0!==(n="function"==typeof i?i.apply(t,r):i)&&(e.exports=n)}(0,function(){"use strict";function e(e,t,o){this.low=0|e,this.high=0|t,this.unsigned=!!o}function t(e){return!0===(e&&e.__isLong__)}function o(e,t){var o,i,n;return t?(e>>>=0,(n=0<=e&&e<256)&&(i=s[e])?i:(o=r(e,(0|e)<0?-1:0,!0),n&&(s[e]=o),o)):(e|=0,(n=-128<=e&&e<128)&&(i=a[e])?i:(o=r(e,e<0?-1:0,!1),n&&(a[e]=o),o))}function i(e,t){if(isNaN(e)||!isFinite(e))return t?b:h;if(t){if(e<0)return b;if(e>=p)return v}else{if(e<=-d)return w;if(e+1>=d)return x}return e<0?i(-e,t).neg():r(e%f|0,e/f|0,t)}function r(t,o,i){return new e(t,o,i)}function n(e,t,o){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return h;if("number"==typeof t?(o=t,t=!1):t=!!t,(o=o||10)<2||360)throw Error("interior hyphen");if(0===r)return n(e.substring(1),t,o).neg();for(var l=i(c(o,8)),a=h,s=0;s>>0:this.low},y.toNumber=function(){return this.unsigned?(this.high>>>0)*f+(this.low>>>0):this.high*f+(this.low>>>0)},y.toString=function(e){if((e=e||10)<2||36>>0,p=f.toString(e);if(l=s,l.isZero())return p+a;for(;p.length<6;)p="0"+p;a=""+p+a}},y.getHighBits=function(){return this.high},y.getHighBitsUnsigned=function(){return this.high>>>0},y.getLowBits=function(){return this.low},y.getLowBitsUnsigned=function(){return this.low>>>0},y.getNumBitsAbs=function(){if(this.isNegative())return this.eq(w)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},y.isOdd=function(){return 1==(1&this.low)},y.isEven=function(){return 0==(1&this.low)},y.equals=function(e){return t(e)||(e=l(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},y.eq=y.equals,y.notEquals=function(e){return!this.eq(e)},y.neq=y.notEquals,y.lessThan=function(e){return this.comp(e)<0},y.lt=y.lessThan,y.lessThanOrEqual=function(e){return this.comp(e)<=0},y.lte=y.lessThanOrEqual,y.greaterThan=function(e){return this.comp(e)>0},y.gt=y.greaterThan,y.greaterThanOrEqual=function(e){return this.comp(e)>=0},y.gte=y.greaterThanOrEqual,y.compare=function(e){if(t(e)||(e=l(e)),this.eq(e))return 0;var o=this.isNegative(),i=e.isNegative();return o&&!i?-1:!o&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},y.comp=y.compare,y.negate=function(){return!this.unsigned&&this.eq(w)?w:this.not().add(g)},y.neg=y.negate,y.add=function(e){t(e)||(e=l(e));var o=this.high>>>16,i=65535&this.high,n=this.low>>>16,a=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,d=0,u=0,h=0,b=0;return b+=a+p,h+=b>>>16,b&=65535,h+=n+f,u+=h>>>16,h&=65535,u+=i+c,d+=u>>>16,u&=65535,d+=o+s,d&=65535,r(h<<16|b,d<<16|u,this.unsigned)},y.subtract=function(e){return t(e)||(e=l(e)),this.add(e.neg())},y.sub=y.subtract,y.multiply=function(e){if(this.isZero())return h;if(t(e)||(e=l(e)),e.isZero())return h;if(this.eq(w))return e.isOdd()?w:h;if(e.eq(w))return this.isOdd()?w:h;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(u)&&e.lt(u))return i(this.toNumber()*e.toNumber(),this.unsigned);var o=this.high>>>16,n=65535&this.high,a=this.low>>>16,s=65535&this.low,c=e.high>>>16,f=65535&e.high,p=e.low>>>16,d=65535&e.low,b=0,g=0,m=0,_=0;return _+=s*d,m+=_>>>16,_&=65535,m+=a*d,g+=m>>>16,m&=65535,m+=s*p,g+=m>>>16,m&=65535,g+=n*d,b+=g>>>16,g&=65535,g+=a*p,b+=g>>>16,g&=65535,g+=s*f,b+=g>>>16,g&=65535,b+=o*d+n*p+a*f+s*c,b&=65535,r(m<<16|_,b<<16|g,this.unsigned)},y.mul=y.multiply,y.divide=function(e){if(t(e)||(e=l(e)),e.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?b:h;var o,r,n;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return b;if(e.gt(this.shru(1)))return m;n=b}else{if(this.eq(w)){if(e.eq(g)||e.eq(_))return w;if(e.eq(w))return g;return o=this.shr(1).div(e).shl(1),o.eq(h)?e.isNegative()?g:_:(r=this.sub(e.mul(o)),n=o.add(r.div(e)))}if(e.eq(w))return this.unsigned?b:h;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();n=h}for(r=this;r.gte(e);){o=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(o)/Math.LN2),s=a<=48?1:c(2,a-48),f=i(o),p=f.mul(e);p.isNegative()||p.gt(r);)o-=s,f=i(o,this.unsigned),p=f.mul(e);f.isZero()&&(f=g),n=n.add(f),r=r.sub(p)}return n},y.div=y.divide,y.modulo=function(e){return t(e)||(e=l(e)),this.sub(this.div(e).mul(e))},y.mod=y.modulo,y.not=function(){return r(~this.low,~this.high,this.unsigned)},y.and=function(e){return t(e)||(e=l(e)),r(this.low&e.low,this.high&e.high,this.unsigned)},y.or=function(e){return t(e)||(e=l(e)),r(this.low|e.low,this.high|e.high,this.unsigned)},y.xor=function(e){return t(e)||(e=l(e)),r(this.low^e.low,this.high^e.high,this.unsigned)},y.shiftLeft=function(e){return t(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?r(this.low<>>32-e,this.unsigned):r(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):r(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},y.shr=y.shiftRight,y.shiftRightUnsigned=function(e){if(t(e)&&(e=e.toInt()),0===(e&=63))return this;var o=this.high;if(e<32){return r(this.low>>>e|o<<32-e,o>>>e,this.unsigned)}return 32===e?r(o,0,this.unsigned):r(o>>>e-32,0,this.unsigned)},y.shru=y.shiftRightUnsigned,y.toSigned=function(){return this.unsigned?r(this.low,this.high,!1):this},y.toUnsigned=function(){return this.unsigned?this:r(this.low,this.high,!0)},y.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},y.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24&255,255&e,e>>>8&255,e>>>16&255,e>>>24&255]},y.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t]},e})},,,,,,,,,function(e,t){function o(e,t){for(var o=0;o=0&&_.splice(t,1)}function l(e){var t=document.createElement("style");return t.type="text/css",r(e,t),t}function a(e){var t=document.createElement("link");return t.rel="stylesheet",r(e,t),t}function s(e,t){var o,i,r;if(t.singleton){var s=m++;o=g||(g=l(t)),i=c.bind(null,o,s,!1),r=c.bind(null,o,s,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(o=a(t),i=p.bind(null,o),r=function(){n(o),o.href&&URL.revokeObjectURL(o.href)}):(o=l(t),i=f.bind(null,o),r=function(){n(o)});return i(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;i(e=t)}else r()}}function c(e,t,o,i){var r=o?"":i.css;if(e.styleSheet)e.styleSheet.cssText=x(t,r);else{var n=document.createTextNode(r),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(n,l[t]):e.appendChild(n)}}function f(e,t){var o=t.css,i=t.media;if(i&&e.setAttribute("media",i),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}function p(e,t){var o=t.css,i=t.sourceMap;i&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var r=new Blob([o],{type:"text/css"}),n=e.href;e.href=URL.createObjectURL(r),n&&URL.revokeObjectURL(n)}var d={},u=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}},h=u(function(){return/msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase())}),b=u(function(){return document.head||document.getElementsByTagName("head")[0]}),g=null,m=0,_=[];e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},void 0===t.singleton&&(t.singleton=h()),void 0===t.insertAt&&(t.insertAt="bottom");var r=i(e);return o(r,t),function(e){for(var n=[],l=0;l>>=0,(n=0<=e&&e<256)&&(i=s[e])?i:(o=r(e,(0|e)<0?-1:0,!0),n&&(s[e]=o),o)):(e|=0,(n=-128<=e&&e<128)&&(i=a[e])?i:(o=r(e,e<0?-1:0,!1),n&&(a[e]=o),o))}function i(e,t){if(isNaN(e)||!isFinite(e))return t?g:h;if(t){if(e<0)return g;if(e>=p)return v}else{if(e<=-d)return w;if(e+1>=d)return x}return e<0?i(-e,t).neg():r(e%f|0,e/f|0,t)}function r(t,o,i){return new e(t,o,i)}function n(e,t,o){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return h;if("number"==typeof t?(o=t,t=!1):t=!!t,(o=o||10)<2||360)throw Error("interior hyphen");if(0===r)return n(e.substring(1),t,o).neg();for(var l=i(c(o,8)),a=h,s=0;s>>0:this.low},y.toNumber=function(){return this.unsigned?(this.high>>>0)*f+(this.low>>>0):this.high*f+(this.low>>>0)},y.toString=function(e){if((e=e||10)<2||36>>0,p=f.toString(e);if(l=s,l.isZero())return p+a;for(;p.length<6;)p="0"+p;a=""+p+a}},y.getHighBits=function(){return this.high},y.getHighBitsUnsigned=function(){return this.high>>>0},y.getLowBits=function(){return this.low},y.getLowBitsUnsigned=function(){return this.low>>>0},y.getNumBitsAbs=function(){if(this.isNegative())return this.eq(w)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},y.isOdd=function(){return 1==(1&this.low)},y.isEven=function(){return 0==(1&this.low)},y.equals=function(e){return t(e)||(e=l(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},y.eq=y.equals,y.notEquals=function(e){return!this.eq(e)},y.neq=y.notEquals,y.lessThan=function(e){return this.comp(e)<0},y.lt=y.lessThan,y.lessThanOrEqual=function(e){return this.comp(e)<=0},y.lte=y.lessThanOrEqual,y.greaterThan=function(e){return this.comp(e)>0},y.gt=y.greaterThan,y.greaterThanOrEqual=function(e){return this.comp(e)>=0},y.gte=y.greaterThanOrEqual,y.compare=function(e){if(t(e)||(e=l(e)),this.eq(e))return 0;var o=this.isNegative(),i=e.isNegative();return o&&!i?-1:!o&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},y.comp=y.compare,y.negate=function(){return!this.unsigned&&this.eq(w)?w:this.not().add(b)},y.neg=y.negate,y.add=function(e){t(e)||(e=l(e));var o=this.high>>>16,i=65535&this.high,n=this.low>>>16,a=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,d=0,u=0,h=0,g=0;return g+=a+p,h+=g>>>16,g&=65535,h+=n+f,u+=h>>>16,h&=65535,u+=i+c,d+=u>>>16,u&=65535,d+=o+s,d&=65535,r(h<<16|g,d<<16|u,this.unsigned)},y.subtract=function(e){return t(e)||(e=l(e)),this.add(e.neg())},y.sub=y.subtract,y.multiply=function(e){if(this.isZero())return h;if(t(e)||(e=l(e)),e.isZero())return h;if(this.eq(w))return e.isOdd()?w:h;if(e.eq(w))return this.isOdd()?w:h;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(u)&&e.lt(u))return i(this.toNumber()*e.toNumber(),this.unsigned);var o=this.high>>>16,n=65535&this.high,a=this.low>>>16,s=65535&this.low,c=e.high>>>16,f=65535&e.high,p=e.low>>>16,d=65535&e.low,g=0,b=0,m=0,_=0;return _+=s*d,m+=_>>>16,_&=65535,m+=a*d,b+=m>>>16,m&=65535,m+=s*p,b+=m>>>16,m&=65535,b+=n*d,g+=b>>>16,b&=65535,b+=a*p,g+=b>>>16,b&=65535,b+=s*f,g+=b>>>16,b&=65535,g+=o*d+n*p+a*f+s*c,g&=65535,r(m<<16|_,g<<16|b,this.unsigned)},y.mul=y.multiply,y.divide=function(e){if(t(e)||(e=l(e)),e.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?g:h;var o,r,n;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return g;if(e.gt(this.shru(1)))return m;n=g}else{if(this.eq(w)){if(e.eq(b)||e.eq(_))return w;if(e.eq(w))return b;return o=this.shr(1).div(e).shl(1),o.eq(h)?e.isNegative()?b:_:(r=this.sub(e.mul(o)),n=o.add(r.div(e)))}if(e.eq(w))return this.unsigned?g:h;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();n=h}for(r=this;r.gte(e);){o=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(o)/Math.LN2),s=a<=48?1:c(2,a-48),f=i(o),p=f.mul(e);p.isNegative()||p.gt(r);)o-=s,f=i(o,this.unsigned),p=f.mul(e);f.isZero()&&(f=b),n=n.add(f),r=r.sub(p)}return n},y.div=y.divide,y.modulo=function(e){return t(e)||(e=l(e)),this.sub(this.div(e).mul(e))},y.mod=y.modulo,y.not=function(){return r(~this.low,~this.high,this.unsigned)},y.and=function(e){return t(e)||(e=l(e)),r(this.low&e.low,this.high&e.high,this.unsigned)},y.or=function(e){return t(e)||(e=l(e)),r(this.low|e.low,this.high|e.high,this.unsigned)},y.xor=function(e){return t(e)||(e=l(e)),r(this.low^e.low,this.high^e.high,this.unsigned)},y.shiftLeft=function(e){return t(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?r(this.low<>>32-e,this.unsigned):r(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):r(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},y.shr=y.shiftRight,y.shiftRightUnsigned=function(e){if(t(e)&&(e=e.toInt()),0===(e&=63))return this;var o=this.high;if(e<32){return r(this.low>>>e|o<<32-e,o>>>e,this.unsigned)}return 32===e?r(o,0,this.unsigned):r(o>>>e-32,0,this.unsigned)},y.shru=y.shiftRightUnsigned,y.toSigned=function(){return this.unsigned?r(this.low,this.high,!1):this},y.toUnsigned=function(){return this.unsigned?this:r(this.low,this.high,!0)},y.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},y.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24&255,255&e,e>>>8&255,e>>>16&255,e>>>24&255]},y.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t]},e})},,,,,,,,,function(e,t){function o(e,t){for(var o=0;o=0&&_.splice(t,1)}function l(e){var t=document.createElement("style");return t.type="text/css",r(e,t),t}function a(e){var t=document.createElement("link");return t.rel="stylesheet",r(e,t),t}function s(e,t){var o,i,r;if(t.singleton){var s=m++;o=b||(b=l(t)),i=c.bind(null,o,s,!1),r=c.bind(null,o,s,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(o=a(t),i=p.bind(null,o),r=function(){n(o),o.href&&URL.revokeObjectURL(o.href)}):(o=l(t),i=f.bind(null,o),r=function(){n(o)});return i(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;i(e=t)}else r()}}function c(e,t,o,i){var r=o?"":i.css;if(e.styleSheet)e.styleSheet.cssText=x(t,r);else{var n=document.createTextNode(r),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(n,l[t]):e.appendChild(n)}}function f(e,t){var o=t.css,i=t.media;if(i&&e.setAttribute("media",i),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}function p(e,t){var o=t.css,i=t.sourceMap;i&&(o+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var r=new Blob([o],{type:"text/css"}),n=e.href;e.href=URL.createObjectURL(r),n&&URL.revokeObjectURL(n)}var d={},u=function(e){var t;return function(){return void 0===t&&(t=e.apply(this,arguments)),t}},h=u(function(){return/msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase())}),g=u(function(){return document.head||document.getElementsByTagName("head")[0]}),b=null,m=0,_=[];e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");t=t||{},void 0===t.singleton&&(t.singleton=h()),void 0===t.insertAt&&(t.insertAt="bottom");var r=i(e);return o(r,t),function(e){for(var n=[],l=0;l/g,">").replace(/"/g,""").replace(/'/g,"'")}function v(e){return null!=e&&Object.keys(e).forEach(function(t){"string"==typeof e[t]&&(e[t]=x(e[t]))}),e}function w(e){e.prototype.hasOwnProperty("$i18n")||Object.defineProperty(e.prototype,"$i18n",{get:function(){return this._i18n}}),e.prototype.$t=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];var i=this.$i18n;return i._t.apply(i,[e,i.locale,i._getMessages(),this].concat(t))},e.prototype.$tc=function(e,t){for(var o=[],i=arguments.length-2;i-- >0;)o[i]=arguments[i+2];var r=this.$i18n;return r._tc.apply(r,[e,r.locale,r._getMessages(),this,t].concat(o))},e.prototype.$te=function(e,t){var o=this.$i18n;return o._te(e,o.locale,o._getMessages(),t)},e.prototype.$d=function(e){for(var t,o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return(t=this.$i18n).d.apply(t,[e].concat(o))},e.prototype.$n=function(e){for(var t,o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return(t=this.$i18n).n.apply(t,[e].concat(o))}}function y(e){function t(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===e&&(e=!1),e?{mounted:t}:{beforeCreate:function(){var e=this.$options;if(e.i18n=e.i18n||(e.__i18nBridge||e.__i18n?{}:null),e.i18n){if(e.i18n instanceof ye){if(e.__i18nBridge||e.__i18n)try{var t=e.i18n&&e.i18n.messages?e.i18n.messages:{},o=e.__i18nBridge||e.__i18n;o.forEach(function(e){t=m(t,JSON.parse(e))}),Object.keys(t).forEach(function(o){e.i18n.mergeLocaleMessage(o,t[o])})}catch(e){}this._i18n=e.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(s(e.i18n)){var i=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof ye?this.$root.$i18n:null;if(i&&(e.i18n.root=this.$root,e.i18n.formatter=i.formatter,e.i18n.fallbackLocale=i.fallbackLocale,e.i18n.formatFallbackMessages=i.formatFallbackMessages,e.i18n.silentTranslationWarn=i.silentTranslationWarn,e.i18n.silentFallbackWarn=i.silentFallbackWarn,e.i18n.pluralizationRules=i.pluralizationRules,e.i18n.preserveDirectiveContent=i.preserveDirectiveContent),e.__i18nBridge||e.__i18n)try{var r=e.i18n&&e.i18n.messages?e.i18n.messages:{},n=e.__i18nBridge||e.__i18n;n.forEach(function(e){r=m(r,JSON.parse(e))}),e.i18n.messages=r}catch(e){}var l=e.i18n,a=l.sharedMessages;a&&s(a)&&(e.i18n.messages=m(e.i18n.messages,a)),this._i18n=new ye(e.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===e.i18n.sync||e.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),i&&i.onComponentInstanceCreated(this._i18n)}}else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof ye?this._i18n=this.$root.$i18n:e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof ye&&(this._i18n=e.parent.$i18n)},beforeMount:function(){var e=this.$options;e.i18n=e.i18n||(e.__i18nBridge||e.__i18n?{}:null),e.i18n?e.i18n instanceof ye?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):s(e.i18n)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof ye?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof ye&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:t,beforeDestroy:function(){if(this._i18n){var e=this;this.$nextTick(function(){e._subscribing&&(e._i18n.unsubscribeDataChanging(e),delete e._subscribing),e._i18nWatcher&&(e._i18nWatcher(),e._i18n.destroyVM(),delete e._i18nWatcher),e._localeWatcher&&(e._localeWatcher(),delete e._localeWatcher)})}}}}function k(e){var t;for(t in e)if("default"!==t)return!1;return Boolean(t)}function E(e,t){var o=t?z(t):{};if(!e)return o;e=e.filter(function(e){return e.tag||""!==e.text.trim()});var i=e.every(I);return e.reduce(i?A:T,o)}function z(e){return Array.isArray(e)?e.reduce(T,{}):Object.assign({},e)}function A(e,t){return t.data&&t.data.attrs&&t.data.attrs.place&&(e[t.data.attrs.place]=t),e}function T(e,t,o){return e[o]=t,e}function I(e){return Boolean(e.data&&e.data.attrs&&e.data.attrs.place)}function L(e,t,o){U(e,o)&&B(e,t,o)}function C(e,t,o,i){if(U(e,o)){var r=o.context.$i18n;F(e,o)&&_(t.value,t.oldValue)&&_(e._localeMessage,r.getLocaleMessage(r.locale))||B(e,t,o)}}function R(e,t,o,r){if(!o.context)return void i("Vue instance does not exists in VNode context");var n=o.context.$i18n||{};t.modifiers.preserve||n.preserveDirectiveContent||(e.textContent=""),e._vt=void 0,delete e._vt,e._locale=void 0,delete e._locale,e._localeMessage=void 0,delete e._localeMessage}function U(e,t){var o=t.context;return o?!!o.$i18n||(i("VueI18n instance does not exists in Vue instance"),!1):(i("Vue instance does not exists in VNode context"),!1)}function F(e,t){var o=t.context;return e._locale===o.$i18n.locale}function B(e,t,o){var r,n,l=t.value,a=S(l),s=a.path,c=a.locale,f=a.args,p=a.choice;if(!s&&!c&&!f)return void i("value type not supported");if(!s)return void i("`path` is required in v-t directive");var d=o.context;e._vt=e.textContent=null!=p?(r=d.$i18n).tc.apply(r,[s,p].concat($(c,f))):(n=d.$i18n).t.apply(n,[s].concat($(c,f))),e._locale=d.$i18n.locale,e._localeMessage=d.$i18n.getLocaleMessage(d.$i18n.locale)}function S(e){var t,o,i,r;return a(e)?t=e:s(e)&&(t=e.path,o=e.locale,i=e.args,r=e.choice),{path:t,locale:o,args:i,choice:r}}function $(e,t){var o=[];return e&&o.push(e),t&&(Array.isArray(t)||s(t))&&o.push(t),o}function D(e,t){void 0===t&&(t={bridge:!1}),D.installed=!0,q=e;q.version&&Number(q.version.split(".")[0]);w(q),q.mixin(y(t.bridge)),q.directive("t",{bind:L,update:C,unbind:R}),q.component(K.name,K),q.component(Q.name,Q),q.config.optionMergeStrategies.i18n=function(e,t){return void 0===t?e:t}}function O(e){for(var t=[],o=0,i="";o0)p--,f=se,d[ie]();else{if(p=0,void 0===o)return!1;if(!1===(o=Y(o)))return!1;d[re]()}};null!==f;)if(c++,"\\"!==(t=e[c])||!function(){var t=e[c+1];if(f===ce&&"'"===t||f===fe&&'"'===t)return c++,i="\\"+t,d[ie](),!0}()){if(r=P(t),a=ue[f],(n=a[r]||a.else||de)===de)return;if(f=n[0],(l=d[n[1]])&&(i=n[2],i=void 0===i?t:i,!1===l()))return;if(f===pe)return s}}/*! +!function(n,l){i=l,void 0!==(r="function"==typeof i?i.call(t,o,t,e):i)&&(e.exports=r)}(0,function(){"use strict";function e(t,o,i){if(void 0===o)return e.get(t);null===o?e.remove(t):e.set(t,o,i)}function t(e){return e.replace(/[.*+?^$|[\](){}\\-]/g,"\\$&")}function o(e){var t="";for(var o in e)if(e.hasOwnProperty(o)){if("expires"===o){var r=e[o];"object"!=typeof r&&(r+="number"==typeof r?"D":"",r=i(r)),e[o]=r.toUTCString()}if("secure"===o){e[o]&&(t+=";"+o);continue}t+=";"+o+"="+e[o]}return e.hasOwnProperty("path")||(t+=";path=/"),t}function i(e){var t=new Date,o=e.charAt(e.length-1),i=parseInt(e,10);switch(o){case"Y":t.setFullYear(t.getFullYear()+i);break;case"M":t.setMonth(t.getMonth()+i);break;case"D":t.setDate(t.getDate()+i);break;case"h":t.setHours(t.getHours()+i);break;case"m":t.setMinutes(t.getMinutes()+i);break;case"s":t.setSeconds(t.getSeconds()+i);break;default:t=new Date(e)}return t}return e.enabled=function(){var t,o="__test_key";return document.cookie=o+"=1",t=!!document.cookie,t&&e.remove(o),t},e.get=function(e,o){if("string"!=typeof e||!e)return null;e="(?:^|; )"+t(e)+"(?:=([^;]*?))?(?:;|$)";var i=new RegExp(e),r=i.exec(document.cookie);return null!==r?o?r[1]:decodeURIComponent(r[1]):null},e.getRaw=function(t){return e.get(t,!0)},e.set=function(e,t,i,r){!0!==i&&(r=i,i=!1),r=o(r?r:{});var n=e+"="+(i?t:encodeURIComponent(t))+r;document.cookie=n},e.setRaw=function(t,o,i){e.set(t,o,!0,i)},e.remove=function(t){e.set(t,"a",{expires:new Date})},e})},function(e,t,o){e.exports=o.p+"732389ded34cb9c52dd88271f1345af9.ttf"},function(e,t,o){e.exports=o.p+"535877f50039c0cb49a6196a5b7517cd.woff"},function(e,t,o){"use strict";function i(e,t){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+e),t&&console.warn(t.stack))}function r(e,t){"undefined"!=typeof console&&(console.error("[vue-i18n] "+e),t&&console.error(t.stack))}function n(e){return null!==e&&"object"==typeof e}function l(e){return"boolean"==typeof e}function a(e){return"string"==typeof e}function s(e){return X.call(e)===G}function c(e){return null===e||void 0===e}function f(e){return"function"==typeof e}function p(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];var o=null,i=null;return 1===e.length?n(e[0])||Z(e[0])?i=e[0]:"string"==typeof e[0]&&(o=e[0]):2===e.length&&("string"==typeof e[0]&&(o=e[0]),(n(e[1])||Z(e[1]))&&(i=e[1])),{locale:o,params:i}}function d(e){return JSON.parse(JSON.stringify(e))}function u(e,t){if(e.delete(t))return e}function h(e){var t=[];return e.forEach(function(e){return t.push(e)}),t}function g(e,t){return!!~e.indexOf(t)}function b(e,t){return J.call(e,t)}function m(e){for(var t=arguments,o=Object(e),i=1;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function v(e){return null!=e&&Object.keys(e).forEach(function(t){"string"==typeof e[t]&&(e[t]=x(e[t]))}),e}function w(e){e.prototype.hasOwnProperty("$i18n")||Object.defineProperty(e.prototype,"$i18n",{get:function(){return this._i18n}}),e.prototype.$t=function(e){for(var t=[],o=arguments.length-1;o-- >0;)t[o]=arguments[o+1];var i=this.$i18n;return i._t.apply(i,[e,i.locale,i._getMessages(),this].concat(t))},e.prototype.$tc=function(e,t){for(var o=[],i=arguments.length-2;i-- >0;)o[i]=arguments[i+2];var r=this.$i18n;return r._tc.apply(r,[e,r.locale,r._getMessages(),this,t].concat(o))},e.prototype.$te=function(e,t){var o=this.$i18n;return o._te(e,o.locale,o._getMessages(),t)},e.prototype.$d=function(e){for(var t,o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return(t=this.$i18n).d.apply(t,[e].concat(o))},e.prototype.$n=function(e){for(var t,o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return(t=this.$i18n).n.apply(t,[e].concat(o))}}function y(e){function t(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===e&&(e=!1),e?{mounted:t}:{beforeCreate:function(){var e=this.$options;if(e.i18n=e.i18n||(e.__i18nBridge||e.__i18n?{}:null),e.i18n){if(e.i18n instanceof ye){if(e.__i18nBridge||e.__i18n)try{var t=e.i18n&&e.i18n.messages?e.i18n.messages:{},o=e.__i18nBridge||e.__i18n;o.forEach(function(e){t=m(t,JSON.parse(e))}),Object.keys(t).forEach(function(o){e.i18n.mergeLocaleMessage(o,t[o])})}catch(e){}this._i18n=e.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(s(e.i18n)){var i=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof ye?this.$root.$i18n:null;if(i&&(e.i18n.root=this.$root,e.i18n.formatter=i.formatter,e.i18n.fallbackLocale=i.fallbackLocale,e.i18n.formatFallbackMessages=i.formatFallbackMessages,e.i18n.silentTranslationWarn=i.silentTranslationWarn,e.i18n.silentFallbackWarn=i.silentFallbackWarn,e.i18n.pluralizationRules=i.pluralizationRules,e.i18n.preserveDirectiveContent=i.preserveDirectiveContent),e.__i18nBridge||e.__i18n)try{var r=e.i18n&&e.i18n.messages?e.i18n.messages:{},n=e.__i18nBridge||e.__i18n;n.forEach(function(e){r=m(r,JSON.parse(e))}),e.i18n.messages=r}catch(e){}var l=e.i18n,a=l.sharedMessages;a&&s(a)&&(e.i18n.messages=m(e.i18n.messages,a)),this._i18n=new ye(e.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===e.i18n.sync||e.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),i&&i.onComponentInstanceCreated(this._i18n)}}else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof ye?this._i18n=this.$root.$i18n:e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof ye&&(this._i18n=e.parent.$i18n)},beforeMount:function(){var e=this.$options;e.i18n=e.i18n||(e.__i18nBridge||e.__i18n?{}:null),e.i18n?e.i18n instanceof ye?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):s(e.i18n)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof ye?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof ye&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:t,beforeDestroy:function(){if(this._i18n){var e=this;this.$nextTick(function(){e._subscribing&&(e._i18n.unsubscribeDataChanging(e),delete e._subscribing),e._i18nWatcher&&(e._i18nWatcher(),e._i18n.destroyVM(),delete e._i18nWatcher),e._localeWatcher&&(e._localeWatcher(),delete e._localeWatcher)})}}}}function k(e){var t;for(t in e)if("default"!==t)return!1;return Boolean(t)}function E(e,t){var o=t?z(t):{};if(!e)return o;e=e.filter(function(e){return e.tag||""!==e.text.trim()});var i=e.every(L);return e.reduce(i?A:T,o)}function z(e){return Array.isArray(e)?e.reduce(T,{}):Object.assign({},e)}function A(e,t){return t.data&&t.data.attrs&&t.data.attrs.place&&(e[t.data.attrs.place]=t),e}function T(e,t,o){return e[o]=t,e}function L(e){return Boolean(e.data&&e.data.attrs&&e.data.attrs.place)}function I(e,t,o){U(e,o)&&B(e,t,o)}function C(e,t,o,i){if(U(e,o)){var r=o.context.$i18n;R(e,o)&&_(t.value,t.oldValue)&&_(e._localeMessage,r.getLocaleMessage(r.locale))||B(e,t,o)}}function F(e,t,o,r){if(!o.context)return void i("Vue instance does not exists in VNode context");var n=o.context.$i18n||{};t.modifiers.preserve||n.preserveDirectiveContent||(e.textContent=""),e._vt=void 0,delete e._vt,e._locale=void 0,delete e._locale,e._localeMessage=void 0,delete e._localeMessage}function U(e,t){var o=t.context;return o?!!o.$i18n||(i("VueI18n instance does not exists in Vue instance"),!1):(i("Vue instance does not exists in VNode context"),!1)}function R(e,t){var o=t.context;return e._locale===o.$i18n.locale}function B(e,t,o){var r,n,l=t.value,a=D(l),s=a.path,c=a.locale,f=a.args,p=a.choice;if(!s&&!c&&!f)return void i("value type not supported");if(!s)return void i("`path` is required in v-t directive");var d=o.context;e._vt=e.textContent=null!=p?(r=d.$i18n).tc.apply(r,[s,p].concat(S(c,f))):(n=d.$i18n).t.apply(n,[s].concat(S(c,f))),e._locale=d.$i18n.locale,e._localeMessage=d.$i18n.getLocaleMessage(d.$i18n.locale)}function D(e){var t,o,i,r;return a(e)?t=e:s(e)&&(t=e.path,o=e.locale,i=e.args,r=e.choice),{path:t,locale:o,args:i,choice:r}}function S(e,t){var o=[];return e&&o.push(e),t&&(Array.isArray(t)||s(t))&&o.push(t),o}function $(e,t){void 0===t&&(t={bridge:!1}),$.installed=!0,q=e;q.version&&Number(q.version.split(".")[0]);w(q),q.mixin(y(t.bridge)),q.directive("t",{bind:I,update:C,unbind:F}),q.component(K.name,K),q.component(Q.name,Q),q.config.optionMergeStrategies.i18n=function(e,t){return void 0===t?e:t}}function O(e){for(var t=[],o=0,i="";o0)p--,f=se,d[ie]();else{if(p=0,void 0===o)return!1;if(!1===(o=Y(o)))return!1;d[re]()}};null!==f;)if(c++,"\\"!==(t=e[c])||!function(){var t=e[c+1];if(f===ce&&"'"===t||f===fe&&'"'===t)return c++,i="\\"+t,d[ie](),!0}()){if(r=P(t),a=ue[f],(n=a[r]||a.else||de)===de)return;if(f=n[0],(l=d[n[1]])&&(i=n[2],i=void 0===i?t:i,!1===l()))return;if(f===pe)return s}}/*! * vue-i18n v8.28.2 * (c) 2022 kazuya kawaguchi * Released under the MIT License. */ -var q,H=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"],W=["dateStyle","timeStyle","calendar","localeMatcher","hour12","hourCycle","timeZone","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"],Z=Array.isArray,X=Object.prototype.toString,G="[object Object]",J=Object.prototype.hasOwnProperty,K={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(e,t){var o=t.data,i=t.parent,r=t.props,n=t.slots,l=i.$i18n;if(l){var a=r.path,s=r.locale,c=r.places,f=n(),p=l.i(a,s,k(f)||c?E(f.default,c):f),d=r.tag&&!0!==r.tag||!1===r.tag?r.tag:"span";return d?e(d,o,p):p}}},Q={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(e,t){var o=t.props,i=t.parent,r=t.data,l=i.$i18n;if(!l)return null;var s=null,c=null;a(o.format)?s=o.format:n(o.format)&&(o.format.key&&(s=o.format.key),c=Object.keys(o.format).reduce(function(e,t){var i;return b(H,t)?Object.assign({},e,(i={},i[t]=o.format[t],i)):e},null));var f=o.locale||l.locale,p=l._ntp(o.value,f,s,c),d=p.map(function(e,t){var o,i=r.scopedSlots&&r.scopedSlots[e.type];return i?i((o={},o[e.type]=e.value,o.index=t,o.parts=p,o)):e.value}),u=o.tag&&!0!==o.tag||!1===o.tag?o.tag:"span";return u?e(u,{attrs:r.attrs,class:r.class,staticClass:r.staticClass},d):d}},ee=function(){this._caches=Object.create(null)};ee.prototype.interpolate=function(e,t){if(!t)return[e];var o=this._caches[e];return o||(o=O(e),this._caches[e]=o),N(o,t)};var te=/^(?:\d)+/,oe=/^(?:\w)+/,ie=0,re=1,ne=2,le=3,ae=0,se=4,ce=5,fe=6,pe=7,de=8,ue=[];ue[ae]={ws:[ae],ident:[3,ie],"[":[se],eof:[pe]},ue[1]={ws:[1],".":[2],"[":[se],eof:[pe]},ue[2]={ws:[2],ident:[3,ie],0:[3,ie],number:[3,ie]},ue[3]={ident:[3,ie],0:[3,ie],number:[3,ie],ws:[1,re],".":[2,re],"[":[se,re],eof:[pe,re]},ue[se]={"'":[ce,ie],'"':[fe,ie],"[":[se,ne],"]":[1,le],eof:de,else:[se,ie]},ue[ce]={"'":[se,ie],eof:de,else:[ce,ie]},ue[fe]={'"':[se,ie],eof:de,else:[fe,ie]};var he=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/,be=function(){this._cache=Object.create(null)};be.prototype.parsePath=function(e){var t=this._cache[e];return t||(t=V(e))&&(this._cache[e]=t),t||[]},be.prototype.getPathValue=function(e,t){if(!n(e))return null;var o=this.parsePath(t);if(0===o.length)return null;for(var i=o.length,r=e,l=0;l/,me=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,_e=/^@(?:\.([a-zA-Z]+))?:/,xe=/[()]/g,ve={upper:function(e){return e.toLocaleUpperCase()},lower:function(e){return e.toLocaleLowerCase()},capitalize:function(e){return""+e.charAt(0).toLocaleUpperCase()+e.substr(1)}},we=new ee,ye=function(e){var t=this;void 0===e&&(e={}),!q&&"undefined"!=typeof window&&window.Vue&&D(window.Vue);var o=e.locale||"en-US",i=!1!==e.fallbackLocale&&(e.fallbackLocale||"en-US"),r=e.messages||{},n=e.dateTimeFormats||e.datetimeFormats||{},l=e.numberFormats||{};this._vm=null,this._formatter=e.formatter||we,this._modifiers=e.modifiers||{},this._missing=e.missing||null,this._root=e.root||null,this._sync=void 0===e.sync||!!e.sync,this._fallbackRoot=void 0===e.fallbackRoot||!!e.fallbackRoot,this._fallbackRootWithEmptyString=void 0===e.fallbackRootWithEmptyString||!!e.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==e.formatFallbackMessages&&!!e.formatFallbackMessages,this._silentTranslationWarn=void 0!==e.silentTranslationWarn&&e.silentTranslationWarn,this._silentFallbackWarn=void 0!==e.silentFallbackWarn&&!!e.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new be,this._dataListeners=new Set,this._componentInstanceCreatedListener=e.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==e.preserveDirectiveContent&&!!e.preserveDirectiveContent,this.pluralizationRules=e.pluralizationRules||{},this._warnHtmlInMessage=e.warnHtmlInMessage||"off",this._postTranslation=e.postTranslation||null,this._escapeParameterHtml=e.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in e&&(this.__VUE_I18N_BRIDGE__=e.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(e,o){var i=Object.getPrototypeOf(t);if(i&&i.getChoiceIndex){return i.getChoiceIndex.call(t,e,o)}return t.locale in t.pluralizationRules?t.pluralizationRules[t.locale].apply(t,[e,o]):function(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}(e,o)},this._exist=function(e,o){return!(!e||!o)&&(!c(t._path.getPathValue(e,o))||!!e[o])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(r).forEach(function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,r[e])}),this._initVM({locale:o,fallbackLocale:i,messages:r,dateTimeFormats:n,numberFormats:l})},ke={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};ye.prototype._checkLocaleMessage=function(e,t,o){var n=[],l=function(e,t,o,n){if(s(o))Object.keys(o).forEach(function(i){var r=o[i];s(r)?(n.push(i),n.push("."),l(e,t,r,n),n.pop(),n.pop()):(n.push(i),l(e,t,r,n),n.pop())});else if(Z(o))o.forEach(function(o,i){s(o)?(n.push("["+i+"]"),n.push("."),l(e,t,o,n),n.pop(),n.pop()):(n.push("["+i+"]"),l(e,t,o,n),n.pop())});else if(a(o)){var c=ge.test(o);if(c){var f="Detected HTML in message '"+o+"' of keypath '"+n.join("")+"' at '"+t+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===e?i(f):"error"===e&&r(f)}}};l(t,e,o,n)},ye.prototype._initVM=function(e){var t=q.config.silent;q.config.silent=!0,this._vm=new q({data:e,__VUE18N__INSTANCE__:!0}),q.config.silent=t},ye.prototype.destroyVM=function(){this._vm.$destroy()},ye.prototype.subscribeDataChanging=function(e){this._dataListeners.add(e)},ye.prototype.unsubscribeDataChanging=function(e){u(this._dataListeners,e)},ye.prototype.watchI18nData=function(){var e=this;return this._vm.$watch("$data",function(){for(var t=h(e._dataListeners),o=t.length;o--;)q.nextTick(function(){t[o]&&t[o].$forceUpdate()})},{deep:!0})},ye.prototype.watchLocale=function(e){if(e){if(!this.__VUE_I18N_BRIDGE__)return null;var t=this,o=this._vm;return this.vm.$watch("locale",function(i){o.$set(o,"locale",i),t.__VUE_I18N_BRIDGE__&&e&&(e.locale.value=i),o.$forceUpdate()},{immediate:!0})}if(!this._sync||!this._root)return null;var i=this._vm;return this._root.$i18n.vm.$watch("locale",function(e){i.$set(i,"locale",e),i.$forceUpdate()},{immediate:!0})},ye.prototype.onComponentInstanceCreated=function(e){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(e,this)},ke.vm.get=function(){return this._vm},ke.messages.get=function(){return d(this._getMessages())},ke.dateTimeFormats.get=function(){return d(this._getDateTimeFormats())},ke.numberFormats.get=function(){return d(this._getNumberFormats())},ke.availableLocales.get=function(){return Object.keys(this.messages).sort()},ke.locale.get=function(){return this._vm.locale},ke.locale.set=function(e){this._vm.$set(this._vm,"locale",e)},ke.fallbackLocale.get=function(){return this._vm.fallbackLocale},ke.fallbackLocale.set=function(e){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",e)},ke.formatFallbackMessages.get=function(){return this._formatFallbackMessages},ke.formatFallbackMessages.set=function(e){this._formatFallbackMessages=e},ke.missing.get=function(){return this._missing},ke.missing.set=function(e){this._missing=e},ke.formatter.get=function(){return this._formatter},ke.formatter.set=function(e){this._formatter=e},ke.silentTranslationWarn.get=function(){return this._silentTranslationWarn},ke.silentTranslationWarn.set=function(e){this._silentTranslationWarn=e},ke.silentFallbackWarn.get=function(){return this._silentFallbackWarn},ke.silentFallbackWarn.set=function(e){this._silentFallbackWarn=e},ke.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},ke.preserveDirectiveContent.set=function(e){this._preserveDirectiveContent=e},ke.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},ke.warnHtmlInMessage.set=function(e){var t=this,o=this._warnHtmlInMessage;if(this._warnHtmlInMessage=e,o!==e&&("warn"===e||"error"===e)){var i=this._getMessages();Object.keys(i).forEach(function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,i[e])})}},ke.postTranslation.get=function(){return this._postTranslation},ke.postTranslation.set=function(e){this._postTranslation=e},ke.sync.get=function(){return this._sync},ke.sync.set=function(e){this._sync=e},ye.prototype._getMessages=function(){return this._vm.messages},ye.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},ye.prototype._getNumberFormats=function(){return this._vm.numberFormats},ye.prototype._warnDefault=function(e,t,o,i,r,n){if(!c(o))return o;if(this._missing){var l=this._missing.apply(null,[e,t,i,r]);if(a(l))return l}if(this._formatFallbackMessages){var s=p.apply(void 0,r);return this._render(t,n,s.params,t)}return t},ye.prototype._isFallbackRoot=function(e){return(this._fallbackRootWithEmptyString?!e:c(e))&&!c(this._root)&&this._fallbackRoot},ye.prototype._isSilentFallbackWarn=function(e){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(e):this._silentFallbackWarn},ye.prototype._isSilentFallback=function(e,t){return this._isSilentFallbackWarn(t)&&(this._isFallbackRoot()||e!==this.fallbackLocale)},ye.prototype._isSilentTranslationWarn=function(e){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(e):this._silentTranslationWarn},ye.prototype._interpolate=function(e,t,o,i,r,n,l){if(!t)return null;var p=this._path.getPathValue(t,o);if(Z(p)||s(p))return p;var d;if(c(p)){if(!s(t))return null;if(d=t[o],!a(d)&&!f(d))return null}else{if(!a(p)&&!f(p))return null;d=p}return a(d)&&(d.indexOf("@:")>=0||d.indexOf("@.")>=0)&&(d=this._link(e,t,d,i,"raw",n,l)),this._render(d,r,n,o)},ye.prototype._link=function(e,t,o,i,r,n,l){var a=o,s=a.match(me);for(var c in s)if(s.hasOwnProperty(c)){var f=s[c],p=f.match(_e),d=p[0],u=p[1],h=f.replace(d,"").replace(xe,"");if(b(l,h))return a;l.push(h);var g=this._interpolate(e,t,h,i,"raw"===r?"string":r,"raw"===r?void 0:n,l);if(this._isFallbackRoot(g)){if(!this._root)throw Error("unexpected error");var m=this._root.$i18n;g=m._translate(m._getMessages(),m.locale,m.fallbackLocale,h,i,r,n)}g=this._warnDefault(e,h,g,i,Z(n)?n:[n],r),this._modifiers.hasOwnProperty(u)?g=this._modifiers[u](g):ve.hasOwnProperty(u)&&(g=ve[u](g)),l.pop(),a=g?a.replace(f,g):a}return a},ye.prototype._createMessageContext=function(e,t,o,i){var r=this,l=Z(e)?e:[],a=n(e)?e:{},s=function(e){return l[e]},c=function(e){return a[e]},f=this._getMessages(),p=this.locale;return{list:s,named:c,values:e,formatter:t,path:o,messages:f,locale:p,linked:function(e){return r._interpolate(p,f[p]||{},e,null,i,void 0,[e])}}},ye.prototype._render=function(e,t,o,i){if(f(e))return e(this._createMessageContext(o,this._formatter||we,i,t));var r=this._formatter.interpolate(e,o,i);return r||(r=we.interpolate(e,o,i)),"string"!==t||a(r)?r:r.join("")},ye.prototype._appendItemToChain=function(e,t,o){var i=!1;return b(e,t)||(i=!0,t&&(i="!"!==t[t.length-1],t=t.replace(/!/g,""),e.push(t),o&&o[t]&&(i=o[t]))),i},ye.prototype._appendLocaleToChain=function(e,t,o){var i,r=t.split("-");do{var n=r.join("-");i=this._appendItemToChain(e,n,o),r.splice(-1,1)}while(r.length&&!0===i);return i},ye.prototype._appendBlockToChain=function(e,t,o){for(var i=!0,r=0;r0;)n[l]=arguments[l+4];if(!e)return"";var a=p.apply(void 0,n);this._escapeParameterHtml&&(a.params=v(a.params));var s=a.locale||t,c=this._translate(o,s,this.fallbackLocale,e,i,"string",a.params);if(this._isFallbackRoot(c)){if(!this._root)throw Error("unexpected error");return(r=this._root).$t.apply(r,[e].concat(n))}return c=this._warnDefault(s,e,c,i,n,"string"),this._postTranslation&&null!==c&&void 0!==c&&(c=this._postTranslation(c,e)),c},ye.prototype.t=function(e){for(var t,o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return(t=this)._t.apply(t,[e,this.locale,this._getMessages(),null].concat(o))},ye.prototype._i=function(e,t,o,i,r){var n=this._translate(o,t,this.fallbackLocale,e,i,"raw",r);if(this._isFallbackRoot(n)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(e,t,r)}return this._warnDefault(t,e,n,i,[r],"raw")},ye.prototype.i=function(e,t,o){return e?(a(t)||(t=this.locale),this._i(e,t,this._getMessages(),null,o)):""},ye.prototype._tc=function(e,t,o,i,r){for(var n,l=[],a=arguments.length-5;a-- >0;)l[a]=arguments[a+5];if(!e)return"";void 0===r&&(r=1);var s={count:r,n:r},c=p.apply(void 0,l);return c.params=Object.assign(s,c.params),l=null===c.locale?[c.params]:[c.locale,c.params],this.fetchChoice((n=this)._t.apply(n,[e,t,o,i].concat(l)),r)},ye.prototype.fetchChoice=function(e,t){if(!e||!a(e))return null;var o=e.split("|");return t=this.getChoiceIndex(t,o.length),o[t]?o[t].trim():e},ye.prototype.tc=function(e,t){for(var o,i=[],r=arguments.length-2;r-- >0;)i[r]=arguments[r+2];return(o=this)._tc.apply(o,[e,this.locale,this._getMessages(),null,t].concat(i))},ye.prototype._te=function(e,t,o){for(var i=[],r=arguments.length-3;r-- >0;)i[r]=arguments[r+3];var n=p.apply(void 0,i).locale||t;return this._exist(o[n],e)},ye.prototype.te=function(e,t){return this._te(e,this.locale,this._getMessages(),t)},ye.prototype.getLocaleMessage=function(e){return d(this._vm.messages[e]||{})},ye.prototype.setLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,t)},ye.prototype.mergeLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,m(void 0!==this._vm.messages[e]&&Object.keys(this._vm.messages[e]).length?Object.assign({},this._vm.messages[e]):{},t))},ye.prototype.getDateTimeFormat=function(e){return d(this._vm.dateTimeFormats[e]||{})},ye.prototype.setDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,t),this._clearDateTimeFormat(e,t)},ye.prototype.mergeDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,m(this._vm.dateTimeFormats[e]||{},t)),this._clearDateTimeFormat(e,t)},ye.prototype._clearDateTimeFormat=function(e,t){for(var o in t){var i=e+"__"+o;this._dateTimeFormatters.hasOwnProperty(i)&&delete this._dateTimeFormatters[i]}},ye.prototype._localizeDateTime=function(e,t,o,i,r,n){for(var l=t,a=i[l],s=this._getLocaleChain(t,o),f=0;f0;)t[o]=arguments[o+1];var i=this.locale,r=null,l=null;return 1===t.length?(a(t[0])?r=t[0]:n(t[0])&&(t[0].locale&&(i=t[0].locale),t[0].key&&(r=t[0].key)),l=Object.keys(t[0]).reduce(function(e,o){var i;return b(W,o)?Object.assign({},e,(i={},i[o]=t[0][o],i)):e},null)):2===t.length&&(a(t[0])&&(r=t[0]),a(t[1])&&(i=t[1])),this._d(e,i,r,l)},ye.prototype.getNumberFormat=function(e){return d(this._vm.numberFormats[e]||{})},ye.prototype.setNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,t),this._clearNumberFormat(e,t)},ye.prototype.mergeNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,m(this._vm.numberFormats[e]||{},t)),this._clearNumberFormat(e,t)},ye.prototype._clearNumberFormat=function(e,t){for(var o in t){var i=e+"__"+o;this._numberFormatters.hasOwnProperty(i)&&delete this._numberFormatters[i]}},ye.prototype._getNumberFormatter=function(e,t,o,i,r,n){for(var l=t,a=i[l],s=this._getLocaleChain(t,o),f=0;f0;)t[o]=arguments[o+1];var i=this.locale,r=null,l=null;return 1===t.length?a(t[0])?r=t[0]:n(t[0])&&(t[0].locale&&(i=t[0].locale),t[0].key&&(r=t[0].key),l=Object.keys(t[0]).reduce(function(e,o){var i;return b(H,o)?Object.assign({},e,(i={},i[o]=t[0][o],i)):e},null)):2===t.length&&(a(t[0])&&(r=t[0]),a(t[1])&&(i=t[1])),this._n(e,i,r,l)},ye.prototype._ntp=function(e,t,o,i){if(!ye.availabilities.numberFormat)return[];if(!o){return(i?new Intl.NumberFormat(t,i):new Intl.NumberFormat(t)).formatToParts(e)}var r=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),o,i),n=r&&r.formatToParts(e);if(this._isFallbackRoot(n)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(e,t,o,i)}return n||[]},Object.defineProperties(ye.prototype,ke);var Ee;Object.defineProperty(ye,"availabilities",{get:function(){if(!Ee){var e="undefined"!=typeof Intl;Ee={dateTimeFormat:e&&void 0!==Intl.DateTimeFormat,numberFormat:e&&void 0!==Intl.NumberFormat}}return Ee}}),ye.install=D,ye.version="8.28.2",t.a=ye},function(e,t,o){"use strict";function i(e){o(229)}var r=o(66),n=o(226),l=o(97),a=i,s=l(r.a,n.a,!1,a,null,null);t.a=s.exports},function(e,t,o){"use strict";var i=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{attrs:{id:"app"}},[o("div",{staticClass:"action-right"},[o("el-dropdown",{staticClass:"international",attrs:{trigger:"click"},on:{command:e.handle_set_language}},[o("div",[o("el-button",{attrs:{size:"mini",type:"primary",icon:"el-icon-setting"},on:{click:function(t){e.dialogVisible=!0}}},[e._v(e._s(e.$t("lang.choose")))])],1),e._v(" "),o("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[o("el-dropdown-item",{attrs:{Enabled:"language==='zh_CN'",command:"zh_CN",divided:""}},[e._v("\n "+e._s(e.$t("lang.zhcn"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='zh_TW'",command:"zh_TW",divided:""}},[e._v("\n "+e._s(e.$t("lang.zhtw"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='en'",command:"en",divided:""}},[e._v("\n "+e._s(e.$t("lang.en"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='es'",command:"es",divided:""}},[e._v("\n "+e._s(e.$t("lang.es"))+"\n ")])],1)],1)],1),e._v(" "),o("h1",{staticClass:"header"},[e._v("Pixl.js")]),e._v(" "),o("el-row",[o("el-col",{attrs:{span:14}},[o("div",{staticClass:"action-left"},[o("el-button-group",[o("el-button",{attrs:{size:"mini",type:"primary",icon:"el-icon-upload",disabled:e.btn_disabled()},on:{click:e.on_btn_upload}},[e._v(e._s(e.$t("menu.upload")))])],1),e._v(" "),o("el-button-group",[o("el-button",{attrs:{size:"mini",icon:"el-icon-plus",disabled:e.btn_disabled()},on:{click:e.on_btn_new_folder}},[e._v(e._s(e.$t("menu.newfolder")))]),e._v(" "),o("el-button",{attrs:{size:"mini",type:"danger",icon:"el-icon-delete",disabled:e.btn_disabled()},on:{click:e.on_btn_remove}},[e._v(e._s(e.$t("menu.del")))])],1),e._v(" "),o("el-button-group",[o("el-button",{attrs:{size:"mini",icon:"el-icon-top",disabled:e.btn_disabled()},on:{click:e.on_btn_up}},[e._v(e._s(e.$t("menu.up")))]),e._v(" "),o("el-button",{attrs:{size:"mini",icon:"el-icon-refresh",disabled:!e.connected},on:{click:e.on_btn_refresh}},[e._v(e._s(e.$t("menu.refresh")))])],1)],1)]),e._v(" "),o("el-col",{attrs:{span:10}},[o("div",{staticClass:"action-right"},[e.version?o("el-button",{attrs:{type:"success",size:"mini",icon:"el-icon-warning"}},[e._v(e._s(e.version))]):e._e(),e._v(" "),o("el-button-group",[o("el-button",{attrs:{type:"info",size:"mini",icon:"el-icon-cpu",disabled:!e.connected},on:{click:e.on_btn_enter_dfu}},[e._v(e._s(e.$t("menu.dfu")))]),e._v(" "),o("el-button",{attrs:{type:e.connBtnType,size:"mini",icon:"el-icon-connection"},on:{click:e.on_btn_ble_connect}},[e._v(e._s(e.connBtnText))])],1)],1)])],1),e._v(" "),o("el-row",[o("el-col",{attrs:{span:24}},[o("div",{staticClass:"folder-path"},[o("el-breadcrumb",{attrs:{separator:"/"}},[o("el-breadcrumb-item",[e._v(e._s(e.current_dir))])],1)],1)])],1),e._v(" "),o("div",[o("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.table_loading,expression:"table_loading"}],ref:"multipleTable",staticStyle:{width:"100%"},attrs:{data:e.tableData,"tooltip-effect":"dark","element-loading-text":e.$t("status.loading"),"element-loading-spinner":"el-icon-loading","cell-class-name":"file-cell","default-sort":{prop:"name",order:"ascending"}},on:{"selection-change":e.on_table_selection_change,"sort-change":e.on_table_sort_change}},[o("el-table-column",{attrs:{type:"selection",width:"42"}}),e._v(" "),o("el-table-column",{attrs:{prop:"name",label:e.$t("labels.name"),sortable:"",width:"320"},on:{"sort-method":e.sort_table_row_name},scopedSlots:e._u([{key:"default",fn:function(t){return[o("i",{class:t.row.icon}),e._v(" "),o("el-link",{attrs:{underline:!1},on:{click:function(o){return e.handle_name_click(t.$index,t.row)}}},[e._v("\n "+e._s(t.row.name))])]}}])}),e._v(" "),o("el-table-column",{attrs:{prop:"size",label:e.$t("labels.size"),sortable:"",width:"150"}}),e._v(" "),o("el-table-column",{attrs:{prop:"type",label:e.$t("labels.type"),sortable:"",width:"80"}}),e._v(" "),o("el-table-column",{attrs:{prop:"notes",label:e.$t("labels.remark"),sortable:""}}),e._v(" "),o("el-table-column",{attrs:{label:"",fixed:"right",width:"40"},scopedSlots:e._u([{key:"default",fn:function(t){return[o("el-dropdown",[o("span",{staticClass:"el-dropdown-link"},[o("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),e._v(" "),o("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["DRIVE"!=t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_remove(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.del")))]):e._e(),e._v(" "),"DRIVE"!=t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_rename(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.rename")))]):e._e(),e._v(" "),"DRIVE"!=t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_meta(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.prop")))]):e._e(),e._v(" "),"DRIVE"==t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_format(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.format")))]):e._e()],1)],1)]}}])})],1)],1),e._v(" "),o("el-dialog",{attrs:{title:e.$t("properties.title"),visible:e.meta_diag_visible,width:"30%"},on:{"update:visible":function(t){e.meta_diag_visible=t}}},[o("el-form",{ref:"form",attrs:{model:e.meta_form,"label-width":"80px"}},[o("el-form-item",{attrs:{label:e.$t("properties.remark")}},[o("el-input",{model:{value:e.meta_form.notes,callback:function(t){e.$set(e.meta_form,"notes",t)},expression:"meta_form.notes"}})],1),e._v(" "),o("el-form-item",{attrs:{label:e.$t("properties.attrib")}},[o("el-checkbox",{attrs:{label:e.$t("properties.hide")},model:{value:e.meta_form.flags.hide,callback:function(t){e.$set(e.meta_form.flags,"hide",t)},expression:"meta_form.flags.hide"}})],1)],1),e._v(" "),o("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[o("el-button",{on:{click:function(t){e.meta_diag_visible=!1}}},[e._v(e._s(e.$t("btn.cancel")))]),e._v(" "),o("el-button",{attrs:{type:"primary"},on:{click:e.on_diag_meta_close}},[e._v(e._s(e.$t("btn.ok")))])],1)],1),e._v(" "),o("el-dialog",{attrs:{title:e.$t("upload.title"),visible:e.upload_diag_visible,width:"30%","before-close":e.on_upload_diag_close},on:{"update:visible":function(t){e.upload_diag_visible=t}}},[o("div",[o("el-upload",{ref:"upload",staticClass:"upload-demo",attrs:{drag:"",action:"https://jsonplaceholder.typicode.com/posts/",multiple:"","http-request":e.on_upload_request,"on-error":e.on_upload_error}},[o("i",{staticClass:"el-icon-upload"}),e._v(" "),o("div",{staticClass:"el-upload__text"},[e._v(e._s(e.$t("upload.drag"))+" "),o("em",[e._v(e._s(e.$t("upload.click")))])]),e._v(" "),o("div",{staticClass:"el-upload__tip",attrs:{slot:"tip"},slot:"tip"},[o("ul",[o("li",[e._v(e._s(e.$t("upload.maxsize")))]),e._v(" "),o("li",[e._v(e._s(e.$t("upload.maxname")))])])])])],1),e._v(" "),o("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"})])],1)},r=[],n={render:i,staticRenderFns:r};t.a=n},function(e,t,o){"use strict";var i=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{attrs:{id:"app"}},[o("router-view")],1)},r=[],n={render:i,staticRenderFns:r};t.a=n},function(e,t,o){"use strict";function i(e,t){for(var o in t)e[o]=t[o];return e}function r(e){try{return decodeURIComponent(e)}catch(e){}return e}function n(e,t,o){void 0===t&&(t={});var i,r=o||l;try{i=r(e||"")}catch(e){i={}}for(var n in t){var a=t[n];i[n]=Array.isArray(a)?a.map(He):He(a)}return i}function l(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach(function(e){var o=e.replace(/\+/g," ").split("="),i=r(o.shift()),n=o.length>0?r(o.join("=")):null;void 0===t[i]?t[i]=n:Array.isArray(t[i])?t[i].push(n):t[i]=[t[i],n]}),t):t}function a(e){var t=e?Object.keys(e).map(function(t){var o=e[t];if(void 0===o)return"";if(null===o)return qe(t);if(Array.isArray(o)){var i=[];return o.forEach(function(e){void 0!==e&&(null===e?i.push(qe(t)):i.push(qe(t)+"="+qe(e)))}),i.join("&")}return qe(t)+"="+qe(o)}).filter(function(e){return e.length>0}).join("&"):null;return t?"?"+t:""}function s(e,t,o,i){var r=i&&i.options.stringifyQuery,n=t.query||{};try{n=c(n)}catch(e){}var l={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:n,params:t.params||{},fullPath:p(t,r),matched:e?f(e):[]};return o&&(l.redirectedFrom=p(o,r)),Object.freeze(l)}function c(e){if(Array.isArray(e))return e.map(c);if(e&&"object"==typeof e){var t={};for(var o in e)t[o]=c(e[o]);return t}return e}function f(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function p(e,t){var o=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;void 0===r&&(r="");var n=t||a;return(o||"/")+n(i)+r}function d(e,t,o){return t===Ze?e===t:!!t&&(e.path&&t.path?e.path.replace(We,"")===t.path.replace(We,"")&&(o||e.hash===t.hash&&u(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(o||e.hash===t.hash&&u(e.query,t.query)&&u(e.params,t.params))))}function u(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var o=Object.keys(e).sort(),i=Object.keys(t).sort();return o.length===i.length&&o.every(function(o,r){var n=e[o];if(i[r]!==o)return!1;var l=t[o];return null==n||null==l?n===l:"object"==typeof n&&"object"==typeof l?u(n,l):String(n)===String(l)})}function h(e,t){return 0===e.path.replace(We,"/").indexOf(t.path.replace(We,"/"))&&(!t.hash||e.hash===t.hash)&&b(e.query,t.query)}function b(e,t){for(var o in t)if(!(o in e))return!1;return!0}function g(e){for(var t=0;t=0&&(t=e.slice(i),e=e.slice(0,i));var r=e.indexOf("?");return r>=0&&(o=e.slice(r+1),e=e.slice(0,r)),{path:e,query:o,hash:t}}function w(e){return e.replace(/\/(?:\s*\/)+/g,"/")}function y(e,t){for(var o,i=[],r=0,n=0,l="",a=t&&t.delimiter||"/";null!=(o=ot.exec(e));){var s=o[0],c=o[1],f=o.index;if(l+=e.slice(n,f),n=f+s.length,c)l+=c[1];else{var p=e[n],d=o[2],u=o[3],h=o[4],b=o[5],g=o[6],m=o[7];l&&(i.push(l),l="");var _=null!=d&&null!=p&&p!==d,x="+"===g||"*"===g,v="?"===g||"*"===g,w=o[2]||a,y=h||b;i.push({name:u||r++,prefix:d||"",delimiter:w,optional:v,repeat:x,partial:_,asterisk:!!m,pattern:y?I(y):m?".*":"[^"+T(w)+"]+?"})}}return n-1&&(r.params[s]=o.params[s]);return r.path=$(l.path,r.params,'named route "'+n+'"'),c(l,r,i)}if(r.path){r.params={};for(var f=0;f-1}function me(e,t){return ge(e)&&e._isRouter&&(null==t||e.type===t)}function _e(e,t,o){var i=function(r){r>=e.length?o():e[r]?t(e[r],function(){i(r+1)}):i(r+1)};i(0)}function xe(e){return function(t,o,i){var r=!1,n=0,l=null;ve(e,function(e,t,o,a){if("function"==typeof e&&void 0===e.cid){r=!0,n++;var s,c=ke(function(t){ye(t)&&(t=t.default),e.resolved="function"==typeof t?t:it.extend(t),o.components[a]=t,--n<=0&&i()}),f=ke(function(e){var t="Failed to resolve async component "+a+": "+e;l||(l=ge(e)?e:new Error(t),i(l))});try{s=e(c,f)}catch(e){f(e)}if(s)if("function"==typeof s.then)s.then(c,f);else{var p=s.component;p&&"function"==typeof p.then&&p.then(c,f)}}}),r||i()}}function ve(e,t){return we(e.map(function(e){return Object.keys(e.components).map(function(o){return t(e.components[o],e.instances[o],e,o)})}))}function we(e){return Array.prototype.concat.apply([],e)}function ye(e){return e.__esModule||mt&&"Module"===e[Symbol.toStringTag]}function ke(e){var t=!1;return function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];if(!t)return t=!0,e.apply(this,o)}}function Ee(e){if(!e)if(ct){var t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^https?:\/\/[^\/]+/,"")}else e="/";return"/"!==e.charAt(0)&&(e="/"+e),e.replace(/\/$/,"")}function ze(e,t){var o,i=Math.max(e.length,t.length);for(o=0;o=0?t.slice(0,o):t)+"#"+e}function Oe(e){ht?se(De(e)):window.location.hash=e}function Ne(e){ht?ce(De(e)):window.location.replace(De(e))}function Me(e,t){return e.push(t),function(){var o=e.indexOf(t);o>-1&&e.splice(o,1)}}function je(e,t,o){var i="hash"===o?"#"+t:t;return e?w(e+"/"+i):i}o.d(t,"a",function(){return Et});var Pe=/[!'()*]/g,Ye=function(e){return"%"+e.charCodeAt(0).toString(16)},Ve=/%2C/g,qe=function(e){return encodeURIComponent(e).replace(Pe,Ye).replace(Ve,",")},He=function(e){return null==e||"object"==typeof e?e:String(e)},We=/\/?$/,Ze=s(null,{path:"/"}),Xe={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var o=t.props,r=t.children,n=t.parent,l=t.data;l.routerView=!0;for(var a=n.$createElement,s=o.name,c=n.$route,f=n._routerViewCache||(n._routerViewCache={}),p=0,d=!1;n&&n._routerRoot!==n;){var u=n.$vnode?n.$vnode.data:{};u.routerView&&p++,u.keepAlive&&n._directInactive&&n._inactive&&(d=!0),n=n.$parent}if(l.routerViewDepth=p,d){var h=f[s],b=h&&h.component;return b?(h.configProps&&m(b,l,h.route,h.configProps),a(b,l,r)):a()}var _=c.matched[p],x=_&&_.components[s];if(!_||!x)return f[s]=null,a();f[s]={component:x},l.registerRouteInstance=function(e,t){var o=_.instances[s];(t&&o!==e||!t&&o===e)&&(_.instances[s]=t)},(l.hook||(l.hook={})).prepatch=function(e,t){_.instances[s]=t.componentInstance},l.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==_.instances[s]&&(_.instances[s]=e.componentInstance),g(c)};var v=_.props&&_.props[s];return v&&(i(f[s],{route:c,configProps:v}),m(x,l,c,v)),a(x,l,r)}},Ge=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)},Je=S,Ke=y,Qe=k,et=A,tt=B,ot=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");Je.parse=Ke,Je.compile=Qe,Je.tokensToFunction=et,Je.tokensToRegExp=tt;var it,rt=Object.create(null),nt=[String,Object],lt=[String,Array],at=function(){},st={name:"RouterLink",props:{to:{type:nt,required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:lt,default:"click"}},render:function(e){var t=this,o=this.$router,r=this.$route,n=o.resolve(this.to,r,this.append),l=n.location,a=n.route,c=n.href,f={},p=o.options.linkActiveClass,u=o.options.linkExactActiveClass,b=null==p?"router-link-active":p,g=null==u?"router-link-exact-active":u,m=null==this.activeClass?b:this.activeClass,_=null==this.exactActiveClass?g:this.exactActiveClass,x=a.redirectedFrom?s(null,D(a.redirectedFrom),null,o):a;f[_]=d(r,x,this.exactPath),f[m]=this.exact||this.exactPath?f[_]:h(r,x);var v=f[_]?this.ariaCurrentValue:null,w=function(e){O(e)&&(t.replace?o.replace(l,at):o.push(l,at))},y={click:O};Array.isArray(this.event)?this.event.forEach(function(e){y[e]=w}):y[this.event]=w;var k={class:f},E=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:a,navigate:w,isActive:f[m],isExactActive:f[_]});if(E){if(1===E.length)return E[0];if(E.length>1||!E.length)return 0===E.length?e():e("span",{},E)}if("a"===this.tag)k.on=y,k.attrs={href:c,"aria-current":v};else{var z=N(this.$slots.default);if(z){z.isStatic=!1;var A=z.data=i({},z.data);A.on=A.on||{};for(var T in A.on){var I=A.on[T];T in y&&(A.on[T]=Array.isArray(I)?I:[I])}for(var L in y)L in A.on?A.on[L].push(y[L]):A.on[L]=w;var C=z.data.attrs=i({},z.data.attrs);C.href=c,C["aria-current"]=v}else k.on=y}return e(this.tag,k,this.$slots.default)}},ct="undefined"!=typeof window,ft=ct&&window.performance&&window.performance.now?window.performance:Date,pt=Z(),dt=Object.create(null),ut=/^#\d/,ht=ct&&function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&(window.history&&"function"==typeof window.history.pushState)}(),bt={redirected:2,aborted:4,cancelled:8,duplicated:16},gt=["params","query","hash"],mt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,_t=function(e,t){this.router=e,this.base=Ee(t),this.current=Ze,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};_t.prototype.listen=function(e){this.cb=e},_t.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},_t.prototype.onError=function(e){this.errorCbs.push(e)},_t.prototype.transitionTo=function(e,t,o){var i,r=this;try{i=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach(function(t){t(e)}),e}var n=this.current;this.confirmTransition(i,function(){r.updateRoute(i),t&&t(i),r.ensureURL(),r.router.afterHooks.forEach(function(e){e&&e(i,n)}),r.ready||(r.ready=!0,r.readyCbs.forEach(function(e){e(i)}))},function(e){o&&o(e),e&&!r.ready&&(me(e,bt.redirected)&&n===Ze||(r.ready=!0,r.readyErrorCbs.forEach(function(t){t(e)})))})},_t.prototype.confirmTransition=function(e,t,o){var i=this,r=this.current;this.pending=e;var n=function(e){!me(e)&&ge(e)&&(i.errorCbs.length?i.errorCbs.forEach(function(t){t(e)}):console.error(e)),o&&o(e)},l=e.matched.length-1,a=r.matched.length-1;if(d(e,r)&&l===a&&e.matched[l]===r.matched[a])return this.ensureURL(),e.hash&&K(this.router,r,e,!1),n(pe(r,e));var s=ze(this.current.matched,e.matched),c=s.updated,f=s.deactivated,p=s.activated,u=[].concat(Ie(f),this.router.beforeHooks,Le(c),p.map(function(e){return e.beforeEnter}),xe(p)),h=function(t,o){if(i.pending!==e)return n(de(r,e));try{t(e,r,function(t){!1===t?(i.ensureURL(!0),n(ue(r,e))):ge(t)?(i.ensureURL(!0),n(t)):"string"==typeof t||"object"==typeof t&&("string"==typeof t.path||"string"==typeof t.name)?(n(fe(r,e)),"object"==typeof t&&t.replace?i.replace(t):i.push(t)):o(t)})}catch(e){n(e)}};_e(u,h,function(){_e(Re(p).concat(i.router.resolveHooks),h,function(){if(i.pending!==e)return n(de(r,e));i.pending=null,t(e),i.router.app&&i.router.app.$nextTick(function(){g(e)})})})},_t.prototype.updateRoute=function(e){this.current=e,this.cb&&this.cb(e)},_t.prototype.setupListeners=function(){},_t.prototype.teardown=function(){this.listeners.forEach(function(e){e()}),this.listeners=[],this.current=Ze,this.pending=null};var xt=function(e){function t(t,o){e.call(this,t,o),this._startLocation=Fe(this.base)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,o=t.options.scrollBehavior,i=ht&&o;i&&this.listeners.push(J());var r=function(){var o=e.current,r=Fe(e.base);e.current===Ze&&r===e._startLocation||e.transitionTo(r,function(e){i&&K(t,e,o,!0)})};window.addEventListener("popstate",r),this.listeners.push(function(){window.removeEventListener("popstate",r)})}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){se(w(i.base+e.fullPath)),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.replace=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){ce(w(i.base+e.fullPath)),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.ensureURL=function(e){if(Fe(this.base)!==this.current.fullPath){var t=w(this.base+this.current.fullPath);e?se(t):ce(t)}},t.prototype.getCurrentLocation=function(){return Fe(this.base)},t}(_t),vt=function(e){function t(t,o,i){e.call(this,t,o),i&&Be(this.base)||Se()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,o=t.options.scrollBehavior,i=ht&&o;i&&this.listeners.push(J());var r=function(){var t=e.current;Se()&&e.transitionTo($e(),function(o){i&&K(e.router,o,t,!0),ht||Ne(o.fullPath)})},n=ht?"popstate":"hashchange";window.addEventListener(n,r),this.listeners.push(function(){window.removeEventListener(n,r)})}},t.prototype.push=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){Oe(e.fullPath),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.replace=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){Ne(e.fullPath),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;$e()!==t&&(e?Oe(t):Ne(t))},t.prototype.getCurrentLocation=function(){return $e()},t}(_t),wt=function(e){function t(t,o){e.call(this,t,o),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,o){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index+1).concat(e),i.index++,t&&t(e)},o)},t.prototype.replace=function(e,t,o){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index).concat(e),t&&t(e)},o)},t.prototype.go=function(e){var t=this,o=this.index+e;if(!(o<0||o>=this.stack.length)){var i=this.stack[o];this.confirmTransition(i,function(){var e=t.current;t.index=o,t.updateRoute(i),t.router.afterHooks.forEach(function(t){t&&t(i,e)})},function(e){me(e,bt.duplicated)&&(t.index=o)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(_t),yt=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=q(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ht&&!1!==e.fallback,this.fallback&&(t="hash"),ct||(t="abstract"),this.mode=t,t){case"history":this.history=new xt(this,e.base);break;case"hash":this.history=new vt(this,e.base,this.fallback);break;case"abstract":this.history=new wt(this,e.base)}},kt={currentRoute:{configurable:!0}};yt.prototype.match=function(e,t,o){return this.matcher.match(e,t,o)},kt.currentRoute.get=function(){return this.history&&this.history.current},yt.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",function(){var o=t.apps.indexOf(e);o>-1&&t.apps.splice(o,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()}),!this.app){this.app=e;var o=this.history;if(o instanceof xt||o instanceof vt){var i=function(e){var i=o.current,r=t.options.scrollBehavior;ht&&r&&"fullPath"in e&&K(t,e,i,!1)},r=function(e){o.setupListeners(),i(e)};o.transitionTo(o.getCurrentLocation(),r,r)}o.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},yt.prototype.beforeEach=function(e){return Me(this.beforeHooks,e)},yt.prototype.beforeResolve=function(e){return Me(this.resolveHooks,e)},yt.prototype.afterEach=function(e){return Me(this.afterHooks,e)},yt.prototype.onReady=function(e,t){this.history.onReady(e,t)},yt.prototype.onError=function(e){this.history.onError(e)},yt.prototype.push=function(e,t,o){var i=this;if(!t&&!o&&"undefined"!=typeof Promise)return new Promise(function(t,o){i.history.push(e,t,o)});this.history.push(e,t,o)},yt.prototype.replace=function(e,t,o){var i=this;if(!t&&!o&&"undefined"!=typeof Promise)return new Promise(function(t,o){i.history.replace(e,t,o)});this.history.replace(e,t,o)},yt.prototype.go=function(e){this.history.go(e)},yt.prototype.back=function(){this.go(-1)},yt.prototype.forward=function(){this.go(1)},yt.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},yt.prototype.resolve=function(e,t,o){t=t||this.history.current;var i=D(e,t,o,this),r=this.match(i,t),n=r.redirectedFrom||r.fullPath;return{location:i,route:r,href:je(this.history.base,n,this.mode),normalizedTo:i,resolved:r}},yt.prototype.getRoutes=function(){return this.matcher.getRoutes()},yt.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==Ze&&this.history.transitionTo(this.history.getCurrentLocation())},yt.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Ze&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(yt.prototype,kt);var Et=yt;yt.install=M,yt.version="3.6.5",yt.isNavigationFailure=me,yt.NavigationFailureType=bt,yt.START_LOCATION=Ze,ct&&window.Vue&&window.Vue.use(yt)},function(e,t,o){var i=o(183);"string"==typeof i&&(i=[[e.i,i,""]]),i.locals&&(e.exports=i.locals);o(230)("25571cbb",i,!0,{})},function(e,t,o){function i(e){for(var t=0;to.parts.length&&(i.parts.length=o.parts.length)}else{for(var l=[],r=0;r/,me=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,_e=/^@(?:\.([a-zA-Z]+))?:/,xe=/[()]/g,ve={upper:function(e){return e.toLocaleUpperCase()},lower:function(e){return e.toLocaleLowerCase()},capitalize:function(e){return""+e.charAt(0).toLocaleUpperCase()+e.substr(1)}},we=new ee,ye=function(e){var t=this;void 0===e&&(e={}),!q&&"undefined"!=typeof window&&window.Vue&&$(window.Vue);var o=e.locale||"en-US",i=!1!==e.fallbackLocale&&(e.fallbackLocale||"en-US"),r=e.messages||{},n=e.dateTimeFormats||e.datetimeFormats||{},l=e.numberFormats||{};this._vm=null,this._formatter=e.formatter||we,this._modifiers=e.modifiers||{},this._missing=e.missing||null,this._root=e.root||null,this._sync=void 0===e.sync||!!e.sync,this._fallbackRoot=void 0===e.fallbackRoot||!!e.fallbackRoot,this._fallbackRootWithEmptyString=void 0===e.fallbackRootWithEmptyString||!!e.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==e.formatFallbackMessages&&!!e.formatFallbackMessages,this._silentTranslationWarn=void 0!==e.silentTranslationWarn&&e.silentTranslationWarn,this._silentFallbackWarn=void 0!==e.silentFallbackWarn&&!!e.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new ge,this._dataListeners=new Set,this._componentInstanceCreatedListener=e.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==e.preserveDirectiveContent&&!!e.preserveDirectiveContent,this.pluralizationRules=e.pluralizationRules||{},this._warnHtmlInMessage=e.warnHtmlInMessage||"off",this._postTranslation=e.postTranslation||null,this._escapeParameterHtml=e.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in e&&(this.__VUE_I18N_BRIDGE__=e.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(e,o){var i=Object.getPrototypeOf(t);if(i&&i.getChoiceIndex){return i.getChoiceIndex.call(t,e,o)}return t.locale in t.pluralizationRules?t.pluralizationRules[t.locale].apply(t,[e,o]):function(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}(e,o)},this._exist=function(e,o){return!(!e||!o)&&(!c(t._path.getPathValue(e,o))||!!e[o])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(r).forEach(function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,r[e])}),this._initVM({locale:o,fallbackLocale:i,messages:r,dateTimeFormats:n,numberFormats:l})},ke={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};ye.prototype._checkLocaleMessage=function(e,t,o){var n=[],l=function(e,t,o,n){if(s(o))Object.keys(o).forEach(function(i){var r=o[i];s(r)?(n.push(i),n.push("."),l(e,t,r,n),n.pop(),n.pop()):(n.push(i),l(e,t,r,n),n.pop())});else if(Z(o))o.forEach(function(o,i){s(o)?(n.push("["+i+"]"),n.push("."),l(e,t,o,n),n.pop(),n.pop()):(n.push("["+i+"]"),l(e,t,o,n),n.pop())});else if(a(o)){var c=be.test(o);if(c){var f="Detected HTML in message '"+o+"' of keypath '"+n.join("")+"' at '"+t+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===e?i(f):"error"===e&&r(f)}}};l(t,e,o,n)},ye.prototype._initVM=function(e){var t=q.config.silent;q.config.silent=!0,this._vm=new q({data:e,__VUE18N__INSTANCE__:!0}),q.config.silent=t},ye.prototype.destroyVM=function(){this._vm.$destroy()},ye.prototype.subscribeDataChanging=function(e){this._dataListeners.add(e)},ye.prototype.unsubscribeDataChanging=function(e){u(this._dataListeners,e)},ye.prototype.watchI18nData=function(){var e=this;return this._vm.$watch("$data",function(){for(var t=h(e._dataListeners),o=t.length;o--;)q.nextTick(function(){t[o]&&t[o].$forceUpdate()})},{deep:!0})},ye.prototype.watchLocale=function(e){if(e){if(!this.__VUE_I18N_BRIDGE__)return null;var t=this,o=this._vm;return this.vm.$watch("locale",function(i){o.$set(o,"locale",i),t.__VUE_I18N_BRIDGE__&&e&&(e.locale.value=i),o.$forceUpdate()},{immediate:!0})}if(!this._sync||!this._root)return null;var i=this._vm;return this._root.$i18n.vm.$watch("locale",function(e){i.$set(i,"locale",e),i.$forceUpdate()},{immediate:!0})},ye.prototype.onComponentInstanceCreated=function(e){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(e,this)},ke.vm.get=function(){return this._vm},ke.messages.get=function(){return d(this._getMessages())},ke.dateTimeFormats.get=function(){return d(this._getDateTimeFormats())},ke.numberFormats.get=function(){return d(this._getNumberFormats())},ke.availableLocales.get=function(){return Object.keys(this.messages).sort()},ke.locale.get=function(){return this._vm.locale},ke.locale.set=function(e){this._vm.$set(this._vm,"locale",e)},ke.fallbackLocale.get=function(){return this._vm.fallbackLocale},ke.fallbackLocale.set=function(e){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",e)},ke.formatFallbackMessages.get=function(){return this._formatFallbackMessages},ke.formatFallbackMessages.set=function(e){this._formatFallbackMessages=e},ke.missing.get=function(){return this._missing},ke.missing.set=function(e){this._missing=e},ke.formatter.get=function(){return this._formatter},ke.formatter.set=function(e){this._formatter=e},ke.silentTranslationWarn.get=function(){return this._silentTranslationWarn},ke.silentTranslationWarn.set=function(e){this._silentTranslationWarn=e},ke.silentFallbackWarn.get=function(){return this._silentFallbackWarn},ke.silentFallbackWarn.set=function(e){this._silentFallbackWarn=e},ke.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},ke.preserveDirectiveContent.set=function(e){this._preserveDirectiveContent=e},ke.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},ke.warnHtmlInMessage.set=function(e){var t=this,o=this._warnHtmlInMessage;if(this._warnHtmlInMessage=e,o!==e&&("warn"===e||"error"===e)){var i=this._getMessages();Object.keys(i).forEach(function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,i[e])})}},ke.postTranslation.get=function(){return this._postTranslation},ke.postTranslation.set=function(e){this._postTranslation=e},ke.sync.get=function(){return this._sync},ke.sync.set=function(e){this._sync=e},ye.prototype._getMessages=function(){return this._vm.messages},ye.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},ye.prototype._getNumberFormats=function(){return this._vm.numberFormats},ye.prototype._warnDefault=function(e,t,o,i,r,n){if(!c(o))return o;if(this._missing){var l=this._missing.apply(null,[e,t,i,r]);if(a(l))return l}if(this._formatFallbackMessages){var s=p.apply(void 0,r);return this._render(t,n,s.params,t)}return t},ye.prototype._isFallbackRoot=function(e){return(this._fallbackRootWithEmptyString?!e:c(e))&&!c(this._root)&&this._fallbackRoot},ye.prototype._isSilentFallbackWarn=function(e){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(e):this._silentFallbackWarn},ye.prototype._isSilentFallback=function(e,t){return this._isSilentFallbackWarn(t)&&(this._isFallbackRoot()||e!==this.fallbackLocale)},ye.prototype._isSilentTranslationWarn=function(e){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(e):this._silentTranslationWarn},ye.prototype._interpolate=function(e,t,o,i,r,n,l){if(!t)return null;var p=this._path.getPathValue(t,o);if(Z(p)||s(p))return p;var d;if(c(p)){if(!s(t))return null;if(d=t[o],!a(d)&&!f(d))return null}else{if(!a(p)&&!f(p))return null;d=p}return a(d)&&(d.indexOf("@:")>=0||d.indexOf("@.")>=0)&&(d=this._link(e,t,d,i,"raw",n,l)),this._render(d,r,n,o)},ye.prototype._link=function(e,t,o,i,r,n,l){var a=o,s=a.match(me);for(var c in s)if(s.hasOwnProperty(c)){var f=s[c],p=f.match(_e),d=p[0],u=p[1],h=f.replace(d,"").replace(xe,"");if(g(l,h))return a;l.push(h);var b=this._interpolate(e,t,h,i,"raw"===r?"string":r,"raw"===r?void 0:n,l);if(this._isFallbackRoot(b)){if(!this._root)throw Error("unexpected error");var m=this._root.$i18n;b=m._translate(m._getMessages(),m.locale,m.fallbackLocale,h,i,r,n)}b=this._warnDefault(e,h,b,i,Z(n)?n:[n],r),this._modifiers.hasOwnProperty(u)?b=this._modifiers[u](b):ve.hasOwnProperty(u)&&(b=ve[u](b)),l.pop(),a=b?a.replace(f,b):a}return a},ye.prototype._createMessageContext=function(e,t,o,i){var r=this,l=Z(e)?e:[],a=n(e)?e:{},s=function(e){return l[e]},c=function(e){return a[e]},f=this._getMessages(),p=this.locale;return{list:s,named:c,values:e,formatter:t,path:o,messages:f,locale:p,linked:function(e){return r._interpolate(p,f[p]||{},e,null,i,void 0,[e])}}},ye.prototype._render=function(e,t,o,i){if(f(e))return e(this._createMessageContext(o,this._formatter||we,i,t));var r=this._formatter.interpolate(e,o,i);return r||(r=we.interpolate(e,o,i)),"string"!==t||a(r)?r:r.join("")},ye.prototype._appendItemToChain=function(e,t,o){var i=!1;return g(e,t)||(i=!0,t&&(i="!"!==t[t.length-1],t=t.replace(/!/g,""),e.push(t),o&&o[t]&&(i=o[t]))),i},ye.prototype._appendLocaleToChain=function(e,t,o){var i,r=t.split("-");do{var n=r.join("-");i=this._appendItemToChain(e,n,o),r.splice(-1,1)}while(r.length&&!0===i);return i},ye.prototype._appendBlockToChain=function(e,t,o){for(var i=!0,r=0;r0;)n[l]=arguments[l+4];if(!e)return"";var a=p.apply(void 0,n);this._escapeParameterHtml&&(a.params=v(a.params));var s=a.locale||t,c=this._translate(o,s,this.fallbackLocale,e,i,"string",a.params);if(this._isFallbackRoot(c)){if(!this._root)throw Error("unexpected error");return(r=this._root).$t.apply(r,[e].concat(n))}return c=this._warnDefault(s,e,c,i,n,"string"),this._postTranslation&&null!==c&&void 0!==c&&(c=this._postTranslation(c,e)),c},ye.prototype.t=function(e){for(var t,o=[],i=arguments.length-1;i-- >0;)o[i]=arguments[i+1];return(t=this)._t.apply(t,[e,this.locale,this._getMessages(),null].concat(o))},ye.prototype._i=function(e,t,o,i,r){var n=this._translate(o,t,this.fallbackLocale,e,i,"raw",r);if(this._isFallbackRoot(n)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(e,t,r)}return this._warnDefault(t,e,n,i,[r],"raw")},ye.prototype.i=function(e,t,o){return e?(a(t)||(t=this.locale),this._i(e,t,this._getMessages(),null,o)):""},ye.prototype._tc=function(e,t,o,i,r){for(var n,l=[],a=arguments.length-5;a-- >0;)l[a]=arguments[a+5];if(!e)return"";void 0===r&&(r=1);var s={count:r,n:r},c=p.apply(void 0,l);return c.params=Object.assign(s,c.params),l=null===c.locale?[c.params]:[c.locale,c.params],this.fetchChoice((n=this)._t.apply(n,[e,t,o,i].concat(l)),r)},ye.prototype.fetchChoice=function(e,t){if(!e||!a(e))return null;var o=e.split("|");return t=this.getChoiceIndex(t,o.length),o[t]?o[t].trim():e},ye.prototype.tc=function(e,t){for(var o,i=[],r=arguments.length-2;r-- >0;)i[r]=arguments[r+2];return(o=this)._tc.apply(o,[e,this.locale,this._getMessages(),null,t].concat(i))},ye.prototype._te=function(e,t,o){for(var i=[],r=arguments.length-3;r-- >0;)i[r]=arguments[r+3];var n=p.apply(void 0,i).locale||t;return this._exist(o[n],e)},ye.prototype.te=function(e,t){return this._te(e,this.locale,this._getMessages(),t)},ye.prototype.getLocaleMessage=function(e){return d(this._vm.messages[e]||{})},ye.prototype.setLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,t)},ye.prototype.mergeLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,m(void 0!==this._vm.messages[e]&&Object.keys(this._vm.messages[e]).length?Object.assign({},this._vm.messages[e]):{},t))},ye.prototype.getDateTimeFormat=function(e){return d(this._vm.dateTimeFormats[e]||{})},ye.prototype.setDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,t),this._clearDateTimeFormat(e,t)},ye.prototype.mergeDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,m(this._vm.dateTimeFormats[e]||{},t)),this._clearDateTimeFormat(e,t)},ye.prototype._clearDateTimeFormat=function(e,t){for(var o in t){var i=e+"__"+o;this._dateTimeFormatters.hasOwnProperty(i)&&delete this._dateTimeFormatters[i]}},ye.prototype._localizeDateTime=function(e,t,o,i,r,n){for(var l=t,a=i[l],s=this._getLocaleChain(t,o),f=0;f0;)t[o]=arguments[o+1];var i=this.locale,r=null,l=null;return 1===t.length?(a(t[0])?r=t[0]:n(t[0])&&(t[0].locale&&(i=t[0].locale),t[0].key&&(r=t[0].key)),l=Object.keys(t[0]).reduce(function(e,o){var i;return g(W,o)?Object.assign({},e,(i={},i[o]=t[0][o],i)):e},null)):2===t.length&&(a(t[0])&&(r=t[0]),a(t[1])&&(i=t[1])),this._d(e,i,r,l)},ye.prototype.getNumberFormat=function(e){return d(this._vm.numberFormats[e]||{})},ye.prototype.setNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,t),this._clearNumberFormat(e,t)},ye.prototype.mergeNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,m(this._vm.numberFormats[e]||{},t)),this._clearNumberFormat(e,t)},ye.prototype._clearNumberFormat=function(e,t){for(var o in t){var i=e+"__"+o;this._numberFormatters.hasOwnProperty(i)&&delete this._numberFormatters[i]}},ye.prototype._getNumberFormatter=function(e,t,o,i,r,n){for(var l=t,a=i[l],s=this._getLocaleChain(t,o),f=0;f0;)t[o]=arguments[o+1];var i=this.locale,r=null,l=null;return 1===t.length?a(t[0])?r=t[0]:n(t[0])&&(t[0].locale&&(i=t[0].locale),t[0].key&&(r=t[0].key),l=Object.keys(t[0]).reduce(function(e,o){var i;return g(H,o)?Object.assign({},e,(i={},i[o]=t[0][o],i)):e},null)):2===t.length&&(a(t[0])&&(r=t[0]),a(t[1])&&(i=t[1])),this._n(e,i,r,l)},ye.prototype._ntp=function(e,t,o,i){if(!ye.availabilities.numberFormat)return[];if(!o){return(i?new Intl.NumberFormat(t,i):new Intl.NumberFormat(t)).formatToParts(e)}var r=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),o,i),n=r&&r.formatToParts(e);if(this._isFallbackRoot(n)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(e,t,o,i)}return n||[]},Object.defineProperties(ye.prototype,ke);var Ee;Object.defineProperty(ye,"availabilities",{get:function(){if(!Ee){var e="undefined"!=typeof Intl;Ee={dateTimeFormat:e&&void 0!==Intl.DateTimeFormat,numberFormat:e&&void 0!==Intl.NumberFormat}}return Ee}}),ye.install=$,ye.version="8.28.2",t.a=ye},function(e,t,o){"use strict";function i(e){o(233)}var r=o(66),n=o(230),l=o(97),a=i,s=l(r.a,n.a,!1,a,null,null);t.a=s.exports},function(e,t,o){"use strict";var i=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{attrs:{id:"app"}},[o("div",{staticClass:"action-right"},[o("el-dropdown",{staticClass:"international",attrs:{trigger:"click"},on:{command:e.handle_set_language}},[o("div",[o("el-button",{attrs:{size:"mini",type:"primary",icon:"el-icon-setting"},on:{click:function(t){e.dialogVisible=!0}}},[e._v(e._s(e.$t("lang.choose")))])],1),e._v(" "),o("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[o("el-dropdown-item",{attrs:{Enabled:"language==='zh_CN'",command:"zh_CN",divided:""}},[e._v("\n "+e._s(e.$t("lang.zhcn"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='zh_TW'",command:"zh_TW",divided:""}},[e._v("\n "+e._s(e.$t("lang.zhtw"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='en'",command:"en",divided:""}},[e._v("\n "+e._s(e.$t("lang.en"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='es'",command:"es",divided:""}},[e._v("\n "+e._s(e.$t("lang.es"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='ru_RU'",command:"ru_RU",divided:""}},[e._v("\n "+e._s(e.$t("lang.ru"))+"\n ")]),e._v(" "),o("el-dropdown-item",{attrs:{Enabled:"language==='de'",command:"de",divided:""}},[e._v("\n "+e._s(e.$t("lang.de"))+"\n ")])],1)],1)],1),e._v(" "),o("h1",{staticClass:"header"},[e._v("Pixl.js")]),e._v(" "),o("el-row",[o("el-col",{attrs:{span:14}},[o("div",{staticClass:"action-left"},[o("el-button-group",[o("el-button",{attrs:{size:"mini",type:"primary",icon:"el-icon-upload",disabled:e.btn_disabled()},on:{click:e.on_btn_upload}},[e._v(e._s(e.$t("menu.upload")))])],1),e._v(" "),o("el-button-group",[o("el-button",{attrs:{size:"mini",icon:"el-icon-plus",disabled:e.btn_disabled()},on:{click:e.on_btn_new_folder}},[e._v(e._s(e.$t("menu.newfolder")))]),e._v(" "),o("el-button",{attrs:{size:"mini",type:"danger",icon:"el-icon-delete",disabled:e.btn_disabled()},on:{click:e.on_btn_remove}},[e._v(e._s(e.$t("menu.del")))])],1),e._v(" "),o("el-button-group",[o("el-button",{attrs:{size:"mini",icon:"el-icon-top",disabled:e.btn_disabled()},on:{click:e.on_btn_up}},[e._v(e._s(e.$t("menu.up")))]),e._v(" "),o("el-button",{attrs:{size:"mini",icon:"el-icon-refresh",disabled:!e.connected},on:{click:e.on_btn_refresh}},[e._v(e._s(e.$t("menu.refresh")))])],1)],1)]),e._v(" "),o("el-col",{attrs:{span:10}},[o("div",{staticClass:"action-right"},[e.version?o("el-button",{attrs:{type:"success",size:"mini",icon:"el-icon-warning"}},[e._v(e._s(e.version))]):e._e(),e._v(" "),o("el-button-group",[o("el-button",{attrs:{type:"info",size:"mini",icon:"el-icon-cpu",disabled:!e.connected},on:{click:e.on_btn_enter_dfu}},[e._v(e._s(e.$t("menu.dfu")))]),e._v(" "),o("el-button",{attrs:{type:e.connBtnType,size:"mini",icon:"el-icon-connection"},on:{click:e.on_btn_ble_connect}},[e._v(e._s(e.connBtnText))])],1)],1)])],1),e._v(" "),o("el-row",[o("el-col",{attrs:{span:24}},[o("div",{staticClass:"folder-path"},[o("el-breadcrumb",{attrs:{separator:"/"}},[o("el-breadcrumb-item",[e._v(e._s(e.current_dir))])],1)],1)])],1),e._v(" "),o("div",[o("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.table_loading,expression:"table_loading"}],ref:"multipleTable",staticStyle:{width:"100%"},attrs:{data:e.tableData,"tooltip-effect":"dark","element-loading-text":e.$t("status.loading"),"element-loading-spinner":"el-icon-loading","cell-class-name":"file-cell","default-sort":{prop:"name",order:"ascending"}},on:{"selection-change":e.on_table_selection_change,"sort-change":e.on_table_sort_change}},[o("el-table-column",{attrs:{type:"selection",width:"42"}}),e._v(" "),o("el-table-column",{attrs:{prop:"name",label:e.$t("labels.name"),sortable:"",width:"320"},on:{"sort-method":e.sort_table_row_name},scopedSlots:e._u([{key:"default",fn:function(t){return[o("i",{class:t.row.icon}),e._v(" "),o("el-link",{attrs:{underline:!1},on:{click:function(o){return e.handle_name_click(t.$index,t.row)}}},[e._v("\n "+e._s(t.row.name))])]}}])}),e._v(" "),o("el-table-column",{attrs:{prop:"size",label:e.$t("labels.size"),sortable:"",width:"150"}}),e._v(" "),o("el-table-column",{attrs:{prop:"type",label:e.$t("labels.type"),sortable:"",width:"80"}}),e._v(" "),o("el-table-column",{attrs:{prop:"notes",label:e.$t("labels.remark"),sortable:""}}),e._v(" "),o("el-table-column",{attrs:{label:"",fixed:"right",width:"40"},scopedSlots:e._u([{key:"default",fn:function(t){return[o("el-dropdown",[o("span",{staticClass:"el-dropdown-link"},[o("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),e._v(" "),o("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["DRIVE"!=t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_remove(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.del")))]):e._e(),e._v(" "),"DRIVE"!=t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_rename(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.rename")))]):e._e(),e._v(" "),"DRIVE"!=t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_meta(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.prop")))]):e._e(),e._v(" "),"DRIVE"==t.row.type?o("el-dropdown-item",{nativeOn:{click:function(o){return e.on_row_btn_format(t.$index,t.row)}}},[e._v(e._s(e.$t("contxmenu.format")))]):e._e()],1)],1)]}}])})],1)],1),e._v(" "),o("el-dialog",{attrs:{title:e.$t("properties.title"),visible:e.meta_diag_visible,width:"30%"},on:{"update:visible":function(t){e.meta_diag_visible=t}}},[o("el-form",{ref:"form",attrs:{model:e.meta_form,"label-width":"80px"}},[o("el-form-item",{attrs:{label:e.$t("properties.remark")}},[o("el-input",{model:{value:e.meta_form.notes,callback:function(t){e.$set(e.meta_form,"notes",t)},expression:"meta_form.notes"}})],1),e._v(" "),o("el-form-item",{attrs:{label:e.$t("properties.attrib")}},[o("el-checkbox",{attrs:{label:e.$t("properties.hide")},model:{value:e.meta_form.flags.hide,callback:function(t){e.$set(e.meta_form.flags,"hide",t)},expression:"meta_form.flags.hide"}})],1)],1),e._v(" "),o("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[o("el-button",{on:{click:function(t){e.meta_diag_visible=!1}}},[e._v(e._s(e.$t("btn.cancel")))]),e._v(" "),o("el-button",{attrs:{type:"primary"},on:{click:e.on_diag_meta_close}},[e._v(e._s(e.$t("btn.ok")))])],1)],1),e._v(" "),o("el-dialog",{attrs:{title:e.$t("upload.title"),visible:e.upload_diag_visible,width:"30%","before-close":e.on_upload_diag_close},on:{"update:visible":function(t){e.upload_diag_visible=t}}},[o("div",[o("el-upload",{ref:"upload",staticClass:"upload-demo",attrs:{drag:"",action:"https://jsonplaceholder.typicode.com/posts/",multiple:"","http-request":e.on_upload_request,"on-error":e.on_upload_error}},[o("i",{staticClass:"el-icon-upload"}),e._v(" "),o("div",{staticClass:"el-upload__text"},[e._v(e._s(e.$t("upload.drag"))+" "),o("em",[e._v(e._s(e.$t("upload.click")))])]),e._v(" "),o("div",{staticClass:"el-upload__tip",attrs:{slot:"tip"},slot:"tip"},[o("ul",[o("li",[e._v(e._s(e.$t("upload.maxsize")))]),e._v(" "),o("li",[e._v(e._s(e.$t("upload.maxname")))])])])])],1),e._v(" "),o("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"})])],1)},r=[],n={render:i,staticRenderFns:r};t.a=n},function(e,t,o){"use strict";var i=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{attrs:{id:"app"}},[o("router-view")],1)},r=[],n={render:i,staticRenderFns:r};t.a=n},function(e,t,o){"use strict";function i(e,t){for(var o in t)e[o]=t[o];return e}function r(e){try{return decodeURIComponent(e)}catch(e){}return e}function n(e,t,o){void 0===t&&(t={});var i,r=o||l;try{i=r(e||"")}catch(e){i={}}for(var n in t){var a=t[n];i[n]=Array.isArray(a)?a.map(He):He(a)}return i}function l(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach(function(e){var o=e.replace(/\+/g," ").split("="),i=r(o.shift()),n=o.length>0?r(o.join("=")):null;void 0===t[i]?t[i]=n:Array.isArray(t[i])?t[i].push(n):t[i]=[t[i],n]}),t):t}function a(e){var t=e?Object.keys(e).map(function(t){var o=e[t];if(void 0===o)return"";if(null===o)return qe(t);if(Array.isArray(o)){var i=[];return o.forEach(function(e){void 0!==e&&(null===e?i.push(qe(t)):i.push(qe(t)+"="+qe(e)))}),i.join("&")}return qe(t)+"="+qe(o)}).filter(function(e){return e.length>0}).join("&"):null;return t?"?"+t:""}function s(e,t,o,i){var r=i&&i.options.stringifyQuery,n=t.query||{};try{n=c(n)}catch(e){}var l={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:n,params:t.params||{},fullPath:p(t,r),matched:e?f(e):[]};return o&&(l.redirectedFrom=p(o,r)),Object.freeze(l)}function c(e){if(Array.isArray(e))return e.map(c);if(e&&"object"==typeof e){var t={};for(var o in e)t[o]=c(e[o]);return t}return e}function f(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function p(e,t){var o=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;void 0===r&&(r="");var n=t||a;return(o||"/")+n(i)+r}function d(e,t,o){return t===Ze?e===t:!!t&&(e.path&&t.path?e.path.replace(We,"")===t.path.replace(We,"")&&(o||e.hash===t.hash&&u(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(o||e.hash===t.hash&&u(e.query,t.query)&&u(e.params,t.params))))}function u(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var o=Object.keys(e).sort(),i=Object.keys(t).sort();return o.length===i.length&&o.every(function(o,r){var n=e[o];if(i[r]!==o)return!1;var l=t[o];return null==n||null==l?n===l:"object"==typeof n&&"object"==typeof l?u(n,l):String(n)===String(l)})}function h(e,t){return 0===e.path.replace(We,"/").indexOf(t.path.replace(We,"/"))&&(!t.hash||e.hash===t.hash)&&g(e.query,t.query)}function g(e,t){for(var o in t)if(!(o in e))return!1;return!0}function b(e){for(var t=0;t=0&&(t=e.slice(i),e=e.slice(0,i));var r=e.indexOf("?");return r>=0&&(o=e.slice(r+1),e=e.slice(0,r)),{path:e,query:o,hash:t}}function w(e){return e.replace(/\/(?:\s*\/)+/g,"/")}function y(e,t){for(var o,i=[],r=0,n=0,l="",a=t&&t.delimiter||"/";null!=(o=ot.exec(e));){var s=o[0],c=o[1],f=o.index;if(l+=e.slice(n,f),n=f+s.length,c)l+=c[1];else{var p=e[n],d=o[2],u=o[3],h=o[4],g=o[5],b=o[6],m=o[7];l&&(i.push(l),l="");var _=null!=d&&null!=p&&p!==d,x="+"===b||"*"===b,v="?"===b||"*"===b,w=o[2]||a,y=h||g;i.push({name:u||r++,prefix:d||"",delimiter:w,optional:v,repeat:x,partial:_,asterisk:!!m,pattern:y?L(y):m?".*":"[^"+T(w)+"]+?"})}}return n-1&&(r.params[s]=o.params[s]);return r.path=S(l.path,r.params,'named route "'+n+'"'),c(l,r,i)}if(r.path){r.params={};for(var f=0;f-1}function me(e,t){return be(e)&&e._isRouter&&(null==t||e.type===t)}function _e(e,t,o){var i=function(r){r>=e.length?o():e[r]?t(e[r],function(){i(r+1)}):i(r+1)};i(0)}function xe(e){return function(t,o,i){var r=!1,n=0,l=null;ve(e,function(e,t,o,a){if("function"==typeof e&&void 0===e.cid){r=!0,n++;var s,c=ke(function(t){ye(t)&&(t=t.default),e.resolved="function"==typeof t?t:it.extend(t),o.components[a]=t,--n<=0&&i()}),f=ke(function(e){var t="Failed to resolve async component "+a+": "+e;l||(l=be(e)?e:new Error(t),i(l))});try{s=e(c,f)}catch(e){f(e)}if(s)if("function"==typeof s.then)s.then(c,f);else{var p=s.component;p&&"function"==typeof p.then&&p.then(c,f)}}}),r||i()}}function ve(e,t){return we(e.map(function(e){return Object.keys(e.components).map(function(o){return t(e.components[o],e.instances[o],e,o)})}))}function we(e){return Array.prototype.concat.apply([],e)}function ye(e){return e.__esModule||mt&&"Module"===e[Symbol.toStringTag]}function ke(e){var t=!1;return function(){for(var o=[],i=arguments.length;i--;)o[i]=arguments[i];if(!t)return t=!0,e.apply(this,o)}}function Ee(e){if(!e)if(ct){var t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^https?:\/\/[^\/]+/,"")}else e="/";return"/"!==e.charAt(0)&&(e="/"+e),e.replace(/\/$/,"")}function ze(e,t){var o,i=Math.max(e.length,t.length);for(o=0;o=0?t.slice(0,o):t)+"#"+e}function Oe(e){ht?se($e(e)):window.location.hash=e}function Me(e){ht?ce($e(e)):window.location.replace($e(e))}function Ne(e,t){return e.push(t),function(){var o=e.indexOf(t);o>-1&&e.splice(o,1)}}function je(e,t,o){var i="hash"===o?"#"+t:t;return e?w(e+"/"+i):i}o.d(t,"a",function(){return Et});var Pe=/[!'()*]/g,Ye=function(e){return"%"+e.charCodeAt(0).toString(16)},Ve=/%2C/g,qe=function(e){return encodeURIComponent(e).replace(Pe,Ye).replace(Ve,",")},He=function(e){return null==e||"object"==typeof e?e:String(e)},We=/\/?$/,Ze=s(null,{path:"/"}),Xe={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var o=t.props,r=t.children,n=t.parent,l=t.data;l.routerView=!0;for(var a=n.$createElement,s=o.name,c=n.$route,f=n._routerViewCache||(n._routerViewCache={}),p=0,d=!1;n&&n._routerRoot!==n;){var u=n.$vnode?n.$vnode.data:{};u.routerView&&p++,u.keepAlive&&n._directInactive&&n._inactive&&(d=!0),n=n.$parent}if(l.routerViewDepth=p,d){var h=f[s],g=h&&h.component;return g?(h.configProps&&m(g,l,h.route,h.configProps),a(g,l,r)):a()}var _=c.matched[p],x=_&&_.components[s];if(!_||!x)return f[s]=null,a();f[s]={component:x},l.registerRouteInstance=function(e,t){var o=_.instances[s];(t&&o!==e||!t&&o===e)&&(_.instances[s]=t)},(l.hook||(l.hook={})).prepatch=function(e,t){_.instances[s]=t.componentInstance},l.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==_.instances[s]&&(_.instances[s]=e.componentInstance),b(c)};var v=_.props&&_.props[s];return v&&(i(f[s],{route:c,configProps:v}),m(x,l,c,v)),a(x,l,r)}},Ge=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)},Je=D,Ke=y,Qe=k,et=A,tt=B,ot=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");Je.parse=Ke,Je.compile=Qe,Je.tokensToFunction=et,Je.tokensToRegExp=tt;var it,rt=Object.create(null),nt=[String,Object],lt=[String,Array],at=function(){},st={name:"RouterLink",props:{to:{type:nt,required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:lt,default:"click"}},render:function(e){var t=this,o=this.$router,r=this.$route,n=o.resolve(this.to,r,this.append),l=n.location,a=n.route,c=n.href,f={},p=o.options.linkActiveClass,u=o.options.linkExactActiveClass,g=null==p?"router-link-active":p,b=null==u?"router-link-exact-active":u,m=null==this.activeClass?g:this.activeClass,_=null==this.exactActiveClass?b:this.exactActiveClass,x=a.redirectedFrom?s(null,$(a.redirectedFrom),null,o):a;f[_]=d(r,x,this.exactPath),f[m]=this.exact||this.exactPath?f[_]:h(r,x);var v=f[_]?this.ariaCurrentValue:null,w=function(e){O(e)&&(t.replace?o.replace(l,at):o.push(l,at))},y={click:O};Array.isArray(this.event)?this.event.forEach(function(e){y[e]=w}):y[this.event]=w;var k={class:f},E=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:a,navigate:w,isActive:f[m],isExactActive:f[_]});if(E){if(1===E.length)return E[0];if(E.length>1||!E.length)return 0===E.length?e():e("span",{},E)}if("a"===this.tag)k.on=y,k.attrs={href:c,"aria-current":v};else{var z=M(this.$slots.default);if(z){z.isStatic=!1;var A=z.data=i({},z.data);A.on=A.on||{};for(var T in A.on){var L=A.on[T];T in y&&(A.on[T]=Array.isArray(L)?L:[L])}for(var I in y)I in A.on?A.on[I].push(y[I]):A.on[I]=w;var C=z.data.attrs=i({},z.data.attrs);C.href=c,C["aria-current"]=v}else k.on=y}return e(this.tag,k,this.$slots.default)}},ct="undefined"!=typeof window,ft=ct&&window.performance&&window.performance.now?window.performance:Date,pt=Z(),dt=Object.create(null),ut=/^#\d/,ht=ct&&function(){var e=window.navigator.userAgent;return(-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone"))&&(window.history&&"function"==typeof window.history.pushState)}(),gt={redirected:2,aborted:4,cancelled:8,duplicated:16},bt=["params","query","hash"],mt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,_t=function(e,t){this.router=e,this.base=Ee(t),this.current=Ze,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};_t.prototype.listen=function(e){this.cb=e},_t.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},_t.prototype.onError=function(e){this.errorCbs.push(e)},_t.prototype.transitionTo=function(e,t,o){var i,r=this;try{i=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach(function(t){t(e)}),e}var n=this.current;this.confirmTransition(i,function(){r.updateRoute(i),t&&t(i),r.ensureURL(),r.router.afterHooks.forEach(function(e){e&&e(i,n)}),r.ready||(r.ready=!0,r.readyCbs.forEach(function(e){e(i)}))},function(e){o&&o(e),e&&!r.ready&&(me(e,gt.redirected)&&n===Ze||(r.ready=!0,r.readyErrorCbs.forEach(function(t){t(e)})))})},_t.prototype.confirmTransition=function(e,t,o){var i=this,r=this.current;this.pending=e;var n=function(e){!me(e)&&be(e)&&(i.errorCbs.length?i.errorCbs.forEach(function(t){t(e)}):console.error(e)),o&&o(e)},l=e.matched.length-1,a=r.matched.length-1;if(d(e,r)&&l===a&&e.matched[l]===r.matched[a])return this.ensureURL(),e.hash&&K(this.router,r,e,!1),n(pe(r,e));var s=ze(this.current.matched,e.matched),c=s.updated,f=s.deactivated,p=s.activated,u=[].concat(Le(f),this.router.beforeHooks,Ie(c),p.map(function(e){return e.beforeEnter}),xe(p)),h=function(t,o){if(i.pending!==e)return n(de(r,e));try{t(e,r,function(t){!1===t?(i.ensureURL(!0),n(ue(r,e))):be(t)?(i.ensureURL(!0),n(t)):"string"==typeof t||"object"==typeof t&&("string"==typeof t.path||"string"==typeof t.name)?(n(fe(r,e)),"object"==typeof t&&t.replace?i.replace(t):i.push(t)):o(t)})}catch(e){n(e)}};_e(u,h,function(){_e(Fe(p).concat(i.router.resolveHooks),h,function(){if(i.pending!==e)return n(de(r,e));i.pending=null,t(e),i.router.app&&i.router.app.$nextTick(function(){b(e)})})})},_t.prototype.updateRoute=function(e){this.current=e,this.cb&&this.cb(e)},_t.prototype.setupListeners=function(){},_t.prototype.teardown=function(){this.listeners.forEach(function(e){e()}),this.listeners=[],this.current=Ze,this.pending=null};var xt=function(e){function t(t,o){e.call(this,t,o),this._startLocation=Re(this.base)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,o=t.options.scrollBehavior,i=ht&&o;i&&this.listeners.push(J());var r=function(){var o=e.current,r=Re(e.base);e.current===Ze&&r===e._startLocation||e.transitionTo(r,function(e){i&&K(t,e,o,!0)})};window.addEventListener("popstate",r),this.listeners.push(function(){window.removeEventListener("popstate",r)})}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){se(w(i.base+e.fullPath)),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.replace=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){ce(w(i.base+e.fullPath)),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.ensureURL=function(e){if(Re(this.base)!==this.current.fullPath){var t=w(this.base+this.current.fullPath);e?se(t):ce(t)}},t.prototype.getCurrentLocation=function(){return Re(this.base)},t}(_t),vt=function(e){function t(t,o,i){e.call(this,t,o),i&&Be(this.base)||De()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router,o=t.options.scrollBehavior,i=ht&&o;i&&this.listeners.push(J());var r=function(){var t=e.current;De()&&e.transitionTo(Se(),function(o){i&&K(e.router,o,t,!0),ht||Me(o.fullPath)})},n=ht?"popstate":"hashchange";window.addEventListener(n,r),this.listeners.push(function(){window.removeEventListener(n,r)})}},t.prototype.push=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){Oe(e.fullPath),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.replace=function(e,t,o){var i=this,r=this,n=r.current;this.transitionTo(e,function(e){Me(e.fullPath),K(i.router,e,n,!1),t&&t(e)},o)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Se()!==t&&(e?Oe(t):Me(t))},t.prototype.getCurrentLocation=function(){return Se()},t}(_t),wt=function(e){function t(t,o){e.call(this,t,o),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,o){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index+1).concat(e),i.index++,t&&t(e)},o)},t.prototype.replace=function(e,t,o){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index).concat(e),t&&t(e)},o)},t.prototype.go=function(e){var t=this,o=this.index+e;if(!(o<0||o>=this.stack.length)){var i=this.stack[o];this.confirmTransition(i,function(){var e=t.current;t.index=o,t.updateRoute(i),t.router.afterHooks.forEach(function(t){t&&t(i,e)})},function(e){me(e,gt.duplicated)&&(t.index=o)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(_t),yt=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=q(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ht&&!1!==e.fallback,this.fallback&&(t="hash"),ct||(t="abstract"),this.mode=t,t){case"history":this.history=new xt(this,e.base);break;case"hash":this.history=new vt(this,e.base,this.fallback);break;case"abstract":this.history=new wt(this,e.base)}},kt={currentRoute:{configurable:!0}};yt.prototype.match=function(e,t,o){return this.matcher.match(e,t,o)},kt.currentRoute.get=function(){return this.history&&this.history.current},yt.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",function(){var o=t.apps.indexOf(e);o>-1&&t.apps.splice(o,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()}),!this.app){this.app=e;var o=this.history;if(o instanceof xt||o instanceof vt){var i=function(e){var i=o.current,r=t.options.scrollBehavior;ht&&r&&"fullPath"in e&&K(t,e,i,!1)},r=function(e){o.setupListeners(),i(e)};o.transitionTo(o.getCurrentLocation(),r,r)}o.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},yt.prototype.beforeEach=function(e){return Ne(this.beforeHooks,e)},yt.prototype.beforeResolve=function(e){return Ne(this.resolveHooks,e)},yt.prototype.afterEach=function(e){return Ne(this.afterHooks,e)},yt.prototype.onReady=function(e,t){this.history.onReady(e,t)},yt.prototype.onError=function(e){this.history.onError(e)},yt.prototype.push=function(e,t,o){var i=this;if(!t&&!o&&"undefined"!=typeof Promise)return new Promise(function(t,o){i.history.push(e,t,o)});this.history.push(e,t,o)},yt.prototype.replace=function(e,t,o){var i=this;if(!t&&!o&&"undefined"!=typeof Promise)return new Promise(function(t,o){i.history.replace(e,t,o)});this.history.replace(e,t,o)},yt.prototype.go=function(e){this.history.go(e)},yt.prototype.back=function(){this.go(-1)},yt.prototype.forward=function(){this.go(1)},yt.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},yt.prototype.resolve=function(e,t,o){t=t||this.history.current;var i=$(e,t,o,this),r=this.match(i,t),n=r.redirectedFrom||r.fullPath;return{location:i,route:r,href:je(this.history.base,n,this.mode),normalizedTo:i,resolved:r}},yt.prototype.getRoutes=function(){return this.matcher.getRoutes()},yt.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==Ze&&this.history.transitionTo(this.history.getCurrentLocation())},yt.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==Ze&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(yt.prototype,kt);var Et=yt;yt.install=N,yt.version="3.6.5",yt.isNavigationFailure=me,yt.NavigationFailureType=gt,yt.START_LOCATION=Ze,ct&&window.Vue&&window.Vue.use(yt)},function(e,t,o){var i=o(185);"string"==typeof i&&(i=[[e.i,i,""]]),i.locals&&(e.exports=i.locals);o(234)("29109a0a",i,!0,{})},function(e,t,o){function i(e){for(var t=0;to.parts.length&&(i.parts.length=o.parts.length)}else{for(var l=[],r=0;r -1) {\n //return 'en'\n return locale;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return 'zh_TW';\n}\nvar i18n = new __WEBPACK_IMPORTED_MODULE_4_vue_i18n__[\"a\" /* default */]({\n // set locale\n // options: en | zh | es\n locale: getLanguage(),\n // set locale messages\n messages: messages\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (i18n);\n\n/***/ }),\n/* 64 */,\n/* 65 */,\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_pixl_ble__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_event__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__ = __webpack_require__(128);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n data: function data() {\n return {\n tableData: [],\n connBtnType: \"\",\n connBtnText: \"\" + this.$t(\"conn.connect\"),\n version: \"\",\n connected: false,\n table_loading: false,\n current_dir: \"\",\n upload_diag_visible: false,\n table_selection: [],\n language: \"zh_CN\",\n meta_diag_visible: false,\n meta_form: {\n notes: \"\",\n flags: {\n hide: false\n },\n amiibo: {\n head: 0,\n tail: 0\n },\n name: \"\",\n row: null\n }\n };\n },\n\n\n methods: {\n on_btn_ble_connect: function on_btn_ble_connect() {\n if (this.connected) {\n __WEBPACK_IMPORTED_MODULE_0__lib_pixl_ble__[\"a\" /* disconnect */]();\n this.connBtnText = \"\" + this.$t(\"conn.connect\");\n } else {\n this.connBtnText = \"\" + this.$t(\"conn.connecting\");\n __WEBPACK_IMPORTED_MODULE_0__lib_pixl_ble__[\"b\" /* connect */]();\n }\n },\n on_ble_connected: function on_ble_connected() {\n var _this = this;\n\n this.connBtnText = \"\" + this.$t(\"conn.disconnect\");\n this.connBtnType = \"success\";\n this.connected = true;\n this.$notify({\n title: 'Pixl.js',\n type: 'success',\n message: \"\" + this.$t(\"conn.consuccess\"),\n duration: 5000\n });\n\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"a\" /* get_version */]().then(function (res) {\n console.log(\"get version result\", res);\n _this.version = \"\" + _this.$t(\"status.connected\") + res.data.ver;\n\n if (res.data.ver.startsWith(\"2.0.0\")) {\n _this.$alert(\"\" + _this.$t(\"oldfirm.message\"), \"\" + _this.$t(\"oldfirm.title\"), {\n confirmButtonText: \"\" + _this.$t(\"btn.ok\"),\n callback: function callback(action) {}\n });\n }\n\n var v = res.data;\n\n LA.track(\"pixl_device_connect\", { \"version\": v.ver, \"mac\": v.ble_addr });\n\n _this.reload_drive();\n });\n },\n on_ble_disconnected: function on_ble_disconnected() {\n this.connBtnType = \"\";\n this.connected = false;\n this.connBtnText = \"\" + this.$t(\"conn.connect\");\n this.version = \"\";\n this.table_loading = false;\n this.tableData = [];\n this.current_dir = \"\";\n this.$notify({\n title: 'Pixl.js',\n type: 'error',\n message: \"\" + this.$t(\"conn.disconnected\"),\n duration: 5000\n });\n },\n on_ble_connect_error: function on_ble_connect_error() {\n this.connBtnType = \"\";\n this.connBtnText = \"\" + this.$t(\"conn.connect\");\n this.version = \"\";\n this.table_loading = false;\n this.tableData = [];\n this.current_dir = \"\";\n this.$notify({\n title: 'Pixl.js',\n type: 'error',\n message: \"\" + this.$t(\"conn.connfailed\"),\n duration: 5000\n });\n },\n on_btn_enter_dfu: function on_btn_enter_dfu() {\n var _this2 = this;\n\n this.$confirm(\"\" + this.$t(\"dfumode.startconfirm\"), \"\" + this.$t(\"dfumode.title\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\"),\n type: 'warning'\n }).then(function () {\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"b\" /* enter_dfu */]().then(function (data) {\n\n _this2.$confirm(\"\" + _this2.$t(\"dfumode.updateconfirm\"), \"\" + _this2.$t(\"dfumode.updatetitle\"), {\n confirmButtonText: \"\" + _this2.$t(\"btn.ok\"),\n cancelButtonText: \"\" + _this2.$t(\"btn.cancel\"),\n type: 'success'\n }).then(function (_) {\n document.location.href = \"https://thegecko.github.io/web-bluetooth-dfu/examples/web.html\";\n });\n });\n });\n },\n on_btn_up: function on_btn_up() {\n\n var drive = this.current_dir.substring(0, 2); //E:\n var path = this.current_dir.substring(2);\n\n if (path == '/') {\n // root\n this.current_dir = \"\";\n this.reload_drive();\n } else {\n var idx = path.lastIndexOf('/');\n if (idx == 0) {\n this.current_dir = drive + \"/\";\n } else {\n this.current_dir = drive + path.substring(0, idx);\n }\n\n this.reload_folder();\n }\n },\n on_btn_refresh: function on_btn_refresh() {\n if (this.current_dir == '') {\n this.reload_drive();\n } else {\n this.reload_folder();\n }\n },\n on_btn_new_folder: function on_btn_new_folder() {\n var _this3 = this;\n\n var thiz = this;\n this.$prompt(\"\" + this.$t(\"newfolder.message\"), \"\" + this.$t(\"newfolder.title\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\"),\n inputValue: \"\"\n }).then(function (_ref) {\n var value = _ref.value;\n\n if (value == \"\") {\n return;\n }\n thiz.table_loading = true;\n var path = _this3.append_segment(_this3.current_dir, value);\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"c\" /* vfs_create_folder */](path).then(function (res) {\n thiz.table_loading = false;\n if (res.status == 0) {\n _this3.reload_folder();\n } else {\n _this3.$message({\n type: 'error',\n message: \"\" + _this3.$t(\"newfolder.newfoldererr\") + \" [\" + res.status + \"]\"\n });\n }\n }).catch(function (e) {\n thiz.table_loading = false;\n _this3.$message({\n type: 'error',\n message: \"\" + _this3.$t(\"newfolder.newfoldererr\") + \" [\" + e.message + \"]\"\n });\n });\n }).catch(function () {\n //ignore \n });\n },\n on_btn_upload: function on_btn_upload() {\n this.upload_diag_visible = true;\n },\n on_btn_remove: function on_btn_remove() {\n var _this4 = this;\n\n if (this.table_selection.length == 0) {\n return;\n }\n var thiz = this;\n var dir = this.current_dir;\n var proceed_count = 0;\n var total_count = this.table_selection.length;\n thiz.table_loading = true;\n this.table_selection.forEach(function (v) {\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"d\" /* vfs_remove */](_this4.append_segment(dir, v.name)).then(function (_) {\n _this4.delete_table_row_by_name(v.name);\n proceed_count++;\n if (proceed_count == total_count) {\n thiz.table_loading = false;\n }\n }).catch(function (e) {\n _this4.$message({\n type: 'error',\n message: v.name + (\"\" + _this4.$t(\"del.error\")) + e\n });\n proceed_count++;\n if (proceed_count == total_count) {\n thiz.table_loading = false;\n }\n });\n }, this);\n },\n on_upload_diag_close: function on_upload_diag_close(done) {\n var _this5 = this;\n\n this.$confirm(\"\" + this.$t(\"upload.closemessage\"), \"\" + this.$t(\"upload.closetitle\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\")\n }).then(function (_) {\n _this5.$refs.upload.clearFiles();\n _this5.reload_folder();\n done();\n }).catch(function (_) {});\n },\n on_upload_request: function on_upload_request(options) {\n console.log(options);\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"e\" /* vfs_helper_write_file */](this.append_segment(this.current_dir, options.file.name), options.file, function (p) {\n options.onProgress({ percent: p.written_bytes / p.total_bytes * 100 });\n }, function (_) {\n options.onSuccess();\n }, function (e) {\n options.onError(e);\n });\n },\n on_upload_error: function on_upload_error(err, file, filelist) {\n this.$message({\n type: 'error',\n message: file.name + (\"\" + this.$t(\"upload.errupload\")) + err\n });\n },\n on_row_btn_format: function on_row_btn_format(index, row) {\n var _this6 = this;\n\n var thiz = this;\n this.$confirm(\"\" + this.$t(\"format.messrow1a\") + row.name + (\"\" + this.$t(\"format.messrow1b\")) + \"\\n\" + (\"\" + this.$t(\"format.messrow2\")) + '\\n' + (\"\" + this.$t(\"format.messrow3\")), \"\" + this.$t(\"format.title\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\"),\n type: 'warning'\n }).then(function () {\n thiz.table_loading = true;\n var path = row.name.substr(0, 1);\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"f\" /* vfs_drive_format */](path).then(function (data) {\n _this6.$message({\n type: 'success',\n message: row.name + (\"\" + _this6.$t(\"format.formatok\"))\n });\n thiz.table_loading = false;\n _this6.reload_drive();\n }).catch(function (e) {\n _this6.$message({\n type: 'error',\n message: row.name + (\"\" + _this6.$t(\"format.formaterr\")) + err\n });\n thiz.table_loading = false;\n });\n });\n },\n on_row_btn_remove: function on_row_btn_remove(index, row) {\n var _this7 = this;\n\n var thiz = this;\n this.$confirm(\"\" + this.$t(\"del.message\") + row.name + (\"\" + this.$t(\"del.messageend\")), \"\" + this.$t(\"del.title\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\"),\n type: 'warning'\n }).then(function () {\n thiz.table_loading = true;\n var path = _this7.append_segment(_this7.current_dir, row.name);\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"d\" /* vfs_remove */](path).then(function (data) {\n thiz.table_loading = false;\n if (data.status == 0) {\n _this7.$message({\n type: 'success',\n message: \"\" + _this7.$t(\"del.deleteok\")\n });\n\n _this7.reload_folder();\n } else {\n _this7.$message({\n type: 'error',\n message: row.name + (\"\" + _this7.$t(\"del.error\")) + \"[\" + data.status + \"]\"\n });\n }\n }).catch(function (e) {\n _this7.$message({\n type: 'error',\n message: row.name + (\"\" + _this7.$t(\"del.error\")) + \"[\" + err + \"]\"\n });\n thiz.table_loading = false;\n });\n });\n },\n on_row_btn_notes: function on_row_btn_notes(index, row) {\n var _this8 = this;\n\n var thiz = this;\n this.$prompt(\"\" + this.$t(\"properties.entermsg\"), \"\" + this.$t(\"properties.title\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\"),\n inputValue: row.notes\n }).then(function (_ref2) {\n var value = _ref2.value;\n\n var meta = {\n notes: value\n };\n\n var path = _this8.append_segment(_this8.current_dir, row.name);\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"g\" /* vfs_update_meta */](path, meta).then(function (res) {\n if (res.status == 0) {\n row.notes = value;\n } else {\n _this8.$message({\n type: 'error',\n message: \"\" + _this8.$t(\"properties.errupdate\")\n });\n }\n }).catch(function (e) {\n _this8.$message({\n type: 'error',\n message: e.message\n });\n });\n }).catch(function () {\n //ignore \n });\n },\n on_row_btn_rename: function on_row_btn_rename(index, row) {\n var _this9 = this;\n\n var thiz = this;\n this.$prompt(\"\" + this.$t(\"rename.message\"), \"\" + this.$t(\"rename.title\"), {\n confirmButtonText: \"\" + this.$t(\"btn.ok\"),\n cancelButtonText: \"\" + this.$t(\"btn.cancel\"),\n inputValue: row.name\n }).then(function (_ref3) {\n var value = _ref3.value;\n\n if (value == row.name) {\n return;\n }\n thiz.table_loading = true;\n var path_old = _this9.append_segment(_this9.current_dir, row.name);\n var path_new = _this9.append_segment(_this9.current_dir, value);\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"h\" /* vfs_rename */](path_old, path_new).then(function (res) {\n thiz.table_loading = false;\n if (res.status == 0) {\n row.name = value;\n } else {\n _this9.$message({\n type: 'error',\n message: \"\" + _this9.$t(\"rename.errrename\") + \" [\" + res.status + \"]\"\n });\n }\n }).catch(function (e) {\n thiz.table_loading = false;\n _this9.$message({\n type: 'error',\n message: \"\" + _this9.$t(\"rename.errrename\") + \" [\" + e.message + \"]\"\n });\n });\n }).catch(function () {\n //ignore \n });\n },\n on_row_btn_meta: function on_row_btn_meta(index, row) {\n this.meta_form.name = row.name;\n this.meta_form.notes = row.notes;\n this.meta_form.flags = row.flags;\n this.meta_form.amiibo = row.amiibo;\n this.meta_form.row = row;\n this.meta_diag_visible = true;\n },\n on_diag_meta_close: function on_diag_meta_close() {\n var _this10 = this;\n\n var meta = {\n notes: this.meta_form.notes,\n flags: this.meta_form.flags,\n amiibo: this.meta_form.amiibo\n };\n this.meta_diag_visible = false;\n var path = this.append_segment(this.current_dir, this.meta_form.name);\n var meta_form = this.meta_form;\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"g\" /* vfs_update_meta */](path, meta).then(function (res) {\n if (res.status == 0) {\n meta_form.row.notes = meta_form.notes;\n meta_form.row.flags = meta_form.flags;\n meta_form.row.amiibo = meta_form.amiibo;\n } else {\n _this10.$message({\n type: 'error',\n message: \"\" + _this10.$t(\"properties.errupdate\")\n });\n }\n }).catch(function (e) {\n _this10.$message({\n type: 'error',\n message: e.message\n });\n });\n },\n on_table_selection_change: function on_table_selection_change(selected) {\n this.table_selection = selected;\n },\n on_table_sort_change: function on_table_sort_change(column, prop, order) {\n console.log(\"sort change: \", column, prop, order);\n },\n sort_table_row_name: function sort_table_row_name(a, b) {\n console.log(a, b); //not working\n return a < b ? 1 : -1;\n },\n handle_name_click: function handle_name_click(index, row) {\n if (row.type == \"DRIVE\") {\n this.current_dir = row.name.substr(0, 3);\n this.reload_folder();\n } else if (row.type == \"DIR\") {\n if (this.current_dir.charAt(this.current_dir.length - 1) != '/') {\n this.current_dir = this.current_dir + \"/\";\n }\n this.current_dir = this.current_dir + row.name;\n this.reload_folder();\n } else {\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"i\" /* vfs_helper_read_file */](this.append_segment(this.current_dir, row.name), function (_) {\n var url = window.URL.createObjectURL(new Blob([_], { type: 'application/octet-stream' }));\n // window.open(url);\n var downloadLink = document.createElement(\"a\");\n downloadLink.style.display = 'none';\n downloadLink.href = url;\n downloadLink.download = row.name;\n\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n window.URL.revokeObjectURL(url);\n }, function (_) {}, function (_) {});\n }\n },\n reload_drive: function reload_drive() {\n var _this11 = this;\n\n this.table_loading = true;\n var thiz = this;\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"j\" /* vfs_get_drive_list */]().then(function (res) {\n console.log(res);\n var data = res.data;\n var _table_data = [];\n for (var i in data) {\n var drive = data[i];\n var row = {\n name: drive.label + \":/ [\" + drive.name + \"]\",\n size: drive.status == 0 ? thiz.format_size(drive.used_size) + \"/\" + thiz.format_size(drive.total_size) : \"\" + _this11.$t(\"drive.message\") + drive.status + (\"\" + _this11.$t(\"drive.messageend\")),\n type: \"DRIVE\",\n icon: \"el-icon-box\",\n notes: \"\"\n };\n _table_data.push(row);\n }\n thiz.tableData = _table_data;\n thiz.table_loading = false;\n });\n },\n reload_folder: function reload_folder() {\n this.table_loading = true;\n var thiz = this;\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"k\" /* vfs_read_folder */](this.current_dir).then(function (h) {\n thiz.table_loading = false;\n console.log(h);\n\n if (h.status == 0) {\n var _table_data = [];\n for (var i in h.data) {\n var file = h.data[i];\n\n var row = {\n name: file.name,\n size: thiz.format_size(file.size),\n type: file.type == 0 ? \"REG\" : \"DIR\",\n icon: file.type == 0 ? \"el-icon-document\" : \"el-icon-folder\",\n notes: file.meta.notes,\n flags: file.meta.flags,\n amiibo: file.meta.amiibo\n };\n\n _table_data.push(row);\n }\n thiz.tableData = _table_data;\n }\n });\n },\n format_size: function format_size(size) {\n if (typeof size == 'number') {\n if (size < 1024) {\n return size + \" B\";\n } else if (size < 1024 * 1024) {\n return (size / 1024).toFixed(2) + \" KB\";\n } else {\n return (size / 1024 / 1024).toFixed(2) + \" MB\";\n }\n } else {\n return size;\n }\n },\n btn_disabled: function btn_disabled() {\n return !this.connected || this.current_dir == '';\n },\n append_segment: function append_segment(dir, seg) {\n var drive = dir.substring(0, 2); //E:\n var path = dir.substring(2);\n if (path == '/') {\n return dir + seg;\n } else {\n return dir + '/' + seg;\n }\n },\n delete_table_row_by_name: function delete_table_row_by_name(name) {\n for (var i = 0; i < this.tableData.length; i++) {\n if (this.tableData[i].name == name) {\n this.tableData.splice(i, 1);\n return;\n }\n }\n },\n handle_set_language: function handle_set_language(lang) {\n var _this12 = this;\n\n this.$i18n.locale = lang;\n this.$cookie.set(\"lang\", lang, 60 * 60 * 24 * 365);\n if (this.connected) {\n this.connBtnText = \"\" + this.$t(\"conn.disconnect\");\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"a\" /* get_version */]().then(function (res) {\n console.log(\"get version result\", res);\n _this12.version = \"\" + _this12.$t(\"status.connected\") + res.data.ver;\n });\n } else {\n this.connBtnText = \"\" + this.$t(\"conn.connect\");\n }\n this.$message({\n message: \"\" + this.$t(\"lang.changeok\"),\n type: 'success'\n });\n }\n }, mounted: function mounted() {\n var dispatcher = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__lib_event__[\"a\" /* sharedEventDispatcher */])();\n dispatcher.addListener(\"ble_connected\", this.on_ble_connected);\n dispatcher.addListener(\"ble_disconnected\", this.on_ble_disconnected);\n dispatcher.addListener(\"ble_connect_error\", this.on_ble_connect_error);\n\n __WEBPACK_IMPORTED_MODULE_2__lib_pixl_proto__[\"l\" /* init */]();\n\n var lang = this.$cookie.get(\"lang\");\n if (!lang) {\n lang = \"zh_CN\";\n }\n\n this.language = lang;\n this.$i18n.locale = lang;\n this.connBtnText = \"\" + this.$t(\"conn.connect\");\n }\n});\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = connect;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = disconnect;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = tx_data;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__event__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_bytebuffer__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_bytebuffer___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_bytebuffer__);\n\n\n\nvar NUS_SERVICE_UUID = \"6e400001-b5a3-f393-e0a9-e50e24dcca9e\";\nvar NUS_CHAR_TX_UUID = \"6e400002-b5a3-f393-e0a9-e50e24dcca9e\";\nvar NUS_CHAR_RX_UUID = \"6e400003-b5a3-f393-e0a9-e50e24dcca9e\";\n\nvar nus_service;\nvar nus_char_rx;\nvar nus_char_tx;\n\nvar bluetoothDevice;\n\nfunction connect() {\n return navigator.bluetooth.requestDevice({\n filters: [{ services: [NUS_SERVICE_UUID] }],\n optionalServices: [NUS_SERVICE_UUID]\n }).then(function (device) {\n bluetoothDevice = device;\n console.log(device);\n console.log('Connecting to GATT Server...');\n device.addEventListener('gattserverdisconnected', onDeviceDisconnected);\n return device.gatt.connect();\n }).then(function (server) {\n console.log('Getting Services...');\n return server.getPrimaryServices();\n }).then(function (services) {\n console.log('Getting Characteristics...');\n services.forEach(function (service) {\n if (service.uuid == NUS_SERVICE_UUID) {\n nus_service = service;\n console.log('> found nus Service: ' + service.uuid);\n }\n });\n return nus_service.getCharacteristics();\n }).then(function (characteristics) {\n characteristics.forEach(function (characteristic) {\n console.log('>> Characteristic: ' + characteristic.uuid + ' ' + getSupportedProperties(characteristic));\n if (characteristic.uuid == NUS_CHAR_TX_UUID) {\n nus_char_tx = characteristic;\n } else if (characteristic.uuid == NUS_CHAR_RX_UUID) {\n nus_char_rx = characteristic;\n characteristic.addEventListener('characteristicvaluechanged', onRxDataReceived);\n characteristic.startNotifications();\n }\n });\n console.log(\"connected!\");\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__event__[\"a\" /* sharedEventDispatcher */])().emit(\"ble_connected\");\n }).catch(function (error) {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__event__[\"a\" /* sharedEventDispatcher */])().emit(\"ble_connect_error\");\n });\n}\n\nfunction disconnect() {\n if (bluetoothDevice && bluetoothDevice.gatt.connected) {\n bluetoothDevice.gatt.disconnect();\n bluetoothDevice = null;\n }\n}\n\nfunction tx_data(buff) {\n console.log(\"tx data:\", __WEBPACK_IMPORTED_MODULE_1_bytebuffer__[\"wrap\"](buff).toDebug());\n return nus_char_tx.writeValue(buff);\n}\n\n/* Utils */\n\nfunction onRxDataReceived(event) {\n console.log(\"rx data:\", __WEBPACK_IMPORTED_MODULE_1_bytebuffer__[\"wrap\"](event.target.value.buffer).toDebug());\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__event__[\"a\" /* sharedEventDispatcher */])().emit(\"ble_rx_data\", event.target.value.buffer);\n}\n\nfunction onDeviceDisconnected(event) {\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__event__[\"a\" /* sharedEventDispatcher */])().emit(\"ble_disconnected\");\n}\n\nfunction getSupportedProperties(characteristic) {\n var supportedProperties = [];\n for (var p in characteristic.properties) {\n if (characteristic.properties[p] === true) {\n supportedProperties.push(p.toUpperCase());\n }\n }\n return '[' + supportedProperties.join(', ') + ']';\n}\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (true)\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(210)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(19);\nvar TAG = __webpack_require__(5)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(21);\nvar ITERATOR = __webpack_require__(5)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(7);\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n/***/ }),\n/* 75 */,\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(5)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n/***/ }),\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(7);\nvar isObject = __webpack_require__(14);\nvar newPromiseCapability = __webpack_require__(42);\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n/***/ }),\n/* 82 */,\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(7);\nvar aFunction = __webpack_require__(27);\nvar SPECIES = __webpack_require__(5)('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(20);\nvar invoke = __webpack_require__(154);\nvar html = __webpack_require__(70);\nvar cel = __webpack_require__(40);\nvar global = __webpack_require__(4);\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(19)(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n/***/ }),\n/* 85 */,\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(Buffer) {/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap) {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n var base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n return '/*# ' + data + ' */';\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(140).Buffer))\n\n/***/ }),\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */\n/***/ (function(module, exports) {\n\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_router__ = __webpack_require__(228);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__routes__ = __webpack_require__(130);\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_0_vue__[\"default\"].use(__WEBPACK_IMPORTED_MODULE_1_vue_router__[\"a\" /* default */]);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (new __WEBPACK_IMPORTED_MODULE_1_vue_router__[\"a\" /* default */]({\n mode: 'history',\n routes: __WEBPACK_IMPORTED_MODULE_2__routes__[\"a\" /* default */]\n}));\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","import { sharedEventDispatcher } from \"./event\";\nimport * as ByteBuffer from \"bytebuffer\"\n\nconst NUS_SERVICE_UUID = \"6e400001-b5a3-f393-e0a9-e50e24dcca9e\"\nconst NUS_CHAR_TX_UUID = \"6e400002-b5a3-f393-e0a9-e50e24dcca9e\"\nconst NUS_CHAR_RX_UUID = \"6e400003-b5a3-f393-e0a9-e50e24dcca9e\"\n\n\nvar nus_service;\nvar nus_char_rx;\nvar nus_char_tx;\n\nvar bluetoothDevice;\n\nexport function connect() {\n return navigator.bluetooth.requestDevice({\n filters: [\n { services: [NUS_SERVICE_UUID] }\n ],\n optionalServices: [NUS_SERVICE_UUID]\n })\n .then(device => {\n bluetoothDevice = device;\n console.log(device);\n console.log('Connecting to GATT Server...');\n device.addEventListener('gattserverdisconnected', onDeviceDisconnected);\n return device.gatt.connect();\n })\n .then(server => {\n console.log('Getting Services...');\n return server.getPrimaryServices();\n })\n .then(services => {\n console.log('Getting Characteristics...');\n services.forEach(service => {\n if (service.uuid == NUS_SERVICE_UUID) {\n nus_service = service;\n console.log('> found nus Service: ' + service.uuid);\n }\n });\n return nus_service.getCharacteristics();\n })\n .then(characteristics => {\n characteristics.forEach(characteristic => {\n console.log('>> Characteristic: ' + characteristic.uuid + ' ' +\n getSupportedProperties(characteristic));\n if (characteristic.uuid == NUS_CHAR_TX_UUID) {\n nus_char_tx = characteristic;\n\n } else if (characteristic.uuid == NUS_CHAR_RX_UUID) {\n nus_char_rx = characteristic;\n characteristic.addEventListener('characteristicvaluechanged',\n onRxDataReceived);\n characteristic.startNotifications();\n }\n });\n console.log(\"connected!\");\n sharedEventDispatcher().emit(\"ble_connected\");\n })\n .catch(error => {\n sharedEventDispatcher().emit(\"ble_connect_error\");\n });\n}\n\n\nexport function disconnect() {\n if (bluetoothDevice && bluetoothDevice.gatt.connected) {\n bluetoothDevice.gatt.disconnect();\n bluetoothDevice = null;\n }\n}\n\n\nexport function tx_data(buff) {\n console.log(\"tx data:\", ByteBuffer.wrap(buff).toDebug());\n return nus_char_tx.writeValue(buff);\n}\n\n/* Utils */\n\nfunction onRxDataReceived(event) {\n console.log(\"rx data:\", ByteBuffer.wrap(event.target.value.buffer).toDebug());\n sharedEventDispatcher().emit(\"ble_rx_data\", event.target.value.buffer);\n}\n\nfunction onDeviceDisconnected(event) {\n sharedEventDispatcher().emit(\"ble_disconnected\");\n}\n\nfunction getSupportedProperties(characteristic) {\n let supportedProperties = [];\n for (const p in characteristic.properties) {\n if (characteristic.properties[p] === true) {\n supportedProperties.push(p.toUpperCase());\n }\n }\n return '[' + supportedProperties.join(', ') + ']';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/pixl.ble.js","/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bytebuffer/dist/bytebuffer.js\n// module id = 68\n// module chunks = 1","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_classof.js\n// module id = 69\n// module chunks = 1","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-array-iter.js\n// module id = 73\n// module chunks = 1","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-call.js\n// module id = 74\n// module chunks = 1","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-detect.js\n// module id = 76\n// module chunks = 1","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_perform.js\n// module id = 80\n// module chunks = 1","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_promise-resolve.js\n// module id = 81\n// module chunks = 1","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_species-constructor.js\n// module id = 83\n// module chunks = 1","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_task.js\n// module id = 84\n// module chunks = 1","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap) {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n var base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n return '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 86\n// module chunks = 1","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/component-normalizer.js\n// module id = 97\n// module chunks = 1","import Vue from \"vue\"\nimport VueRouter from \"vue-router\"\nimport routes from \"./routes\"\n\nVue.use(VueRouter)\n\nexport default new VueRouter({\n mode: 'history',\n routes\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","import { sharedEventDispatcher } from \"./event\";\nimport * as ByteBuffer from \"bytebuffer\"\n\nconst NUS_SERVICE_UUID = \"6e400001-b5a3-f393-e0a9-e50e24dcca9e\"\nconst NUS_CHAR_TX_UUID = \"6e400002-b5a3-f393-e0a9-e50e24dcca9e\"\nconst NUS_CHAR_RX_UUID = \"6e400003-b5a3-f393-e0a9-e50e24dcca9e\"\n\n\nvar nus_service;\nvar nus_char_rx;\nvar nus_char_tx;\n\nvar bluetoothDevice;\n\nexport function connect() {\n return navigator.bluetooth.requestDevice({\n filters: [\n { services: [NUS_SERVICE_UUID] }\n ],\n optionalServices: [NUS_SERVICE_UUID]\n })\n .then(device => {\n bluetoothDevice = device;\n console.log(device);\n console.log('Connecting to GATT Server...');\n device.addEventListener('gattserverdisconnected', onDeviceDisconnected);\n return device.gatt.connect();\n })\n .then(server => {\n console.log('Getting Services...');\n return server.getPrimaryServices();\n })\n .then(services => {\n console.log('Getting Characteristics...');\n services.forEach(service => {\n if (service.uuid == NUS_SERVICE_UUID) {\n nus_service = service;\n console.log('> found nus Service: ' + service.uuid);\n }\n });\n return nus_service.getCharacteristics();\n })\n .then(characteristics => {\n characteristics.forEach(characteristic => {\n console.log('>> Characteristic: ' + characteristic.uuid + ' ' +\n getSupportedProperties(characteristic));\n if (characteristic.uuid == NUS_CHAR_TX_UUID) {\n nus_char_tx = characteristic;\n\n } else if (characteristic.uuid == NUS_CHAR_RX_UUID) {\n nus_char_rx = characteristic;\n characteristic.addEventListener('characteristicvaluechanged',\n onRxDataReceived);\n characteristic.startNotifications();\n }\n });\n console.log(\"connected!\");\n sharedEventDispatcher().emit(\"ble_connected\");\n })\n .catch(error => {\n sharedEventDispatcher().emit(\"ble_connect_error\");\n });\n}\n\n\nexport function disconnect() {\n if (bluetoothDevice && bluetoothDevice.gatt.connected) {\n bluetoothDevice.gatt.disconnect();\n bluetoothDevice = null;\n }\n}\n\n\nexport function tx_data(buff) {\n console.log(\"tx data:\", ByteBuffer.wrap(buff).toDebug());\n return nus_char_tx.writeValue(buff);\n}\n\n/* Utils */\n\nfunction onRxDataReceived(event) {\n console.log(\"rx data:\", ByteBuffer.wrap(event.target.value.buffer).toDebug());\n sharedEventDispatcher().emit(\"ble_rx_data\", event.target.value.buffer);\n}\n\nfunction onDeviceDisconnected(event) {\n sharedEventDispatcher().emit(\"ble_disconnected\");\n}\n\nfunction getSupportedProperties(characteristic) {\n let supportedProperties = [];\n for (const p in characteristic.properties) {\n if (characteristic.properties[p] === true) {\n supportedProperties.push(p.toUpperCase());\n }\n }\n return '[' + supportedProperties.join(', ') + ']';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/pixl.ble.js","/*\r\n Copyright 2013-2014 Daniel Wirtz \r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bytebuffer/dist/bytebuffer.js\n// module id = 68\n// module chunks = 1","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_classof.js\n// module id = 69\n// module chunks = 1","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-array-iter.js\n// module id = 73\n// module chunks = 1","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-call.js\n// module id = 74\n// module chunks = 1","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iter-detect.js\n// module id = 76\n// module chunks = 1","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_perform.js\n// module id = 80\n// module chunks = 1","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_promise-resolve.js\n// module id = 81\n// module chunks = 1","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_species-constructor.js\n// module id = 83\n// module chunks = 1","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_task.js\n// module id = 84\n// module chunks = 1","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap) {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n var base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n return '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 86\n// module chunks = 1","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/component-normalizer.js\n// module id = 97\n// module chunks = 1","import Vue from \"vue\"\nimport VueRouter from \"vue-router\"\nimport routes from \"./routes\"\n\nVue.use(VueRouter)\n\nexport default new VueRouter({\n mode: 'history',\n routes\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","// style-loader: Adds some css to the DOM by adding a